1、老师工资管理系统一选题背景二需求分析 一、设计选题和目标1.选题要求:老师工资管理系统每个老师信息为:老师号、姓名、性别、单位名称、家庭住址、联络电话、基础工资、津贴、生活补助、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、累计扣款、实发工资。注:应发工资=基础工资+津贴+生活补助;累计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资累计扣款。A、老师信息处理(1)输入老师信息(2) 插入(修改)老师信息:(3) 删除老师信息:(4) 浏览老师信息:提醒:具体功效及操作参考题1。B、老师数据处理:(1) 按老师号录入老师基础工资、津贴、生活补助、电话费、水电费、
2、房租、所得税、卫生费、公积金等基础数据。(2) 老师实发工资、应发工资、累计扣款计算。提醒:计算规则如题目。(3) 老师数据管理提醒:输入老师号,读出并显示该老师信息,输入新数据,将改后信息写入文件(4) 老师数据查询:提醒:输入老师号或其它信息,即读出全部数据信息,并显示出来。(5) 老师综合信息输出提醒:输出老师信息到屏幕。2.目标 老师数据处理:(1) 按老师号录入老师基础工资、津贴、生活补助、电话费、水电费、房租、所得税、卫生费、公积金等基础数据。(2) 老师实发工资、应发工资、累计扣款计算。 计算规则如题目。(3) 老师数据管理 输入老师号,读出并显示该老师信息,输入新数据,将改后信
3、息写入文件(4) 老师数据查询:输入老师号或其它信息,即读出全部数据信息,并显示出来。(5) 老师综合信息输出输出老师信息到屏幕三总体设计利用六个模块分别实现老师信息输入,修改,删除,查询,保留和信息文件读入功效。并使用不一样函数实现不一样功效。使用链表存放及处理数据。程序步骤图以下:输出界面选择操作选择1输入数据Break选择2修改数据break选择3删除数据Break选择4选择5查询数据保留退出数据BreakBreak输出:无效选项Break结束四具体设计1.功效模块共分为六个模块:(1) 输入老师信息模块 在主菜单中利用结构体teacher,输入老师信息,首先建立链表,将用户信息储存到链
4、表中,输入完成后提醒用户是否继续输入,假如用户输入“Y”,则再次调用,实现继续输入老师信息操作。假如用户输入”NO“,则返回主菜单界面。(2) 修改老师信息模块 在主函数中调用void change_id(),修改统计操作需要对数组中目标元素数据域中值进行操作。首先请用户输入要修改老师编号,然后若找到该统计就提醒用户输入各个信息。(3) 删除老师信息模块 在主函数中调用void delete_id(),以删除老师信息,首先按学号查询老师信息,假如没有找到老师信息,给出提醒。假如找到老师信息,将老师信息显示出来,提醒用户删除。(4) 查询老师信息 查询分三种,调用void show_all()显
5、示全部老师信息;调用void search_id()按编号查询老师信息;调用void search_name()按姓名查询老师信息。(5) 读入老师信息文件模块 调用void readfromfile()函数从文件导入老师信息(6) 保留并退出模块调用void writetofile()写入文件。2函数设计和调用(1)主函数设计编写主函数关键任务就是确定调用函数和控制屏幕显示。(2)其它函数1)原型void show_all;功效 展出全部录入文件参数 无 返回值 无 工作方法 调用 char name10; float salary;float allowance; float life;
6、float tel;float utilities;float rent;float due; float health; float fund; float total; float should; float actual; 2)原型void tea_new功效 创建新信息录入参数 无返回值 无工作方法 创建file 3)原型void searchmenu;功效 查找菜单参数 无返回值 无工作方法 调用void search_id;void search_name;4)原型void search_id;功效 查找信息 按编号查找参数 无返回值 整个信息工作方法 调用 number5)原型v
7、oid search_name;功效 查找信息 按姓名查找参数 无返回值 整个信息工作方法 调用char name6)原型void delete_id功效 删除数据 按编号删除参数 无返回值 无工作方法 调用 id 7)原型 void change_id; 功效 改变数据 按编号改参数 无返回值 整个录入信息工作方法 调用 idshow_allreadfromfilesearchmenuMainmenusearch_idsearch_namewritetofiletea_newdelete_id(change_id3.数据结构设计定义结构体teacher,用于存放老师信息。struct tea
8、cherint number; 老师编号char name10; 老师姓名 float salary; 老师基础工资 float allowance; 老师津贴 float life; 老师生活补助 float tel; 老师电话费 float utilities; 老师水电费 float rent; 老师房租 float due; 老师所得税 float health; 教室卫生费 float fund; 老师公积金float total; 老师累计扣款 float should; 老师应发工资 float actual; 老师实发工资 tea500;4.算法实现链表是算法关键。在添加新数据
9、时,能够表头插入也能够表尾插入,这两种插入方法决定了其它组员函数数据处理。本系统中采取是表尾插入方法。在删除某信息时需要判定数据是在表头,表中还是表尾,假如删除是在表中,则需要将删除前后链表连接起来。统大量利用了链表5种基础操作:建立链表、链表插入、删除、输入和查找。5.程序清单#include#include#include #include/*老师工资管理系统结构体定义*/struct teacherint number; char name10; float salary; float allowance; float life; float tel; float utilities;
10、float rent; float due; float health; float fund; float total; float should; float actual; tea500;int num=0; FILE *fp; void mainmenu(); void readfromfile(); void writetofile(); void show_all(); void tea_new (); void searchmenu(); void search_id(); void search_name(); void delete_id(); void change_id(
11、); void main()readfromfile();while(1) mainmenu();/主菜单void mainmenu()char choic; system(cls);printf(t-欢迎使用(o)/-n);printf(t*老师工资管理系统*nn);printf(t-1输入老师信息-n);printf(t-2修改老师信息-n);printf(t-3删除老师信息-n);printf(t-4查询老师信息-n);printf(t-5保留并退出-n);printf(t*n);printf(t请输入所需服务项目序号: n); choic=getch(); switch(choic)
12、case1:tea_new ();break; case2:change_id ();break; case3:delete_id ();break; case4:searchmenu();break; case5:writetofile();break; default:mainmenu(); /从文件导入void readfromfile()if(fp=fopen(teacher.bin,rb)=NULL)printf(nt老师工资信息文件不存在哟(*/*);if(fp=fopen(teacher.bin,wb)=NULL)printf(nt建立失败);exit(0);elseprintf
13、(nt老师工资信息文件已建立(o3);printf(nt按回车键进入主菜单);getch();return;exit(0);fseek(fp,0,2); if(ftell(fp)0) rewind(fp); for(num=0;!feof(fp) & fread(&teanum,sizeof(struct teacher),1,fp);num+); printf(nt老师工资信息文件导入成功(*3);printf(nt文件中无任何统计(=_=);printf(nt按回车键进入主菜单);getch(); return; /写入文件void writetofile()int i; if(fp=fo
14、pen(teacher.bin,wb)=NULL)printf(nt打开文件失败(*/*);for(i=0;inum;i+)if(fwrite(&teai,sizeof(struct teacher),1,fp)!=1)printf(nt文件写入错误!()n);fclose(fp);printf(nt老师工资信息文件已保留);printf(nt按任意键退出程序(*)nt); exit(0);/添加统计void tea_new()printf(请输入老师号:);scanf(%d,&teanum.number);printf(请输入老师姓名:);scanf(%s,teanum.name);prin
15、tf(请输入老师基础工资:);scanf(%f,&teanum.salary);printf(请输入老师津贴:);scanf(%f,&teanum.allowance);printf(请输入老师生活补助:);scanf(%f,&teanum.life);printf(请输入老师电话费:);scanf(%f,&teanum.tel);printf(请输入老师水电费:);scanf(%f,&teanum.utilities);printf(请输入老师房租:);scanf(%f,&teanum.rent);printf(请输入老师所得税:);scanf(%f,&teanum.due);printf(
16、请输入老师卫生费:);scanf(%f,&teanum.health);printf(请输入老师公积金:);scanf(%f,&teanum.fund);teanum.should =teanum.salary +teanum.allowance +teanum.life;teanum.total=teanum.tel+teanum.utilities +teanum.rent+teanum.due+teanum.health+teanum.fund;teanum.actual=teanum.should-teanum.total; num+;printf(是否继续添加?(Y/N); if(g
17、etch()=y) tea_new (); return;/查询菜单void searchmenu() char choic; system(cls); printf(nt-查询-); printf(nt-1显示全部-); printf(nt-2按编号查询-); printf(nt-3按姓名查询-); printf(nt-4返回主菜单-); printf(nt请选择:n); choic=getch(); switch(choic) case1:show_all();break; case2:search_id();break; case3:search_name();break; case4:
18、mainmenu();break; /显示全部void show_all() int i; system(cls); if(num!=0) for(i=0;inum;i+) printf(nt编号: %d,teai.number); printf(nt姓名: %s,teai.name); printf(nt基础工资: %.5f,teai.salary); printf(nt津贴: %.5f,teai.allowance); printf(nt生活补助: %.5f,teai.life); printf(nt电话费: %.5f,teai.tel); printf(nt水电费: %.5f,teai.
19、utilities); printf(nt房租: %.5f,teai.rent); printf(nt所得税: %.5f,teai.due); printf(nt卫生费: %.5f,teai.health); printf(nt公积金: %.5f,teai.fund); printf(nt应发工资: %.5f,teai.should); printf(nt累计扣款: %.5f,teai.total); printf(nt实发工资: %.5f,teai.actual); if(i+1num) printf(nt_); system(pause); printf(nt*); else printf
20、(nt文件中无统计); printf(nt按回车键回到主菜单); getch(); return;/按编号查询void search_id() int mark=0; int i,a=0; int id; printf(nt请输入编号:); scanf(%d,&id); for(i=0;inum;i+) if(id=teai.number) printf(nt*以下是你要查找老师工资信息*n); printf(nt编号: %d,teai.number); printf(nt姓名: %s,teai.name); printf(nt基础工资: %.5f,teai.salary); printf(n
21、t津贴: %.5f,teai.allowance); printf(nt生活补助: %.5f,teai.life); printf(nt电话费: %.5f,teai.tel); printf(nt水电费: %.5f,teai.utilities); printf(nt房租: %.5f,teai.rent); printf(nt所得税: %.5f,teai.due); printf(nt卫生费: %.5f,teai.health); printf(nt公积金: %.5f,teai.fund); printf(nt应发工资: %.5f,teai.should); printf(nt累计扣款: %.
22、5f,teai.total); printf(nt实发工资: %.5f,teai.actual); printf(nt*); printf(nt按回车键回到主菜单); mark+; getch(); return; if(mark=0) printf(nt没有该编号信息); printf(nt按回车键返回主菜单); getch(); return;/按姓名查询void search_name() int mark=0; int i,a=0; char name10; printf(请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if(strcmp(teai.
23、name,name)=0) printf(nt*以下是你要查找老师工资信息*n); printf(nt编号: %d,teai.number); printf(nt姓名: %s,teai.name); printf(nt基础工资: %.5f,teai.salary); printf(nt津贴: %.5f,teai.allowance); printf(nt生活补助: %.5f,teai.life); printf(nt电话费: %.5f,teai.tel); printf(nt水电费: %.5f,teai.utilities); printf(nt房租: %.5f,teai.rent); pri
24、ntf(nt所得税: %.5f,teai.due); printf(nt卫生费: %.5f,teai.health); printf(nt公积金: %.5f,teai.fund); printf(nt应发工资: %.5f,teai.should); printf(nt累计扣款: %.5f,teai.total); printf(nt实发工资: %.5f,teai.actual); printf(nt*); mark+; if(i+1)num) printf(tn是否继续查找相同名字老师信息:(y/n); if(getch()=y) a=i;continue; else return; else
25、 printf(nt按回车键返回主菜单); getch(); return; if(mark!=0) printf(nt没有相同姓名老师信息统计); printf(nt按回车键回到主菜单); getch(); return; else printf(nt没有相同姓名老师信息统计); printf(nt按回车键回到主菜单); getch(); return; /删除菜单void delete_id() int i,j; int deletemark=0; int id; printf(nt情输入要删除编号:); scanf(%d,&id); if(num=0) printf(nt对不起,文件中无
26、任何老师工资信息统计); printf(nt按回车键回到主菜单); getch(); return; for(i=0;inum;i+) if(id=teai.number) printf(nt*以下是你要删除老师工资信息*n); printf(nt编号: %d,teai.number); printf(nt姓名: %s,teai.name); printf(nt基础工资: %.5f,teai.salary); printf(nt津贴: %.5f,teai.allowance); printf(nt生活补助: %.5f,teai.life); printf(nt电话费: %.5f,teai.te
27、l); printf(nt水电费: %.5f,teai.utilities); printf(nt房租: %.5f,teai.rent); printf(nt所得税: %.5f,teai.due); printf(nt卫生费: %.5f,teai.health); printf(nt公积金: %.5f,teai.fund); printf(nt应发工资: %.5f,teai.should); printf(nt累计扣款: %.5f,teai.total); printf(nt实发工资: %.5f,teai.actual); printf(nt是否删除?(y/n); if(getch()=y)
28、for(j=i;jnum-1;j+) teaj=teaj+1; num-; deletemark+; printf(nt删除成功); printf(nt是否继续删除?(y/n); if(getch()=y) delete_id(); return; else return; continue; if(deletemark=0) printf(nt没有该老师统计); printf(nt是否继续删除?(y/n); if(getch()=y) delete_id(); /修改菜单void change_id() int a=0,findmark=0; int i; int id; printf(nt请输入要修改老师编号:); scanf(%d,&id); for(i=a;inum;i+) if(id=teai.number) printf(nt*以下是你要修改老师工资信息*n); findmark+; p
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100