C语言职工工资管理系统设计报告.docx

上传人:b****7 文档编号:23336706 上传时间:2023-05-16 格式:DOCX 页数:22 大小:55.20KB
下载 相关 举报
C语言职工工资管理系统设计报告.docx_第1页
第1页 / 共22页
C语言职工工资管理系统设计报告.docx_第2页
第2页 / 共22页
C语言职工工资管理系统设计报告.docx_第3页
第3页 / 共22页
C语言职工工资管理系统设计报告.docx_第4页
第4页 / 共22页
C语言职工工资管理系统设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言职工工资管理系统设计报告.docx

《C语言职工工资管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《C语言职工工资管理系统设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

C语言职工工资管理系统设计报告.docx

C语言职工工资管理系统设计报告

《C语言程序设计》

课程设计报告

分值

设计题目:

职工工资管理系统

专业:

班级:

学号:

姓名:

信息工程学院

1前言

工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。

本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。

本程序中涉及结构体、数组、文件等方面的知识。

2需求分析

2.1课程设计目的

学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。

通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。

2.2课程设计任务

职工工资管理系统

功能设计要求

(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.关于文件的内容需要自学)

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

#include

#include//头文件

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");

printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

printf("\t\t#1.添加记录#\n");

printf("\t\t##\n");

printf("\t\t#2.显示记录#\n");

printf("\t\t##\n");

printf("\t\t#3.删除记录#\n");

printf("\t\t##\n");

printf("\t\t#4.查询记录#\n");

printf("\t\t##\n");

printf("\t\t#5.修改记录#\n");

printf("\t\t##\n");

printf("\t\t#6.统计记录#\n");

printf("\t\t##\n");

printf("\t\t#0.退出程序#\n");

printf("\t\t#############################################\n");

printf("\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')

{

printf("\tID:

");

scanf("\t%s",stu[n+i].id);

printf("\t姓名:

");

scanf("\t%s",stu[n+i].name);

printf("\t基本工资:

");

scanf("\t%lf",&stu[n+i].base);

printf("\t职务工资:

");

scanf("\t%lf",&stu[n+i].position);

printf("\t津贴:

");

scanf("\t%lf",&stu[n+i].allowance);

printf("\t医疗保险:

");

scanf("\t%lf",&stu[n+i].insurance);

printf("\t公积金:

");

scanf("\t%lf",&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;;

printf("\n\t是否继续添加?

(Y/N)");

scanf("\t%c",&sign);

i++;

}

return(n+i);

}

voidDisplay(Studentstu[])

{

inti;

doublem1=0,m2=0,m3=0,m4=0,m5=0;

printf("\n\n~~~~~~~~~~~~~按照姓名进行排序!

\n\n");

printf("------------------------------------------------------------------------------\n");//显示的格式

printf("ID姓名基本工资职务工资津贴医疗保险公积金总工资\n");

printf("------------------------------------------------------------------------------\n");

for(i=0;i

printf("%-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表示十四个字节的位置不足用空格补齐

for(i=0;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");

printf("各项平均工资:

%-11.2lf%-11.2lf%-11.2lf%-11.2lf%-11.2lf\n\n",m1/n,m2/n,m3/n,m4/n,m5/n);

}

system("pause");//系统函数停止。

}

intDelete(Studentstu[])

{

inti=0,j,x;

charm[10];

printf("\t1.全部删除\n");

printf("\t2.根据ID号删除\n");

printf("\t请选择:

");

scanf("%d",&x);

if(x==1)

{

for(j=0;j

{

stu[j]=stu[n+1];

}

n=0;

printf("~~~~~已抹掉数据文件中的所有数据!

\n");

system("pause");

}

elseif(x==2)

{

printf("\t请输入想删除记录中的ID号:

");

scanf("%s",m);

while(strcmp(stu[i].id,m)!

=0&&i

i++;

if(i==n)

{

printf("\t职工工资管理系统中没有此人!

\n");

}

else

{

for(j=i;j

{

stu[j]=stu[j+1];

}

printf("\t\t\t已经成功删除!

\n");

n=n-1;

}

}

return(n);

}

voidChick(Studentstu[])

{

intm;

printf("\t\n请选择查询方式:

\n");//printf输出查询格式

printf("\t**************************************\n");//格式:

printf("\t**1--姓名查询**\n");

printf("\t**2--ID查询**\n");

printf("\t**************************************\n");

printf("请选择:

");

scanf("%d",&m);

while(m!

=1&&m!

=2)

{

printf("输入错误,请重新选择:

");

scanf("%d",&m);

}

if(m==1)//此处对名字进行特殊处理

{

chars[20];

inti=0;

intf=0;

printf("\t请输入想查询的姓名:

");

scanf("\t%s",s);

while(strcmp(stu[i].name,s)!

=0&&i

{//名字如果有重复的也照常输出

i++;

}

if(i==n)

{

printf("\t职工工资管理系统中没有此人!

\n");

return;

}

else

{

printf("\tID:

%s\n",stu[i].id);

printf("\t姓名:

%s\n",stu[i].name);

printf("\t基本工资:

%.2lf\n",stu[i].base);

printf("\t职务工资:

%.2lf\n",stu[i].position);

printf("\t津贴:

%.2lf\n",stu[i].allowance);

printf("\t医疗保险:

%.2lf\n",stu[i].insurance);

printf("\t公积金:

%.2lf\n",stu[i].fund);

printf("\t总工资:

%.2lf\n",stu[i].wage);

}

}

if(m==2)//用ID作为索引查询

{

chars[20];

inti=0;

printf("\t请输入想查询的ID:

");

scanf("\t%s",s);

while(strcmp(stu[i].id,s)!

=0&&i

i++;

if(i==n)

{

printf("\t职工工资管理系统中没有此人!

\n");

return;

}

printf("\tID:

%s\n",stu[i].id);

printf("\t姓名:

%s\n",stu[i].name);

printf("\t基本工资:

%.2lf\n",stu[i].base);

printf("\t职务工资:

%.2lf\n",stu[i].position);

printf("\t津贴:

%.2lf\n",stu[i].allowance);

printf("\t医疗保险:

%.2lf\n",stu[i].insurance);

printf("\t公积金:

%.2lf\n",stu[i].fund);

printf("\t总工资:

%.2lf\n",stu[i].wage);

}

}

voidChange(Studentstu[])

{

intm;

printf("\t\n请选择修改方式:

\n");//printf输出查询格式

printf("\t**************************************\n");//格式:

printf("\t**1--ID**\n");

printf("\t**2--姓名**\n");

printf("\t**************************************\n");

printf("请选择:

");

scanf("%d",&m);

while(m!

=1&&m!

=2)

{

printf("输入错误,请重新选择:

");

scanf("%d",&m);

}

if(m==1)

{

inti=0;

charm[10];

printf("\t请输入想修改的记录中人的ID:

");

scanf("%s",m);

while(strcmp(stu[i].id,m)!

=0&&i

i++;

if(i==n)

{

printf("\t职工工资管理系统中没有此人!

\n");

return;

}

printf("\tID:

");

scanf("\t%s",stu[i].id);

printf("\t姓名:

");

scanf("\t%s",stu[i].name);

printf("\t基本工资:

");

scanf("\t%lf",&stu[i].base);

printf("\t职务工资:

");

scanf("\t%lf",&stu[i].position);

printf("\t津贴:

");

scanf("\t%lf",&stu[i].allowance);

printf("\t医疗保险:

");

scanf("\t%lf",&stu[i].insurance);

printf("\t公积金:

");

scanf("\t%lf",&stu[i].fund);

stu[i].wage=stu[i].base+stu[i].position+stu[i].allowance+stu[i].insurance+stu[i].fund;

printf("\t修改成功!

");

}

elseif(m==2)

{

inti=0;

charm[10];

printf("\t请输入想修改的记录中人的姓名:

");

scanf("%s",m);

while(strcmp(stu[i].name,m)!

=0&&i

i++;

if(i==n)

{

printf("\t职工工资管理系统中没有此人!

\n");

return;

}

printf("\tID:

");

scanf("\t%s",stu[i].id);

printf("\t姓名:

");

scanf("\t%s",stu[i].name);

printf("\t基本工资:

");

scanf("\t%lf",&stu[i].base);

printf("\t职务工资:

");

scanf("\t%lf",&stu[i].position);

printf("\t津贴:

");

scanf("\t%lf",&stu[i].allowance);

printf("\t医疗保险:

");

scanf("\t%lf",&stu[i].insurance);

printf("\t公积金:

");

scanf("\t%lf",&stu[i].fund);

stu[i].wage=stu[i].base+stu[i].position+stu[i].allowance+stu[i].insurance+stu[i].fund;

printf("\t修改成功!

");

}

}

voidWritetoText(Studentstu[])

{

inti=0;

FILE*fp;/*定义文件指针*/

printf("\t保存到文件\n");/*输入文件名*/

if((fp=fopen("output","w"))==NULL)

{

printf("\t无法打开文件\n");

system("pause");

return;

}

while(i

{

fprintf(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);

i++;

}

fclose(fp);/*关闭文件*/

printf("保存成功!

\n");

}

voidRead(Studentstu[])

{

FILE*fp;

inti;

charfilename[20];

strcpy(filename,"output");

if((fp=fopen(filename,"r"))==NULL)

{

printf("找不到%s文件!

\n",filename);

system("pause");

return;

}

n=0;

for(i=0;i<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++;

}

fclose(fp);

//qsort(stu,n,sizeof(Student),comp);//调用qsort排序

printf("读取成功,文件%s中的所有信息已经读入!

\n",filename);

}

intsum(Studentstu[])

{

inti;

doubles=0,m=0,n1,s1;

for(i=0;i

{

m=0;

m=stu[i].base+stu[i].position+stu[i].allowance;

if(m>2000)

{

s++;

}

}

printf("在职工工资前三项之和中大于2000的占总职工的百分比:

%.2lf\n",s/n);

return(n);

system("pause");

}

voidMenu()

{

while

(1)//让这里程序循环,否则就退出程序了。

{

switch(Menu_Select())

{

case1:

printf("\n\t添加记录到职工工资管理系统\n");/*添加记录*/

n=Input(T);

WritetoText(T);

system("pause");

break;

case2:

printf("\n\t\t\t职工工资管理系统记录表\n");

Read(T);

Display(T);/*显示记录*/

system("pause");

break;

case3:

printf("\n\t从职工工资管理系统中删除记录\n");

n=Delete(T);

WritetoText(T);/*删除记录*/

printf("\t");

system("pause");/*按任意键继续*/

break;

case4:

printf("\n\t在职工工资管理系统中查找记录\n");

Chick(T);/*查找记录*/

printf("\t");

system("pause");

break;

case5:

printf("\n\t修改职工工资管理系统中的记录\n");

Change(T);

WritetoText(T);/*修改数据*/

printf("\t");

system("pause");

break;

case6:

printf("\n\t****职工工资管理系统统计人数****\n\n");/*统计记录*/

sum(T);

system("pause");

break;

case0:

printf("\n\t\t\t欢迎您再次使用本程序!

\n");/*结束程序*/

printf("\n\t\t\n");

system("pause");

exit(0);

}

}

}

intmain()

{

charch[7];

inti,n;

//设置的控制台输出的格式

printf("\t\t**********职工工资管理系统!

**********\n\n");

printf("\t\t\t您好,欢迎你进入本系统!

\n\n");

printf("正在读取数据…………\n\n");

Read(T);

Menu();

return0;

}

5课程设计总结

5.1程序运行结果

菜单界面:

图5-1-1

添加信息运行图:

图5-1-2

数据写入文件

图5-1-3

显示数据文件中的数据:

图5-1-4

查询模块,可以根据姓名和ID进行查询:

图5-1-5

图5-1-6

修改模块,可以根据姓

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1