C企业工资管理系统课程设计.doc
《C企业工资管理系统课程设计.doc》由会员分享,可在线阅读,更多相关《C企业工资管理系统课程设计.doc(23页珍藏版)》请在冰点文库上搜索。
目录
一、需求分析.......................................1
二、概要设计.......................................3
三、详细设计......................................12
四、调试分析......................................12
五、用户手册......................................13
六、测试数据......................................17
七、附录..........................................31
一、需求分析
1.数据存储采用文件形式。
2.标准C++输入输出
3.程序完成企业人事工资管理,能够实现工资的录入、统计(整个单位的平均工资、最高工资、最低工资)、查询、修改、删除等功能。
4.程序执行的命令:
(1)录入员工工资信息;
(2)选择需要执行的操作(添加、统计、删除、修改、查询);
(3)输出结果。
二、概要设计
1.设计类的数据类型定义
classmessage{
private:
charbornplace[10],duty[10];//籍贯职务
intID;//身份证号
public:
charname[10],bumen[10];//姓名部门
intbasesalary;//基本工资
intjiangjin;//奖金
friendvoidmodify(intx);//友员函数
friendintdel(intx);//友员函数
}
2.程序模块
(1)录入操作:
voidwriten(intx),该模版主要实现工资信息的录入;
(2)添加操作:
voidadd(intx),该模版主要实现工资信息的添加;
(3)删除操作:
voiddel(intx),该模版主要实现工资信息的删除;
(4)修改操作:
voidmodify(intx),该模版主要实现工资信息的修改;
(5)查询操作:
voidfind(intx),该模版主要实现工资信息的查询统计操
(6)统计操作:
voidcount(intx),实现最高工资,最低工资等的统计;
(7)退出;
三、详细设计
(1)类模块
classmessage{
private:
charbornplace[10];
charduty[10];
intID;
public:
charname[10];
charbumen[10];
intbasesalary;
intjiangjin;
message(){}//********************构造函数
voidxinxi(chara_name[],chara_bornplace[],chara_duty[],chara_bumen[],inta_ID,inta_basesalary,inta_jiangjin)
{
strcpy(name,a_name);
strcpy(bornplace,a_bornplace);
strcpy(duty,a_duty);
strcpy(bumen,a_bumen);
ID=a_ID;
basesalary=a_basesalary;
jiangjin=a_jiangjin;
}
message&operator=(constmessage&s)//**********************运算符重载
{
strcpy(name,s.name);
strcpy(bornplace,s.bornplace);
strcpy(duty,s.duty);
strcpy(bumen,s.bumen);
ID=s.ID;
basesalary=s.basesalary;
jiangjin=s.jiangjin;
return*this;
}
friendvoidmodify(intx);//************************友元函数
friendintdel(intx);
voidput()//定义put函数,以便于其他函数的调用
{
cout< }
~message()//**************************析构
{}
};
(2)主函数流程图
开始
intb,i
输入i值
i=1
录入
i=2
添加
i=3
删除
i=4
修改
i=5
查找
i=6
统计
i=7
退出
结束
(3)录入、添加函数流程图
开始
cout(请输入您要添加的信息)
cout(姓名,职务,身份证号,籍贯,基本工资,奖金,)
cin(name,,duty,ID,bornplace,basesalary,,jiangjin,)
结束
(4)删除函数流程图
开始
inti,j,temp,flag=-1,charming
输入删除的名字
name=ming
ia[j]=b[i],i++,j++
i++
没有找到要删除的人
end
(5)修改函数流程图
start
inti,j,charname
输入ming
b[i].name=ming
输入修改的信息(名字,,职务,身份证号,籍贯,工资)
cin(name,duty,ID,bornplace,basesalary,jiangjin)
没找到要修改的
end
(6)查找函数流程图
开始
inti,j,k,num;charming,
k=1
输入要查询的名字
b[i].name=ming
b[j].put
没有找到要查找的姓名
结束
(8)统计函数流程图
四、调试分析
1、开始使用文件保存时出现不能为read错误,后通过查阅资料解决了问题;
2、删除部分程序开始不能判断是否找到了要删除的人员信息,后来加了flag标记后可以判断了;
3、统计部分程序在求均方差的时候出现算法错误,后来查阅了均方差公式后改正了过来
4、使用友员函数可以解决类外作用域问题。
五、用户手册
1.本程序的运行环境为doc操作系统;
2.进入界面后,按照提示输入选择;
3.选择1:
执行工资信息录入操作;
4.选择2:
执行工资信息添加操作;
5.选择3:
执行工资信息删除操作;
6.选择4:
执行工资信息修改操作;
7.选择5:
执行工资信息查询操作;
8.选择6:
执行工资信息统计操作;
9.选择7:
退出工资管理系统;
10.输入后按回车键,即可输出信息,按提示输入即可。
六、测试数据
七、附录
#include"iostream.h"
#include"stdlib.h"
#include"stdio.h"
#include"string.h"
#include"message.h"
classmessage{
private:
charbornplace[10],duty[10];//籍贯职务
intID;//身份证号
public:
charname[10],bumen[10];//姓名部门
intnumber;//工号
intbasesalary;//基本工资
intjobsalary;//岗位工资
intyljj;//医疗基金
intsj;//税金
intjiangjin;//奖金
message(){}//********************构造函数
voidxinxi(chara_name[],chara_bornplace[],chara_duty[],chara_bumen[],inta_ID,inta_number,inta_basesalary,inta_jobsalary,inta_jiangjin,inta_yljj,inta_sj)
{
strcpy(name,a_name);
strcpy(bornplace,a_bornplace);
strcpy(duty,a_duty);
strcpy(bumen,a_bumen);
ID=a_ID;
number=a_number;
basesalary=a_basesalary;
jobsalary=a_jobsalary;
jiangjin=a_jiangjin;
yljj=a_yljj;
sj=a_sj;
}
message&operator=(constmessage&s)//**********************运算符重载
{
strcpy(name,s.name);
strcpy(bornplace,s.bornplace);
strcpy(duty,s.duty);
strcpy(bumen,s.bumen);
ID=s.ID;
number=s.number;
basesalary=s.basesalary;
jobsalary=s.jobsalary;
jiangjin=s.jiangjin;
yljj=s.yljj;
sj=s.sj;
return*this;
}
friendvoidmodify(intx);//************************友元函数
friendintdel(intx);
voidput()//定义put函数,以便于其他函数的调用
{
cout< }
~message()//**************************析构
{}
};
voidmain()
{
inti,b;
intor;
cout<<"********欢迎进入企业工资管理系统********"< cout<<"***********1.工资信息录入操作***********"< cout<<"***********2.工资信息增加操作***********"< cout<<"***********3.工资信息删除操作***********"< cout<<"***********4.工资信息修改操作***********"< cout<<"***********5.工资信息查找操作***********"< cout<<"***********6.工资信息统计操作***********"< cout<<"***********7.退出***********************"< cout<<"*********请输入你要进行的操作选项*******"< cin>>i;
cout< while(i!
=10)
{
switch(i)
{
default:
cout<<"你输入的有误,请重新输入。
"< case1:
cout<<"输入企业人员的人数:
";//输入信息
cin>>b;
cout< writein(b);
break;
case2:
//添加
add(b);
b++;
break;
case3:
//删除
del(b);
b--;
break;
case4:
//修改
modify(b);
break;
case5:
//查询
cout<<"┌─────────────┐"< cout<<"│请输入您要选择的查询方式:
│"< cout<<"│1.按姓名查找操作│"< cout<<"│2.按工号查找操作│"<cout<<"└─────────────┘"< cin>>or;
if(or==1)
namfind(b);
elseif(or==2)
numfind(b);
break;
case6:
//统计
intcc;
cout<<"┌─────────────┐"< cout<<"│请输入您要选择的查询方式:
│"< cout<<"│1.按部门统计│"< cout<<"│2.按单位统计│"<cout<<"└─────────────┘"< //cin>>or;:
cin>>cc;
if(cc==1)
bmcount(b);
elseif(cc==2)
dwcount();
break;
case7:
exit(0);
}
cout<<"********欢迎进入企业工资管理系统********"< cout<<"***********1.工资信息录入操作***********"< cout<<"***********2.工资信息增加操作***********"< cout<<"***********3.工资信息删除操作***********"< cout<<"***********4.工资信息修改操作***********"< cout<<"***********5.工资信息查找操作***********"< cout<<"***********6.工资信息统计操作***********"< cout<<"***********7.退出***********************"< cout<<"*********请输入你要进行的操作选项*******"< cin>>i;
cout< }
}
voidwritein(intx)//工资信息录入
{
messagea[10];
chara_name[10],a_bornplace[10],a_duty[10],a_bumen[10];//姓名籍贯职务部门
intj,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number;//身份证号基本工资岗位工资奖金医疗住房基金税金
fstreamf("wenjian.txt",ios:
:
out);//打开文件
if(!
f)
{
cout<<"Cannotopenfile\n.";
}
for(j=0;j {
cout<<"姓名:
"< cin>>a_name;
cout<<"籍贯:
"< cin>>a_bornplace;
cout<<"职务:
"< cin>>a_duty;
cout<<"部门:
"< cin>>a_bumen;
cout<<"身份证号:
"< cin>>a_ID;
cout<<"工号:
"< cin>>a_number;
cout<<"基本工资:
"< cin>>a_basesalary;
cout<<"岗位工资:
"< cin>>a_jobsalary;
cout<<"奖金:
"< cin>>a_jiangjin;
cout<<"医疗住房基金:
"< cin>>a_yljj;
cout<<"税金:
"< cin>>a_sj;
cout< a[j].xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj);
f.write((char*)&a[j],sizeof(a[j])); //保存录入的信息
}
f.close();//关闭文件
cout< ifstreamin("wenjian.txt",ios:
:
in);
messageb[10];
for(j=0;j {
if(!
in.eof())
{
in.read((char*)&b[j],sizeof(a[j]));
b[j].put();
}
else
exit(0);
}
in.close();
}
voidadd(intx)//工资信息添加
{
chara_name[10],a_bornplace[10],a_duty[10],a_bumen[10];
inta_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number,temp=30;
messagec;
cout<<"输入要增加的人员的信息:
"<cout<<"姓名:
"< cin>>a_name;
cout<<"籍贯:
"< cin>>a_bornplace;
cout<<"职务:
"< cin>>a_duty;
cout<<"部门:
"< cin>>a_bumen;
cout<<"身份证号:
"< cin>>a_ID;
cout<<"工号:
"< cin>>a_number;
cout<<"基本工资:
"< cin>>a_basesalary;
cout<<"岗位工资:
"< cin>>a_jobsalary;
cout<<"奖金:
"< cin>>a_jiangjin;
cout<<"医疗住房基金:
"< cin>>a_yljj;
cout<<"税金:
"< cin>>a_sj;
cout< c.xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj);
ofstreamout("wenjian.txt",ios:
:
app);
out.write((char*)&c,sizeof(classmessage));//保存到文件中
out.close();
cout<<"增加成功!
"<}
intdel(intx)//工资信息删除
{
inti,j,temp,flag=-1;
charming[10];
system("cls");
ifstreamin("wenjian.txt");
messageb[30],c;
for(j=0;j<30;j++)
{
if(!
in.eof())
{
in.read((char*)&b[j],sizeof(classmessage));
}
else
{
temp=j-1;
break;
}
}
cout<<"文件内保存的信息有:
"< cout<<"姓名地址职务部门身份证号工号工资"< for(j=0;j b[j].put();
in.close();
fstreamsp("wenjian.txt",ios:
:
in||ios:
:
out);
for(j=0;j<30;j++)
{
if(!
sp.eof())
{
sp.read((char*)&b[j],sizeof(classmessage));
}
else
{
temp=j-1;
break;
}
}
sp.close();
messagea[30];
fstreamap("wenjian.txt",ios:
:
in||ios:
:
out);
cout<<"请输入要删除人员信息的名字:
";
cin>>ming;
cout< for(j=0,i=0;i {
if(strcmp(b[i].name,ming)==0)//标记要删除的信息
{
flag=i;