C语言职工工资管理系统设计报告Word格式文档下载.docx
- 文档编号:16224851
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:19
- 大小:51.33KB
C语言职工工资管理系统设计报告Word格式文档下载.docx
《C语言职工工资管理系统设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言职工工资管理系统设计报告Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
(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.关于文件的内容需要自学)
2.3设计环境
(1)WINDOWS2000/2003/XP/7/Vista系统
(2)VisualC++
2.4开发语言
C语言
3分析和设计
从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为六个模块,分别为:
主函数、Input()函数(输入函数)、Display(T)显示函数(计算职工工资信息并输入文件)、Delete(T)删除函数(从文件中读入信息并将其删除),Chick(T)查询模块,Change(T);
修改模块,sum(T);
统计模块
3.1系统模块图
图3.1系统模块图
4具体代码实现
#include"
stdio.h"
#include<
stdlib.h>
conio.h>
string.h>
//头文件
staticintn=0;
//定义静态全局变量,存储已经读入记录的条数。
typedefstruct
{
charid[15];
/*ID号*/
charname[10];
/*姓名*/
doublebase;
/*基本工资*/
doubleposition;
/*职务工资*/
doubleallowance;
/*津贴*/
doubleinsurance;
/*医疗保险*/
doublefund;
//公积金
doublewage;
//总工资
}Student;
StudentT[100];
intMenu_Select()
intc;
do{
system("
cls"
);
//清屏
printf("
\t\t******************职工工资管理系统*********************\n"
\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
\t\t#1.添加记录#\n"
\t\t##\n"
\t\t#2.显示记录#\n"
printf("
\t\t#3.删除记录#\n"
\t\t#4.查询记录#\n"
\t\t#5.修改记录#\n"
\t\t#6.统计记录#\n"
\t\t#0.退出程序#\n"
\t\t#############################################\n"
\t\t\t请您选择(0-6)选择请输入:
"
scanf("
%d"
&
c);
}while(c<
0&
&
c>
=7);
return(c);
}
intInput(Studentstu[])
{
inti=0;
charsign;
while(sign!
='
n'
sign!
N'
)
\tID:
\t%s"
stu[n+i].id);
\t姓名:
stu[n+i].name);
\t基本工资:
\t%lf"
stu[n+i].base);
\t职务工资:
stu[n+i].position);
\t津贴:
stu[n+i].allowance);
\t医疗保险:
stu[n+i].insurance);
\t公积金:
stu[n+i].fund);
stu[n+i].wage=stu[n+i].base+stu[n+i].position+stu[n+i].allowance+stu[n+i].insurance+stu[n+i].fund;
;
\n\t是否继续添加?
(Y/N)"
\t%c"
sign);
i++;
return(n+i);
}
voidDisplay(Studentstu[])
inti;
doublem1=0,m2=0,m3=0,m4=0,m5=0;
\n\n~~~~~~~~~~~~~按照姓名进行排序!
\n\n"
------------------------------------------------------------------------------\n"
//显示的格式
ID姓名基本工资职务工资津贴医疗保险公积金总工资\n"
for(i=0;
i<
n;
i++)
%-6s%-8s%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf\n"
stu[i].id,stu[i].name,stu[i].base,stu[i].position,stu[i].allowance,stu[i].insurance,stu[i].fund,stu[i].wage);
//-14d%-表示左对齐14表示十四个字节的位置不足用空格补齐
i++)
{
m1+=stu[i].base;
m2+=stu[i].position;
m3+=stu[i].allowance;
m4+=stu[i].insurance;
m5+=stu[i].fund;
}
if(n!
=0)
{
printf("
----------------------------------------------------------------------\n"
各项平均工资:
%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf\n\n"
m1/n,m2/n,m3/n,m4/n,m5/n);
pause"
//系统函数停止。
intDelete(Studentstu[])
inti=0,j,x;
charm[10];
\t1.全部删除\n"
\t2.根据ID号删除\n"
\t请选择:
"
x);
if(x==1)
for(j=0;
j<
j++)//后一条记录覆盖前一条记录
{
stu[j]=stu[n+1];
}
n=0;
~~~~~已抹掉数据文件中的所有数据!
\n"
system("
}
elseif(x==2)
\t请输入想删除记录中的ID号:
scanf("
%s"
m);
while(strcmp(stu[i].id,m)!
=0&
n)
i++;
if(i==n)
\t职工工资管理系统中没有此人!
else
for(j=i;
n-1;
{
stu[j]=stu[j+1];
}
\t\t\t已经成功删除!
n=n-1;
return(n);
}
voidChick(Studentstu[])
intm;
\t\n请选择查询方式:
//printf输出查询格式
\t**************************************\n"
//格式:
\t**1--姓名查询**\n"
\t**2--ID查询**\n"
请选择:
m);
while(m!
=1&
m!
=2)
输入错误,请重新选择:
if(m==1)//此处对名字进行特殊处理
chars[20];
intf=0;
\t请输入想查询的姓名:
s);
while(strcmp(stu[i].name,s)!
n)
{//名字如果有重复的也照常输出
if(i==n)
return;
else
%s\n"
stu[i].id);
stu[i].name);
%.2lf\n"
stu[i].base);
stu[i].position);
stu[i].allowance);
stu[i].insurance);
stu[i].fund);
\t总工资:
stu[i].wage);
if(m==2)//用ID作为索引查询
\t请输入想查询的ID:
while(strcmp(stu[i].id,s)!
n)
voidChange(Studentstu[])
\t\n请选择修改方式:
\t**1--ID**\n"
\t**2--姓名**\n"
if(m==1)
inti=0;
\t请输入想修改的记录中人的ID:
while(strcmp(stu[i].id,m)!
stu[i].base);
stu[i].position);
stu[i].allowance);
stu[i].insurance);
stu[i].fund);
stu[i].wage=stu[i].base+stu[i].position+stu[i].allowance+stu[i].insurance+stu[i].fund;
\t修改成功!
elseif(m==2)
\t请输入想修改的记录中人的姓名:
while(strcmp(stu[i].name,m)!
voidWritetoText(Studentstu[])
FILE*fp;
/*定义文件指针*/
\t保存到文件\n"
/*输入文件名*/
if((fp=fopen("
output"
"
w"
))==NULL)
\t无法打开文件\n"
while(i<
fprintf(fp,"
%s%s%lf%lf%lf%lf%lf%lf\n"
fclose(fp);
/*关闭文件*/
保存成功!
voidRead(Studentstu[])
charfilename[20];
strcpy(filename,"
if((fp=fopen(filename,"
r"
找不到%s文件!
filename);
return;
n=0;
100&
!
feof(fp);
i++)//这里的100是前面已经说明了最多可以存100条记录
fscanf(fp,"
%s%s%lf%lf%lf%lf%lf%lf\n"
stu[i].id,&
stu[i].name,&
stu[i].base,&
stu[i].position,&
stu[i].allowance,&
stu[i].insurance,&
stu[i].fund,&
stu[i].wage);
n++;
//qsort(stu,n,sizeof(Student),comp);
//调用qsort排序
读取成功,文件%s中的所有信息已经读入!
intsum(Studentstu[])
doubles=0,m=0,n1,s1;
m=0;
m=stu[i].base+stu[i].position+stu[i].allowance;
if(m>
2000)
s++;
在职工工资前三项之和中大于2000的占总职工的百分比:
%.2lf\n"
s/n);
return(n);
voidMenu()
while
(1)//让这里程序循环,否则就退出程序了。
switch(Menu_Select())
case1:
\n\t添加记录到职工工资管理系统\n"
/*添加记录*/
n=Input(T);
WritetoText(T);
break;
case2:
\n\t\t\t职工工资管理系统记录表\n"
Read(T);
Display(T);
/*显示记录*/
case3:
\n\t从职工工资管理系统中删除记录\n"
n=Delete(T);
Wr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工工资 管理 系统 设计 报告