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

上传人:仙*** 文档编号:106129841 上传时间:2022-06-13 格式:DOC 页数:20 大小:85KB
收藏 版权申诉 举报 下载
C语言程序设计报告职工工资管理系统_第1页
第1页 / 共20页
C语言程序设计报告职工工资管理系统_第2页
第2页 / 共20页
C语言程序设计报告职工工资管理系统_第3页
第3页 / 共20页
资源描述:

《C语言程序设计报告职工工资管理系统》由会员分享,可在线阅读,更多相关《C语言程序设计报告职工工资管理系统(20页珍藏版)》请在装配图网上搜索。

1、-C语言程序设计报告课程名称:C语言程序设计院 系: 管理与经济学院专业班级: 工业工程2012142班学 号:201214217学生*:海蛟指导教师:雪青完成时间:2013-06-20报告成绩:目录1、设计题目-22、设计要求包括设计容描述-23、设计作用与目的-34、所用软件-35、系统设计-45.1 系统构造-45.2 程序程序图-45.3 产生源程序-66、实验调试结果附运行效果图-367、设计中的问题及解决方法-398、设计心得-409、参考文献-41职工工资管理系统的设计与实现1.设计题目题目:工资管理系统工资管理系统是企业不可缺少的一局部,它利用计算机对员工工资进展统一管理,实现

2、工资管理系统的系统化、规化和自动化,为企业提高工作效率。本程序旨在训练读者的根本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和构造数组的各种根本操作。本程序中涉及构造体、数组、文件等方面的知识。2.设计要求1、启动软件时,进展密码校验。假设出错三次,则自动退出系统。2、实现简易的提示菜单界面,刚运行时应显示版本信息。用所学的知识尽量实现良好的、美观的“人机界面,便于软件的操作使用。3、要求把所有录入的数据以文件的形式,保存在硬盘上。4、系统包含以下根本功能:登陆功能、显示主菜单功能、职工信息输入信息输出、职工信息查询、职工信息修改、工资排序、工资统计、导出数据、导入数据、退出等。5、

3、职工信息输入信息输出要求一个职工的根本信息(编号、*、根本工资)的录入,以文件形式保存输入。6、职工工资表浏览工资功能输出。7、计算职工的工资输入根本工资、扣款、奖金后,马上算出应发工资、税金、实发工资、总工资。8、查询、排序功能算法。1) 按编号查询、排序。2) 按*查询。3) 按工资排序。4) 根本信息的删除与修改可选项。3.设计作用与目的1、通过这次专题实习,稳固和加深对所学相关知识点的理解。2、进一步熟悉根本流程控制构造实现分支的ifelse语句、switch语句和实现循环的for、while、dowhile语句、break、continue等。3、根本数据类型、数组、构造体、自定义类

4、、函数的应用。4、加强对模块化程序设计和面向对象程序设计的理解。5、掌握C语言程序设计的根本思想,了解简单的系统分析和6、了解数据库系统的理论7、掌握数据库设计的根本方法,熟悉数据库设计的步骤;8、学习根本数据库编程方法。9、进一步稳固、加深学生所学专业课程C语言程序设计的根本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。10全面考核学生所掌握的根本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。11利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进展数据处理的综合能力。12对于给定的设计题目,如何进展分析,理清思路,并

5、给出相应的数学模型。 13掌握面向对象的程序设计方法。14进一步掌握在集成环境下如何调试程序单步调试,设置断点、观察表达式,分块调试、修改程序和程序的测试。4.运行环境及工具软件Windows *P;Visual C+ 6.0完整绿色版;5.系统设计5.1 程序逻辑图职工工资管理系统登陆功能用户管理职工信息输入职工信息输出职工工资信息查询计算职工信息修改工资排序工资统计导出数据导入数据工资计算退出 图1:系统构造框图5.2 程序流程图选择2选择1开场系统登录主页面初始化双链表录入职工工资修改职工工资选择操作查询职工工资选择3浏览职工工资选择4选择6选择9选择8选择7选择5删除职工工资删插入职工

6、工资职工工资排序保存职工工资平安退出系统按编号删除完毕6源程序代码*include /标准输入输出*include /处理杂乱 *include /Sleep() *include /字符串操作 *include /系统输入输出*include /时间相关/*下面是对用到的全局常量声明*/*define NAME 10 /职工职工*长度*define PASSWORD 123 /系统登陆密码int shuru=0; /全局变量标记当前录入职工个数FILE *fp; /声明一个文件指针/*构造体定义*/struct person /职工工资的构造体char nameNAME; /职工职工*int

7、 num; /职工编号float paid; /职工根本工资float discount; /扣款float e*tra; /奖金float fare;/税金float gotpaid;/应发工资float realpaid; /实发工资float sum; /总工资*pp; /声明一个构造指针/*下面是对用到的函数声明*/void Password(); /密码验证函数void Save(struct person per); /保存信息函数void Inputper(struct person per); /录入信息函数void Delper(struct person per); /删除

8、信息函数void Modifyper(struct person per); /修改信息函数void Findper(struct person per); /查找信息函数void Insertper(struct person per); /插入信息函数void Sortper(struct person per); /排 序 函 数void Listper(struct person per); /显示职工信息void fare(struct person per,int n);/计算税金函数void Menu();void Help();/*程序主体*void main() /程序入口s

9、ystem(color 027); /设置当前窗口的背风光和前风光 Password(); /调用密码验函数Help(); /调用系统信息函数Menu(); /调用菜单函数void Inputper(struct person per) /录入职工工资函数原形 pp=per; /指针指向构造 system(cls); /清屏int i;printf(请问你要输入几个职工的信息:);scanf(%d,&shuru);if(fp=fopen(inputdata,wb+)=NULL) /当前目录下是否存在INPUTDATA文件 /wb+:读写翻开或建立一个二进制文件,允许读和写printf(Cann

10、ot open file strike any key e*it!);getch();e*it(1);fprintf(fp,职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工作 总工资n);for(i=0;ishuru;i+)printf(输入职工编号:); /输入职工编号fflush(stdin);scanf(%d,&peri.num);printf(输入职工*:); /输入职工*fflush(stdin);gets(peri.name); printf(输入职工的工资信息n);printf(-n);printf(n根本工资: ); /根本工资fflush(stdin);scan

11、f(%f,&peri.paid); printf(n扣款: ); /扣款fflush(stdin);scanf(%f,&peri.discount); printf(n奖金: ); /奖金fflush(stdin);scanf(%f,&peri.e*tra); printf(n税金: ); /税金 printf(-n);peri.sum=peri.paid-peri.discount+peri.e*tra;peri.realpaid=peri.paid-peri.discount;fprintf(fp, %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %4.1ftn,p

12、eri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.realpaid,peri.sum);void Modifyper(struct person per)pp=per;int id,i=0; /id为接收用户输入的职工编号if(fp=fopen(modifydata.sys,wb+)=NULL) printf(Cannot open file strike any key e*it!);getch();e*it(1);fprintf(fp,职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);printf

13、(n请输入你要修改的职工的编号:);scanf(%d,&id);Sleep(500);printf(nt查找相关数据.);for(i=0;i=15;i+)Sleep(250);printf(.);for(i=0;ishuru;i+)if(peri.num=id) /如果找到了就执行下面语句 ,找不到直接回主界面printf(n输入新职工编号:); /输入职工编号fflush(stdin);scanf(%d,&peri.num);printf(n输入新职工*:); /输入职工*fflush(stdin);gets(peri.name); printf(输入职工的工资信息n);printf(-n)

14、;printf(n根本工资: );scanf(%f,&peri.paid);fflush(stdin);printf(n扣款: );scanf(%f,&peri.discount);fflush(stdin);printf(n 奖金: );scanf(%f,&peri.e*tra);printf(-n);peri.sum=peri.paid-peri.discount+peri.e*tra;peri.realpaid=peri.paid-peri.discount;fprintf(fp, %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %4.1ftn,peri.num,

15、peri.name,peri.paid,peri.discount,peri.e*tra,peri.realpaid,peri.sum);void Findper(struct person per) /查询职工工资信息int i=0,j=0,id; /循环变量和用于接收职工编号 printf(请输入你要查询的职工编号:);scanf(%d,&id);for(i=0;ishuru;i+)if (peri.num=id) /如果找到你查询的数据就执行下面语句 /如果找不到。直接回程序主界%peri.sum=peri.paid-peri.discount+peri.e*tra;peri.realp

16、aid=peri.paid-peri.discount;printf(n职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资 n);printf(n%6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %5.1ft %5.1ft %4.1ft nn,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.gotpaid,peri.fare,peri.realpaid,peri.sum);system(pause); void Insertper(struct person per) /插入职工工

17、资信息int flag=1;pp=per;int i,id;if(fp=fopen(insertdata.sys,wb+)=NULL) printf(Cannot open file strike any key e*it!);getch();e*it(1);fprintf(fp,职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);printf(输入你插入的职工编号:);scanf(%d,&id);for(i=0;ishuru;i+)if(peri.num=id) /判断职工编号信息否存在printf(职工编号信息已经存在!n);flag=0;getch();brea

18、k;if (flag!=0)shuru+; /插入一个,原来的总数增加1 printf(请确认输入要插入职工编号:);scanf(%d,&pershuru-1.num); /如果不存在.则就把插入的信息放到构造数组最后printf(输入职工*:); fflush(stdin);gets(pershuru-1.name); printf(输入职工的工资信息n);printf(-n);printf(n根本工资: );fflush(stdin);scanf(%f,&pershuru-1.paid);printf(n扣款: );fflush(stdin);scanf(%f,&pershuru-1.di

19、scount);printf(n奖金: ); /奖金fflush(stdin);printf(n税金: ); /税金fflush(stdin);printf(-n);peri.sum=peri.paid-peri.discount+peri.e*tra;peri.realpaid=peri.paid-peri.discount;fprintf(fp, %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %4.1ftn,pershuru-1.num,pershuru-1.name,pershuru-1.paid,pershuru-1.discount,pershuru-1.e

20、*tra,peri.realpaid,pershuru-1.sum);Sleep(500);printf(插入数据成功!n);getch();void Listper(struct person per) /浏览所有职工工 int i=0;for(i=0;ishuru;i+) peri.gotpaid=peri.paid-peri.discount;if (peri.gotpaid=2000&peri.gotpaid=5000&peri.gotpaid=10000&peri.gotpaid=100000)peri.fare=peri.gotpaid*0.3;peri.sum=peri.paid

21、-peri.discount+peri.e*tra;peri.realpaid=peri.paid-peri.discount;printf(n职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);for(i=0;ishuru;i+)printf(n %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %5.1ft %4.1ft %5.1ft,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.gotpaid,peri.fare,peri.realpaid, peri.sum); ge

22、tch();void Delper(struct person per) /删除职工信息函数pp=per;struct person temp;int delnum;char ask;int i,j;if(fp=fopen(Deldata.sys,wb+)=NULL) printf(Cannot open file strike any key e*it!);getch();e*it(1);fprintf(fp,职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);system(cls);printf(nnt请输入你要删除的职工的职工编号:);fflush(stdin)

23、;scanf(%d,&delnum); printf(nt是否确认删除职工%d的信息(y/n),delnum);fflush(stdin);ask = getchar();if(ask != n)for(i=0;i shuru)printf(nt没有你要删除的职工!n);elsefor(j=i;jshuru;j+)temp = perj;perj = perj+1;perj+1 = temp;shuru-; /删掉一个职工信息后职工总数相应-1system(cls);printf(nn删除成功!n); peri.sum=peri.paid-peri.discount+peri.e*tra;pe

24、ri.realpaid=peri.paid-peri.discount;fprintf(fp, %6d %8s t%5.1f t%5.1f t%5.1f t%5.1f t%4.1fn,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.realpaid,peri.sum);getch();void Sortper(struct person per) /排序函数int i,j,chose; /i,j为循环变量 chose为接收用户输入的排序方式struct person temp;printf(排序前的数据为n);printf(

25、n职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);for(i=0;ishuru;i+) printf(n %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %4.1ftn,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.realpaid,peri.sum); printf(n1.按职工编号排序t2.按总工资(高低)排序n);printf(n请您正确选择:);fflush(stdin);scanf(%d,&chose);if(chose=1)for(i=0;ishuru-1;

26、i+)for(j=i+1;jperj.num)temp=peri;peri=perj;perj=temp;printf(n职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);for(i=0;ishuru;i+)printf(n %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %4.1ftn,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.realpaid,peri.sum); system(pause);else if(chose=2)for(i=0;ishuru-1;i+)

27、for(j=i+1;jshuru;j+)if(peri.sumperj.sum)temp=peri;peri=perj;perj=temp;printf(n职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);for(i=0;i=0)&(passcount+=getch()!=13) /密码输入if(pass0=b)count=0;continue;else if(passcount-1=b)printf(%c%c%c,b,0,b);count-=2;elseputchar(*);pass-count=0;if(!strcmp(pass,PASSWORD) /开场验证

28、printf(nnttttttLogining);for(i=0;i=25;i+)Sleep(250);printf(.); system(cls);printf(nnnnnnnnnttt);printf( 欢 迎 登 陆 职 工 工 资 管 理 系 统 !nn);start=time(NULL);end=time(NULL);while(end-start2) /延时2秒执行以下程序end=time(NULL);system(cls);free(pass); /释放储存密码的存return ;free(pass); /释放密码错误的那块存pass=(char *)malloc(255*siz

29、eof(char); /重新分配储存密码存system(cls);printf(annnnnnnntttt密 码 错 误 !);getch();system(cls);void Menu()struct person per50; /最大职工人数struct person *p; /声明一个构造指针p=per; /指针指向构造变量perint i,in; /接收用户的选择char ch; /用于判断是否继续 dosystem(cls);printf(nn);printf(tt=n);printf(tt * 职 工 工 资 管 理 系 统 *n);printf(tt*=*n);printf(tt

30、* 1. 录入职工工资 *n);printf(tt * *n);printf(tt* 2.修改职工工资 *n);printf(tt * *n);printf(tt* 3.查询职工工资 *n);printf(tt * *n);printf(tt* 4.浏览职工工资 *n);printf(tt * *n);printf(tt* 5.删除职工工资 *n);printf(tt * *n);printf(tt* 6.插入职工工资 *n);printf(tt * *n);printf(tt* 7. 职工工资排序 *n);printf(tt * *n);printf(tt* 8. 保存职工工资 *n);pr

31、intf(tt * *n);printf(tt* 9. 平安退出系统 *n);printf(tt=n);printf(tt 请您正确选择: );if(!(scanf(%d,&in)=1)while(ch=getchar()!=n)putchar(ch);printf( 没有此选项,请正确选择!);getch();continue;fflush(stdin);switch(in)case 1:Inputper(per); /调用录入职工工资函数break;case 2:Modifyper(per); /调用修改职工工资函函数break;case 3:Findper(per); /调用查询职工工资

32、函数break;case 4:Listper(per); /调用浏览职工工资函数break;case 5:Delper(per); /调用删除职工工资函数break;case 6:Insertper(per); /插入职工工资信息break;case 7:Sortper(per); /调用职工工资排序函数break;case 8:Save(per); /保存职工工资函数break;case 9: /退出系统break;default:printf(没有此选项,请正确选择!);getch();break;while(in!=9);system(cls);printf(nnnnnnnnttt);p

33、rintf(谢 谢 使 用 本 系 统 !nn); printf(nntttttEnding);for(i=0;i=30;i+)Sleep(300);printf(.);printf(n);void Help() printf(=n);printf(nntttt系 统 信 息n);printf(=n);printf(nntt本系统是职工工资管理系统,在职工的*栏可以输入汉字);printf(ntt如果在输入中没看到任何信息则是因为输入错误或无信息);printf(ntt系统中的 :实发工资 = 根本工资 - 扣款 ,不需要输入);printf(ntt实发工资 , 就可以直接输出实发工资,系统中

34、的 : );printf(ntt总工资 = 根本工资 - 扣款 + 奖金。);printf(ntt本系统制作者 : 海蛟 t QQ : 253181150);printf(ntt E_mail : 253181150qq. );printf(nttt Made By VC6.0+t 2013年6月18日n);printf(=n);printf(nntttt按进入);getchar();void Save(struct person per) /职工工资保存函数int i,j;pp=per; /指针指向构造 system(cls);printf(nnntt正在保存信息,请耐心等候!n);prin

35、tf(nntttSaving);for(j=0;j20;j+)Sleep(300);printf(.); if(fp=fopen(per_list2.doc,wb+)=NULL) printf(Cannot open file strike any key e*it!);getch();e*it(1);fprintf(fp,职工编号 职工* 根本工资 扣款 奖金 应发工资 税金 实发工资 总工资n);for(i=0;ishuru;i+) peri.gotpaid=peri.paid-peri.discount;if (peri.gotpaid=2000&peri.gotpaid=5000&pe

36、ri.gotpaid=10000&peri.gotpaid=100000)peri.fare=peri.gotpaid*0.3;peri.sum=peri.paid-peri.discount+peri.e*tra;peri.realpaid=peri.paid-peri.discount;fprintf(fp,n %6d %8s %5.1ft %5.1ft %3.1ft %5.1ft %5.1ft %4.1ft %5.1ft,peri.num,peri.name,peri.paid,peri.discount,peri.e*tra,peri.gotpaid,peri.fare,peri.re

37、alpaid, peri.sum); 7. 设计中的问题及解决方法由于浏览和查询模块中多定义了局部变量,且与全局变量同名将全局变量屏蔽,以至于这些模块不能到达预期效果,总是只输出最近一次的数据,经过修改后将其删除,到达了所要的效果。使程序得以执行。到目前程序中还有一小毛病,就是计算税金是实数双精度与单精度转换存在缺乏。8. 学习心得工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件工资档案,这种管理方式存在着许多缺点,如:效率低、*性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护

38、都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一局部,使用计算机对工资信息进展管理,具有着手工管理所无法比较的优点.例如:检索迅速、查找方便、可靠性高、存储量大、*性好、寿命长、本钱低等。这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件。这一个星期以来,在开发这个工资管理系统过程中我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。

39、在开发过程中,遇到困难是在所难免的,期间我跟我的指导教师和同学进展交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的,如果一遇到难题就心慌,想要放弃,那这样就不可能完成系统。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。在开发过程当中,我学到很多,明白了做任何事情都要有始有终,要敢于同困难作斗争,要养成独立思考的习惯。在以后的工作和生活当中,我将继续发扬这些好的作风。在同学和教师的帮助下,根本完本钱次课程设计,根本到达了工资管理系统的要求。通过学习和练习C程序的设计根底,了解了一些关于C的知识。在设计过程中,好多处困惑、疑问,有是

40、会很烦,甚至不想再做,但必须做好,所以耐着性子做好了。此时感觉有一点点成就感,也学到了一些知识。在程序编写中,出现了不少的问题,比方指针地址错误,文件无法保存;还有,经常我会忘在语句结尾处带分号,经常TC会在这方面报错;当然,图书馆也是查找资源的好地方,我也感谢那些在冬日里坐在那里的图书馆管理人员,是他们及时的借到相着图书,让我们的信息查找更为方便快捷。最后,我再一次感谢我的教师们,谢谢你们的谆谆教导,没有你们的言传身教,就没有我课程设计的顺利完成,谢谢您们七参考文献1C语言课程设计案例精编郭翠英2C程序设计教程淑霞 代世雄著3 C程序设计语言:机械工业.涛4C语言程序设计教程M.第3版.高等教育,2006谭浩强,基温. z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!