




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* Note:Your choice is C IDE */#include stdio.h#include string.h#include conio.h#include stdlib.hstruct Message/*此结构体用于存放职工信息以及创建链表*/char name30;int ID;int JBGZ;int ZWGZ;int JT;int YLBX;int GJJ;long int Total; float Sum_3; struct Message *nextPrt; static *head,*Rec_1=NULL,*Rec_2=NULL, *Rec_3=NULL; /*此处创建一个表头,以及三个用于恢复函数的静态变量*/static float Sum_JBGZ=0,Sum_ZWGZ=0,Sum_JT=0,Sum_YLBX=0,Sum_GJJ=0;static float Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ;void Input();/*此处声明各一级函数*/void Output();void Delete();void Add();void Recover();void Modify();void Search();void Statistic();struct Message *creat(struct Message *h);/*此处声明各二级函数*/void print_Message(struct Message *h);struct Message *del_Message(struct Message *h,char *str);struct Message *add_Message(struct Message *h,struct Message *a,char *strafter);struct Message *Recover_Message(struct Message *h);struct Message *Modify_Message(struct Message *h,char *str);void Search_Message(struct Message *h);void Statistic_Message(struct Message *h);main()/*主函数为菜单页*/char i;/*功能:调用各一级函数一级退出程序*/clrscr();gotoxy(27,9);printf(16 中 南 大 学 );gotoxy(27,11);printf(16 职工工资管理系统 );gotoxy(27,13);printf(16 设 计 者:刘 路 );gotoxy(27,15);printf(16 输入任意键继续 n);getch();for(;)clrscr();gotoxy(25,9);printf(* * * * * * *菜单* * * * * *);gotoxy(25,10);printf(* a. 输入记录 *);gotoxy(25,11);printf(* b. 显示记录 *);gotoxy(25,12);printf(* c. 修改记录 *);gotoxy(25,13);printf(* d. 查找记录 *);gotoxy(25,14);printf(* e. 添加记录 *);gotoxy(25,15);printf(* f. 删除记录 *);gotoxy(25,16);printf(* g. 恢复记录 *);gotoxy(25,17);printf(* h. 统计数据 *);gotoxy(25,18);printf(* i. 退出程序 *);gotoxy(25,19);printf(* 请选择 ai *);gotoxy(25,20);printf(* * * * * * * * * * * * * *);i=getch();if(i=i)break;else switch(i)casea:Input();break;/*调用记录输入函数*/ caseb:Output();break;/*调用记录显示函数*/ casec:Modify();break;/*调用记录修改函数*/ cased:Search();break;/*调用记录查找函数*/ casee:Add();break;/*调用记录添加函数*/ casef:Delete();break;/*调用记录删除函数*/ caseg:Recover();break;/*调用记录恢复函数*/ caseh:Statistic();break;/*调用记录统计函数*/ void Input()/*定义输入函数(一级)*/ /*主要功能:调用二级子函数创建链表*/head=NULL;head=creat(head);void Output()/*定义显示函数(一级)*/*主要功能:调用二级子函数实现按一定格式输出所有职工工资信息*/clrscr();print_Message(head);void Delete()/*定义删除函数(一级)*/*主要功能:调用二级子函数实现删除任意职工工资信息并输出删除后的工资信息*/char name50,*del_Mes=name;clrscr();gotoxy(1,1);printf(请输入姓名:n);scanf(%s,name);head=del_Message(head,del_Mes);clrscr();printf(删除数据后:n);printf(-n);print_Message(head);void Add()/*定义添加函数(一级)*/*主要功能:调用二级函数以实现在任意位置添加一条或多条职工工资信息*/char after_name30,i;struct Message* p;clrscr();gotoxy(1,1);printf(n请输入需要添加的信息n);printf(-n);p=(struct Message*)malloc(sizeof (struct Message);if(p!=NULL)printf(请输入姓名:n);scanf(%s,&p-name);printf(请输入ID:n);scanf(%d,&p-ID);printf(请输入基本工资:n);scanf(%d,&p-JBGZ);printf(请输入职位工资:n);scanf(%d,&p-ZWGZ);printf(请输入津贴:n);scanf(%d,&p-JT);printf(请输入医疗保险:n);scanf(%d,&p-YLBX);printf(请输入公积金:n);scanf(%d,&p-GJJ);p-Total=p-JBGZ+p-ZWGZ+p-JT-p-YLBX-p-GJJ;printf(总工资为:%dn,p-Total);printf(n输入在哪个职工信息下方添加新信息:n);scanf(%s,after_name);head=add_Message(head,p,after_name);printf(n是否继续添加?Y/N);i=getch();while (i!=N)printf(n请输入你想要添加的信息n); printf(-n); p=(struct Message*)malloc(sizeof (struct Message);if(p!=NULL)printf(请输入姓名:n);scanf(%s,&p-name);printf(请输入ID:n);scanf(%d,&p-ID);printf(请输入基本工资:n);scanf(%d,&p-JBGZ);printf(请输入职位工资:n);scanf(%d,&p-ZWGZ);printf(请输入津贴:n);scanf(%d,&p-JT);printf(请输入医疗保险:n);scanf(%d,&p-YLBX);printf(请输入公积金:n);scanf(%d,&p-GJJ);p-Total=p-JBGZ+p-ZWGZ+p-JT-p-YLBX-p-GJJ;printf(总工资为:%ldn,p-Total);printf(n输入在哪个职工信息下方添加新信息:n);scanf(%s,after_name);head=add_Message(head,p,after_name);printf(n是否继续添加?Y/N);i=getch();clrscr();gotoxy(1,1);printf(n添加后的信息为:n);printf(-n);print_Message(head);void Recover()/*定义记录恢复函数(一级)*/ /*主要功能:调用二级函数以实现恢复已删除的信息*/clrscr();head=Recover_Message(head);gotoxy(1,4);printf(恢复成功!_n);printf(n输入任意键退出.);getch();void Modify()/*定义记录修改函数(一级)*/*主要功能:调用二级函数以实现修改任意职工的任意信息*/char name50,*Mod_Message=name;clrscr();printf(请输入需要修改信息的员工:n);scanf(%s,name);head=Modify_Message(head,Mod_Message);clrscr();printf(修改后的信息为:n);printf(-n);print_Message(head);void Search()/*定义记录查找函数(一级)*/*主要功能:调用二级函数实现按照姓名或ID通过关键字查找或精确查找的方式搜索职工信息*/clrscr();Search_Message(head);void Statistic()/*定义记录统计函数(一级)*/*调用二级函数以实现以表格的形式输出职工工资信息并统计前三项工资总额在一定范围内的人数及比例*/clrscr();Statistic_Message(head);printf(n输入任意键退出.);getch();struct Message *creat(struct Message *h)/*定义创建链表函数(二级)*/char i;struct Message *p1,*p2;clrscr();p1=p2=(struct Message*)malloc(sizeof (struct Message);if(p2!=NULL)gotoxy(1,1);printf(请输入姓名:n);scanf(%s,&p2-name);printf(请输入ID:n);scanf(%d,&p2-ID);printf(请输入基本工资:n);scanf(%d,&p2-JBGZ);printf(请输入职位工资:n);scanf(%d,&p2-ZWGZ);printf(请输入津贴:n);scanf(%d,&p2-JT);printf(请输入医疗保险:n);scanf(%d,&p2-YLBX);printf(请输入公积金:n);scanf(%d,&p2-GJJ);p2-Total=p2-JBGZ+p2-ZWGZ+p2-JT-p2-YLBX-p2-GJJ;printf(总工资为:%ldn,p2-Total);h=p2;p2-nextPrt=NULL; printf(输入s退出,输入其他键继续.n);i=getch();while(i!=s)p2=(struct Message*)malloc(sizeof (struct Message);if(p2!=NULL)printf(请输入姓名:n);scanf(%s,&p2-name);printf(请输入ID:n);scanf(%d,&p2-ID);printf(请输入基本工资:n);scanf(%d,&p2-JBGZ);printf(请输入职位工资:n);scanf(%d,&p2-ZWGZ);printf(请输入津贴:n);scanf(%d,&p2-JT);printf(请输入医疗保险:n);scanf(%d,&p2-YLBX);printf(请输入公积金:n);scanf(%d,&p2-GJJ);p2-Total=p2-JBGZ+p2-ZWGZ+p2-JT-p2-YLBX-p2-GJJ;printf(总工资为:%ldn,p2-Total);p2-nextPrt=NULL; p1-nextPrt=p2;p1=p2; printf(输入s退出,输入其他键继续.n);i=getch();return h;void print_Message(struct Message *h)/*定义记录输出函数(二级)*/struct Message *temp;int i=0;temp=h;gotoxy(1,4);printf(IDtbb姓名tbb基本工资t职位工资tbbbbbb津贴tb医疗保险t公积金tb总工资n);if (temp=NULL) printf(没有找到信息!n);while(temp!=NULL)i+;printf(%dtbb%stbb%dt%dt %dt%dt%dt%dn,temp-ID,temp-name,temp-JBGZ,temp-ZWGZ,temp-JT,temp-YLBX,temp-GJJ,temp-Total);(Sum_JBGZ+=temp-JBGZ,Sum_ZWGZ+=temp-ZWGZ,Sum_JT+=temp-JT,Sum_YLBX+=temp-YLBX,Sum_GJJ+=temp-GJJ);temp=temp-nextPrt;(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_JT/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf(各项平均工资:tbb%.1ft%.1ft %.1ft%.1ft%.1fn,Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ);printf(输入任意键退出.);getch();struct Message *del_Message(struct Message *h,char *str)/*定义记录删除函数(二级)*/struct Message *p1,*p2;p1=h;if(p1=NULL)printf(没有找到信息!n);return h;p2=p1-nextPrt;if(!strcmp(p1-name,str)Rec_2=p1;Rec_3=p2;h=p2;return h;while(p2!=NULL)if(!strcmp(p2-name,str)Rec_1=p1;Rec_2=p2;Rec_3=p2-nextPrt;p1-nextPrt=p2-nextPrt;return h;elsep1=p2;p2=p2-nextPrt;printf(删除成功!_);getch();return h;struct Message *add_Message(struct Message *h,struct Message *a,char *strafter)/*定义记录添加函数(二级)*/struct Message *p1,*p2;p1=h;while(p1!=NULL)if(!strcmp(p1-name,strafter)a-nextPrt=p1-nextPrt;p1-nextPrt=a;return h;elsep1=p1-nextPrt;return h;struct Message* Recover_Message(struct Message *h)/*定义记录恢复函数(二级)*/if(Rec_1=NULL)h=Rec_2;Rec_2-nextPrt=Rec_3;elseRec_1-nextPrt=Rec_2;Rec_2-nextPrt=Rec_3;return h;struct Message* Modify_Message(struct Message *h,char *str)/*定义记录修改函数(二级)*/struct Message *p1;int i;p1=h;if(p1=NULL)printf(没有找到信息!);return h;while(strcmp(p1-name,str)p1=p1-nextPrt;printf(请输入需要修改的信息(序号):n);printf(1.姓名 2.ID 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.总工资n);scanf(%d,&i);switch(i)case 1:printf(请输入修改后的姓名:n);scanf(%s,&p1-name);break;case 2:printf(请输入修改后的ID:n);scanf(%d,&p1-ID);break;case 3:printf(请输入修改后的基本工资:n);scanf(%d,&p1-JBGZ);break;case 4:printf(请输入修改后的职务工资:n); scanf(%d,&p1-ZWGZ);break;case 5:printf(请输入修改后的津贴:n);scanf(%d,&p1-JT);break;case 6:printf(请输入修改后的医疗保险:n);scanf(%d,&p1-YLBX);break;case 7:printf(请输入修改后的公积金:n);scanf(%d,&p1-GJJ);break;case 8:printf(请输入总工资:n);scanf(%d,&p1-Total);break;printf(n修改成功!_n输入任意键查看结果.);getch();return h;void Search_Message(struct Message *h)/*定义记录搜索函数(二级)*/ struct Message* p1; int a,b,i,u,n=0,x1=0,x2,x3=0,x4=0,x5,x6,w1=1,w2=1,w3=0; char name50; p1=h; if (p1=NULL) printf(没有找到信息!); printf(请选择查找方式:1.按姓名查找 2.按ID查找n); scanf(%d,&a); printf(请选择搜索方式:1.按关键字搜索 2.精确搜索n); scanf(%d,&b); if(a=1&b=1) printf(请输入姓名:n); scanf(%s,name); while(p1!=NULL) for(i=0;namei!=0;i+) for(u=0;p1-nameu!=0;u+) if (namei=p1-nameu) n+; if (2*n=strlen(name) printf(IDtbb姓名tbb基本工资t职位工资tbbbbbb津贴tb医疗保险t公积金tb总工资n); printf(%dtbb%stbb%dt%dt %dt%dt%dt%dn,p1-ID,p1-name,p1-JBGZ,p1-ZWGZ,p1-JT,p1-YLBX,p1-GJJ,p1-Total); p1=p1-nextPrt; p1=h; printf(n输入任意键退出.); getch(); if(a=1&b=2) printf(请输入姓名:n); scanf(%s,name); while(p1!=NULL) if(!strcmp(p1-name,name) printf(IDtbb姓名tbb基本工资t职位工资tbbbbbb津贴tb医疗保险t公积金tb总工资n); printf(%dtbb%stbb%dt%dt %dt%dt%dt%dn,p1-ID,p1-name,p1-JBGZ,p1-ZWGZ,p1-JT,p1-YLBX,p1-GJJ,p1-Total); p1=p1-nextPrt; p1=h; printf(n输入任意键退出.); getch(); if(a=2&b=1) printf(请输入ID:n); scanf(%d,&x1); x2=x1; while(x2!=0) x2=x2/10; if(x2!=0) w1+; /*记录输入数据的位数w1*/ while(p1!=NULL) x6=x1; /*用x6暂时存储输入的数据*/ for(i=1;iID; while(x5!=0) x5=x5/10; if(x5!=0) w2+;/*记录链表中某一节点位数*/ x5=1; x4=p1-ID; /*x4暂时存储链表中某一节点的ID*/ for(u=1;uID,p1-name,p1-JBGZ,p1-ZWGZ,p1-JT,p1-YLBX,p1-GJJ,p1-Total); p1=p1-nextPrt; /*节点位置向后移动一位,继续循环以判断是否符合输出要求*/ ; p1=h; printf(n输入任意键退出.);getch(); if(a=2&b=2) printf(请输入ID:n); scanf(%d,&x1); while(p1!=NULL) if(p1-ID=x1) printf(IDtbb姓名tbb基本工资t职位工资tbbbbbb津贴tb医疗保险t公积金tb总工资n); printf(%dtbb%stbb%dt%dt %dt%dt%dt%dn,p1-ID,p1-name,p1-JBGZ,p1-ZWGZ,p1-JT,p1-YLBX,p1-GJJ,p1-Total); p1=p1-nextPrt; p1=h; printf(n输入任意键退出.);getch(); void Statistic_Message(struct Message *h) /*定义记录统计函数*/struct Message *p1;int i=0,a1=0,b1=0,c1=0;float a2,b2,c2;p1=h;printf(n);printf( ID号 姓名 基本工资职务工资 津贴 医疗保险公积金总工资n); printf(n);while(p1!=NULL)i+;printf(%dt %st bbbbbbbb%dtbbbb %dt%dt%dt %dtbbbbbb%ld n,p1-ID,p1-name,p1-JBGZ,p1-ZWGZ,p1-JT,p1-YLBX,p1-GJJ,p1-Total);printf(n);(Sum_JBGZ+=p1-JBGZ,Sum_ZWGZ+=p1-ZWGZ,Sum_JT+=p1-JT,Sum_YLBX+=p1-YLBX,Sum_GJJ+=p1-GJJ);p1=p1-nextPrt;(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_JT/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf( n);printf(n);printf( 各项平均工资 %.1ftbbbb %.1ft%.1ftb %.1ft bbbb %.1ftbbbbbbtbb n ,Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ);printf(b);p1=h;while(p1!=NULL)p1-Sum_3=(p1-JBGZ+p1-ZWGZ+p1-JT);if(p1-Sum_3=1000 & p1-Sum_3Sum_3=1500 & p1-Sum_3Sum_32000) c1+;p1=p1-nextPrt;a2=(float)a1/i)*100;b2=(float)b1/i)*100;c2=(float)c1/i)*100;printf(nn前三项工资和在100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西省卫生系统招聘考试(中医学)历年参考题库含答案详解
- 2025年北京银行长沙分行社会招聘考试备考题库及答案解析
- 节能监察理论知识培训课件
- 2025年小微企业创业扶持资金申请政策解读与创业团队知识管理报告
- 良好的公共秩序课件
- 教师招聘之《幼儿教师招聘》模拟题库附参考答案详解【培优】
- 教师招聘之《小学教师招聘》能力提升B卷题库附答案详解(巩固)
- 2025呼伦贝尔海拉尔区建设街道办事处招聘城镇公益性岗位人员笔试备考及答案详解(名师系列)
- 教师招聘之《小学教师招聘》能力检测【典优】附答案详解
- 基于2025年电竞游戏用户社交需求的社区运营模式创新报告
- 基于Java的网上蛋糕预订销售系统的设计与实现
- 成人高考专升本医学综合考试真题及答案
- 《小猪变形记》一年级
- 青海2023届高校毕业生就业报告出炉:医学和法学就业率最高
- 生理学 第九章 感觉器官的功能
- 急救车必备药品和物品 急救车物品药品管理
- 静脉血栓栓塞症预防与护理课件
- 西门子低压电器快速选型手册
- 养羊与羊病防治技术课件
- 蔬菜大棚项目计划书
- 医学资料品管圈十大步骤的运用
评论
0/150
提交评论