1、C+课设 课程设计报告一、需求分析 二、概要设计 三、详细设计 四、调试分析 五、用户手册 六、测试数据 七、附录 设计题目:企业人事管理系统:人事工资管理职工主要属性如下:基本工资,岗位工资,奖金,应发工资,医疗住房基金,税金,实发工资;应发工资=基本工资+岗位工资,实发工资=应发工资-税金-住房医疗基金!利用文本文件存储职工工资信息;实现工资的录入,统计(统计整个工资的平均工资,最高和最低工资,工资均方差等信息;各部门的平均工资,最高最低工资,工资均方差等信息),查询(根据员工的姓名查询),修改,删除等功能。要求:1.源文件采用多文件的工程结构 2.数据存储采用文件形式 3.标准的C+输入
2、和输出 4.功能完善,适当的注视 5.关于文件的内容需要自学 6.原则上不允许只涉及一个类,应有多个类 7.应用面向对象的封装,继承,多态技术)一需求分析 (1)任务:使员工可以查到自己的工资信息; (2)规定:程序必须用C+,不能只用一个类 (3)输入和输出范围:字符和双精度数字; (4)输出形式:双精度型数字型输出; (5)程序所能达到的功能:录入,查询,修改,统计以及删除员工的工资信息; (6)测试数据:二设计概要见图Class 3 设备处Public:继承worker类,主要的统计功能Class 4 人事处Public:继承worker类,主要的统计功能Clss 5 学工处Public
3、:继承worker类,主要的统计功能Class 6 软件学院Public:继承worker类,主要的统计功能Class 1 xinxipublic: double jiben;(基本工资) double gangwei;(岗位工资 double shuijin;(税金) double yiliao;(医疗住房基金) double jiangjin;(奖金) double sum;(实发工资) double sum1;(应发工资) double avarage;(平均工资) class xinxi *next(定义链表,主要实现信息查询,统计,修改,删除,等功能!Class 2 worker:p
4、ublic:calss xinxiPublic:string name;(员工姓名) string ID;(员工工号) double sum;(实发工资) double avarage;(平均工资) xinxi sc1;(定义一个广义对象) class worker *next;(定义头指针)void luru(worker *head);(录入功能)void search1(worker *head);(按姓名查找功能)void search2(worker *head);(按工号查找)void xianshi(worker *head);(信息显示)void xiugai(worker *
5、head);(修改)void chazhao(worker *head);(查找)void shanchu(worker *head);(删除)void tianjia(worker *head);(添加)void tongji(worker *head);(统计)void display();(界面显示)void read(worker *head);(读取)void dakai(worker *head);(打开员工信息)三详细设计1.头文件使用:#include#include#include:此为利用文本文档存信息时所需头文件!#include:控制输入输出流的头文件2.主函数:实现系
6、统界面设计int main()system(color ff);int x;worker *head=new worker;运用链表head-next=NULL; while(1) display();cinx; if(x=1) cout*现在进行职工数据的录入*n; luru(head); cout输入的职工信息为:n; xianshi(head); display(); /break; else if(x=2) cout*现在进行职工数据的修改*n; xiugai(head); display(); /break; /按姓名修改 else if(x=3) cout*现在进行所有职工信息的显
7、示*n; xianshi(head); display(); /break; /显示数据 else if(x=4) char z; cout*现在进行所有职工信息查找*n; cout请选择查询方式n; coutz; while(z!=1&z!=2) cout*指令错误*n; coutz; switch(z) case 1: search1(head);break;/按姓名查询 case 2: search2(head);break;/按学号查询 display(); / break; else if(x=5) cout*现在进行指定的职工信息的删除*n; shanchu(head); xian
8、shi(head); display(); /break; /删除 else if(x=6) cout*现在进行指定的职工信息的添加*n; tianjia(head); xianshi(head); display(); break;/添加 else if(x=7) cout*现在进行指定的职工信息的统计*n; tongji(head); display(); / break; else if(x=8) cout*现在进行指定的职工信息的保存*n; read(head); display(); / break; else if(x=9) cout*现在进行指定的职工信息的打开*n; dakai
9、(head); display(); / break; else cout n; cout 您已退出职工管理系统, 谢谢您的使用! n; cout n; coutnext; cout | name | ID |基本工资|岗位工资|税金|医疗保险|奖金金|应发工资|实发工资|平均工资|endl;while(work!=NULL)cout | setw(4)(*work).name; 此处的setw(数字)为一种输出流,有点类似cout | setw(4)(*work).ID; C语言里的输入格式化cout | setw(4)(*work).sc1.jiben;cout | setw(4)(*wo
10、rk).sc1.gangwei;cout | setw(4)(*work).sc1.shuijin;cout | setw(4)(*work).sc1.yiliao;cout | setw(4)(*work).sc1.jiangjin;cout | setw(4)(*work).sc1.sum1;cout | setw(4)(*work).sc1.sum;cout | setw(4)(*work).sc1.avarage;cout | next;system(pause);运用的头文件(ioainp.h)中可调用的函数2.利用文本文档存储信息void read(worker *head) ch
11、ar a; worker *work=head-next; couta; ofstream outfile(D:职工管理系统职工信息.txt,ios:out); if(! outfile) cout!打开文件错误!n; cout!要保存数据请先建立好指定文件:D:职工管理系统职工信息.txt!n; exit(0); while(a!=n) while(work!=NULL) outfile*第amount个职工的数据:*n; outfile | name | ID |基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|endl; outfile 职工信息: n | setw
12、(4)(*work).name | setw(4)(*work).ID | setw(4)(*work).sc1.jiben | setw(4)(*work).sc1.gangwei | setw(4)(*work).sc1.shuijin |setw(4)(*work).sc1.yiliao | setw(4)(*work).sc1.jiangjin |setw(4)(*work).sc1.sum1|setw(4)(*work).sc1.sum|setw(4)(*work).sc1.avaragenext; break;cout.成功将学生数据保存到中! ; outfile.close();
13、 3.打开存储信息函数void dakai(worker *head) worker *work=head-next; ofstream ofile(D:职工管理系统职工信息.txt,ios:out); work=work-next;void luru(worker *head) char c; int j=0; worker *p=head; filej=new ofstream(D:职工管理系统职工信息.txt,ios:app); do worker *work=new worker; cout请输入姓名:(*work).name; cout请输入ID:(*work).ID; cout请输
14、入基本工资:(*work).sc1.jiben; cout请输入岗位工资:(*work).sc1.gangwei; cout请输入税金:(*work).sc1.shuijin; cout请输入医疗保险:(*work).sc1.yiliao; cout请输入奖金:(*work).sc1.jiangjin; (*work).sc1.sum=(*work).sc1.gangwei+(*work).sc1.jiben; (*work).sc1.avarage=(*work).sc1.gangwei+(*work).sc1.jiangjin+(*work).sc1.yiliao+(*work).sc1.
15、shuijin+(*work).sc1.jiben)/5; (*work).sc1.sum1=(*work).sc1.gangwei+(*work).sc1.jiben-(*work).sc1.shuijin-(*work).sc1.yiliao; if(*work).sc1.sum=2000) ab+; if(*work).sc1.sum=1500&(*work).sc1.sum=1000&(*work).sc1.sumnext=p-next; p-next=work; amount+;coutc; p=p-next; while(c!=y&c!=n) cout!指令错误!endl; cou
16、tc; while(c=y); j+; cout输入了 amount个职工的信息.next; bool flag=0; coutname; do if(work!=NULL&name=(*work).name) flag=1; cout | name | ID |基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|endl; cout | setw(4)(*work).name; cout | setw(4)(*work).ID; cout | setw(4)(*work).sc1.jiben; cout | setw(4)(*work).sc1.gangwei; cout
17、 | setw(4)(*work).sc1.shuijin; cout | setw(4)(*work).sc1.yiliao; cout | setw(4)(*work).sc1.jiangjin; cout | setw(4)(*work).sc1.sum1; cout | setw(4)(*work).sc1.sum; cout | setw(4)(*work).sc1.avarage; cout | next; while(work!=NULL); if(flag=0)cout!对不起!您要查询的职工不存在!endl; coutc; while(c!=y&c!=n) cout!指令错误
18、!endl; coutc; while(c=y);void search2(worker *head) char c; string ID; do worker *work=head-next; int flag=0; coutID;do if(work!=NULL&ID=(*work).ID) flag=1; cout你要查询的学生是nameendl; cout | name | ID |基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|endl; cout | setw(4)(*work).name; cout | setw(4)(*work).ID; cout |
19、setw(4)(*work).sc1.jiben; cout | setw(4)(*work).sc1.gangwei; cout | setw(4)(*work).sc1.shuijin; cout | setw(4)(*work).sc1.yiliao; cout | setw(4)(*work).sc1.jiangjin; cout | setw(4)(*work).sc1.sum1; cout | setw(4)(*work).sc1.sum; cout | setw(4)(*work).sc1.avarage; cout | next; while(work!=NULL);if(fl
20、ag=0)cout!对不起!您要查询的职工不存在!endl; coutc; while(c!=y&c!=n) cout!指令错误!endl; cout您想继续查询吗?(y/n)c; while(c=y);5.修改信息void xiugai(worker *head) string name; char c; do bool flag2=0;worker *work=head-next;xinxi sc1;coutname;do if(name=(*work).name) flag2=1; coutsc1.jiben; coutsc1.gangwei; coutsc1.shuijin; cout
21、sc1.yiliao; coutsc1.jiangjin; (*work).sc1.jiben=sc1.jiben; (*work).sc1.gangwei=sc1.gangwei; (*work).sc1.shuijin=sc1.shuijin; (*work).sc1.sum=(*work).sc1.gangwei+(*work).sc1.jiben-(*work).sc1.yiliao-(*work).sc1.shuijin; (*work).sc1.avarage=(*work).sc1.gangwei+(*work).sc1.jiangjin+(*work).sc1.jiben+(*
22、work).sc1.yiliao+(*work).sc1.shuijin)/5; cout | name | ID |基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|endl; cout | setw(4)(*work).name; cout | setw(4)(*work).ID; cout | setw(4)(*work).sc1.jiben; cout | setw(4)(*work).sc1.gangwei; cout | setw(4)(*work).sc1.shuijin; cout | setw(4)(*work).sc1.yiliao; cout | setw(4)(*work).sc1.jiangjin; cout | setw(4)(*work).sc1.sum1; cout | setw(4)(*work).sc1.sum; cout |
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1