C程序设计课设报告——教师资源管理系统_第1页
C程序设计课设报告——教师资源管理系统_第2页
C程序设计课设报告——教师资源管理系统_第3页
C程序设计课设报告——教师资源管理系统_第4页
C程序设计课设报告——教师资源管理系统_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、*实践教学* 兰州理工大学计算机与通信学院2011年春季学期 C程序设计 课程设计题 目:教师工资管理系统专业班级: 通信工程1班 姓 名: 学 号: 指导教师: 周小健 成 绩:_摘 要人事工资管理系统的主要目标是辅助企事业单位高层领导决策,提高工作人员的工作效率,从而使企事业单位能够以少的投入获得更好的社会效益与经济效益,像人事系统、工资管理系统等就属于人事工资管理系统的范畴。它是单位实现现代化建设的基础工程,是提高单位的管理水平、业务的运转效率和服务质量的必要手段。因此 许多的程序员都可能面对如何开发一套比较完善的人事工资管理系统是相当有必要的问题。随着计算机技术的飞速发展,计算机在企、

2、事业管理中应用的普及,利用计算机实现企、事业人事工资的管理势在必行。本系统结合人事、财务制度,经过需求分析、总体设计和详细设计,采用功能强大的C 语言作为开以语言,来开发模拟我校的、单机版的教师工资管理系统。整个系统从符合操作简便、接口友好、灵活、实用、安全的要求出发,完成人事、工资管理的全过程,包括新进员工加入时工资的输入、老员工的转出、职位等的变动引起职工工资信息的修改、教师工资信息的查询、统计等工资管理工作。关键字:教师工资; C语言; 管理系统目 录一、需求分析1二、总体设计2三、详细设计32.1 数据定义32.2 算法流程图4五、测试7六、设计总结12参考文献13致谢14附录115一

3、、需求分析随着高等学校的快速发展,高校教师规模越来越大,教职工的数量也越来越多,高校教师工资管理更加的复杂,而工资管理是一项琐碎、复杂而又十分细致的工作, 工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机 进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处 理,同时计算机具有着手工管理所无法比拟的优点。本系统具有以下功能:1.教师工资信息输入;2.教师工资信息查询;3.教师工资信息删除;4.教师工资信息插入

4、;5.教师工资信息排序;6.教师工资信息统计;7.教师工资信息保存。 二、总体设计根据系统的需求分析,为了完成系统必须的功能,我们确定工资管理系统的功能如图1所示。教师工资管理系统增加职工工资删除职工工资修改职工工资查询职工工资插入职工工资统计职工工资排序职工工资保存职工工资显示职工工资按职工编号查询按职工姓名查询图1 工资管理系统功能模块图三、详细设计2.1 数据定义1.与职工有关的数据结构char num10; /*职工编号*/char name15; /*职工姓名*/float jbgz; /*基本工资*/float jj; /*奖金*/float kk; /*扣款*/float yfg

5、z; /*应发工资*/float sk; /*税款*/float sfgz; /*实发工资*/2.工资发放的数据结构tpn.jbgz=numberinput(jbgz:); /*输入并检验基本工资*/tpn.jj=numberinput(jiangjin:); /*输入并检验奖金*/tpn.kk=numberinput(koukuan:); /*输入并检验扣款*/tpn.yfgz=tpn.jbgz+tpn.jj-tpn.kk; /*计算应发工资*/tpn.sk=tpn.yfgz*0.12; /*计算税金,这里取应发工资的百分之一十二*/tpn.sfgz=tpn.yfgz-tpn.sk; /*计

6、算实发工资*/3.主函数模块switch(select) case 1:count=Add(gz,count);break; /*增加职工工资记录*/ case 2:count=Del(gz,count);break; /*删除职工工资记录*/ case 3:Qur(gz,count);break; /*查询职工工资记录*/ case 4:Modify(gz,count);break; /*修改职工工资记录*/ case 5:count=Insert(gz,count);break; /*插入职工工资记录*/ case 6:Tongji(gz,count);break; /*统计职工工资记录*

7、/ case 7:Sort(gz,count);break; /*排序职工工资记录*/ case 8:Save(gz,count);break; /*保存职工工资记录*/ case 9:system(cls);Disp(gz,count);break; /*显示职工工资记录*/ default: Wrong();getchar();break; /*按键有误,必须为数值-9*/2.2 算法流程图2.21保存函数Save()的算法流程图如图2所示。FILE *fp;(fp=fopen(outfile,wb)=NULLprintf(nSaving file.n);printf(can not op

8、en filen);p!=NULLfclose(fp);fwrite(p,sizeof(SALARY),1,fp);图2 保存函数Save()的算法流程图2.22按编号查找教师工资信息记录printheader(); printdata(tpp); printf(END); printf(press any key to return); getchar();p=Locate(tp,n,searchinput,num);system(cls);printf(n =1 Search by number =2 Search by namen);if(select=1)if(p!=-1)Nofind

9、();图3 按编号查找教师工资信息记录四、编码说明: “工资管理系统总控模块” 的功能由menu()函数实现,根据“工资管理系统总控模块” 的程序流程图编写menu()函数。 “统计职工工资记录子模块” 的功能由Tongji()函数实现,根据“计算实发工资子模块” 的程序流程图编写calc函数。 “查询职工工资记录子模块” 的功能由sort()函数实现,根据“查找记录子模块” 的程序流程图编写search函数。 “删除职工工资记录子模块” 的功能由Del函数实现,根据“删除记录子模块” 的程序流程图编写delete函数。 “插入职工工资记录子模块” 的功能由Insert()函数实现,根据“插入

10、记录子模块” 的程序流程图编写insert()函数。 “保存职工工资记录子模块” 的功能由save()函数实现,根据“插入记录子模块” 的程序流程图编写save()函数。 “排序职工工资子模块” 的功能由Sort()函数实现,根据“排序职工工资子模块” 的程序流程图编写Sort()函数。 case 1:count=Add(gz,count);break; /*增加职工工资记录*/ case 2:count=Del(gz,count);break; /*删除职工工资记录*/ case 3:Qur(gz,count);break; /*查询职工工资记录*/ case 4:Modify(gz,cou

11、nt);break; /*修改职工工资记录*/ case 5:count=Insert(gz,count);break; /*插入职工工资记录*/ case 6:Tongji(gz,count);break; /*统计职工工资记录*/ case 7:Sort(gz,count);break; /*排序职工工资记录*/ case 8:Save(gz,count);break; /*保存职工工资记录*/ case 9:system(cls);Disp(gz,count);break; /*显示职工工资记录*/(源代码见附录1)五、测试在VisualC+ 6.0中运行该系统,得到如图4所示的教师工资

12、管理系统的主界面。图4 教师工资管理系统的主界面在图4所示的系统主界面中,输入1,进入图5所示的输入教师工资信息界面。图5 输入教师工资信息界面输入0返回图4所示的主界面,再输入2,进入图6所示的删除教师工资信息界面。图6 删除教师工资信息界面按任意键返回图4所示的主界面,再输入3,进入图7所示的查询教师工资信息界面。图7 查询教师工资信息界面 按任意键返回图4所示的主界面,再按4,进入图8所示修改教师工资信息界面。图8 修改工资信息界面输入0返回图4所示的主界面,再输入5,进入图9所示的插入教师工资信息界面。图9 插入教师工资信息界面。输入0返回图4所示的主界面,再输入6,进入图10所示的教

13、师工资信息统计界面。图10 教师工资信息统计按任意键返回图4所示的主界面,再按7,进入图11所示教师工资信息排序界面。图11 教师工资信息排序界面。按任意键返回图4所示的主界面,再按8,保存教师工资信息。图12 保存教师工资信息六、设计总结第一次做课设,第一次接触这么庞大的c程序,首先读懂它就有很大的难度,但是按照老师讲过的很多东西,慢慢地和其他人一起讨论,集合了大家的想法,也使得思路更加开阔和多样化。例如,刚编写好程序时,我们将所有子函数方最后面并且没有预先申明,导致程序执行时出错,后来经过老师的讲解,最后重新调整了函数的顺序,最后程序编译成功时,大家都特别高兴。虽然编程看起来似乎是一件很枯

14、燥、乏味的事情,但是经历了这次大程序的编辑之后,现其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。 C语言实训和平时上课所接触的程序是有很大不同的,平时看的写的都是小程序,致使包括一些知识。从来没有将所有学过的知识集中在一个程序中。所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。在这次课程设计中我对C语言有了一个更深的了解认识,也对这个学期学的知

15、识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的课程设计使我对C语言的学习产生浓厚的兴趣。还是这次课程设计最令人激动的就是合作做项目,虽然那只是一个很小很小的项目,大家在一起学习,取长补短,我们很好的在课设中长知识,提高我们的学习热情。对于以后的学习及我们的专业知识的学习我都有了很大的信心。只要我们努力,所有的事就像我们的C程序一样,只要我们编好了程序,就能正确的运行的。因此我觉得,只要能够细心,下功夫,特别是不懂的问题善于请教老师或者同学,一定可以把课堂上学过的书本知识运用到实践中,将知识真真切切地

16、变为自己的。参考文献1姜灵芝,余健. C语言课程设计案例精编.北京:清华大学出版社,20082王新,孙雷. C语言课程设计.北京:清华大学出版社,20093游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,20114王连相.C/C+程序设计上机指导与测试. 北京:中国铁道出版社,20065C语言函数手册,机械工业出版社,1999致谢 一周的课设紧张的结束了,在此期间周老师也很辛苦,给我们讲解了如何去做一个如此庞大的课程设计,给了我们很多的帮助。同时,当我们遇到困难时耐心地为我们作讲解并加以引导,因此,我们再次感谢周老师。总之,第一次接触课程设计一定会遇到好多问题不仅仅

17、是C程序中的相关知识还有许多专业技术知识,我们去克服它得到了许多同学的鼓励和帮助尤其是我的合作伙伴马华和赵晓瑾。最后,我们在做这次课设的时候还参考了许多资料,在此也表示感谢。附录1 #include stdio.h /*标准输入输出函数库*/#include stdlib.h /*标准函数库*/#include string.h /*字符串函数库*/#include conio.h /*屏幕操作函数库*/#define HEADER1 -ZGGZ- n#define HEADER2 | number| name | jbgz | jj | kk | yfgz | sk | sfgz | n#d

18、efine HEADER3 |-|-|-|-|-|-|-|-| n#define FORMAT |%-8s|%-10s |%8.2f|%8.2f|%8.2f|%8.2f|%8.2f|%8.2f| n#define DATA p-num,p-name,p-jbgz,p-jj,p-kk,p-yfgz,p-sk,p-sfgz#define END - n#define N 60int saveflag=0; /*是否需要存盘的标志变量*/*定义与职工有关的数据结构*/typedef struct employee /*标记为employee*/char num10; /*职工编号*/char nam

19、e15; /*职工姓名*/float jbgz; /*基本工资*/float jj; /*奖金*/float kk; /*扣款*/float yfgz; /*应发工资*/float sk; /*税款*/float sfgz; /*实发工资*/ZGGZ;void menu() /*主菜单*/system(cls); /*调用DOS命令,清屏.与clrscr()功能相同*/textcolor(10); /*在文本模式中选择新的字符颜色*/gotoxy(10,5); /*在文本窗口中设置光标*/cprintf( The Employee Salary Management System n);got

20、oxy(10,8);cprintf( *Menu*n);gotoxy(10,9);cprintf( * 1 input record 2 delete record *n);gotoxy(10,10);cprintf( * 3 search record 4 modify record *n);gotoxy(10,11);cprintf( * 5 insert record 6 count record *n);gotoxy(10,12);cprintf( * 7 sort reord 8 save record *n);gotoxy(10,13);cprintf( * 9 display r

21、ecord 0 quit system *n);gotoxy(10,14);cprintf( *n);/*cprintf()送格式化输出至文本窗口屏幕中*/void printheader() /*格式化输出表头*/ printf(HEADER1); printf(HEADER2); printf(HEADER3);void printdata(ZGGZ pp) /*格式化输出表中数据*/ ZGGZ* p; p=&pp; printf(FORMAT,DATA);void Disp(ZGGZ tp,int n) /*显示数组tp中存储的记录,内容为employee结构中定义的内容*/int i;

22、if(n=0) /*表示没有职工工资记录*/ printf(n=Not employee record!n); getchar(); return;printf(nn);printheader(); /*输出表格头部*/i=0;while(iNot find this employee record!n);/*作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值参数:findmess保存要查找的具体内容; nameornum保存按什么在数组中查找;*/int Locate(ZGGZ tp,int n,char findmess,char nameornum)int i=0;if

23、(strcmp(nameornum,num)=0) /*按职工编号查询*/ while(in) if(strcmp(tpi.num,findmess)=0) /*若找到findmess值的职工编号*/ return i; i+; else if(strcmp(nameornum,name)=0) /*按职工姓名查询*/ while(in) if(strcmp(,findmess)=0) /*若找到findmess值的姓名*/ return i; i+; return -1; /*若未找到,返回一个整数-1*/*输入字符串,并进行长度验证(长度lens) printf(n exc

24、eed the required length! n); /*进行长度校验,超过lens值重新输入*/ while(strlen(n)lens); strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/*输入数值,数值)*/float numberinput(char *notice) float t=0.00; do printf(notice); /*显示提示信息*/ scanf(%f,&t); /*输入如工资等数值型的值*/ if(t=0! n); /*进行数值校验*/ while(t0); return t; /*增加职工工资记录*/int Add(ZGGZ tp,int n

25、) char ch,num10; int i,flag=0; system(cls); Disp(tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为的记录才结束添加操作*/ while(1) /*输入职工编号,保证该编号没有被使用,若输入编号为,则退出添加记录操作*/ stringinput(num,10,input number(press 0return menu):); /*格式化输入编号并检验*/ flag=0; if(strcmp(num,0)=0) /*输入为,则退出添加操作,返回主界面*/ return n; i=0;

26、while(iThe number %s is existing,try again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(tpn.num,num); /*将字符串num拷贝到tpn.num中*/ stringinput(,15,Name:); tpn.jbgz=numberinput(jbgz:); /*输入并检验基本工资*/ tpn.jj=numberinput(jiangjin:); /*输入并检验奖金*/ tpn.kk=numberinp

27、ut(koukuan:); /*输入并检验扣款*/ tpn.yfgz=tpn.jbgz+tpn.jj-tpn.kk; /*计算应发工资*/ tpn.sk=tpn.yfgz*0.12; /*计算税金,这里取应发工资的百分之一十二*/ tpn.sfgz=tpn.yfgz-tpn.sk; /*计算实发工资*/ saveflag=1; n+; return n;/*按职工编号或姓名,查询记录*/void Qur(ZGGZ tp,int n)int select; /*1:按编号查,:按姓名查,其他:返回主界面(菜单)*/char searchinput20; /*保存用户输入的查询内容*/int p=

28、0;if(nNo employee record!n); getchar(); return;system(cls);printf(n =1 Search by number =2 Search by namen);printf( please choice1,2:);scanf(%d,&select);if(select=1) /*按编号查询*/ stringinput(searchinput,10,input the existing employee number:); p=Locate(tp,n,searchinput,num);/*在数组tp中查找编号为searchinput值的元素

29、,并返回该数组元素的下标值*/ if(p!=-1) /*若找到该记录*/ printheader(); printdata(tpp); printf(END); printf(press any key to return); getchar(); else Nofind(); getchar();else if(select=2) /*按姓名查询*/ stringinput(searchinput,15,input the existing employee name:); p=Locate(tp,n,searchinput,name); if(p!=-1) printheader(); p

30、rintdata(tpp); printf(END); printf(press any key to return); getchar(); else Nofind(); getchar();else Wrong(); getchar(); /*删除记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/int Del(ZGGZ tp,int n)int sel;char findmess20;int p=0,i=0;if(nNo employee record!n); getchar(); return n;system(cls);Disp(tp,n);printf(n =

31、1 Delete by number =2 Delete by namen);printf( please choice1,2:);scanf(%d,&sel);if(sel=1) stringinput(findmess,10,input the existing employee number:); p=Locate(tp,n,findmess,num); getchar(); if(p!=-1) for(i=p+1;idelete success!n); n-; getchar(); saveflag=1; else Nofind(); getchar(); else if(sel=2)

32、 /*先按姓名查询到该记录所在的数组元素的下标值*/ stringinput(findmess,15,input the existing employee name:); p=Locate(tp,n,findmess,name); getchar(); if(p!=-1) for(i=p+1;idelete success!n); n-; getchar(); saveflag=1; else Nofind(); getchar(); return n;/*修改记录。先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/void Modify(ZGGZ tp,int

33、n)char findmess20;int p=0;if(nNo employee record!n); getchar(); return ;system(cls);printf(modify employee recorder);Disp(tp,n);stringinput(findmess,10,input the existing employee number:); /*输入并检验该编号*/p=Locate(tp,n,findmess,num); /*查询到该数组元素,并返回下标值*/if(p!=-1) /*若p!=,表明已经找到该数组元素*/ printf(Number:%s,n,

34、tpp.num); printf(Name:%s,); stringinput(,15,input new name:); printf(jbgz:%8.2f,tpp.jbgz); tpp.jbgz=numberinput(jbgz:); printf(jiangjin:%8.2f,tpp.jj); tpp.jj=numberinput(jiangjin:); printf(koukuan:%8.2f,tpp.kk); tpp.kk=numberinput(koukuan:); tpn.yfgz=tpn.jbgz+tpn.jj-tpn.kk; tpn.sk=tp

35、n.yfgz*0.12; tpn.sfgz=tpn.yfgz-tpn.sk; printf(n=modify success!n); getchar(); Disp(tp,n); getchar(); saveflag=1;else Nofind(); getchar(); return ;/*插入记录:按职工编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新数组元素。*/int Insert(ZGGZ tp,int n) char ch,num10,s10; /*s保存插入点位置之前的编号,num保存输入的新记录的编号*/ ZGGZ newinfo; int flag=0,i=0,

36、kkk=0; system(cls); Disp(tp,n); while(1) stringinput(s,10,please input insert location after the Number:); flag=0;i=0; while(iThe number %s is not existing,try again?(y/n):,s); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; /*以下新记录的输入操作与Add()相同*/ while(1) stringinput(num,10,input new employee

37、 Number:); i=0;flag=0; while(iSorry,The number %s is existing,try again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(newinfo.num,num); /*将字符串num拷贝到newinfo.num中*/ stringinput(,15,Name:); newinfo.jbgz=numberinput(jbgz:); /*输入并检验jbgz*/ newinfo.jj=num

38、berinput(jiangjin:); /*输入并检验jiangjin*/ newinfo.kk=numberinput(koukuan:); /*输入并检验koukuan*/ newinfo.yfgz=newinfo.jbgz+newinfo.jj-newinfo.kk; /*计算yfgz*/ newinfo.sk=newinfo.yfgz*0.12; /*计算sk*/ newinfo.sfgz=newinfo.yfgz-newinfo.sk; saveflag=1; /*在main()有对该全局变量的判断,若为,则进行存盘操作*/ for(i=n-1;ikkk;i-) /*从最后一个组织元素开始往向移一个元素位置*/ strcpy(tpi+1.num,tpi.num); strcpy(tpi+1.name,); tpi+1.jbgz=tpi.jbgz; tpi+1.jj=tpi.jj; tpi+1.kk=tpi.kk; tpi+1.yfgz=tpi.yfgz; tpi+1.sk=tpi.sk; tpi+1.sfgz=tpi.sfgz; strcpy(tpkkk+1.num,newinfo.num); /*在kkk的元素位置后插入新记录*/ strcpy(tpkk

温馨提示

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

评论

0/150

提交评论