C语言程序设计报告职工工资管理系统_第1页
C语言程序设计报告职工工资管理系统_第2页
C语言程序设计报告职工工资管理系统_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计报告课程名称:c语言程序设计院系:管理与经济学院专业班级:工业工程2012142班学号:201214217学生姓名:李海蛟指导教帅:杨雪青完成时间:2013-06-20报告成绩:目录1、设计2题目2、设计要求(包括设计内容描述)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. 运行环境及工具软件WindowsXPVisualC+6.0(完整绿色版);系统设计5.1程序逻辑图职工工资管理系统退出导入数据导出数据工资计算工资统计工资排序职工工资B用户管理登陆功能图1:系统结构框图5.2程序流程图唐询职丁丁资H安全退出系统6.源程序代码#include<stdio.h>/标准输入输出#include<stdlib.h>/处理杂乱#include<windows.h>/Sleep

6、()#include<string.h>/字符串操作#include<conio.h>/系统输入输出#include<time.h>/时间相关/*下面是对用到的全局常量声明*/#defineNAME10/职工职工姓名长度#definePASSWORD"123”/系统登陆密码intshuru=0;/全局变量标记当前录入职工个数FILE*fp;/声明一个文件指针体定义/*结*/*structperson(/职工工资的结构体charnameNAME;/职工职工姓名intnum;/职工编号floatpaid;/职工基本工资floatdiscount;/扣款

7、floatextra;/奖金floatfare;/税金floatgotpaid;/应发工资floatrealpaid;/实发工资floatsum;/总工资*pp;/声明一个结构指针/*下面是对用到的函数声明*/*voidPassword();/密码验证函数保存信息函数voidSave(structpersonper);/voidInputper(structpersonper);/voidDelper(structpersonper);/voidModifyper(structpersonper);/voidFindper(structpersonper);/voidInsertper(str

8、uctpersonper);/voidSortper(structpersonper);/voidListper(structpersonper);/voidfare(structpersonper,intn);/voidMenu();voidHelp();*voidmain()/程序入口(system("color027");/设置当前窗口的背景色和前景色Password();/调用密码验函数Help();/调用系统信息函数Menu();/调用菜单函数voidInputper(structpersonper)/录入职工工资函数原形录入信息函数删除信息函数修改信息函数查找信

9、息函数插入信息函数排序函数显示职工信息计算税金函数程序主体(pp=per;/指针指向结构system("cls");/清屏inti;printf("请问你要输入几个职工的信息:");scanf("%d",&shuru);if(fp=fopen("inputdata","wb+")=NULL)/当前目录下是否存在INPUTDATA:件/"wb+":读写打开或建立一个二进制文件,允许读和写printf("Cannotopenfilestrikeanykeyexi

10、t!");getch();exit(1);fprintf(fp,"职工编号职工姓名基本工资扣款奖金应发工资税金实发工作总工资n");for(i=0;i<shuru;i+)printf("输入职工编号:");/输入职工编号fflush(stdin);scanf("%d",&peri.num);printf("输入职工姓名:");/输入职工姓名fflush(stdin);gets();printf("输入职工的工资信息n");printf("n&q

11、uot;);printf("n基本工资:");/基本工资fflush(stdin);scanf("%f",&peri.paid);printf("n扣款:");/扣款fflush(stdin);scanf("%f",&peri.discount);printf("n奖金:");/奖金fflush(stdin);scanf("%f",&peri.extra);printf("n税金:");/税金printf("n"

12、);peri.sum=peri.paid-peri.discount+peri.extra;peri.realpaid=peri.paid-peri.discount;fprintf(fp,"%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%4.1ftn",peri.num,,peri.paid,peri.discount,peri.extra,peri.realpaid,peri.sum);voidModifyper(structpersonper)(pp=per;intid,i=0;/id为接收用户输入的职工编号if(fp=fopen(&q

13、uot;modifydata.sys","wb+")=NULL)printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);fprintf(fp,"职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");printf("n请输入你要修改的职工的编号:");scanf("%d”,&id);Sleep(500);printf("nt查找相关数据.");for(i=0;i<=15;i+)(Sleep(2

14、50);printf(".”);for(i=0;i<shuru;i+)(if(peri.num=id)/如果找到了就执行下面语句,找不到直接回主界面(printf("n输入新职工编号:");/输入职工编号fflush(stdin);scanf("%d”,&peri.num);printf("n输入新职工姓名:");/输入职工姓名fflush(stdin);gets();printf("输入职工的工资信息n");printf("n");printf("n基

15、本工资:");scanf("%f",&peri.paid);fflush(stdin);printf("n扣款:");scanf("%f",&peri.discount);fflush(stdin);printf("n奖金:");scanf("%f",&peri.extra);printf("n");peri.sum=peri.paid-peri.discount+peri.extra;peri.realpaid=peri.paid-peri

16、.discount;fprintf(fp,"%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%4.1ftn",peri.num,,peri.paid,peri.discount,peri.extra,peri.realpaid,peri.sum);查询职工工资信息voidFindper(structpersonper)/(inti=0,j=0,id;/循环变量和用于接收职工编号printf("请输入你要查询的职工编号:");scanf("%d",&id);for(i=0;i<shuru;i+

17、)(if(peri.num=id)/如果找到你查询的数据就执行下面语句(/如果找不到。直接回程序主界%peri.sum=peri.paid-peri.discount+peri.extra;peri.realpaid=peri.paid-peri.discount;printf("n职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");printf("n%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%5.1ft%5.1ft%4.1ftnn”,peri.num,,peri.paid,peri.discount,peri.e

18、xtra,peri.gotpaid,peri.fare,peri.realpaid,peri.sum);system("pause");voidInsertper(structpersonper)/插入职工工资信息(intflag=1;pp=per;inti,id;if(fp=fopen("insertdata.sys","wb+")=NULL)(printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);fprintf(fp,"职工编号职工姓名基本

19、工资扣款奖金应发工资税金实发工资总工资n");printf("输入你插入的职工编号:");scanf("%d”,&id);for(i=0;i<shuru;i+)(if(peri.num=id)/判断职工编号信息否存在?(printf("职工编号信息已经存在!n");flag=0;getch();break;if(flag!=0)(shuru+;/插入一个,原来的总数增加1printf("请确认输入要插入职工编号:");scanf("%d”,&pershuru-1.num);/如果不存

20、在.那么就把插入的信息放到结构数组最后printf("输入职工姓名:");fflush(stdin);gets();printf("输入职工的工资信息n");printf("n");printf("n基本工资:");fflush(stdin);scanf("%f",&pershuru-1.paid);printf("n扣款:");fflush(stdin);scanf("%f",&pershuru-1.disc

21、ount);printf("n奖金:");/奖金fflush(stdin);printf("n税金:");/税金fflush(stdin);printf("n");peri.sum=peri.paid-peri.discount+peri.extra;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.pai

22、d,pershuru-1.discount,pershuru-1.extra,peri.realpaid,pershuru-1.sum);Sleep(500);printf("插入数据成功!n");getch();voidListper(structpersonper)/浏览所有职工工inti=0;for(i=0;i<shuru;i+)peri.gotpaid=peri.paid-peri.discount;if(peri.gotpaid<2000)peri.fare=0;elseif(peri.gotpaid>=2000&&peri.go

23、tpaid<4999)peri.fare=peri.gotpaid*0.05;elseif(peri.gotpaid>=5000&&peri.gotpaid<10000)peri.fare=peri.gotpaid*0.1;elseif(peri.gotpaid>=10000&&peri.gotpaid<99999)peri.fare=peri.gotpaid*0.25;elseif(peri.gotpaid>=100000)peri.fare=peri.gotpaid*0.3;peri.sum=peri.paid-peri.

24、discount+peri.extra;peri.realpaid=peri.paid-peri.discount;printf("n职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");for(i=0;i<shuru;i+)printf("n%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%5.1ft%4.1ft%5.1ft”,peri.num,,peri.paid,peri.discount,peri.extra,peri.gotpaid,peri.fare,peri.realpaid,peri.sum);get

25、ch();voidDelper(structpersonper)/删除职工信息函数pp=per;structpersontemp;intdelnum;charask;inti,j;if(fp=fopen("Deldata.sys”,"wb+")=NULL)printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);fprintf(fp,"职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");system("cls");printf(&qu

26、ot;nnt请输入你要删除的职工的职工编号:");fflush(stdin);scanf("%d”,&delnum);printf("nt是否确认删除职工d的信息(y/n)",delnum);fflush(stdin);ask=getchar();if(ask!='n')for(i=0;i<shuru;i+)if(peri.num=delnum)break;if(i>shuru)printf("nt没有你要删除的职工!n");elsefor(j=i;j<shuru;j+)temp=perj;p

27、erj=perj+1;perj+1=temp;shuru-;/删掉一个职工信息后职工总数相应-1system("cls");printf("nn删除成功!n");peri.sum=peri.paid-peri.discount+peri.extra;peri.realpaid=peri.paid-peri.discount;fprintf(fp,"%6d%8st%5.1ft%5.1ft%5.1ft%5.1ft%4.1fn”,peri.num,,peri.paid,peri.discount,peri.extra,peri.re

28、alpaid,peri.sum);getch();voidSortper(structpersonper)/排序函数(inti,j,chose;/i,j为循环变量chose为接收用户输入的排序方式structpersontemp;printf("排序前的数据为n");printf("n职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");for(i=0;i<shuru;i+)(printf("n%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%4.1ftn",peri.num,,peri

29、.paid,peri.discount,peri.extra,peri.realpaid,peri.sum);printf("n1.按职工编号排序t2.按总工资(高"低)排序n");printf("n请您正确选择:");fflush(stdin);scanf("%d”,&chose);if(chose=1)(for(i=0;i<shuru-1;i+)(for(j=i+1;j<shuru;j+)(if(peri.num>perj.num)(temp=peri;peri=perj;perj=temp;printf

30、("n职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");for(i=0;i<shuru;i+)(printf("n%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%4.1ftn",peri.num,,peri.paid,peri.discount,peri.extra,peri.realpaid,peri.sum);system("pause");elseif(chose=2)(for(i=0;i<shuru-1;i+)(for(j=i+1;j<shuru;j+)(if(

31、peri.sum<perj.sum)(temp=peri;peri=perj;perj=temp;printf("n职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");for(i=0;i<shuru;i+)(printf("n%6d%8s%5.1ft%5.1ft%3.1ft%5.1ft%4.1fn",peri.num,,peri.paid,peri.discount,peri.extra,peri.realpaid,peri.sum);system("pause");voidPassword

32、()/密码验证函数(char*pass=NULL;/初始化指针inti,count;time_tstart,end;/时间函数pass=(char*)malloc(255*sizeof(char);/分配内存while(1)(count=0;printf("nnnnnttt职工工资管理系统n");printf("nttUserName:李海蛟n");printf("nttPassword:");while(count>=0)&&(passcount+=getch()!=13)/密码输入if(pass0='

33、b')count=0;continue;elseif(passcount-1='b')printf("%c%c%c”,'b','0','b');count-=2;elseputchar('*');pass-count='0'if(!strcmp(pass,PASSWORD)/开始验证printf("nnttttttLogining");for(i=0;i<=25;i+)Sleep(250);printf(".");system(&quo

34、t;cls");printf("nnnnnnnnnttt");printf("欢迎登陆职工工资管理系统!nn");start=time(NULL);end=time(NULL);while(end-start<2)/延时2秒执行以下程序(end=time(NULL);system("cls");free(pass);/释放储存密码的内存return;free(pass);/释放密码错误的那块内存pass=(char*)malloc(255*sizeof(char);/重新分配储存密码内存system("cls

35、");printf("annnnnnnntttt密码错误!");getch();system("cls");voidMenu()(structpersonper50;/最大职工人数structperson*p;/声明一个结构指针p=per;/指针指向结构变量perinti,in;/接收用户的选择charch;/用于判断是否继续do(system("cls");printf("nn");printf("tt:=n");printf("tt*职工工资管理系统*n");p

36、rintf("tt*=:*n");printf("tt*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");pri

37、ntf("tt*n");printf("tt*6.插入职工工资*n");printf("tt*n");printf("tt*7.职工工资排序*n");printf("tt*n");printf("tt*8.保存职工工资*n");printf("tt*n");printf("ttprintf("tt*9.安全退出系统*n");K八-:n);printf("tt请您正确选择:");if(!(scanf(&quo

38、t;%d",&in)=1)(while(ch=getchar()!='n')putchar(ch);printf("没有此选项,请正确选择!");getch();continue;fflush(stdin);switch(in)(case1:Inputper(per);/调用录入职工工资函数break;case2:Modifyper(per);/调用修改职工工资函函数break;case3:Findper(per);/调用查询职工工资函数break;case4:Listper(per);/调用浏览职工工资函数break;case5:Delp

39、er(per);/调用删除职工工资函数break;case6:Insertper(per);/插入职工工资信息break;case7:Sortper(per);/调用职工工资排序函数break;case8:Save(per);/保存职工工资函数break;case9:/退出系统break;default:printf("没有此选项,请正确选择!");getch();break;while(in!=9);system("cls");printf("nnnnnnnnttt");printf("谢谢使用本系统!nn");

40、printf("nntttttEnding");for(i=0;i<=30;i+)Sleep(300);printf(".");printf("n");voidHelp()=n");printf("nntttt系统信息n");printf("=n");printf("nntt本系统是职工工资管理系统,在职工的姓名栏可以输入汉字");printf("ntt如果在输入中没看到任何信息则是因为输入错误或无信息");printf("ntt

41、系统中的:实发工资=基本工资-扣款,不需要输入");printf("ntt实发工资,就可以直接输出实发工资,系统中的:");printf("ntt总工资=基本工资-扣款+奖金。");printf("ntt本系统制作者:李海蛟tQQ:253181150");printf("nttE_mail:253181150");printf("ntttMadeByVC6.0+t2013年6月18日n");printf("=n");printf("nntttt按<E

42、nter>进入");getchar();voidSave(structpersonper)/职工工资保存函数inti,j;pp=per;/指针指向结构system("cls");printf("nnntt正在保存信息,请耐心等候!n");7. printf("nntttSaving");for(j=0;j<20;j+)(Sleep(300);printf(".");if(fp=fopen("per_list2.doc”,"wb+")=NULL)(printf(&q

43、uot;Cannotopenfilestrikeanykeyexit!");getch();exit(1);fprintf(fp,"职工编号职工姓名基本工资扣款奖金应发工资税金实发工资总工资n");for(i=0;i<shuru;i+)(peri.gotpaid=peri.paid-peri.discount;if(peri.gotpaid<2000)peri.fare=0;elseif(peri.gotpaid>=2000&&peri.gotpaid<4999)peri.fare=peri.gotpaid*0.05;elseif(peri.gotpaid>=5000&&peri.gotpaid<10000)peri.fare=peri.gotpaid*0.1;elseif(peri.gotpaid>=10000&&peri.gotpaid<99999)peri.fare=peri.gotpaid*0.25;elseif(peri.gotpaid>=100000)peri.fare=peri.gotpaid*0.3;peri.sum=peri.paid

温馨提示

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

评论

0/150

提交评论