




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C++实现职工工资管理系统课程设计本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下
现在的大学里经常有一些课程设计,这不,我就遇到了。
我们的c++老师,给了我们许多的题目要我们来选择,我就选择了这个,说难又不难,说简单,又不简单的。
题目职工工资管理系统
我们老师给的题目是这样的!!
职工工资管理设计与实现
功能设计要求
1.输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2.显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3.修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5.删除记录:可删除数据文件中的任一记录。
6.统计:(A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
7.保存数据文件功能。
下面是我设计的程序功能
1.主函数main(void):调用设计者的相关信息函数、调用Menu()函数,实现系统的主要功能处理;
2.主菜单Menu()函数:确定如何选择所需功能,调用数据输入、显示、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据处理;
3.数据输入Input():完成职工信息添加;
4.数据修改函数update():修改职工工资等信息数据;
5.数据删除函数Delete():删除职工信息数据;
6.数据查找函数select():查找某一职工工资等信息情况;
7.数据统计函数tongji():统计职工人数;
8.数据显示函数print():将职工信息数据显示出来;
9.文件保存函数Save():将录入的职工信息保存到文件;
10文件读取函数Read():从文件中读取职工信息;
代码的流程图
代码的实现
头文件:
#ifndef
__MONEY__
#define
__MONEY__
#includeiostream
#includestdlib.h
#includestring.h
usingnamespacestd;
#defineMAX_NAME
10//定义姓名的最大长度
#defineSTART
3//初始化为职工开辟的空间
#defineADD
5//每次为职工增加的空间
#defineFILENAME
"staff.dat"//存入的文件名
//定义一个职工类
classStaff
public:
//显示职工信息
void
print()
{
coutid"
"name"
"mon1"
"mon2"
"mon3"
"
mon4"
"mon5"
"Staff::summoney()"
"Staff::avgmoney()endl;
}
//求每个人的总工资
doublesummoney()
{
doublesum;
sum=mon1+mon2+mon3+mon4+mon5;
returnsum;
}
//求每个人的平均工资
doubleavgmoney()
{
doubleavg;
avg=(Staff::summoney())/5;
returnavg;
}
charname[MAX_NAME];
intid;
doublemon1,mon2,mon3,mon4,mon5;
//定一个系统类
classSystem
public:
//显示系统内的职工信息
voidprint()
{
size_ti=0;
if(System::len==0)
{
cout"系统中没有职工信息"endl;
}
for(i=0;iSystem::len;i++)
{
(System::staff+i)-print();
}
}
Staff*staff;//职工类的指针
size_tlen;//职工人数
size_twidth;//为职工创建的空间大小
//初始化系统
voidInitclass(System*my_sys);
//添加职工信息
voidInput(System*my_sys);
//查找职工信息
voidSelect(System*my_sys);
//修改职工信息
voidUpdate(System*my_sys);
//删除职工信息
voidDelete(System*my_sys);
//统计职工信息
voidtongji(System*my_sys);
//求每一项的平均值
void
money(System*my_sys);
//从文件读取职工信息
void
Read(System*my_sys);
//将职工信息写入文件
void
Save(System*my_sys);
//释放动态开辟的空间
voidFree(System*my_sys);
#endif
//__MONEY__
源文件:
#define_CRT_SECURE_NO_WARNINGS1
#include"xiaodong.h"
//初始化系统
voidInitclass(System*my_sys)
my_sys-staff=(Staff*)calloc(START,sizeof(Staff));
if(my_sys-staff==NULL)
{
cout"开辟空间失败"endl;
exit(EXIT_FAILURE);
}
my_sys-len=0;
my_sys-width=START;
void
IF_space(System*my_sys)
if(my_sys-len==my_sys-width)
{
Staff*temp=(Staff*)realloc(my_sys-staff,my_sys-width+ADD);
if(temp==NULL)
{
cout"职工人数已达系统限定,"endl;
}
else
{
my_sys-staff=temp;
my_sys-width+=ADD;
}
}
//添加职工信息
voidInput(System*my_sys)
IF_space(my_sys);
cout"请输入职工信息:"endl;
cout"姓名基本工资职务工资津贴医疗保险公积金"endl;
cin(my_sys-staff+my_sys-len)-name
(my_sys-staff+my_sys-len)-mon1
(my_sys-staff+my_sys-len)-mon2
(my_sys-staff+my_sys-len)-mon3
(my_sys-staff+my_sys-len)-mon4
(my_sys-staff+my_sys-len)-mon5;
(my_sys-staff+my_sys-len)-id=
my_sys-len+1;
my_sys-len+=1;
//查找职工信息
voidSelect(System*my_sys)
if(my_sys-len==0)
{
cout"系统中没有保存职工信息"endl;
}
else
{
cout"请输入所要查询的职工姓名:";
charName[10]={0};
cinName;
size_ti=0;
for(i=0;imy_sys-i++)
{
if(strcmp(Name,(my_sys-staff+i)-name)==0)
{
cout"该职工信息为:"endl;
cout"ID号
姓名
基本工资
职务工资
津贴
医疗保险
公积金
总工资
平均工资"endl;
my_sys-staff-print();
break;
}
}
if(i=my_sys-len)
cout"系统中没有此职工信息"endl;
}
voidmenu1()
cout"请选择要修改的信息:"endl;
cout"***********************************************"endl;
cout"******
1.修改职工姓名
******"endl;
cout"******
2.修改基本工资
******"endl;
cout"******
3.修改职务工资
******"endl;
cout"******
4.修改紧贴
******"endl;
cout"******
5.修改医疗保险
******"endl;
cout"******
6.修改公积金
******"endl;
cout"***********************************************"endl;
//修改职工信息
voidUpdate(System*my_sys)
if(my_sys-len==0)
{
cout"系统中没有保存职工信息"endl;
}
else
{
cout"请输入所要修改的职工姓名:";
charName[MAX_NAME]={0};
cinName;
size_ti=0;
for(i=0;imy_sys-i++)
{
if(strcmp(Name,(my_sys-staff+i)-name)==0)
{
menu1();
cout"请选择对应数字序号进行操作:";
inta=0;
charname[MAX_NAME]={0};
doublemon1=0.0,mon2=0.0,mon3=0.0,mon4=0.0,mon5=0.0;
cina;
switch(a)
{strong
/strong
case1:
cout"请输入新的职工姓名:";
cinname;
strcpy(my_sys-staff-name,name);
break;
case2:
cout"请输入新的基本工资:";
cinmon1;
my_sys-staff-mon1=mon1;
break;
case3:
cout"请输入新的岗位工资:";
cinmon2;
my_sys-staff-mon2=mon2;
break;
case4:
cout"请输入新的岗位工资:";
cinmon3;
my_sys-staff-mon3=mon3;
break;
case5:
cout"请输入新的岗位工资:";
cinmon4;
my_sys-staff-mon4=mon4;
break;
case6:
cout"请输入新的岗位工资:";
cinmon5;
my_sys-staff-mon5=mon5;
break;
default:
cout"输入不合标准"endl;
break;
}
break;
}
}
if(i=my_sys-len)
cout"系统中没有此职工信息"endl;
}
//删除职工信息
voidDelete(System*my_sys)
if(my_sys-len==0)
{
cout"系统中没有保存职工信息"endl;
}
else
{
cout"请输入所要删除的职工姓名:";
charName[MAX_NAME]={0};
cinName;
size_ti=0;
size_tm=my_sys-
for(i=0;imy_sys-i++)
{
if(strcmp(Name,(my_sys-staff+i)-name)==0)
{
for(size_tj=i;jmy_sys-len-1;j++)
*(my_sys-staff+j)=*(my_sys-staff+j+1);
my_sys-len--;
break;
}
}
if(i=m)
cout"系统中没有此职工信息"endl;
}
//统计:统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)
//以内的工资职工人数及占总职工人数的百分比。
void
tongji(System*my_sys)/*m-n为
1000-2000,2000-3000,3000-max*/
double
number=0.0;
double
money=0.0;
double
m=0.0;
double
n=0.0;
if(my_sys-len==0)
{
cout"系统中没有保存职工信息"endl;
}
else
{
cout"请输入你要统计的职工信息指定的条件m和n:";
cinmn;
for(size_ti=0;imy_sys-len;i++)
{
money=(my_sys-staff+i)-mon1+(my_sys-staff+i)-mon2+(my_sys-staff+i)-mon3;
if((money=m)(money=n))
number++;
}
cout"职工工资前三项之和在"m"--"n"职工人数及占总职工人数的百分比为:"(double)number/my_sys-lenendl;
}
//求每一项的平均值
void
money(System*my_sys)
doublecount1=0;
doublecount2=0;
doublecount3=0;
doublecount4=0;
doublecount5=0;
if(my_sys-len0)
{
for(size_ti=0;imy_sys-i++)
{
count1=count1+my_sys-staff-mon1;
count2=count2+my_sys-staff-mon1;
count3=count3+my_sys-staff-mon1;
count4=count4+my_sys-staff-mon1;
count5=count5+my_sys-staff-mon1;
}
cout"各项工资的平均工资为"
count1/my_sys-len""
count2/my_sys-len""
count3/my_sys-len""
count4/my_sys-len""
count5/my_sys-lenendl;
}
//从文件读取职工信息
void
Read(System*my_sys)
Staff
s;
FILE*pf=fopen(FILENAME,"r");
if(pf==NULL)
{
perror("error:");
Free(my_sys);
exit(EXIT_FAILURE);
}
while(fread(s,sizeof(Staff),1,pf))//从文件中读取数据,,直到读取的为空
{
IF_space(my_sys);
my_sys-staff[my_sys-len++]=s;
}
fclose(pf);//记着关闭文件
//将职工信息写入文件
void
Save(System*my_sys)
FILE*pf=fopen(FILENAME,"w");
if(pf==NULL)
{
perror("error:");
Free(my_sys);
exit(EXIT_FAILURE);
}
for(size_ti=0;imy_sys-len;i++)
{
fwrite(my_sys-staff+i,1,sizeof(Staff),pf);
}
fclose(pf);
voidFree(System*my_sys)
if(my_sys-staff!=NULL)
{
free(my_sys-staff);
my_sys-staff=NULL;
}
}
测试代码:
#define
_CRT_SECURE_NO_WARNINGS
#include"xiaodong.h"
voidmenu()
cout"#######################################################################"endl;
cout"--------------------------职工工资管理系统()---------------------------"endl;
cout"***********************************************************************"endl;
cout"**
1.修改职工信息
**"endl;
cout"**
2.添加职工信息
**"endl;
cout"**
3.删除职工信息
**"endl;
cout"**
4.查找职工信息
**"endl;
cout"**
5.统计职工信息
**"endl;
cout"**
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮考试题及答案
- 单招试题及答案
- 风险投资管理的试题及答案
- 工程法规考试2025年效率试题
- 社会学视角看家庭功能试题及答案
- 不同行业会计工作计划的差异
- 企业并购中的财务管理试题及答案
- 加强对行业发展动态的研究计划
- 踏实备考2025年工程法规考试试题及答案
- 主管在危机管理中的应对策略计划
- 2023年04月江苏南京师范大学附属中学公开招聘教科室文员1人笔试参考题库附答案详解
- 监事会成员任职决定
- 线段的垂直平分线 课件
- 桌面运维工程师能力试卷试卷题库面试版本
- 工业园区物业保洁工作作业指导手册
- 消防安全工作例会制度
- GB/T 9634.4-2007铁氧体磁心表面缺陷极限导则第4部分:环形磁心
- 2022年阜宁县(中小学、幼儿园)教师招聘考试《教育综合知识》试题及答案解析
- GB/T 15608-2006中国颜色体系
- 95598工单大数据分析及压降策略
- 《游园不值》-完整版课件
评论
0/150
提交评论