C++课设.docx
- 文档编号:10285650
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:48
- 大小:51.41KB
C++课设.docx
《C++课设.docx》由会员分享,可在线阅读,更多相关《C++课设.docx(48页珍藏版)》请在冰豆网上搜索。
C++课设
课程设计报告
一、需求分析
二、概要设计
三、详细设计
四、调试分析
五、用户手册
六、测试数据
七、附录
设计题目:
企业人事管理系统:
人事工资管理
职工主要属性如下:
基本工资,岗位工资,奖金,应发工资,医疗住房基金,税金,实发工资;应发工资=基本工资+岗位工资,实发工资=应发工资-税金-住房医疗基金!
利用文本文件存储职工工资信息;实现工资的录入,统计(统计整个工资的平均工资,最高和最低工资,工资均方差等信息;各部门的平均工资,最高最低工资,工资均方差等信息),查询(根据员工的姓名查询),修改,删除等功能。
要求:
1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C++输入和输出4.功能完善,适当的注视5.关于文件的内容需要自学6.原则上不允许只涉及一个类,应有多个类7.应用面向对象的封装,继承,多态技术)
一.需求分析
(1)任务:
使员工可以查到自己的工资信息;
(2)规定:
程序必须用C++,不能只用一个类
(3)输入和输出范围:
字符和双精度数字;
(4)输出形式:
双精度型数字型输出;
(5)程序所能达到的功能:
录入,查询,修改,统计以及删除员工的工资信息;
(6)测试数据:
二.设计概要
见图
Class3设备处
Public:
继承worker类,
主要的统计功能
Class4人事处
Public:
继承worker类,
主要的统计功能
Clss5学工处
Public:
继承worker类,
主要的统计功能
Class6软件学院
Public:
继承worker类,
主要的统计功能
Class1xinxi
public:
doublejiben;(基本工资)
doublegangwei;(岗位工资
doubleshuijin;(税金)
doubleyiliao;(医疗住房基金)
doublejiangjin;(奖金)
doublesum;(实发工资)
doublesum1;(应发工资)
doubleavarage;(平均工资)
classxinxi*next(定义链表,主要实现信息查询,统计,修改,删除,等功能!
Class2worker:
public:
calssxinxi
Public:
stringname;(员工姓名)
stringID;(员工工号)
doublesum;(实发工资)
doubleavarage;(平均工资)
xinxisc1;(定义一个广义对象)
classworker*next;(定义头指针)
voidluru(worker*head);(录入功能)
voidsearch1(worker*head);(按姓名查找功能)
voidsearch2(worker*head);(按工号查找)
voidxianshi(worker*head);(信息显示)
voidxiugai(worker*head);(修改)
voidchazhao(worker*head);(查找)
voidshanchu(worker*head);(删除)
voidtianjia(worker*head);(添加)
voidtongji(worker*head);(统计)
voiddisplay();(界面显示)
voidread(worker*head);(读取)
voiddakai(worker*head);(打开员工信息)
三.详细设计
1.头文件使用:
#include
#include
#include
此为利用文本文档存信息时所需头文件!
#include
控制输入输出流的头文件
2.主函数:
实现系统界面设计
intmain()
{
system("colorff");
intx;
worker*head=newworker;运用链表
head->next=NULL;
while
(1)
{
display();
cin>>x;
if(x==1)
{
cout<<"***************现在进行职工数据的录入*****************\n";
luru(head);
cout<<"输入的职工信息为:
\n";
xianshi(head);
display();//break;
}
elseif(x==2)
{
cout<<"***************现在进行职工数据的修改******************\n";
xiugai(head);
display();
//break;//按姓名修改
}
elseif(x==3)
{
cout<<"***************现在进行所有职工信息的显示*****************\n";
xianshi(head);
display();
//break;//显示数据
}
elseif(x==4)
{
charz;
cout<<"*****************现在进行所有职工信息查找**************\n";
cout<<"请选择查询方式\n";
cout<<"
(1).姓名查询方式
(2).ID查询方式\n";
cin>>z;
while(z!
='1'&&z!
='2')
{
cout<<"**************指令错误********************\n";
cout<<"
(1).姓名查询方式
(2).ID查询方式\n";
cin>>z;
}
switch(z)
{
case'1':
search1(head);break;//按姓名查询
case'2':
search2(head);break;//按学号查询
}
display();
//break;
}
elseif(x==5)
{
cout<<"***************现在进行指定的职工信息的删除*****************\n";
shanchu(head);
xianshi(head);
display();
//break;//删除
}
elseif(x==6)
{
cout<<"****************现在进行指定的职工信息的添加******************\n";
tianjia(head);
xianshi(head);
display();
break;//添加
}
elseif(x==7)
{
cout<<"**********************现在进行指定的职工信息的统计***************\n";
tongji(head);
display();
//break;
}
elseif(x==8)
{
cout<<"**********************现在进行指定的职工信息的保存************\n";
read(head);
display();
//break;
}
elseif(x==9)
{
cout<<"************************现在进行指定的职工信息的打开****************\n";
dakai(head);
display();
//break;
}
else
{
cout<<"╔═══════════════════════════╗\n";
cout<<"║您已退出职工管理系统,谢谢您的使用!
║\n";
cout<<"╚═══════════════════════════╝\n";
cout< exit(0); break; } } return0; } 剩余自定义函数,函数功能: (1).显示功能: voidxianshi(worker*head) { worker*work=head->next; cout<<"|name|ID|基本工资|岗位工资|税金|医疗保险|奖金金|应发工资|实发工资|平均工资|"< while(work! =NULL) { cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< work=work->next; } system("pause");运用的头文件(ioainp.h)中可调用的函数 } 2.利用文本文档存储信息 voidread(worker*head) { chara; worker*work=head->next; cout<<"现在保存输入职工数据,是否继续操作? (y/n)"; cin>>a; ofstreamoutfile("D: \\职工管理系统\\职工信息.txt",ios: : out); if(! outfile) { cout<<"! ! ! ! ! ! ! ! 打开文件错误! ! ! ! ! ! ! \n"; cout<<"! ! ! 要保存数据请先建立好指定文件: D: \\职工管理系统\\职工信息.txt! ! ! \n"; exit(0); } while(a! ='n') { while(work! =NULL) { outfile<<"****************第"< ***************\n"; outfile<<"|name|ID|基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|"< outfile<<"职工信息: \n"<<"|"< amount++; work=work->next; } break; } cout<<"......成功将学生数据保存到<职工信息.txt>中! "; outfile.close(); } 3.打开存储信息函数 voiddakai(worker*head) { worker*work=head->next; ofstreamofile("D: \\职工管理系统\\职工信息.txt",ios: : out); work=work->next; } voidluru(worker*head) { charc; intj=0; worker*p=head; file[j]=newofstream("D: \\职工管理系统\\职工信息.txt",ios: : app); do { worker*work=newworker; cout<<"请输入姓名: "< cin>>(*work).name; cout<<"请输入ID: "< cin>>(*work).ID; cout<<"请输入基本工资: "< (2); cin>>(*work).sc1.jiben; cout<<"请输入岗位工资: "< (2); cin>>(*work).sc1.gangwei; cout<<"请输入税金: "< (2); cin>>(*work).sc1.shuijin; cout<<"请输入医疗保险: "< (2); cin>>(*work).sc1.yiliao; cout<<"请输入奖金: "< (2); cin>>(*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.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<2000)cd++; if((*work).sc1.sum>=1000&&(*work).sc1.sum<1500)ef++; work->next=p->next; p->next=work; amount++; cout<<"数据录入成功,想继续录入吗(y/n)";cin>>c; p=p->next; while(c! ='y'&&c! ='n') { cout<<"! ! ! ! ! ! ! ! ! ! 指令错误<请输入y/n! >! ! ! ! ! ! ! ! ! ! "< cout<<"数据录入成功,想继续录入吗(y/n)"; cin>>c; } }while(c=='y'); j++; cout<<"输入了"< } 4.两种方式的查找 voidsearch1(worker*head) { charc; stringname; do{ worker*work=head->next; boolflag=0; cout<<"请输入要查找的职工的姓名: "; cin>>name; do{ if(work! =NULL&&name==(*work).name) { flag=1; cout<<"|name|ID|基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< } work=work->next; }while(work! =NULL); if(flag==0) cout<<"! ! ! ! ! ! ! ! ! ! ! ! ! 对不起! 您要查询的职工不存在! ! ! ! ! ! ! ! ! ! ! "< cout<<"您想继续查询吗? (y/n)";cin>>c; while(c! ='y'&&c! ='n') { cout<<"! ! ! ! ! ! ! ! ! ! ! ! ! ! 指令错误<请输入y/n! >! ! ! ! ! ! ! ! ! ! ! "< cout<<"您想继续查询吗? (y/n)";cin>>c; } }while(c=='y'); } voidsearch2(worker*head) { charc; stringID; do{ worker*work=head->next; intflag=0; cout<<"请输入要查找职工的ID"; cin>>ID; do{ if(work! =NULL&&ID==(*work).ID) { flag=1; cout<<"你要查询的学生是"< cout<<"|name|ID|基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< } work=work->next; }while(work! =NULL); if(flag==0) cout<<"! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 对不起! 您要查询的职工不存在! ! ! ! ! ! ! ! ! ! ! ! ! ! ! "< cout<<"您想继续查询吗? (y/n)"; cin>>c; while(c! ='y'&&c! ='n') { cout<<"! ! ! ! ! ! ! ! ! ! ! ! 指令错误<请输入y/n! >! ! ! ! ! ! ! ! ! ! "< cout<<"您想继续查询吗? (y/n)"< cin>>c; } }while(c=='y'); } 5.修改信息 voidxiugai(worker*head) { stringname; charc; do { boolflag2=0; worker*work=head->next; xinxisc1; cout<<"请输入你要修改的职工的姓名: "; cin>>name; do{ if(name==(*work).name) { flag2=1; cout<<"请输入新的基本工资: "; cin>>sc1.jiben; cout<<"请输入新的岗位工资: "; cin>>sc1.gangwei; cout<<"请输入新的税金: "; cin>>sc1.shuijin; cout<<"请输入新的医疗保险: "; cin>>sc1.yiliao; cout<<"请输入新的奖金: "; cin>>sc1.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+(*work).sc1.yiliao+(*work).sc1.shuijin)/5; cout<<"|name|ID|基本工资|岗位工资|税金|医疗保险|奖金|应发工资|实发工资|平均工资|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+
![提示](https://static.bdocx.com/images/bang_tan.gif)