工资管理系统(1)Word文件下载.doc
- 文档编号:659691
- 上传时间:2023-04-29
- 格式:DOC
- 页数:38
- 大小:662KB
工资管理系统(1)Word文件下载.doc
《工资管理系统(1)Word文件下载.doc》由会员分享,可在线阅读,更多相关《工资管理系统(1)Word文件下载.doc(38页珍藏版)》请在冰点文库上搜索。
(2)所设计文件
在C盘下定义“file.dat”文件,将职工信息写入其中。
2、概要设计
(1)程序中使用的存储结构设计说明
structEmployee//声明职工的结构作为链表节点。
{
intm_Code;
//职工代码
charm_Name[20];
//职工姓名
unsignedintm_Wage;
//职工工资
intm_level;
//工资级别
structEmployee*Next;
//链表节点的指针域
};
(2)每个部分的算法设计说明。
1、整体算法流程图
2、Add(Head);
函数算法流程图
3、Modify(Head)函数算法流程图;
4、Del(Head);
函数的算法流程图
5、Search(Head)函数算法流程图;
6、Sort(Head);
7、Display_List(Head);
3、详细设计
(1)运行界面截图
主界面(菜单选项)
图3-1-1
职工注册界面(已经注册过两个,此界面为第三个职工注册)
图3-1-2
信息修改界面(修改代码为22222的职工信息)
图3-1-3
信息删除界面(删除代码为11111的职工信息)
图3-1-4
信息查询界面(查询姓名为ww的职工信息)
图3-1-5
排序界面(按工资从高到低排序)
图3-1-6
信息显示界面(显示所有职工信息)
图3-1-7
退出系统界面
图3-1-8
(2)相应算法实现的源程序(有注解说明)
1、职工注册
voidAdd(LinkHead)//前插法添加数据。
{
LinkpNew;
//声明一个新节点。
charagain;
charname[20];
intcode,level;
unsignedintwage;
do
{
system("
cls"
);
cout<
<
"
\t*************************用户注册系统**************************\n"
endl;
pNew=(Link)newNode;
//数据域。
cout<
请输入第"
n+1<
个人的信息\n"
endl<
请输入职工代码:
;
cin>
>
code;
Clear(code);
请输入职工姓名:
name;
请输入职工工资:
wage;
sum+=wage;
n++;
while(cin.fail())
{
cout<
请输入正确的工资数据。
cin.clear();
fflush(stdin);
cin>
}
请输入工资级别(工资级别分为1,2,3三个等级):
level;
Clear(level);
while(4<
=level||level<
=0)
{
工资等级输入错误!
请重新输入工资级别:
}
switch(level)
case1:
sum1+=wage;
n1+=1;
break;
case2:
sum2+=wage;
n2+=1;
case3:
sum3+=wage;
n3+=1;
pNew->
m_Code=code;
strcpy(pNew->
m_Name,name);
m_Wage=wage;
m_level=level;
//指针域。
Next=Head->
Next;
Head->
Next=pNew;
数据添加成功!
是否继续添加?
(Y/N)"
again;
}while(again=='
Y'
||again=='
y'
system("
pause"
system("
}
2、信息修改
voidModify(LinkHead)//修改单一个节点。
{
cout<
\t*************************信息修改系统**************************\n"
Linkptr;
intcode;
ptr=Head->
请输入代码:
cin>
Clear(code);
while(ptr)
{
if(ptr->
m_Code==code)
\t=====================查询结果==================================="
\t\t\t"
setw(10)<
left<
代码"
<
姓名"
工资"
<
级别"
\t================================================================"
Display_Node(ptr);
//打印满足条件的节点。
sum-=ptr->
m_Wage;
n-=1;
switch(ptr->
m_level)
{
case1:
sum1-=ptr->
n1-=1;
case2:
sum2-=ptr->
n2-=1;
case3:
sum3-=ptr->
n3-=1;
}
intlevel;
unsignedintwage;
if(ptr)
{
cout<
\t==============你现在可以修改此职工的信息了!
================"
//数据域。
cin>
sum+=wage;
n++;
while(cin.fail())
{
cout<
cin.clear();
fflush(stdin);
cin>
}
请输入工资级别:
Clear(level);
while(4<
{
switch(level)
case1:
sum1+=wage;
n1+=1;
case2:
sum2+=wage;
n2+=1;
case3:
sum3+=wage;
n3+=1;
ptr->
strcpy(ptr->
恭喜你,修改信息成功!
system("
system("
ptr=ptr->
//查询下一节点。
if(ptr=NULL)
没找到此职工的记录,无法修改。
system("
system("
}
3、信息删除
LinkSearch_Unique_Front(LinkHead)//查询满足“职工代码“的职工信息(职工代码必需唯一)。
ptr=Head;
\t========================查询结果==========================="
<
\t=========================================================="
{
Next->
m_Code==code)
Display_Node(ptr->
Next);
//打印满足条件的节点。
returnptr;
//注意,是返回的查询到的节点的直接前趋节点。
//查询下一节点。
}
returnptr;
voidDel(LinkHead)
{
\t*************************信息删除系统**************************\n"
Linkptr_front;
ptr_front=Search_Unique_Front(Head);
if(ptr_front)
sum-=ptr_front->
n-=1;
switch(ptr_front->
case1:
sum1-=ptr_front->
n1-=1;
case2:
sum2-=ptr_front->
n2-=1;
case3:
sum3-=ptr_front->
n3-=1;
ptr=ptr_front->
ptr_front->
Next=ptr_front->
deleteptr;
//删除此节点。
恭喜你,删除信息成功!
。
}
else
没找到此职工的记录,无法删除。
4、信息查询
boolSearch(LinkHead)
\t*************************用户查询系统**************************\n"
选择查询方式:
1、查询职工信息2、按职工的平均工资查询\n"
3、按某一级别人员的平均工资查询"
intlevel;
chari;
i;
if(i=='
1'
)
Linkptr;
charname[20];
ptr=Head->
请输入姓名:
<
while(ptr)
{
if(strcmp(ptr->
m_Name,name)==0)
Display_Node(ptr);
returntrue;
}
ptr=ptr->
无此职工的信息。
system("
system("
returnfalse;
elseif(i=='
2'
doubleaver1;
aver1=sum/n;
职工总数为:
n<
所有职工的工资总数为:
sum<
所有职工的平均工资为:
aver1<
returntrue;
3'
doubleaver2;
请输入您要查找的级别:
aver2=sum1/n1;
工资级别为"
level<
职工总数为:
n1<
cout<
所有工资级别为"
职工的工资总数为:
sum1<
break;
aver2=sum2/n2;
n2<
sum2<
break;
aver2=sum3/n3;
\n工资级别为"
的员工的平均工资为:
aver2<
system("
选择错误,将返回主菜单!
returntrue;
5、工资排序
LinkSort(LinkHead)//创建带头节点的链表。
用直接插入法。
{
\t*************************工资排行系统**************************\n"
if((Head->
Next==NULL)||(Head->
Next==NULL))//此步条件判断非常有价值。
数据节点数少于2个,不用排序!
returnHead;
//-----------第二步;
Linkptr_F;
Linkptr_N;
ptr_F=Head;
Head->
Next=NULL;
//到此,分成了两个链表。
//第三步。
ptr_N=ptr->
ptr_F=Head;
//ptr_F的归位。
while(ptr_F->
Next)
if(ptr->
m_Wage>
ptr_F->
m_Wage){
Next=ptr_F->
ptr_F->
Next=ptr;
break;
}//if
else
ptr_F=ptr_F->
}//while(ptr_F->
if(ptr_F->
Next==NULL)
ptr->
ptr_F->
//表示插到有序链表的最后面了。
ptr=ptr_N;
//归位,准备下一次排序。
}//while(ptr)
从高到低,排序成功!
returnHead;
6、信息显示
voidDisplay_List(LinkHead)
\t*************************信息显示系统**************************\n"
\t=========================所有职工信息=========================="
\t==============================================================="
Display_Node(ptr);
Next
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资管理 系统