C++程序工资管理系统Word文件下载.docx
《C++程序工资管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++程序工资管理系统Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
![C++程序工资管理系统Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/db81b6b3-aca9-45c6-91aa-48c2a88693b0/db81b6b3-aca9-45c6-91aa-48c2a88693b01.gif)
//用来存放编号
floatpaid[3];
//用来存放工资
inttotal;
//用来存放总工资
structstudent*next;
};
//-------------->
职工类
classInformation
public:
Information();
//构造函数.
~Information();
//析构函数.
student*creat();
//建立链表
voidoutput(student*head);
//显示职工信息
intcount(student*head);
//定义函数count()统计职工总数
student*insert(student*head);
//指针函数*insert()用来添加职工信息.
student*cancel(student*head,longid);
//指针函数*cancel()用来删除职工信息.
student*find(student*head,longid);
//指针函数*find()用来查找职工信息.
student*modify(student*head,longid);
//指针函数*modife()用来修改职工的信息.
voidpaixu(student*head);
//定义paixu()函数将职工的总额从大到小排列并输出
voidaverage(student*head);
//定义职工工资平均值的函数
voidsave(student*head);
//保存文件信息
student*Read();
//读取文件信息
private:
student*p1,*p2,*p3,*head,st;
Information:
:
Information()
{cout<
<
"
******************************************************************************\n"
;
cout<
------------------------<
欢迎您使用职工工资管理系统>
>
------------------------\n"
******************************************************************************\n\n"
}
//------------------>
作者的信息和提示
voidzuozhe()
{
\n\t\t\t本程序制作者:
\n\n\t\t\tfangfangff\n\n\t\t\tQQ:
609540184"
\n\n\t\t\tMadeByVC6.0++\n\n\t\t\t2007年7月18日\n\n\t\t\t按<
Enter>
键进入登陆界面!
!
\n\n\t\t\t如果需要对原来的信息进行操作,则先选择0读取文件信息\n"
endl;
~Information()
{cout<
谢谢您使用职工工资管理系统>
建立链表信息
student*Information:
creat(void)
{//定义一个指向structstudent的结构体指针函数*creat()用来录入职工信息.
charch[N];
n=0;
//用来存放职工姓名
p1=p2=(student*)malloc(LEN);
//调用malloc()函数用来开辟一个新的存储单元
-------------<
请建立职工信息表,在姓名处键以#结束输入!
--------------"
姓名:
cin>
ch;
head=NULL;
//给指针head赋初值
while(strcmp(ch,"
#"
)!
=0)
{
//调用字符比较函数strcmp()用来判断是否继续输入
p1=(student*)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])>
//判断输入的分数是否有效(>
=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(student*head)
system("
cls"
);
if(head==NULL)cout<
这是一个空表,请先输入职工信息!
\n"
else{
-------------------------------------------------------------------------------\n"
*职工工资信息表*\n"
|编号|
|姓名|
|性别|
|基本工资|
|加班工资|
|其他奖金|
|总额|\n"
p1=head;
//将头指针赋给p
do
setw(6)<
id
setw(10)<
name
sex
paid[0]
paid[1]
setw(12)<
paid[2]
total<
p1=p1->
next;
//将下一组职工信息的next指针赋给p
}while(p1!
=NULL);
//若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.
统计职工人数的函数
intInformation:
count(structstudent*head)
if(head==NULL)return(0);
//若指针head为空返回值为0
elsereturn(1+count(head->
next));
//函数的递归调用
//----------->
添加职工的成绩的函数
insert(student*head)
//插入新结点定义一个指向structstudent的结构体指针函数*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(student*head,longid)
//定义一个指向structstudent的结构体指针函数*delete()用来删除考生信息.
//若调用次函数以前的头指针head为空
return(head);
//否则将头指针赋给p1
while(id!
=p1->
id&
=NULL)
//寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空
//p2指向原p1指向的结点p1后移一个结点
if(id==p1->
id)
//如果输入的职工编号是p1所指的职工编号//结点找到后删除
if(p1==head)head=p1->
//如果head指针和p1指针相等则将下一个结点赋给指针head
next=p1->
//否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去
删除编号为"
的职工\n"
n--;
//将职工人数减1
//将头指针返回
/**************************修改职工数据**************************/
modify(student*head,longid)
请输入须修改的职工工资信息>
//使p1指向输入的结点
=NULL)
//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空
//如果要查找的职工编号是p1所指的职工编号
你需要修改的职工信息如下:
------------------------------------------------------------------------------\n"
//计算总分
需要修改的信息中没有编号为"
的职工.\n\n"
//没有想要修改的结点信息
getchar();
查找职工信息
find(student*head,longid)
//定义一个指向structstudent的结构体指针函数*find()用来查找职工信息.
co