基于c++语言的职工工资管理系统Word格式.docx
- 文档编号:22414288
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:41
- 大小:353.04KB
基于c++语言的职工工资管理系统Word格式.docx
《基于c++语言的职工工资管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于c++语言的职工工资管理系统Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
在程序中定义了structepployee的职工信息结构体、classInformation的职工类、epployee*Information:
:
creat(void)的职工链表信息及voidInformation:
output()输出等函数,编写各相关的子函数的调用等。
四、程序功能描述与模块结构
(一)程序功能描述
通过主菜单Menu()函数将读取文件信息、输入、显示、统计、增加、删除、修改、查找、排序等函数结合一起,在用户通过相关操作选择其中一个功能时,调用该功能函数,完成数据处理。
在主函数中调用主菜单Menu()函数,完成操作。
用一个中间函数将主函数与各功能函数连接在一起,不仅使程序语言简洁、明了、易懂,而且在功能实现上也更加晚上。
(二)功能模块
1.主函数intmain(void):
设置背景颜色和字体颜色、调用设计者的相关信息函数、调用Menu函数,实现系统的主要功能处理;
2.主菜单Menu()函数:
确定如何选择所需功能,调用读取文件信息、数据输入、显示、排序、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据处理;
3.读取文件的信息Read()函数:
从文件中读取职工工资的信息表并显示出来;
4.数据输入函数creat():
建立链表,完成职工信息录入;
5.数据显示函数output():
将职工信息数据显示出来;
6.数据统计函数count():
统计职工人数;
7.数据增加函数insert():
添加职工信息;
8.数据删除函数cancel():
删除职工信息数据;
9.数据修改函数modify():
修改职工工资等信息数据;
10.数据查找函数find():
查找某一职工工资等信息情况;
11.数据排序函数sort():
将存储在文件中的职工信息按一定要求排序;
12.数据保存函数save():
对系统中的数据进行相关的操作后将其保存起来;
13.作者信息函数editor():
显示设计者的相关信息;
14.登陆函数Pass():
设定使用权限。
(三)程序流程图
程序流程图主是对各功能模块的具体描述,以一种图表的方式简洁明了的将各模块的呈现出来,通过这些流程图可清楚的看出整个程序的运行过程,体会程序的流畅性。
1.
主函数流程图
图1-1主函数的流程图
2.各子功能函数流程图
图1-2Menu函数流程图
图1-3删除函数的N-S流程图
四、用户使用说明
这是一个关于职工工资管理系统,具有输入、输出、统计、删除、查询、修改数据等功能,建立了一个含有姓名、性别、编号、工资、总工资等成员的结构体数据类型的变量structepployee。
1.用户使用时,根据提示操作,进入登陆页面。
输入登陆名administrator,登陆密码administrator,进入操作系统。
如果登陆信息输错三次,自动退出系统。
2.按显示的数字选择操作,先输入职工数据,然后进行其他操作。
所以输入“1”,开始录入相关数据。
用户录入完数据后,在姓名处键以“#”,结束操作。
3.提取文件信息,输入数字“0”,回车确定操作,将系统以前操作过的保存的文件提取出来,并显示。
4.显示职工信息,输入数字“2”,将需显示的职工信息的编号输入,回车确定操作,系统提取相关数据并显示。
5.将输入的数据进行统计排序,输入数字“3”,回车确定操作,系统显示工资统计表、及各项工资的平均值。
6.查找职工工资,输入“4”,回车确定操作,系统显示“请输入要查找的编号”,输入想要查找的职工的编号,系统提取保存的数据,并显示出来。
7.增加职工工资,输入“5”回车确定操作,系统显示输入的页面,将需增加的职工信息输入,输入完后回车确定,系统显示成功插入,并显示职工工资信息表。
8.删除职工工资,输入“6”,回车确定操作,系统显示“请输入要删除的编号”,输入要删除的职工编号,系统将保存的数据删除,并显示剩余的职工工资信息表。
9.修改职工信息,输入“7”,回车确定操作,输入要修改的编号,系统显示该职工的信息,将改后的信息输入系统。
10.将所有操作过的信息保存,输入“8”,回车确定操作,系统显示成功保存信息。
11.退出系统,输入“9”,回车确定操作,系统显示退出的页面,输入任意一个键,退出系统。
(温馨提示:
因时间的限制等原因,本程序内存设置还不够很完善,所以对于整个系统的使用应按照系统设置的顺序,一项项完成下来,方可不出现漏洞。
如果没按照顺序操作,可能会在使用的过程出现一些小差错。
)
五、测试结果
1.开始运行程序,进入系统页面,显示制作者的信息。
图2-1显示制作者信息的页面
2.任意键继续操作,进入登陆页面。
图2-2登陆系统的页面
输错管理员名字或者密码进入到的页面如下
图2-3登陆系统出错的页面
3.成功进入操作系统,按照使用说明进行操作,进入的是总系统的提示页面。
图2-4系统操作的页面
图2-5输入数据的页面
图2-6显示数据的页面
图2-7文件提取信息的页面
图2-8排序统计的页面
图2-9查找职工信息的页面
图2-10查找不到职工信息的页面
图2-11增加职工信息的页面
图2-12增加职工信息后并显示职工工资信息表的页面
图2-13删除职工信息并显示剩余职工信息的页面
图2-14修改职工信息的页面
图2-15成功修改职工信息的页面
图2-16修改没有编号职工信息的页面
图2-17保存所有数据的页面
图2-18退出系统的页面
六﹑程序经验教训总结
通过这个程序设计,我不仅提高了动手操作能力,对C++语言有了更深的认识,能够更好地运用C++语言进行编程设计,同时在思维、看待问题的全面性等方面也有了很大的提高。
不过由于时间、经验不够、对语言的掌握程度不深等问题,在这个系统设计还存在一些问题,比如内存设计还不够完善,整个系统的流畅性等,希望可以在今后的设计上能够解决这些问题,做的更好。
七﹑附录
//职工成绩管理系统
#include<
iomanip>
iostream>
fstream>
malloc.h>
stdlib.h>
string.h>
#defineNULL0
intconstN=20;
#defineLENsizeof(structepployee)
usingnamespacestd;
intn=0;
//定义一个全局变量统计职工人数
//定义一个职工信息的结构体
structepployee
{
charname[N];
//用来存放姓名
charsex[N];
//用来存放性别
longid;
//用来存放编号
floatpaid[3];
//用来存放工资
inttotal;
//用来存放总工资
structepployee*next;
};
//职工类
classInformation
public:
Information();
//构造函数.
~Information();
//析构函数.
epployee*creat();
//建立链表
voidoutput(epployee*head);
//显示职工信息
intcount(epployee*head);
//定义函数count()统计职工总数
epployee*insert(epployee*head);
//指针函数*insert()用来添加职工信息.
epployee*cancel(epployee*head,longid);
//指针函数*cancel()用来删除职工信息.
epployee*find(epployee*head,longid);
//指针函数*find()用来查找职工信息.
epployee*modify(epployee*head,longid);
//指针函数*modife()用来修改职工的信息.
voidsort(epployee*head);
//定义paixu()函数将职工的总额从大到小排列并输出
voidaverage(epployee*head);
//定义职工工资平均值的函数
voidsave(epployee*head);
//保存文件信息
epployee*Read();
//读取文件信息
private:
epployee*p1,*p2,*p3,*head,st;
Information:
Information()
{cout<
<
"
******************************************************************************\n"
;
cout<
------------------------<
欢迎您使用职工工资管理系统>
>
------------------------\n"
******************************************************************************\n\n"
}
//作者的信息和提示
voideditor()
{
cout<
\n\t\t\t本程序制作者:
\n\n\t\t\tIdon'
tknow\n\n\t\t\tQQ:
895026504"
\n\n\t\t\tMadeByVC6.0++\n\n\t\t\t2008年9月30日\n\n\t\t\t按<
Enter>
键进入登陆界面!
!
\n\n\t\t\t如果需要对原来的信息进行操作,则先选择0读取文件信息\n"
endl;
~Information()
{cout<
谢谢您使用职工工资管理系统>
//建立链表信息
epployee*Information:
creat(void)
{//定义一个指向structepployee的结构体指针函数*creat()用来录入职工信息.
charch[N];
n=0;
//用来存放职工姓名
p1=p2=(epployee*)malloc(LEN);
//调用malloc()函数用来开辟一个新的存储单元
-------------<
请建立职工信息表,在姓名处键以#结束输入!
--------------"
姓名:
cin>
ch;
head=NULL;
//给指针head赋初值
while(strcmp(ch,"
#"
)!
=0)//调用字符比较函数strcmp()用来判断是否继续输入
p1=(epployee*)malloc(LEN);
//调用malloc()函数用来开辟一个新的存储单元
strcpy(p1->
name,ch);
//将循环结构前面输入的姓名复制到结构体名为p1的数组name中
性别:
p1->
sex;
编号:
id;
while((p1->
id)<
0||(p1->
id)>
100000)//判断输入的编号是否有效(100000个)
对不起,您的输入错误!
请重新输入(>
0<
1000000):
"
}
基本工资:
paid[0];
paid[0])<
paid[0])>
100000)//判断输入的分数是否有效(>
=0<
=100000)
100000):
加班工资:
paid[1];
paid[1])<
paid[1])>
其他奖金:
paid[2];
paid[2])<
paid[2])>
total=p1->
paid[0]+p1->
paid[1]+p1->
//计算总额
if(n==0)head=p1;
//如果是输入第一组职工信息就将指针p1赋给指针head
elsep2->
next=p1;
//否则将p1赋给p2所指结构体的next指针
p2=p1;
//将指针p1赋给指针p2
n++;
//将职工人数n的值加1
\n姓名:
//将输入的姓名存放到字符数组ch中
p2->
next=NULL;
//将p2所指结构体的next指针重新赋空值
return(head);
//将输入的第一组职工信息返回
//定义output()函数将职工的信息从头指针所指内容开始输出
voidInformation:
output(epployee*head)
//system("
cls"
);
if(head==NULL)cout<
这是一个空表,请先输入职工信息!
\n"
else{
-------------------------------------------------------------------------------\n"
*职工工资信息表*\n"
|编号||姓名||性别||基本工资||加班工资||其他奖金||总额|\n"
p1=head;
//将头指针赋给p
do
setw(6)<
id
setw(14)<
name
setw(11)<
sex
paid[0]
setw(15)<
paid[1]
setw(13)<
paid[2]
total<
p1=p1->
next;
//将下一组职工信息的next指针赋给p
}while(p1!
=NULL);
//若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.
//统计职工人数的函数
intInformation:
count(structepployee*head)//定义函数count()统计职工总数
if(head==NULL)return(0);
//若指针head为空返回值为0
elsereturn(1+count(head->
next));
//函数的递归调用
//添加职工的成绩的函数
insert(epployee*head)
//插入新结点定义一个指向structepployee的结构体指针函数*insert()用来添加职工信息.
\t----------------<
请输入新增职工成绩信息>
----------------\n"
//使p1指向插入的新结点
100000)
//将输入的编号存放到p1所指结构体的数组id中
name;
//将输入的姓名存放到结构体名为p1的数组name中
//将输入的基本工资存放到p1所指结构体的数组paid中
//将输入的加班工资存放到p1所指结构体的数组paid中
//将输入的其他奖金存放到p1所指结构体的数组paid中
//计算总分
p2=head;
//将头指针赋给p2
if(head==NULL)//若没调用次函数以前的头指针head为空
head=p1;
}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值
else
id>
id)&
&
(p2->
next!
=NULL))
p3=p2;
//p3指向原p2指向的结点
p2=p2->
}//p2后移一个结点
if(p1->
id<
=p2->
id)
if(head==p2)
next=head;
}//插入到第一个结点之前
p3->
next=p2;
}//插入到p3所指结点之后
else
}//插入到尾结点之后
//将职工人数加1
你输入的职工信息已经成功插入>
----------------"
//删除职工信息
cancel(epployee*head,longid)//定义一个指向structepployee的结构体指针函数*delete()用来删除考生信息.
system("
if(head==NULL)//若调用次函数以前的头指针head为空
return(head);
//否则将头
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 c+ 语言 职工工资 管理 系统