职工工资管理系统课程设计报告分析.docx
《职工工资管理系统课程设计报告分析.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统课程设计报告分析.docx(44页珍藏版)》请在冰豆网上搜索。
![职工工资管理系统课程设计报告分析.docx](https://file1.bdocx.com/fileroot1/2022-12/6/d91067c8-1b86-4dfa-a798-70bc7ec8e57c/d91067c8-1b86-4dfa-a798-70bc7ec8e57c1.gif)
职工工资管理系统课程设计报告分析
一、需求分析·········································2
二、概要设计·········································2
三、详细设计·········································5
四、调试分析·········································18
五、用户手册·········································19
六、测试数据·········································19
七、附录·············································23
一、需求分析
职工工资管理系统
功能设计要求
(1)输入记录:
将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:
根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:
可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:
可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:
可删除数据文件中的任一记录。
(6)统计:
(A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
(7)保存数据文件功能。
例如:
职工工资信息表
ID号姓名基本工资职务工资津贴医疗保险-公积金-总工资
01张望12867941981091352034
02李明1185628135941141740
03王小民8954389864731294
04张效章13508682101161502162
05彭山7453988461681098
各项平均工资1092.2625.214588.8108
(要求:
1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)
二、概要设计
1、程序总体功能框架:
总量显示
2、一些数据结构的介绍:
structworker定义职工的结构体
{
intnum;职工工号
charname[20];职工姓名
intjibengongzi;职工的基本工资
intzhiwugongzi;职工的职务工资
intjintie;职工的津贴
intyiliaobaoxian;职工的医疗保险
intgongjijin;职工的公积金
intqiansan;职工前三项工资(基本工资、职务工资、津贴)之和
intsum;职工的总工资
}worker[100];建立最多为100,、名为worker的结构体
3、定义主要的函数:
voidmenu();
voidInput();
voidModify();
voidSearch();
voidAdd();
voidDelete();
voidShow();
voidExit();
4、几个主要函数介绍:
清屏函数:
system("cls");将前面操作的屏幕清楚,但不会清除数据
菜单函数:
menu();显示主菜单,便于选择
输入函数:
Input();用于输入数据
修改函数:
Modify();用于修改数据
查找函数:
Search();用于查找信息
添加函数:
Add();用于增加信息
删除函数:
Delete();用于删除信息
显示函数:
Show();用于显示信息
退出函数:
Exit();用于退出该系统
选择函数:
select();用于选择显示信息或返回到菜单
保存信息的函数:
save():
用于保存信息
保存人数的函数:
P();用于保存已保存数据的人数
5、本程序模块结构
⑴主函数模块
intmain()
{
system("cls");
menu();
}
执行主函数后,执行菜单函数。
⑵菜单函数模块
voidmenu()
{
intn;
system("cls");
printf("\n\n\n");
printf("\t\t***********************************************\n");
printf("\t\t****\n");
printf("\t\t**Ifyouwerethefirsttoenterthesystem**\n");
printf("\t\t**pleaseselectInput!
**\n");
printf("\t\t****\n");
printf("\t\t**1-------Input**\n");
printf("\t\t**2-------Modify**\n");
printf("\t\t**3-------Search**\n");
printf("\t\t**4-------Add**\n");
printf("\t\t**5-------Delete**\n");
printf("\t\t**6-------Show**\n");
printf("\t\t**7-------Exit**\n");
printf("\t\t****\n");
printf("\t\t***********************************************\n");
printf("\t\t\n");
printf("\n\n");
printf("\t\tInputyourchoose(1-7):
");
scanf("%d",&n);
if(n>=1&&n<=7)
{
switch(n)
{
case1:
Input();break;
case2:
Modify();break;
case3:
Search();break;
case4:
Add();break;
case5:
Delete();break;
case6:
Show();break;
case7:
Exit();break;
}
}
else
menu();
}
菜单函数中包括输入函数、修改函数、查找函数、添加函数、删除函数、显示函数、退出函数。
根据菜单中各个函数代表的数字选择相应的数字进行操作。
3、详细设计
#include"stdio.h"
#include"string.h"
structworker//定义结构体
{
intnum;
charname[20];
intjibengongzi;
intzhiwugongzi;
intjintie;
intyiliaobaoxian;
intgongjijin;
intqiansan;
intsum;
}worker[100];
voidmenu();//定义几个主要的函数
voidInput();
voidModify();
voidSearch();
voidAdd();
voidDelete();
voidShow();
voidExit();
intmain()//主函数
{
system("cls");
menu();
}
voidmenu()//菜单函数
{
intn;
system("cls");//清屏
printf("\n\n\n");//菜单界面
printf("\t\t***********************************************\n");
printf("\t\t****\n");
printf("\t\t**Ifyouwerethefirsttoenterthesystem**\n");
printf("\t\t**pleaseselectInput!
**\n");
printf("\t\t****\n");
printf("\t\t**1-------Input**\n");
printf("\t\t**2-------Modify**\n");
printf("\t\t**3-------Search**\n");
printf("\t\t**4-------Add**\n");
printf("\t\t**5-------Delete**\n");
printf("\t\t**6-------Show**\n");
printf("\t\t**7-------Exit**\n");
printf("\t\t****\n");
printf("\t\t***********************************************\n");
printf("\t\t\n");
printf("\n\n");
printf("\t\tInputyourchoose(1-7):
");//选择需要进行的功能,选择1-7之间的数
scanf("%d",&n);
if(n>=1&&n<=7)
{
switch(n)//根据选择不同的数,实现不同的功能
{
case1:
Input();break;
case2:
Modify();break;
case3:
Search();break;
case4:
Add();break;
case5:
Delete();break;
case6:
Show();break;
case7:
Exit();break;
}
}
else
menu();//如果选择的数不在1至7之间,返回菜单重新输入
}
voidInput()//输入函数
{
inti,p;
clrscr();
printf("\n\nHowmanypeople?
(0-100):
");//输入需要输入信息的职工人数
scanf("%d",&p);
if(p>=0&&p<=100)//输入职工的信息
{
printf("\n\n");
printf("Pleaseinputdata:
\n");
printf("\n");
f1();
for(i=0;i
{
input(i);
worker[i].sum=worker[i].jibengongzi+worker[i].zhiwugongzi
+worker[i].jintie-worker[i].yiliaobaoxian-worker[i].gongjijin;//计算职工的总工资
worker[i].qiansan=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie;//职工前三项工资(基本工资、职务工资、津贴)之和
}
}
else
Input();//如果输入的职工人数超过100,返回输入函数重新输入
save(p);//保存输入的职工信息
select();//选择显示信息或返回到菜单
}
voidModify()//修改函数
{
inti,j=-1,d,k,t,n;charm[20];
FILE*fp;//定义一个文件指针
system("cls");//清屏
n=P();
printf("\n\n");
printf("Choosethewayyouwanttomodify:
\n");//选择通过何种方式修改信息
printf("\n\n");//选择方式的界面
printf("\t\t****************************************\n");
printf("\t\t**\n");
printf("\t\t*1.Bynametomodify*\n");
printf("\t\t**\n");
printf("\t\t*2.Bynumbertomodify*\n");
printf("\t\t**\n");
printf("\t\t****************************************\n");
printf("\ninputyourselection:
");
scanf("%d",&d);
if(d!
=1&&d!
=2)
{
printf("\ninputerror!
Pressanykeytocontinue.");
getchar();
Modify();//选择的数字错误,返回修改函数重新选择
}
elseif(d==1)
{
do
{
printf("\nPleaseinputthename:
");//输入需要修改职工的姓名
scanf("%s",m);
for(i=0;iif(strcmp(m,worker[i].name)==0)
j=i;
if(j==-1)
printf("\nNotfind!
Pleaseinputagain!
\n");//没有找到该职工,重新输入
}
while(j==-1);
}
else
{
do
{
printf("\nPleaseinputthenum:
");//输入需要修改职工的工号
scanf("%d",&k);
for(i=0;iif(k==worker[i].num)
j=i;
if(j==-1)
printf("\nNotfind!
Pleaseagain!
\n");//没有找到该职工,重新输入
}
while(j==-1);
}
printf("\nWhatdoyouwanttomodify?
\n\n");//需要修改信息的界面
printf("\t\t**************************************\n");
printf("\t\t**\n");
printf("\t\t*1.name2.number*\n");
printf("\t\t**\n");
printf("\t\t*3.jibengongzi4.zhiwugongzi*\n");
printf("\t\t**\n");
printf("\t\t*5.jintie6.yiliaobaoxian*\n");
printf("\t\t**\n");
printf("\t\t*7.gongjijin*\n");
printf("\t\t**\n");
printf("\t\t**************************************\n");
printf("\nPleaseinputyourselection:
");//选择需要修改的信息
scanf("%d",&t);
switch(t)//通过选择的数字,实现修改该信息
{
case1:
printf("\nbeforemodify:
%s",worker[j].name);
printf("\nchangeto:
");
scanf("%s",worker[j].name);
printf("\naftermodify:
%s",worker[j].name);break;
case2:
printf("\nbeforemodify:
%d",worker[j].num);
printf("\nchangeto:
");
scanf("%d",&worker[j].num);
printf("\naftermodify:
%d",worker[j].num);break;
case3:
printf("\nbeforemodify:
%d",worker[j].jibengongzi);
printf("\nchangeto:
");
scanf("%d",&worker[j].jibengongzi);
printf("\naftermodify:
%d",worker[j].jibengongzi);break;
case4:
printf("\nbeforemodify:
%d",worker[j].zhiwugongzi);
printf("\nchangeto:
");
scanf("%d",&worker[j].zhiwugongzi);
printf("\naftermodify:
%d",worker[j].zhiwugongzi);break;
case5:
printf("\nbeforemodify:
%d",worker[j].jintie);
printf("\nchangeto:
");
scanf("%d",&worker[j].jintie);
printf("\naftermodify:
%d",worker[j].jintie);break;
case6:
printf("\nbeforemodify:
%d",worker[j].yiliaobaoxian);
printf("\nchangeto:
");
scanf("%d",&worker[j].yiliaobaoxian);
printf("\naftermodify:
%d",worker[j].yiliaobaoxian);break;
case7:
printf("\nbeforemodify:
%d",worker[j].gongjijin);
printf("\nchangeto:
");
scanf("%d",&worker[j].gongjijin);
printf("\naftermodify:
%d",worker[j].gongjijin);break;
default:
printf("Error!
choiceagain!
!
\n");break;
}
getchar();
printf("\n");
f2();
worker[j].sum=worker[j].jibengongzi+worker[j].zhiwugongzi+worker[j].jintie
-worker[j].yiliaobaoxian-worker[j].gongjijin;//职工的总工资
output(j);
printf("\nSaveit?
\n\n1.Yes2.No\n");//询问是否保存修改后的信息
scanf("%d",&i);
if(i==1)
save(n);//保存修改后的信息
printf("\nPressanykeytoback!
");//返回到菜单
getchar();
menu();
}
voidSearch()//查找函数
{
inti,j=-1,k,d,n;charm[20];
n=P();
system("cls");//清屏
printf("Choosethewayyouwanttosearch:
\n");//选择通过何种方式查找信息
printf("\n\n");//选择方式的界面
printf("\t\t****************************************\n");
printf("\t\t**\n");
printf("\t\t*1.Bynametosearch*\n");
printf("\t\t**\n");
printf("\t\t*2.Bynumbertosearch*\n");
printf("\t\t**\n");
printf("\t\t****************************************\n");
printf("\n\n");
printf("Pleaseinputyourselection:
");//选择查找的方式
scanf("%d",&d);
if(d==2)
{
do
{
printf("\nPleaseinputthenumber:
");//输入需要查找的职工工号
scanf("%d",&k);
for(i=0;i{
if(k==worker[i].num)
j=i;
}
if(j==-1)
printf("Notfind!
Pleaseinputagain!
\n");//没有找到该职工,重新输入
}
while(j==-1);
printf("\n");
f2();
output(j);//输出信息
}
elseif(d==1)
{
do
{
printf("\nPleaseinputthename:
");//输入需要查找的职工姓名
scanf("%s",m);
for(i=0;iif(strcmp(m,worker[i].name)==0)
j=i;
if(j==-1)
printf("Notfind!
Pleaseinputagain!
\n");//没有找到该职工,重新输入
}
while(j==-1);
printf("\n");
f2();
output(j);//输出信息
}
if(d!
=1&&d!
=2)
{
printf("\nInputerror!
Pressanykeytocontinue.");//输入错误,按enter键继续
getchar();
Search();//返回到查找函数
}
select();//选择显示信息或返回到菜单
}
voidAdd()//添加函数
{
inti,k,m,n;