企业工资管理系统毕业课程设计Word格式.docx
- 文档编号:16630724
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:15
- 大小:19.54KB
企业工资管理系统毕业课程设计Word格式.docx
《企业工资管理系统毕业课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《企业工资管理系统毕业课程设计Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
2系统框架图
图1系统框架图
3类的设计与分析
classWorker
{
protected:
Worker_pay*(int,string,int,string,string,string,float,float);
创建链表并链表的插入
voidRemoveItem(int);
删除函数
voidReplaceItem(int);
修改函数
voidListL();
遍历函数
voidSearch(int);
查找并输出某个员工信息函数
voidReal_wage(float,float);
计算函数
voidRecordinfo(int,string,int,string,string,string,float,float,float,float);
存储函数
};
表1Worker类说明表
名称
属性
说明
head
数据成员
链表头结点指针
Worker()
成员函数
缺省的构造函数,缺省值为head=NULL
voidDisplay(Worker_pay*)
输出函数
Worker_pay*Find(int)
查找函数
intListCount()
统计员工人数函数
voidAddItem(int,·
·
float,float)
创建链表并链表的插入
voidRemoveItem(int)
删除函数
voidReplaceItem(int)
修改函数
voidListL()
遍历函数
voidSearch(int)
查找并输出某个员工信息函数
voidReal_wage()
计算函数
voidRecoreinfo(int,·
float,float)
存储函数
4非成员函数的设计与分析
表2非成员函数说明表
intMenu()
用于显示主菜单
charExit()
用于退出程序
voidInput(int*num,·
float*allowance)
用于输入员工工资信息
voidAddNew()
用于调用成员函数AddItem(int,·
float,float)Real_wage()和Recoreinfo(int,·
voidDoFind()
用于调用成员函数Search(int)
voidDoDelete()
用于调用成员函数RemoveItem(int)
voidDoMotify()
用于调用成员函数ReplaceItem(int)
voidList()
用于调用成员函数ListL()
intmain()
主函数
5特色算法分析
Worker类中的成员函数voidAddItem(int,·
(1)功能:
创建存储职工工资信息的存储系统以及添加某职工的工资信息。
算法思路:
先定义一个结构体Worker_pay,通过从表尾插入的方法来建立链表。
首先要先设立一个头指针(;
}
Worker_pay*t=;
Worker_pay*p=;
}
6存在的问题及对策
(1)设计初期,先完成初步构思,写出主函数。
然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。
在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。
直至此模块完全没有错误时,在进入下一模块的调试。
不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。
在完成程序的编译链接后,要用多组数据进行审查,确保做到系统无误。
设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。
这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。
编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方便。
但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。
程序调试中碰到的错误可以使自己学到知识。
养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。
(2)在编辑完整个程序后,进行调试阶段总是会数显head无定义。
解决办法:
再类的定义是忘记声明指针Worker_pay*0;
Worker_pay*p==0;
while(p)
{
n++;
p=p->
next;
returnn;
*****************************************************
功能:
在链表中查找员工的编号
Worker_pay*Worker:
:
Find(intnum)
if(ListCount==0)
cout<
<
"
列表为空,请先输入数据!
!
endl;
returnNULL;
Worker_pay*p=NULL;
returnp;
创建链表及链表的插入
voidWorker:
AddItem(intnum1,stringname1,intage1,stringsex1,stringdepartment1,stringtitle1,floatwage1,floatallowance1)
if(!
;
从链表中删除一个结点
RemoveItem(intnum)
Worker_pay*t=Find(num);
t)
return;
while(p->
next!
=t)
Worker_pay*p1=p->
p->
next=p1->
deletep1;
cout<
成功删除员工编号为"
num<
的信息!
return;
修改员工信息
ReplaceItem(intnum)
Worker_pay*p=Find(num);
p)
请重新输入相应信息"
员工编号:
cin>
>
p->
num;
员工姓名:
name;
年龄:
age;
性别:
sex;
部门:
department;
职务:
title;
工资(元):
wage;
津贴(元):
allowance;
输出员工信息
Display(Worker_pay*p)
setw(8)<
name<
age<
sex<
department<
setw(8)
<
title<
wage<
allowance<
tax<
real_wage<
遍历链表
ListL()
floatsum=0;
floataver=0;
intn=0;
当前列表为空,请先输入数据!
Worker_pay*p=++;
sum+=p->
aver=sumn;
员工平均薪水:
aver<
查找并输出指定员工信息
Search(intnum)
Search......"
if(p)
员工编号为"
的员工工资信息:
员工编号员工姓名年龄性别部门职务工资津贴个税实发数"
Display(p);
程序内部函数计算的信息例如个人所得税,实发数
Real_wage(floattax,floatreal_wage)
if(ListCount()==0)
存储员工信息
Recordinfo(intnum1,stringname1,intage1,stringsex1,stringdepartment1,stringtitle1,floatwage1,floatallowance1,floattax1,floatreal_wage1)
{
ofstreamfile1("
info1.txt"
ios:
app);
file1<
num1<
员工姓名:
name1<
年龄:
age1<
性别:
sex1<
部门:
department1<
职务:
title1
工资(元):
wage1<
津贴(元):
allowance1<
个人所得税(元):
tax1<
实发数(元):
real_wage1<
file1.close();
}
*定义一个对象Worker1*
WorkerWorker1;
*****************************************************
*主菜单函数*
intMenu()
\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\t"
\t\t~企业员工工资管理系统\t~"
\t\t~*******主菜单*******\t~"
intn=1,select=-1;
\t\t~"
n++<
.输入员工信息\t\t~"
.删除指定员工编号信息\t\t~"
.修改指定员工编号信息\t\t~"
.查找指定员工编号信息\t\t~"
.输出全体员工信息\t\t\t~"
\t\t~0.退出\t\t\t\t~"
\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\t\t"
[请选择0—5(输入相应数字)]:
select;
returnselect;
退出程序
charExit()
chars;
确定要退出程序吗?
[YN]:
s;
returns;
输入员工信息
voidInput(int*num,string*name,int*age,string*sex,string*department,string*title,float*wage,float*allowance)
现在输入员工信息!
*num;
if(*num==-1)return;
*name;
*age;
*sex;
*department;
*title;
*wage;
*allowance;
把员工信息插入到链表中
voidAddNew()
intnum=0;
stringname;
intage=0;
stringsex;
stringdepartment;
stringtitle;
floatwage=0;
floatallowance=0;
floattax=0;
floatreal_wage=0;
当输入的员工编号为-1是表示结束输入"
Input(&
num,&
name,&
age,&
sex,&
department,&
title,&
wage,&
allowance);
while(num!
=-1)
Worker1.AddItem(num,name,age,sex,department,title,wage,allowance);
Worker1.Real_wage(tax,real_wage);
Worker1.Recordinfo(num,name,age,sex,department,title,wage,allowance,tax,real_wage);
Input(&
员工工资信息已成功存储!
查找指定员工编号信息
voidDoFind()
intnum;
do{
请输入要查找的员工的编号:
cin>
if(num==-1)continue;
Worker1.Search(num);
}while(num!
=-1);
删除指定员工编号信息
voidDoDelete()
do
请输入要删除的员工的编号:
Worker1.RemoveItem(num);
已成功删除该员工信息!
修改指定员工编号信息
voidDoMotify()
请输入要修改的员工的编号:
Worker1.ReplaceItem(num);
已成功修改该员工信息!
输出全体员工信息
voidList()
Worker1.ListL();
*主函数*
intmain()
intselect;
while
(1)
select=Menu();
switch(select)
{
case0:
s=Exit();
if(s=='
y'
||s=='
Y'
)return0;
break;
case1:
AddNew();
case2:
DoDelete();
case3:
DoMotify();
case4:
DoFind();
case5:
List();
default:
cout<
无效输入!
}
return0;
参考文献
[1]陈天华编.面向对象程序设计与VisualC++6.0教程[M].北京:
清华大学出版社,2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 工资管理 系统 毕业 课程设计