C语言课程设计--工资管理系统_第1页
C语言课程设计--工资管理系统_第2页
C语言课程设计--工资管理系统_第3页
C语言课程设计--工资管理系统_第4页
C语言课程设计--工资管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计报告工资管理系统姓 名:_班 级:_指导老师:_日 期:_一、 题目要求工资信息管理系统【要求】该系统能够实现工资信息管理。系统包括录入、浏览、查询、统计等功能。其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号、姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。【提示】1. 文件中一行数据对应一个职工工资信息2. 工资信息的数据结构采用结构体数组,一个数组元素对应一条工资单记录3. 工资单信息包括工资卡号、姓名、月份、应发工

2、资、水费、电费、税金、实发工资等4. 实发工资=应发工资-水费-电费-税金,其中税金的计算方法为a. 应发工资<800元,税金=0b. 800<应发工资<1400元,税金=(应发工资-800)*5%c. 应发工资>1400元,税金=(应发工资-1400)*10%另: 课程实习报告的参考格式1. 题目编号2. 写出系统总设计的思路、功能模块划分。给出合理的测试数据及运行结果,要求能够体现程序的正确性和完备性及对错误输入的处理。总结算法或系统的优缺点,给出算法或系统进一步改进的设想。在附录中给出源代码,3. 附录二、 需求分析根据题目要求,由于工资单信息是存放在文件中,所以

3、应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供录入、浏览、查询、统计等操作;另外还应提供键盘式选择菜单实现功能选择。三、 总体设计根据上面的需求分析,可以将这个系统的设计分为以下几个模块:数据输入,数据添加,数据浏览,数据查询,数据统计。数据添加图一 系统功能模块图四、详细设计1.主函数主函数提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图图二 主函数模块功能流程图程序main( /*主函数*/ int n,w; /*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单应对数字的范围内*/do puts("tt*MENU*nn"p

4、uts("tttt 1.Enter new data"puts("tttt 2.add new data"puts("tttt 3.Browse all"puts("tttt 4.Search by name"puts("tttt 5.Search by num"puts("tttt 6.Count gongzi"puts("tttt 7.Exit"puts("nntt*n"printf("Choice your number

5、(1-7: bb"scanf("%d",&n;if(n<1|n>7 w=1;getchar(; /*对选择的数字作判断*/else w=0;while (w=1;switch(n case 1: enter(;break; /*输入模块*/case 2: add(;break; /*添加模块*/case 3: browse(;break; /*浏览模块*/case 4: search_name(;break; /*查询模块*/case 5: search_num(;break; /*查询模块*/case 6: count(;break; /*统

6、计模块*/case 7: exit(0;break; /*退出*/ /*其中4和5两个模块式在查询要求的基础上加上的模块*/2各功能模块设计(1)输入函数【分析】单独看各数据信息,姓名是字符型,可以采用字符型数组;工资卡号和月份是整数,采用整型;实发工资,水费,电费,税金,应发工资有可能是小数可采用实型。数据信息存放在文件中,一条记录对应一个职工的工资单信息,既符合习惯也方便信息管理。同时把职工的工资卡号,姓名,月份,应发工资,水费,电费,税金,实发工资作为结构体成员,用结构体数组存放若干个职工的工资信息。struct gz int num;char name20;int month;long

7、 ys;long ss;long wf;long ef;long tax; gN; /*gN中每个数组元素对应一个职工*/【流程图】保存调用函数Save(n图三 输入模块流程图【程序】enter( int i,n;printf("How many gongzixinxi (0-%d?:",N-1;scanf("%d",&n;printf("n Enter data now nn"for(i=0;i printf("nInput %dth gongzi record.n",i+1;input(i;sort(;

8、if(i!=0 save(n;printf_back(;(2)添加模块【分析】该模块的功能是用户需要增加新的职工工资信息记录,从键盘输入并逐条写入到原来的输入文件中,注意采用追加而不是覆盖的方式。【流程图】保存追加的记录图四 添加模块流程图【程序】add( int i,n,m,k;FILE *fp;n=load(;printf("Hoe mang people are you want to add(0-%d:",N-n-1;scanf("%d",&m;k=m+n;for(i=n;i printf("ninput %dth salary

9、 record.n",i-n+1;input(i;sort(;save(k;printf_back(;(3)浏览模块【分析】该模块的功能是显示所有职工工资信息记录。【流程图】按任意键返回主菜单图五 浏览模块流程图【程序】browse( int i,n;n=load(;printf_face(;for(i=0;i if(i%10=0 printf("nnPass any key to contiune."getch(; puts("nn"printf_one(i; printf("n"printf("tThere a

10、re %d record.n",n;printf("nPass any key to back."getch(;menu(;(4)按姓名查找模块【分析】该模块的功能是根据输入的职工姓名查找对应的工资信息记录。【流程图】图六 按姓名查找模块流程图【程序】search_name( int i,n,k,w1=1;struct gz s;n=load(;do k=-1;printf("nnEnter name that you want to search! name"scanf("%s",;printf_face(;f

11、or(i=0;i if(strcmp(,=0k=i; printf_one(k;if(k=-1printf("nnNo exist!please"printf("nnAre you again?nt 1.Again 2No and back bb "scanf("%d",&w1;while(k=-1&&w1=1;menu(;(5)按工资卡号查找模块【分析】该模块的功能是根据输入的职工工资卡号查找对应的工资信息记录。【流程图】图七 按工资卡号查找模块流程图【程序】search_num(

12、int i,n,k,w1=1;struct gz s;n=load(;do k=-1;printf("nnEnter number that you want to search! number"scanf("%d",&s.num;printf_face(;0% for(i=0;i if(s.num=gi.numk=i; printf_one(k;if(k=-1printf("nnNo exist!please"printf("nnAre you again?nt 1.Again 2No and back bb &q

13、uot;scanf("%d",&w1;while(k=-1&&w1=1;menu(;(6)统计模块【分析】该模块的功能是根据用户输入的职工姓名和所统计的月份来计算得出某个时间段的工资总额。【流程图】3642统计得出结果图八 统计模块流程图【程序】可能发生的坏账损失count(int i,j,k,n,sum=0;char name20;n=load(;printf("nEnter the enployer's name: tt"scanf("%s",name;printf("nEnter the

14、 first month to count! month: tt"scanf("%d",&j;printf("nEnter the last month to count! month: tt"scanf("%d",&k;for(i=0;i if(strcmp(name,=0&&gi.month>=j&&gi.month<=kprintf_one(i;sum=sum+gi.ss;printf("nthe result of count: su

15、m=%dn",sum;menu(;3公共函数(1)排序函数sort(【程序】sort(int i,j,n;struct gz t;n=load(;for(i=0;i for(j=i+1;j if(gi.num>gj.numt=gi;gi=gj;gj=t;2)输入函数60%的客户(按赊销额计算)会利用2%的折扣;tax(i;(3的折扣。假设该项投资的资本成本为10%,一年按360 FILE *fp;天计算。int i; if(fp=fopen("salary.txt","w"=NULL printf("nCannot open f

16、ilen"return NULL;for(i=0;i if(gi.num!=0if(fwrite(&gi,sizeof(struct gz,1,fp!=1printf("file write errorn"要求:评价是否该采用新方案? fclose(fp;(4)税金计算函数tax( int i【程序】tax( int iif(gi.ys<800 gi.tax=0;else if(800 else gi.tax=(gi.ys-1400*5/100;gi.ss=gi.ys-gi.wf-gi.ef-gi.tax;(5)加载函数load(【程序】load(

17、FILE *fp;int i;if(fp=fopen("salary.txt","r"=NULLprintf("nCannot open filen"return NULL;for(i=0;!feof(fp;i+fread(&gi,sizeof(struct gz,1,fp;fclose(fp;return(i-1;(6)显示数据结构项目的函数printf_face(printf_face( printf("n num name month ys wf ef ss tax n"(7显示一个记录的函数printf_one(int i printf("%5d%10s%5d%10ld%10ld%10ld%10ld%10ld",gi.num,,gi.month,gi.ys,gi.wf,gi.ef,gi.ss,gi.tax;(8)一个任务结束时的选择浏览还是返回的函数printf_back( int k,w;printf("nntSuccessful.nn"printf("What do you want to do?nnt 1.Browse all now 2.Back; bb&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论