C++课设.docx

上传人:b****8 文档编号:10285650 上传时间:2023-02-09 格式:DOCX 页数:48 大小:51.41KB
下载 相关 举报
C++课设.docx_第1页
第1页 / 共48页
C++课设.docx_第2页
第2页 / 共48页
C++课设.docx_第3页
第3页 / 共48页
C++课设.docx_第4页
第4页 / 共48页
C++课设.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

C++课设.docx

《C++课设.docx》由会员分享,可在线阅读,更多相关《C++课设.docx(48页珍藏版)》请在冰豆网上搜索。

C++课设.docx

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<<"你要查询的学生是"<name<

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<<"|"<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1