C职工工资管理系统报告.docx
- 文档编号:10076078
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:26
- 大小:108.91KB
C职工工资管理系统报告.docx
《C职工工资管理系统报告.docx》由会员分享,可在线阅读,更多相关《C职工工资管理系统报告.docx(26页珍藏版)》请在冰豆网上搜索。
C职工工资管理系统报告
1.题目
《职工工资管理系统》的设计与实现
2.功能
(1)每一条记录包括一个职工的工号、姓名、基本工资、职务工资、津贴、医疗保险、公积金和总工资。
(2)输入功能:
可以一次完成多条记录的输入。
(3)显示功能:
完成全部职工记录的显示。
(4)查找功能:
完成按工号和姓名查找职工记录,并显示。
(5)排序功能:
按职工的工号进行排序。
(6)插入功能:
可以插入多名职工信息记录。
(7)保存功能:
将职工记录保存在任何自定义的文件中。
(8)读取功能:
将保存在文件中的职工信息工资信息读取出来。
(9)有一个清晰美观界面来调用各个功能
3.要求
(1)整个系统均用C语言实现;
(2)利用指针、链表来实现学生成绩的数据结构设计;
(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;
(4)系统的各个功能模块都用函数的形式来实现;
(5)可以将职工工资信息保存在文件中。
(6)可以将职工工资信息从文件中读取出来。
4.设计内容
整个系统除了主函数外,另外还有14个函数,实现八大功能:
输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。
各个函数的详细设计说明分别如下:
主函数main()
利用无限次循环for()和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
菜单选择函数voidmenu()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的主要功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
voidmenu()
um);
printf("请输入姓名:
");
scanf("%s",&em[i].name);
getchar();
printf("请输入基本工资:
");
scanf("%d",&em[i].jbgz);
printf("请输入职务工资:
");
scanf("%d",&em[i].zwgz);
printf("请输入津贴:
");
scanf("%d",&em[i].jt);
printf("请输入医疗保险:
");
scanf("%d",&em[i].yb);
printf("请输入公积金:
");
scanf("%d",&em[i].gjj);
em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));
um,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
sum+=em[i].total;
um)
{
printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n");
printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",&t);
switch(t)
{
case1:
search();break;
case2:
break;
default:
break;
}
}
按姓名查询:
voidsearch_name()
{
charname[30];
inti,t;
intm=load();
printf("请输入姓名:
\n");
scanf("%s",name);
for(i=0;i if(strcmp(em[i].name,name)==0) { printf("\n已找到,其记录为: \n"); printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); } if(i==m) printf("\n\n"); printf("\n"); printf("返回查询菜单请按1,继续查询姓名请按2\n"); scanf("%d",&t); switch(t) { case1: search();break; case2: break; default: break; } } 删除记录函数voiddel() 先将职工信息打印出来,然后输入要删除职工的姓名,若该姓名不存在,则显示“查无此人”,如果存在则显示职工信息并且询问是否确认删除,若确定则删除。 voiddel()/*删除函数*/ { intm=load(); inti,j,n,t,button; charname[20]; printf("\n原来的职工信息: \n"); display();ame,name)==0)um,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); printf("\n确定删除请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j em[j].num=em[j+1].num; em[j].jbgz=em[j+1].jbgz; em[j].zwgz=em[j+1].zwgz; em[j].jt=em[j+1].jt; em[j].yb=em[j+1].yb; em[j].gjj=em[j+1].gjj; em[j].total=em[j+1].total; } button=0; } } } if(! button)del um); printf("\n"); printf("请输入姓名: "); scanf("%s",em[i].name); getchar(); printf("请输入基本工资: "); scanf("\t%d",&em[i].jbgz); printf("请输入职务工资: "); scanf("%d",&em[i].zwgz); printf("请输入津贴: "); scanf("%d",&em[i].jt); printf("请输入医疗保险: "); scanf("\t%d",&em[i].yb); printf("请输入公积金: "); scanf("%d",&em[i].gjj); em[i].total=(em[i].jbgz+em[i].zwgz+em[i].jt-em[i].yb-em[i].gjj); um>=em[j+1].num) { p=em[j]; em[j]=em[j+1]; em[j+1]=p; } printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); for(i=0;i { printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); } } 修改数据函数voidmodify() 打印职工信息并提示输入要修改信息的职工姓名。 按照提示选择要修改的项目,输入要修改的结果并将该结果赋值给对应的成员,完成指定的修改。 voidmodify()/*修改函数*/ { intnum; charname[20]; intjbgz; intzwgz; intjt; intyb; intgjj; intb,c,i,n,t,button; intm=load(); system("cls"); printf("\n原来的职工信息: \n"); display(); printf("\n"); printf("请输入要修改的职工的姓名: \n"); scanf("%s",name); for(button=1,i=0;button&&i { if(strcmp(em[i].name,name)==0) { printf("\n此人原始记录为: \n"); printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); printf("\n确定按1;不修改请按0\n"); scanf("%d",&n); if(n==1) { printf("\n需要进行修改的选项\n1.职工号2.姓名3.基本工资4.职务工资5.津贴6.医疗保险7.公积金8.返回上层\n"); printf("请选择序号1-8: \n"); scanf("%d",&c); if(c>8||c<1) printf("\n选择错误,请重新选择! \n"); } button=0; } } if(button==1) printf("\n查无此人\n"); do { switch(c)/*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ { case1: printf("职工号改为: "); scanf("%d",&num); em[i-1].num=num; break; case2: printf("姓名改为: "); scanf("%s",name); strcpy(em[i-1].name,name); break; case3: printf("基本工资改为: "); getchar(); scanf("%d",&jbgz); em[i-1].jbgz=jbgz; em[i-1].total=(em[i-1].jbgz+em[i-1].zwgz+em[i-1].jt-em[i-1].yb-em[i-1].gjj); break; case4: printf("职务工资改为: "); scanf("%d",&zwgz); em[i-1].zwgz=zwgz; em[i-1].total=(em[i-1].jbgz+em[i-1].zwgz+em[i-1].jt-em[i-1].yb-em[i-1].gjj); break; case5: printf("津贴改为: "); scanf("%d",&jt); em[i-1].jt=jt; em[i-1].total=(em[i-1].jbgz+em[i-1].zwgz+em[i-1].jt-em[i-1].yb-em[i-1].gjj); break; case6: printf("医疗保险改为: "); scanf("%d",&yb); em[i-1].yb=yb; em[i-1].total=(em[i-1].jbgz+em[i-1].zwgz+em[i-1].jt-em[i-1].yb-em[i-1].gjj); break; case7: printf("公积金改为: "); scanf("%d",&gjj); em[i-1].gjj=gjj; em[i-1].total=(em[i-1].jbgz+em[i-1].zwgz+em[i-1].jt-em[i-1].yb-em[i-1].gjj); break; case8: modify(); break; } printf("\n"); printf("\n\n确定修改请按1;重新修改请按2: \n"); scanf("%d",&b); } while(b==2); printf("\n修改后的所有职工信息: \n"); printf("\n"); save(m); display(); printf("\n按1继续修改,不再修改请按0\n"); scanf("%d",&t); switch(t) { case1: modify();break; case0: break; default: break; } } 修改后为 程序部分 #include<> #include<> #include<> #include<> #defineN100 structemployee { intnum;delum); printf("请输入姓名: "); scanf("%s",&em[i].name); getchar(); printf("请输入基本工资: "); scanf("%d",&em[i].jbgz); printf("请输入职务工资: "); scanf("%d",&em[i].zwgz); printf("请输入津贴: "); scanf("%d",&em[i].jt); printf("请输入医疗保险: "); scanf("%d",&em[i].yb); printf("请输入公积金: "); scanf("%d",&em[i].gjj); em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));um,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); sum+=em[i].total;ame,name)==0)um,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); printf("\n确定删除请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j em[j].num=em[j+1].num; em[j].jbgz=em[j+1].jbgz; em[j].zwgz=em[j+1].zwgz; em[j].jt=em[j+1].jt; em[j].yb=em[j+1].yb; em[j].gjj=em[j+1].gjj; em[j].total=em[j+1].total; } button=0; } } } if(! button)delum); printf("\n"); printf("请输入姓名: "); scanf("%s",em[i].name); getchar(); printf("请输入基本工资: "); scanf("\t%d",&em[i].jbgz); printf("请输入职务工资: "); scanf("%d",&em[i].zwgz); printf("请输入津贴: "); scanf("%d",&em[i].jt); printf("请输入医疗保险: "); scanf("\t%d",&em[i].yb); printf("请输入公积金: "); scanf("%d",&em[i].gjj); em[i].total=(em[i].jbgz+em[i].zwgz+em[i].jt-em[i].yb-em[i].gjj);um) { printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); break; } if(i==m) printf("\n对不起,查无此人\n"); printf("\n"); printf("返回查询函数请按1,继续查询职工号请按2\n"); scanf("%d",&t); switch(t) { case1: search();break; case2: break; default: break; } } voidsearch_name() { charname[30]; inti,t; intm=load(); printf("请输入姓名: \n"); scanf("%s",name); for(i=0;i if(strcmp(em[i].name,name)==0) { printf("\n已找到,其记录为: \n"); printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); } if(i==m) printf("\n\n"); printf("\n"); printf("返回查询菜单请按1,继续查询姓名请按2\n"); scanf("%d",&t); switch(t) { case1: search();break; case2: break; default: break; } } voidmodify()/*修改函数*/ { intnum; charname[20]; intjbgz; intzwgz; intjt; intyb; intgjj; intb,c,i,n,t,button; intm=load(); system("cls"); printf("\n原来的职工信息: \n"); display(); printf("\n"); printf("请输入要修改的职工的姓名: \n"); scanf("%s",name); for(button=1,i=0;button&&i { if(strcmp(em[i].name,name)==0) { printf("\n此人原始记录为: \n"); printf("职工号姓名基本工资职务工资津贴医疗保险公积金总工资\n"); printf("\n%-6d%-6s%-8d%-8d%-8d%-8d%-8d%-8d",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); printf("\n确定按1;不修改请按0\n"); scanf("%d",&n); if(n==1) { printf("\n需要进行修改的选项\n1.职工号2.姓名3.基本工资4.职务工资5.津贴6.医疗保险7.公积金8.返回上层\n"); printf("请选择序号1-8: \n"); scanf("%d",&c); if(c>8||c<1) printf("\n选择错误,请重新选择! \n"); } button=0; } } if(button==1) printf("\n查无此人\n"); do { switch(c)/*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ { case1: printf("职工号改为: "); scanf("%d",&num); em[i-1].num=num; break; case2: printf("姓名改为: "); scanf("%s",name); strcpy(em[i-1].name,name); break; case3: printf("基本工资改为: "); getchar();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 报告