收藏 分享(赏)

员工工资管理系统.doc

上传人:j35w19 文档编号:7131410 上传时间:2019-05-06 格式:DOC 页数:20 大小:163KB
下载 相关 举报
员工工资管理系统.doc_第1页
第1页 / 共20页
员工工资管理系统.doc_第2页
第2页 / 共20页
员工工资管理系统.doc_第3页
第3页 / 共20页
员工工资管理系统.doc_第4页
第4页 / 共20页
员工工资管理系统.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 课程设计说明书 NO.1沈 阳 大 学员工工资管理系统1 课程设计的目的C 语言程序设计课程设计是计算机科学与技术专业一门重要的专业技术基础课程,也是一门核心课程。本课程设计的目的是为了配合 C 语言程序设计课程的开设,使学生能够较熟练地掌握语言的基本内容及程序设计的基本方法与编程技巧,并能够培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机的专业知识打下基础。2 课程设计的原理程序清单2.1 课程设计的方法论证该系统大致实现了工资管理功能,如图 1 所示。员工工资管理系统员工基本信息工资查询工资信息转存员工信息的追加与修改图 1 工资管理系统总体功能框图菜单

2、函数、输入函数、输出函数、查找函数、修改函数、删除函数、添加函数,退出控制几个部分从而将程序简单化处理分析。通过指针函数定义实现以上各个函数的功能,并完成题目要求。结构体和简单的输出命令,具体操做加上 switch.for.do-while 等语句,以达到选择的目的,再进行其他函数的操作。本系统分为以下几个功能模块:课程设计说明书 NO.2沈 阳 大 学main()为主控函数; enter()等待键输入; load_rec()统计记录数;add()添加个人资料;del()删除个人资料;edit()修改个人资料;display()浏览所有信息;search()查找个人资料主函数. choice=

3、1 choice=2 choice=3choice=4choice=5choice=6Inputinformation ()Searchemployee ()Modifyemployee ()Deleteemployee ()Searchdepartment ()Totalinformation ()开始YYYYYYNNNNNNdisplayMenu() 输入 choiceWhile(choice!=0)YNBye!课程设计说明书 NO.3沈 阳 大 学图 2 流程图2.2 源程序清单/*头文件(.h)*/#include “stdio.h“ /*I/O 函数*/# include “bios

4、.h“ /*ROM 基本输入输出函数*/#include “dos.h“ /*dos 接口函数 */#include “conio.h“ /*屏幕操作函数*/#include “stdlib.h“ /*其它说明*/#include “string.h“ /*字符串函数*/#include “mem.h“ /*内存操作函数*/#include “ctype.h“ /*字符操作函数*/#include “alloc.h“ /*动态地址分配函数*/*变量定义*/typedef struct z1 /*定义数据结构*/char no11; /*编号*/char name15; /*姓名*/float

5、jbgz; /*基本工资*/float koukuan; /*扣款*/float yfgz; /*应发工资*/float shuijin; /*税金*/float sfgz; /*实发工资*/struct z1 *prior;/*前驱指针*/struct z1 *next;/*后继指针*/SALARY; /*结构体类型名*/struct z1 *First; /*双链表头指针 */struct z1 *Last; /*双链表尾指针*/课程设计说明书 NO.4沈 阳 大 学/*函数原型*/void init(); /*初始化*/void create(); /*创建链表*/void calc()

6、; /*计算应发工资*/void delete(); /*删除*/void search(); /*查找*/void save(); /*保存文件*/void load(); /*读取文件*/void computer(); /*计算所需各种票面张数*/void insert(); /*插入*/void append(); /*追加*/void copy(); /*复制文件*/void sort(); /*排序*/void index(); /*索引*/void total(); /*分类合计*/void list(); /*显示所有数据*/void print(SALARY *p); /*输

7、出单条记录*/void display(); /*随意逐条显示*/float fax(float x); /*计算税金 */int menu_select(); /*主菜单*/*主函数开始*/main()int i;clrscr();for(;)switch(menu_select() /*调用菜单函数返回一个整数值*/课程设计说明书 NO.5沈 阳 大 学case 0:init();break; /*初始化*/case 1:create();break; /*输入数据创建双链表 */case 2:list();break; /*显示所有数据*/case 3:display();break;

8、/*单条显示*/case 4:calc();break; /*计算实发工资*/case 5:exit(0); /*退出*/*初始化函数*/void init()First=NULL;Last=NULL;/*输入数据,创建双链表*/void create()int x; /*记录行坐标*/int i; /*记录输入记录数*/int flag=0; /*做结束标记*/float temp; /*定义临时变量*/SALARY *info,*p; /*定义临时变量 */if(First!=NULL)init();/*如果头指针为空,调用初始化函数*/p=First; /*从头指针开始*/for(;)课

9、程设计说明书 NO.6沈 阳 大 学if(flag=1)break; /*如果 flag=1,结束输入 */i=0;x=0; /*确定移动的行坐标*/clrscr(); /*清屏*/info-next=NULL;/*新结点的后继为空*/info-prior=NULL;/*新结点的前驱为空*/gotoxy(1,8+x);printf(“|“); /*输出数据间的分割线*/gotoxy(12,8+x);printf(“|“);gotoxy(29,8+x);printf(“|“);gotoxy(38,8+x);printf(“|“);gotoxy(2,8+x);/*光标到输入编号位置 */input

10、s(info-no,10);/*输入编号,并验证长度不超过 10*/if(info-no0=)flag=1;break; /*编号首字符为结束输入*/gotoxy(13,8+x); /*光标到输入姓名位置*/inputs(info-name,14); /*输入姓名,并验证长度不超过 14*/gotoxy(30,8+x); /*光标到输入基本工资位置*/scanf(“%f“, /*输入基本工资到临时变量*/info-jbgz=temp; /*基本工资赋值*/info-koukuan=0; /*初始扣款为 0,待计算工资时输入*/info-sfgz=0; /*初始实发工资为 0,待计算工资时计算*

11、/info-shuijin=0; /*初始税金为 0,待计算工资时计算*/info-yfgz=0; /*初始应发工资为 0,待计算工资时计算*/课程设计说明书 NO.7沈 阳 大 学if(p=NULL)/*如果 p 为空,说明输入的是第一个结点*/First=Last=info;/*头指针和尾指针*/First-prior=NULL; /*头指针的前驱是空*/Last-next=NULL; /*尾指针的后继是空*/else /*插入的结点不是第一结点,则插入在头结点之前*/info-next=p;/*新结点的后继指向原来的头结点*/info-prior=p-prior;/*新结点的前驱指向原来

12、的头结点的前驱*/p-prior=info;/*原来结点的前驱指向新结点*/p=info; /*新结点变为 p 结点,暂时的头结点*/First=info; /*新结点变为头结点*/x+=2; /*因为水平线,将光标下移两行*/gotoxy(1,8+x);i+; /*输入记录数加 1*/if(i%9=0)break; /*输入 9 个记录,换一页输入 */gotoxy(1,8+x);printf(“|-|-|-|“);/*输出结尾水平线 */ printf(“%-10s“,p-no); /*输出编号*/gotoxy(13,8+x);printf(“%-15s“,p-name); /*输出姓名*

13、/gotoxy(30,8+x);课程设计说明书 NO.8沈 阳 大 学printf(“%.2f“,p-jbgz); /*输出基本工资*/gotoxy(39,8+x);scanf(“%f“, /*输入扣款*/p-koukuan=temp; /*扣款字段赋值 */p-yfgz=p-jbgz-p-koukuan; /*计算应发工资= 基本工资-扣款*/gotoxy(50,8+x);printf(“%.2f“,p-yfgz); /*输出应发工资*/gotoxy(59,8+x);p-shuijin=(p-yfgz-1000)*fax(p-yfgz); /*否则按税率计算税金*/printf(“%.2f“

14、,p-shuijin); /*输出税金*/gotoxy(68,8+x);p-sfgz=p-yfgz-p-shuijin; /*计算实发工资*/printf(“%-8.2f“,p-sfgz); /*输出实发工资*/x+=2; /*行坐标下移两行*/i+; /*记录数加 1*/if(i%9=0)break; /*记录数超过 9 条,跳出内循环*/p=p-next; /*指针后移,处理下一条*/gotoxy(1,7+x);printf(“|-|-|-|-|-|-|-|n“); /*输出结束行*/printf(“Press any key congtinue.n“);getch();/*按姓名查找结点

15、*/void search()SALARY *p; /*移动指针 */课程设计说明书 NO.9沈 阳 大 学char s15; /*保存姓名*/clrscr(); /*清屏 */printf(“please enter name for searchn“); /*提示输入*/scanf(“%s“,s); /*输入要查找人的姓名*/p=First; /*移动指针从头指针开始*/while(strcmp(p-name,s) /*没找到,指针后移继续查找*/if(p=NULL) /*指针为空,说明没有找到*/printf(“nlist no %s SALARYn“,s); /*显示没找到信息*/el

16、seprintf(“nn“); /*换行*/print(p); /*查找成功,调用输出函数输出指针 p 所指记录 */*插入结点*/void insert()SALARY *p,*info; /* info 为新结点,p 为新结点的后继*/char s11; /*保存查找的姓名*/float temp; /*临时变量*/clrscr(); /*清屏 */printf(“please enter location before the non“); /*提示输入在哪个结点之前插入 */scanf(“%s“,s); /*输入指定结点的编号*/printf(“nplease new recordn“

17、); /*提示输入记录*/clrscr();/*清屏 */gotoxy(1,3); /*定位光标,按表格形式输入新结点信息*/printf(“*gongziguanli*“);课程设计说明书 NO.10沈 阳 大 学gotoxy(1,5);printf(“|-|“);gotoxy(1,6);printf(“| no | name | jbgz | “);gotoxy(1,7);printf(“|-|-|-|“);info=(SALARY *)malloc(sizeof(SALARY); /*申请空间 */if(!info)printf(“nout of memory“); /*如没有得到空间,

18、内存溢出*/exit(0); /*退出程序*/info-next=NULL; /*新结点的后继为空*/info-prior=NULL; /*新结点的前驱为空*/gotoxy(1,8);printf(“|“);gotoxy(12,8);printf(“|“);gotoxy(29,8);printf(“|“);gotoxy(38,8);printf(“|“);gotoxy(2,8);inputs(info-no,10); /*输入新结点的编号,并校验*/gotoxy(13,8);inputs(info-name,14); /*输入新结点的姓名,并校验*/gotoxy(30,8);scanf(“%f

19、“, /*输入基本工资*/info-jbgz=temp; /*给基本工资字段赋值*/info-koukuan=0; /*扣款初始为 0*/info-yfgz=0; /*应发工资初始为 0*/info-shuijin=0; /*税金初始为 0*/课程设计说明书 NO.11沈 阳 大 学info-sfgz=0; /*实发工资初始为 0*/printf(“|-|-|-|“);p=First; /*移动指针从头指针开始*/while(strcmp(p-no,s) /*指针后移,继续查找*/if(p=NULL) /*如 p 为空*/if(p=First) /*如 p 为头指针,说明链表为空 */Firs

20、t=info; /*新结点为头指针*/First-prior=NULL; /*头结点的前驱为空*/Last=First; /*唯一结点,尾指针等于头指针*/else /*新结点插在尾部*/Last-next=info;info-prior=Last;Last=info; /*尾指针指向新结点 */elseif(p=First) /*p 不为空,但 p 为头指针,新结点插在第一个结点位置*/info-prior=NULL; /*新结点的前驱为空*/info-next=p; /*新结点的后继为 p*/p-prior=info; /*p 的前驱是新结点*/First=info; /*修改头指针指向新

21、结点*/else /*新结点插入在中间某一个位置 p 之前*/课程设计说明书 NO.12沈 阳 大 学info-next=p; /*新结点的后继是 p*/info-prior= p-prior; /*新结点的前驱是 p 的前驱*/p-prior-next=info; /*p 的前驱的后继是新结点*/p-prior=info; /*p 的前驱是新结点*/printf(“nnn -have inserted %s SALARY-n“,info-name);printf(“n-Dont forget save-n“); /*提醒调用保存文件存盘*/*保存文件*/void save()FILE *fp

22、; /*定义指向文件的指针*/SALARY *p; /*定义移动指针 */char outfile10; /*保存输出文件名 */clrscr();/*清屏 */printf(“Enter outfile name,for example c:f1te.txt:n“);/*提示输入文件名格式信息*/scanf(“%s“,outfile);if(fp=fopen(outfile,“wb“)=NULL) /*为输出打开一个二进制文件*/printf(“can not open filen“);return; /*返回*/printf(“nSaving filen“);p=First; /*移动指针

23、从头指针开始*/while(p!=NULL) /*如 p 不为空*/fwrite(p,sizeof(SALARY),1,fp); /*写入一条记录*/p=p-next; /*指针后移,处理下一条记录*/课程设计说明书 NO.13沈 阳 大 学fclose(fp); /*关闭文件*/printf(“-save success!-n“);/*显示保存成功*/if(p1!=p0) /*判断最小结点是否是当前排序位置,不是则作指针修改*/p00-next=p0-next; /*将 p00 的后继指向 p0 的后继*/p0-next-prior=p00; /*p0 的后继的前驱为 p00*/p0-nex

24、t=p1; /*p0 的后继指向下个排序位置 p1*/p1-prior=p0; /*p1 的前驱为 p0*/if(i=1)First=p0; /*作头指针*/First-prior=NULL; /*头指针的前驱为空*/else /*不是第一个结点*/p11-next=p0; /*p11 的后继指向 p0*/p0-prior=p11; /*p0 的前驱指向 p11*/p11=p1=p0; /*因 p0 是排好序的最后一个结点,p1 是下一个将要排序的位置,所以将 p0 赋值给 p1和 p11*/i+; /*排好序的结点数加 1*/p1=p1-next; /*p1 后移指向下一个待排序位置*/pr

25、intf(“sort sucess!n“); /*输出排序成功*/课程设计说明书 NO.14沈 阳 大 学/*索引*/void index()SALARY *p,*q,*t,*h1; /*定义临时指针*/clrscr();/*清屏 */printf(“nn start index.nn“); /*显示开始索引*/h1=First-next; /*将原表的头指针所指的下一个结点作头指针*/First-next=NULL; /*第一个结点为新表的头结点*/Last=First; /*尾指针等于头指针*/while(h1!=NULL) /*当原表不为空时,进行排序*/t=h1; /*取原表的头结点*

26、/h1=h1-next; /*原表头结点指针后移*/p=First; /*设定移动指针 p,从头指针开始*/q=First; /*设定移动指针 q 做为 p 的前驱,初值为头指针*/while(strcmp(t-no,p-no)0 /*待排序点值大,应往后插,所以新表指针后移*/p=p-next;if(p=q) /*p=q,说明待排序点值小,应排在首位*/t-next=p; /*待排序点的后继为 p*/p-prior=t; /*p 的前驱结点指向待排序结点*/First=t; /*新头结点为待排序点*/First-prior=NULL; /*头指针的前驱为空*/else /*待排序点应插入在中

27、间某个位置 q 和 p 之间,如 p 为空则是尾部*/课程设计说明书 NO.15沈 阳 大 学t-next=p; /*t 的后继是 p*/t-prior=q; /*t 的前驱是 q*/q-next=t; /*q 的后继是 t*/if(p=NULL) /*判 p 是否为空*/Last=t; /*将 t 赋值为尾指针*/elsep-prior=t; /*否则将 t 赋值给 p 的前驱*/printf(“index sucess!n“);/*索引排序成功*/*分类合计*/void total()struct t1 /*定义结构体保存合计数据*/char u7; /*部门*/float s; /*合计

28、实发工资 */unit20; /*定义一个单位部门数不超过 20 个*/SALARY *p,*q; /*定义临时指针变量 */char sno7,qno7,*ptr; /*保存部门号*/float s1; /*保存合计值*/int i,j; /*控制变量*/p=First; /*从指针开始*/i=0; /*统计部门数 */clrscr();/*清屏 */while(p!=NULL) /*当 p 不为空时做下面的处理*/课程设计说明书 NO.16沈 阳 大 学memcpy(sno,p-no,6); /*从编号中取出部门号*/sno6=0; /*做字符串结束标记 */q=p-next; /*将指针

29、指向待比较的记录*/s1=p-sfgz; /*当前部门的实发工资初值作为该部门合计值的初值*/while(q!=NULL) /*内循环开始*/memcpy(qno,q-no,6); /*读部门号*/qno6=0; /*做字符串结束标记*/if(strcmp(qno,sno)=0) /*比较部门号*/s1+=q-sfgz; /*累加实发工资*/q=q-next; /*指针指向下一条记录*/elsebreak; /*不是一个部门的结束本次内循环 */strcpy(uniti.u,sno); /*将部门号写入部门结构体数组中*/uniti.s=s1; /*将实发工资写入部门结构体数组中*/i+; /

30、*部门数累加*/if(q=NULL) /*如果 q 为空,跳出循环*/break;elsep=q; /*否则,将 q 赋值给 p*/printf(“nn*Total table*n“);/*输出合计标题*/printf(“n-no-unit-total-n“); /*输出序号、部门、合计字段标题*/for(j=0;ji;j+)课程设计说明书 NO.17沈 阳 大 学printf(“ %d %s %10.2fn“,j,unitj.u,unitj.s); /*输出合计值*/printf(“-n“);3 设计结果与分析员工工资管理系统初始化界面,如图 1 所示。图 3 初始化界面选择 2 职工工资管

31、理界面,如图 4 所示。图 4 职工工资管理界面课程设计说明书 NO.18沈 阳 大 学选择 5 按名字查找工资信息,如图 5 所示。图 5 按名字查找个人收入选择 11 对个人工资信息的拷贝,如图 6 所示。图 6 工资信息拷贝选择 15 总工资清单,如图 7 所示。课程设计说明书 NO.19沈 阳 大 学图 7 总工资4.课程设计结论系统完整性:整个员工工资管理系统具备系统设计的科学合理性工资管理信息录入,修改,删除及员工工资的查询等功能符合公司对员工工资的管理要求,满足了相关人员对信息管理的要求,适用于复杂的资金人事管理,因而达到了设计任务的要求和目的.系统的可靠性:该系统可靠性高,能无

32、故障正常的工作,当出现异常情况是还采取了一些防止系统破坏的方法和措施.系统的效率:减轻了许多重复的繁琐的劳动和手工计算量,抄写量,在对员工工资的管理和统计方面效率提高了不少.系统的工作质量:员工工资管理系统所提供数据的精确度,输出结果的易读性都能达到用户要求,使用方便,使工资管理工作变得轻松,有序而有效.并给员工提供工资信息转存功能,为员工的核对和打印提供了方便.系统的灵活性:系统的环境是不断变化的,因而该员工工资管理系统具有一定的扩充性,修改信息方便简易,能够、适应环境的变化.为人员的流动提供了方便的条件.该系统功能基本达到设计要,能够基本实现,初始化、输入、显示、单条显示、删除、查找、插入

33、、追加、保存、读入、计算工资、拷贝、排序、索引、分类统计等功能。5.参考文献1 王敬华,林 萍,陈 静. C 语言程序设计教程M. 北京:清华大学出版社,2005 10:1842 鲁沐浴. C 语言最新编程技巧 200 例M. 第三版 .北京: 电子工业出版社,1997 1:35-483 王士元. C 高级实用程序设计M. 第二版.北京 :清华大学出版社,1996 6:78-93课程设计说明书 NO.20沈 阳 大 学4 谭浩强. C 程序设计M. 第二版.北京:清华大学出版社,2005 7:95-1125 冼镜光 C 语言名题精选百则(技巧篇)M 北京:机械工业出版社,20057: 225-2546 苏小红, 陈惠鹏, 温东新,李秀坤 C 语言程序设计教程M北京:电子工业出版社,20041(3): 123-1337 黄保和,江弋 . C 语言程序设计M. 北京: 清华大学出版社, 2006.9: 3013058 李岚,李莉,金一宁. C 语言程序设计与上机指导M. 北京: 清华电子工业出版社, 2005.5:1982029 陈良银 ,游烘跃,李旭伟. C 语言程序设计(C99 版)M. 北京: 清华大学出版社, 2006,10: 27332410 黄明,梁旭 ,万洪莉. C 语言课程设计M. 电子工业出版社, 2006.6

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报