您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 教师工资管理系统C实现
教师工资管理系统一.选题背景二.需求分析一、设计选题与目标1.选题要求:教师工资管理系统每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。A、教师信息处理(1)输入教师信息(2)插入(修改)教师信息:(3)删除教师信息:(4)浏览教师信息:提示:具体功能及操作参考题1。B、教师数据处理:(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2)教师实发工资、应发工资、合计扣款计算。提示:计算规则如题目。(3)教师数据管理提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4)教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5)教师综合信息输出提示:输出教师信息到屏幕。2.目标教师数据处理:(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2)教师实发工资、应发工资、合计扣款计算。计算规则如题目。(3)教师数据管理输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4)教师数据查询:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5)教师综合信息输出输出教师信息到屏幕三.总体设计利用六个模块分别实现教师信息的输入,修改,删除,查询,保存以及信息文件的读入功能。并使用不同的函数实现不同的功能。使用链表存储及处理数据。程序流程图如下:选择3删除数据Break选择4选择5查询数据保存退出数据BreakBreak输出:无效选项Break结束输出界面选择操作选择1输入数据Break选择2修改数据break四.详细设计1.功能模块共分为六个模块:(1)输入教师信息模块在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户信息储存到链表中,输入完成后提示用户是否继续输入,如果用户输入“Y”,则再次调用,实现继续输入教师信息的操作。如果用户输入”NO“,则返回主菜单界面。(2)修改教师信息模块在主函数中调用voidchange_id(),修改记录操作需要对数组中目标元素的数据域中的值进行操作。首先请用户输入要修改的教师编号,然后若找到该记录就提示用户输入各个信息。(3)删除教师信息模块在主函数中调用voiddelete_id(),以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示。如果找到教师信息,将教师信息显示出来,提示用户删除。(4)查询教师信息查询分三种,调用voidshow_all()显示所有教师信息;调用voidsearch_id()按编号查询教师信息;调用voidsearch_name()按姓名查询教师信息。(5)读入教师信息文件模块调用voidreadfromfile()函数从文件导入教师信息(6)保存并退出模块调用voidwritetofile()写入文件。2.函数的设计与调用(1)主函数的设计编写主函数的主要任务就是确定调用函数以及控制屏幕显示。(2)其他函数1)原型voidshow_all;功能展出所有录入文件参数无返回值无工作方式调用charname[10];floatsalary;floatallowance;floatlife;floattel;floatutilities;floatrent;floatdue;floathealth;floatfund;1floattotal;floatshould;floatactual;2)原型voidtea_new功能创建新的信息录入参数无返回值无工作方式创建file3)原型voidsearchmenu;功能查找菜单参数无返回值无工作方式调用voidsearch_id;voidsearch_name;4)原型voidsearch_id;功能查找信息按编号查找参数无返回值整个信息工作方式调用number5)原型voidsearch_name;功能查找信息按姓名查找参数无返回值整个信息工作方式调用charname6)原型voiddelete_id功能删除数据按编号删除参数无返回值无工作方式调用id7)原型voidchange_id;功能改变数据按编号改参数无返回值整个录入信息工作方式调用idMainmenureadfromfilewritetofileshow_alltea_newsearchmenusearch_idsearch_namedelete_id(change_id3.数据结构的设计定义结构体teacher,用于存放教师的信息。structteacher{intnumber;教师编号charname[10];教师姓名floatsalary;教师基本工资floatallowance;教师津贴floatlife;教师生活补贴floattel;教师电话费floatutilities;教师水电费floatrent;教师房租floatdue;教师所得税floathealth;教室卫生费floatfund;教师公积金floattotal;教师合计扣款floatshould;教师应发工资floatactual;教师实发工资}tea[500];4.算法实现链表是算法的关键。在添加新的数据时,可以表头插入也可以表尾插入,这两种插入方法决定了其他成员函数数据的处理。本系统中采取的是表尾插入的方法。在删除某信息时需要判断数据是在表头,表中还是表尾,如果删除的是在表中,则需要将删除的前后链表连接起来。统大量运用了链表的5种基本操作:建立链表、链表的插入、删除、输入和查找。5.程序清单#includestdio.h#includestring.h#includestdlib.h#includeconio.h/*教师工资管理系统结构体定义*/structteacher{intnumber;charname[10];floatsalary;floatallowance;floatlife;floattel;floatutilities;floatrent;floatdue;floathealth;floatfund;floattotal;floatshould;floatactual;}tea[500];intnum=0;FILE*fp;voidmainmenu();voidreadfromfile();voidwritetofile();voidshow_all();voidtea_new();voidsearchmenu();voidsearch_id();voidsearch_name();voiddelete_id();voidchange_id();voidmain(){readfromfile();while(1){mainmenu();}}//主菜单voidmainmenu(){charchoic;system(cls);printf(\t----------------欢迎使用\(^o^)/~-------------------\n);printf(\t****************教师工资管理系统******************\n\n);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){case'1':tea_new();break;case'2':change_id();break;case'3':delete_id();break;case'4':searchmenu();break;case'5':writetofile();break;default:mainmenu();}}//从文件导入voidreadfromfile(){if((fp=fopen(teacher.bin,rb))==NULL){printf(\n\t教师工资信息文件不存在哟(*/ω╲*));if((fp=fopen(teacher.bin,wb))==NULL){printf(\n\t建立失败);exit(0);}else{printf(\n\t教师工资信息文件已建立(~o ̄3 ̄)~);printf(\n\t按回车键进入主菜单);getch();return;}exit(0);}fseek(fp,0,2);if(ftell(fp)0){rewind(fp);for(num=0;!feof(fp)&&fread(&tea[num],sizeof(structteacher),1,fp);num++);printf(\n\t教师工资信息文件导入成功(* ̄3 ̄)╭);printf(\n\t文件中无任何记录(=@__@=));printf(\n\t按回车键进入主菜单);getch();return;}}//写入文件voidwritetofile(){inti;if((fp=fopen(teacher.bin,wb))==NULL){printf(\n\t打开文件失败(*/ω╲*));}for(i=0;inum;i++){if(fwrite(&tea[i],sizeof(structteacher),1,fp)!=1){printf(\n\t文件写入错误!(>﹏<)\n);}}fclose(fp);printf(\n\t教师工资信息文件已保存);printf(\n\t按任意键退出程序(* ̄ω ̄)\n\t);exit(0);}//添加记录voidtea_new(){printf(请输入教师号:);scanf(%d,&tea[num].number);printf(请输入教师姓名:);scanf(%s,tea[num].name);printf(请输入教师基本工资:);scanf(%f,&tea[num].salary);printf(请输入教师的津贴:);scanf(%f,&tea[num].allowance);printf(请输入教师的生活补贴:);scanf(%f,&tea[num].life);printf(请输入教师的电话费:);scanf(%f,&tea[num].tel);printf(请输入教师的水电费:);scanf(%f,&tea[num].utilities);printf(请输入教师的房租:);scanf(%f,&tea[num].rent);printf(请输入教师的所得税:);scanf(%f,&tea[num].due);printf(请输入教师的卫生费:);scanf(%f,&tea[num].health);printf(请输入教师的公积金:);scanf(%f,&tea[num].fund);tea[num].should=tea[num].salary+tea[num].allowance+tea[num].life;tea[num].total=tea[num].tel+tea[num].utilities+tea[num].rent
本文标题:教师工资管理系统C实现
链接地址:https://www.777doc.com/doc-5390007 .html