工资管理系统毕业论文.doc

上传人:哈尼dd 文档编号:3980062 上传时间:2019-10-11 格式:DOC 页数:46 大小:293KB
返回 下载 相关 举报
工资管理系统毕业论文.doc_第1页
第1页 / 共46页
工资管理系统毕业论文.doc_第2页
第2页 / 共46页
工资管理系统毕业论文.doc_第3页
第3页 / 共46页
工资管理系统毕业论文.doc_第4页
第4页 / 共46页
工资管理系统毕业论文.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《工资管理系统毕业论文.doc》由会员分享,可在线阅读,更多相关《工资管理系统毕业论文.doc(46页珍藏版)》请在三一文库上搜索。

1、郑州科技学院郑州科技学院 C 语言课程设计 设计(论文)题目: 工资管理系统 所 在 院: 信息工程学院 专 业 班 级: 13 计算机科学与技术 2 班 学 生 姓 名: 吴刘洗 学 号: 201315033 指 导 教 师: 李瑞霞 2014 年 6 月 13 日 郑州科技学院 课程设计(论文)任务书课程设计(论文)任务书 设计题目:设计题目: 工资管理系统 专业班级:专业班级: 13 计算机科学与技术 2 班 学号学号 201315032 姓名姓名 吴刘洗 主要内容主要内容 设计工资管理系统,主要包含:主程序模块、.输入模块、插入模块、 修改模块、删除模块、查找模块、输出模块和保存模块。

2、 采用字符用户界面,通过菜单选择相应的操作,直观且操作简单。数 据的存储选用数据文件方式;编辑平台选用 Microsoft Visual C+ 6.0 。 所用到的知识点有:三种基本程序结构,数组,函数,指针,结构体,文 件操作和链表。 基本要求:基本要求: 员工工资信息包括:月份、工号、姓名、应发工资、各种折扣、实发 工资。 系统完成的功能有以下几个: 1 主菜单选项 2 创建工资档案 3 新增工资信息 4 修改工资信息 5 删除工资信息 6 查找工资信息 7 分类信息列表 8. 保存信息 9 退出 完成期限:完成期限: 2014 年 6 月 13 日 指导教师签名:指导教师签名: 评审小组

3、负责人签名:评审小组负责人签名: 摘摘 要要 随着企业管理信息化的发展,网络及计算机的引入使管理越 上了一个新的发展平台。企业的各项管理都将向信息化方向拓展, 工资的管理对于企业来说尤为重要,也正是基于这个原因,我把 课程设计的方向定在企业的工资管理上。 工资管理系统是一个企业不可缺少的部分,它的内容对于企 业的决策者和职工来说都是至关重要的,所以工资管理系统应该 能够为用户提供充足的信息和快捷的查询手段。但一直以来人们 使用传统人工的方式管理产品,这种管理方式存在着许多缺点, 如:效率低、工资透明性差等。另外,由于时间一长,将产生大 量的文件和数据,这对于查找和维护产品都带来不少困难。 作为

4、计算机应用的一部分,使用计算机对工资信息进行管理, 有着手工管理无法比拟的优点。例如:检索迅速、查找方便、可 靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能 够极大的提高工资管理的效率。 目 录 1 1 引言引言.1 1.1 开发背景.1 1.2 可行性分析.2 2 2 需求分析需求分析.4 2.1 设计要求.4 2.2 设计目的.4 2.3 功能实现.5 3 3 总体设计总体设计.6 3.1 设计思想.6 3.2 设计概念.8 3.2.1 工资管理系统的菜单设计概念8 3.2.2 编辑目录中的选项计算方法设计概念8 3.3 处理流程.9 3.4 总体结构9 3.5 功能分配10 3

5、.6 主要模块11 4 4 核心代码实现核心代码实现14 4.1 插入模块代码设计14 4.2 查询模块代码设计15 5 5 测试分析测试分析16 5.1 插入模块测试16 6 6 课程设计总结课程设计总结24 参考文献参考文献26 附录附录27 1 1 引言 工资管理系统是企业不可缺少的一部分,它利用计算机对员工工 资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为 企业提高工作效率。本程序旨在训练读者的基本编程能力,了解管理 信息系统的开发流程,熟悉 C 与言的文件和结构数组的各种基本操 作。 本程序中涉及结构体、数组、文件等方面的知识。 1.1 开发背景 如今是一个迅速发展的社

6、会,为了更为方便快捷统计和计算员工 的工资状况,我们为企业开发了一款工资管理系统。顺应企业的快速 发展流程。 借助现代信息技术和管理理论,建立企业管理信息系统使得当今 社会的重要趋势。全面开发和应用计算机管理信息系统就是近期不能 回避的问题。在企业管理中,人力资源是企业最宝贵的资源,也是企 业的“生命线” ,因此人事管理是企业的计算机管理系统重要组成部 分。而工资管理由市人力资源管理的重中之重,实行电子化的工资管 理,可以让人力资源人员从繁重琐碎的案头工作解脱出来,去完成更 重要的工作,工资管理信息系统的实现可以减轻比较繁琐的手工工资 管理。 随着我国经济建设突飞猛进,管理科学化与管理手段的现

7、代化已 经提到非常重要的地位。企、事业单位为了提高自身的管理水平和竞 争能力,纷纷投入人力物力,开发适合本单位需求的管理信息系统。 2 中小企业与行政事业单位建立的管理信息系统尤如雨后春笋,一个新 的开发和管理信息系统的热潮正在掀起, 为此我计划设计:工资管 理系统。它可以大大减少人力,使人们摆脱了原有系统的局限性,只 要在电脑上轻轻地点几下就可以完成查询、输入、修改、输出等功能。 非计算机专业的人员也可以熟练地进行操作。 现代社会发展迅速,市场竞争激烈,尤其是在通信行业中。在企 业管理制度中对企业支出费用进行统计分析,极约经营,才能良性发 展。 工资管理系统的统计功能可以实现对单位的工资支出

8、项目进 行详尽的统计分析,根据比较分析为企业领导提供职工收入的依据, 单位领导做出决策判断,有目的的向一些关键岗位和对企业发展贡献 大的岗位进行倾斜,调动职工的积极性,保持企业的良性发展。让职 工的工资收入和付出的劳动成正比,根据对企业的发展贡献大小与职 工的工资收入挂钩。根据工资管理系统的统计分析功能,比较年收入 为领导在决策未来市场发展方向中,提供具有较大参考价值的依据。 为公司的可持续性快速发展提供重要的价值。 1.2 可行性分析 随着计算机应用的日益普及和深化,网上办公已经成为一种趋势。 本项目要开发的是基于互联网的工资管理系统。由于公司人员多,每 天人工记录工资的工作量大,原来的人工

9、工作方式不仅会造成办理时 间的延误和人力资源的浪费,而且存在着各种信息不易存放、易丢失、 难以备份和查询等缺点。因此,实现一个工资管理功能和员工信息管 理系统集成起来的工资管理系统就显得十分必要,既可以节省资源, 又可以有效存储、更新、查询信息,提高工作和服务效率。 开发的 3 系统要求界面友好,方便直观。既要方便公司管理员对工资信息进行 添加、删除、修改、查询和统计等管理,又要方便公司员工随时查看 自己的工资信息的请假的信息,这样也能有效地督促员工尽量少请假。 本系统是一个基于互联网和 WINDOWS 操作的系统,现有技术 已较为成熟,利用现有技术完全可以实现系统开发目标。同时,开发 期限较

10、为紧迫,但预计可以在规定期限内能完成开发任务。 1.2.1 用户使用可行性 使用本系统的人员均有一定计算机应用基础,系统维护员由计算 机的专业人员担任,所有人员都要经过本系统的使用培训。经过简单 培训人员就会熟练使用本系统。 1.2.2 技术可行性 技术上的可行性分析要考虑现有技术条件能否顺利完成开发工作 及将来要采用的硬件和软件技术能否满足用户提出的要求(如计算机 的容量、速度等) 。 1.2.3 社会可行性 随着计算机的发展与普及,以及互联网技术的扩展,日常劳资人 事管理必将实现无纸化办公,并且加入到公司内部的 Intranet 或者 是 Internet 上去,实现数据的共享,这样有利于

11、劳资人事信息在单 位内部的查询,提高了数据资源的利用,并且能及时的得到更新,不 需要象过去那样浪费大量的人力物力去进行抄写,提高了工作的效率。 4 1.2.4 法律方面的可行性 所有软件都用正版,技术资料都由提出方保管,数据信息均可保 证合法来源。所以,在法律方面是可行的。 2 需求分析 本程序是专门为企业服务的,以供为企业提供便利,能够更方便、 更快捷的整理出职工工资信息情况,包括:月份、 工号、 姓名、 应发工资、各种折扣和 实发工资。其中各种折扣又包括:房租扣款, 公积金,水电费,其它扣款。 根据题目要求,由于工资信息是存放在文件中,所以应提供文件的 输入输出等操作;在程序中需要浏览工资

12、信息,应提供显示、查找、排 序等操作;另外还应提供键盘式选择彩旦实现功能选择。 2.1 设计要求 工资管理系统设计要求是,需要对员工的信息进行整理。既是: 工号,姓名。还要对员工的工资方面进行整理,既是:岗位工资,技 能工资,职务津贴,职龄津贴,交通补贴, ,业绩津贴。 (1)根据题目要求,应该把职工工资信息用结构体形式输入, 在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工 资信息送到文件中,所以应该提供一个结构体和 文件的输入输出等 操作; (2)在程序中需实现职工工资浏览、查询、统计等功能的操作, 所以需要建立相应的功能模块来实现; (3)另外还需要提供键盘式选择菜单实现功能

13、,在运行时达到 5 所要的目的。 2.2 设计目的 在这高速发展的社会,当然需要快捷的程序来解决我们司空见惯 的问题,为企业服务就是我们这次设计程序工资管理系统,为企业 提供更方便、快捷的服务。能准确快速的查询员工的工资收入状况, 并且透明度高,可以让员工一目了然知道自己工资状况,并且可以进 行修改和删除,当员工的信息情况不符合时。 1.熟悉 C 语言程序的编辑、编译链接和运行的过程。 2.熟练运用 if 语句和 switch 语句以及嵌套应用。 3.学习并掌握 C 语言定义函数的基本方法、声明函数及调用函数的方 法和过程。 4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、 写等

14、文件基本操作函数。 5.掌握结构体类型变量、数组的定义和使用。 6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储 字符串,进一步使用字符串。 2.3 功能实现 随着社会的发展,中小型企业在我国得到迅速发展,工资管理 系统对企业的 资金管理,起着越来越重要的作用。本程序就是为了 更好更快的管理职建立的工工资而。 它从标准输入设备(键盘)上 6 输入一批职工工资信息,计算总工资,并按工资降序排序,最后输出 到文件中,并将其显示到显示器上。 与利用单链表实现的学生成绩管理系统不同的是,此工资管理系 统 主要利用数组来实现,其数组元素是结构体类型。整个系统由如 下几大功能模块组成。 (1

15、) 输入记录模块。输入记录模块主要完成将数据存入数组中的 工作。在此工资 管理系统中,记录可以从以二进制形式存储的数据 文件中读入,也可以从键盘逐个输入记录。记录由职工的信息和工资 信息字段构成。当从数据文件中读入记录时,它就是以记录为单位存 储的数据文件中,将记录逐条复制到数组元素中。 (2) 查询记录模块。 查询模块记录主要完成在数组中查找满足 相关条件的记录。 在此工资管理系统中,用户可以按照职工编号或 姓名在数组中进行查找。若找到该记录,则以表格形式打印出此记录 的信息;否则,返回一个-1 的值,并打印出未找到该记录的提示信 息。 (3) 更新记录模块。 更新记录模块主要完成对记录的维

16、护。在 此工资管理系统 中,实现对记录的修改、删除、插入和排序操作。 一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据 文件。 (4) 统计记录模块。 统计记录模块主要完成对公司员工的工资 在各等级的人数 统计。 (5) 输出记录模块。 输出记录模块主要完成两个任务。第一, 7 它实现对记录的 存盘操作,即将数组中各元素中存储的记录信息写 入数据文件中。第二,它实现将数组中存储的记录信息以表格的形式 在屏幕上打印出来。 3 总体设计 3.1 设计思想 对于整个系统的设计思路是,首先,由员工输入用户信息,包括 编号、姓名和职务;然后,在计算某职工的当月工资时,系统先从已 输入的职工信

17、息文件中获取职工的工作类型,接着调用不同的处理程 序进行计算;最后将结果存档。 从用户需求中,可以发现 5 种类型 的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以 设计一个基类 employee(雇员) ,然后从中派生出 technician(技术 人员)类,salesman(销售人员)类、secretary(文秘)类。对于 技术经理和销售经理来说,他们都属于经理,所以设计时可以从 employee 类中派生出一个 manager(经理)类作为 techmanager(技 术经理)和 salesman(销售经理)类的父类。而经理类本身并不对 应实际的员工类型,由于技术经理有技术人

18、员和经理的双重特点,因 此 techmanager 类同时继承 technician 类和 manger 类;销售经理有 销售人员和经理的双重特点,因此 salesmanager 类同时继承 salesman 类和 manager 类。 根据用户需要 employee 类应该拥有的属性有:编号、姓名、职 务、月份和工资。Employee 类的服务可以包括 info() 、 search() 、 countSalary() 、recordInfo()和 recordSalary() 。其中, 8 info()函数用于接收用户输入的职工信息;search()函数用来根据职 工名查找职工信息;cou

19、ntSalary()函数为工资计算函数,但在基类 中为空,原因是各类人员的工资计算方法不同,无法在基类中统一定 义,必须在派生类中分别定义。recordInfo()函数和 recordSalary()函 数分别是职工信息和职工工资的记录函数,分别将信息存入文件 info.txt 和 salary.txt。 3.2 设计概念 在头文件中将所需包含的函要数进行输入,再进行变量定义, 如:定义数据结构,有关工资管理需要输入的基本信息再用指针的方 法将这些有关变量进行地址存储。再定义出工资管理整个程序中所需 要的函数原型;然后进行主函数的书写。 3.2.1 工资管理系统的菜单设计概念 在主函数中先设计

20、一个有关工资管理系统的菜单,此菜单可以完 成以下功能:调用菜单函数返回一个整数值、初始化、输入数据创建 双链表、显示所有数据、单条显示、计算实发工资、查找职工信息数 据、删除记录、插入记录、追加记录、保存文件、读取文件、复制文 件、按实发工资升序排序、计算所需票面数、按职工号索引、按部门 求合计、退出等 16 项功能。再对此程序进行输出时工作界面的处理, 如:记录所压键值、压任意键进入主菜单、设置文本颜色为黄色、设 置背景颜色为兰色、输出左上角边框、输出上边框水平线、输出右 上角边框、输出左右两边的垂直线等将输出模式进行点缀。之后进 入核心编辑: 9 3.2.2 编辑目录中的选项计算方法设计概

21、念 编辑目录中的选项计算方法,其中含有程序的初始化、输入数据 创建双链表、显示所有数据、单条显示、计算实发工资、查找职工信 息数据、删除记录、插入记录、追加记录、保存文件、读取文件、复 制文件、按实发工资升序排序、计算所需票面数、按职工号索引、按 部门求合计等子函数输出语句的编辑。 3.3 处理流程 主程序模块 3.4 总体结构 删 除 模 块 保 存 模 块 查 找 模 块 输 出 模 块 输 入 模 块 插 入 模 块 修 改 模 块 10 主菜单选项 创建工资档案 新增工资信息 退出 保存信息 修改工资信息 删除工资信息 查找工资信息 分类信息列表 11 3.5 功能分配 创建工资档案包

22、括:员工的工号、姓名、以及工资状况。新增工 资信息是对员工工资状况进行调整的功能。修改工资信息是对员工在 工作时有错误,为了计算员工所得而添加功能。删除工资信息是对一 些辞职、离职的员工因为长时间的储存会占取内存,没有多大用处可 以随时删除。查找工资信息是在储存信息的情况下,进行查找员工工 资信息。分类信息列表是针对员工各项工资的查询。保存信息是对员 工信息所有情况处理完毕的保存。一切就绪就可以退出了。 3.6 主要模块 3.6.1 员工信息录入 本模块对员工的信息进行整理输入,以便最后对各个员工详细查 找。 输入员 工信息 姓 名 工 号 12 3.6.2 月份录入 3.6.3 应发工资录入

23、 本模块是对员工工资发放的详细罗列,它包括:岗位工资、 技能工资、职务津贴、职龄津贴、交通补贴、业绩补贴。 应发工资 技 能 工 资 职 务 津 贴 岗 位 工 资 职 龄 津 贴 交 通 补 贴 业 绩 津 贴 13 3.6.4 各种折扣录入 本模块是对员工在公司享受的福利和待遇的折扣它包括:房租扣 款、公积金、水电费、其他扣款。 各种折扣 公 积 金 房 租 扣 款 水 电 费 3.6.5 实发工资录入 其 它 扣 款 14 4 核心代码实现 4.1 插入模块代码设计 本模块是对月份、员工工号、员工姓名、应发工资、各种折扣、实 发工资输入 #include #include #includ

24、e #include #include #define TITLE “n 月份 工号 姓名 应发工资各种折扣 实发工资n“ #define DATA “ %2d %4ld %-10s %6.1f %6.1f %6.1fn“,p1-month,p1- num,p1-name,p1-should_pay,p1-rebate,p1-actual_pay typedef struct pay long num; short month; char name20; float gw,jn,zw,zl,jt,yj; float should_pay; float fz,gj,sd,others; floa

25、t rebate; float actual_pay; struct pay *next; PAY; FILE *fp; PAY *p1=NULL,*p2=NULL,*head=NULL; void menu(); PAY *input(); void output(); void save(PAY *head); 15 PAY *open(); PAY *insert(); void search(); PAY *del(); 4.2 查询模块代码设计 本模块对输入、插入、修改、删除、查找、输出、保存模块进行录 入。 PAY *revise();/*主程序模块*/ void main(voi

26、d) short sel; do menu(); scanf(“%d“, switch(sel) case 1: head=input(); /输入模块 break; case 2: head=insert(); /插入模块 break; case 3: head=revise(); /修改模块 break; case 4: head=del(); /删除模块 break; case 5: search(); /查找模块 break; case 6: output(); /输出模块 16 break; case 7: save(head); /保存模块 break; 5 测试分析 17 5.1

27、 插入模块测试 如图 5.1 所示系统已进入主菜单页面,是对该程序功能总的罗列 以及说明 图 5.1 系统主菜单 如图 5.2 对职工信息以及工资状况进行编辑如:职工工号、姓名、 18 岗位工资、技能工资、职务津贴、职龄津贴、交通补贴、业绩津贴、 房租扣款、公积金、水电费、以及其他扣款。 图 5.2 职工信息及工资编辑 如图 5.3 对以上职工信息进行保存:通过以上操作此时即可点击 19 选项 7 对职工信息进行保存。 图 5.3 职工信息保存 20 如图 5.4 保存完毕,可以通过工号或姓名查找,尝试快速查找员 工信息。 图 4 查找职工信息 21 如图 5.5 可以通过“分类信息列表”查询

28、所有员工工资状况,根 据程序操作可以查找所有员工信息。 图 5.5 查询所有员工信息 22 如图 5.6、5.7、5.8 根据公司需要和员工信息的变动可以对员工 的信息进行修改、删除、添加。 图 6 修改员工工号或姓名 23 图 7 删除员工信息 图 8 添加员工信息 24 6 课程设计总结 通过这一个多星期的课程设计,我学到了很多很多。不仅是在知 识上,也表现在了各个方面。 首先,在设计的过程中,我发现我已 经遗忘了很多上星期学习过的 C 语言知识,也发现了原来学习中的不 少漏洞。有不少地方的树叶还是新的,那方面的知识自然还没有吃透。 比如结构体的定义已经不是很熟,字符串数组也不太能熟练运用

29、了, 还有就是指向数组和字符串的指针也不是很熟了。在编写项目程序的 过程中,我不断的发现自己的不足并努力提高,在原来的基础上对 C 语言有了更进一步的理解。 其次就是我发现学习不是一个人的事儿。 在与同学们的讨论中我常常会在一个函数的处理上出现新颖的点子, 比如最后那个让一段字符串晃来晃去的小功能就是我在和同学讨论在 主界面何时使用刷屏时的意外的收获。还有有时用 gets()会读入一 个空串。然后在它前面加个 getchar()来获取走这个空串也是同学无 心插柳的结果。当然这个后来被老师(fflush(stdin)清除输入缓冲 区函数)更好的方法所取代。再有就是我们编程不能光是一个或者几 个人

30、在那儿空想。比如说是张老师帮忙解决了我 gets()易读入空 串的问题,以及多文件同时编译的重复包含的问题。我程序中还有一 个实验性的功能(即播放事件对应的系统声音)就是在网上查找另外 一个问题的意外结果。还有有时想一个复杂的算法,迷茫了三四天只 想出了大致结构。最后决定上网找资料,不查不知道,一查大吃一惊, 不但自己的想法比比皆是,比自己的想法更完美更合理的多得看都看 不完。此时真是自愧不如,如早从网上借鉴,集大家之所成,加上自 己的修改完善,早已做出了更好的算法和系统了。现在才知道,一人 25 的智慧敌不过千万人智慧的集成,能借鉴的尽量借鉴,然后再修改完 善,增加自己所需的功能。完成设计后

31、,我觉得收获不少,而且这是 自己首次应用所学知识做出了这个职工工资管理系统,以前从未做过 这样大(这是对我而言,在专业人仕看来是小菜一碟)的程序,多少 心里有点甜美的感觉。 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上 的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我 很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象 的理论有了具体的认识。通过这次课程设计,我掌握了如何运用 C 语 言编写一个完整的软件,并且掌握了 C 语言的精髓。 我认为,在这学期的课程设计中不仅培养了独立思考、动手操作 的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上, 我们

32、学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。 要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对 于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变 苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰 苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要 面对的事情。 26 参考文献 1谭浩强:C 程序设计(第四版) 。北京:清华大学出版社,2010.6 2刘才:中学学生管理系统 吉林 吉林大学,2009.11.01 3周钦:学生管理系统的应用 沈阳 沈阳航空职业技术学院 福建电脑(期刊) 2010 4吴启武 刘勇 王俊峰 薛欣:C 语言课程

33、设计 案例精编 (第二版) 北 京:清华大学出版社,2011.6 27 附录 #include #include #include #include #include #define TITLE “n 月份 工号 姓名 应发工资各种折扣 实发工资n“ #define DATA “ %2d %4ld %-10s %6.1f %6.1f %6.1fn“,p1-month,p1- num,p1-name,p1-should_pay,p1-rebate,p1-actual_pay typedef struct pay long num; short month; char name20; float

34、gw,jn,zw,zl,jt,yj; float should_pay; float fz,gj,sd,others; float rebate; float actual_pay; struct pay *next; PAY; FILE *fp; PAY *p1=NULL,*p2=NULL,*head=NULL; void menu(); PAY *input(); void output(); void save(PAY *head); PAY *open(); PAY *insert(); void search(); PAY *del(); PAY *revise();/*主程序模块*

35、/ void main(void) 28 short sel; do menu(); scanf(“%d“, switch(sel) case 1: head=input(); /输入模块 break; case 2: head=insert(); /插入模块 break; case 3: head=revise(); /修改模块 break; case 4: head=del(); /删除模块 break; case 5: search(); /查找模块 break; case 6: output(); /输出模块 break; case 7: save(head); /保存模块 break

36、; case 0: break; while(sel!=0); /*菜单*/ void menu() 29 printf(“nnnnnnn“); printf(“tttt *主菜单选项*nn“); printf(“tttt1.创建工资档案n“); printf(“tttt2.新增工资信息n“); printf(“tttt3.修改工资信息n“); printf(“tttt4.删除工资信息n“); printf(“tttt5.查找工资信息n“); printf(“tttt6.分类信息列表n“); printf(“tttt7.保 存 信 息n“); printf(“tttt0.退 出n“); pri

37、ntf(“nnnnnnnn“); /*输入模块*/ PAY *input() short n=1; p1=(PAY*)malloc(sizeof(PAY); if(p1=NULL) printf(“内存不足无法创建链表!“); getch(); printf(“n 请输入第%d 位职工的信息(以工号为 0 结束):n“,n); printf(“ 工号:“); scanf(“%d“, if(p1-num=0) printf(“按任意键返回,“); getch(); free(p1); return 0; getchar(); printf(“ 姓名:“); 30 gets(p1-name); p

38、rintf(“ 工资月份:“); scanf(“%d“, printf(“ 岗位工资,技能工资,职务津贴,职龄津贴,交通补贴, ,业绩津 贴:n“); scanf(“%f,%f,%f,%f,%f,%f“, printf(“ 房租扣款,公积金,水电费,其它扣款:n“); scanf(“%f,%f,%f,%f“, p1-should_pay=p1-gw+p1-jn+p1-zw+p1-zl+p1-jt+p1-yj; p1-rebate=p1-fz+p1-gj+p1-sd+p1-others; p1-actual_pay=p1-should_pay-p1-rebate; while(p1!=NULL)

39、 if(n=1) head=p1; else p2-next=p1; n+; p2=p1; p1=(PAY*)malloc(sizeof(PAY); if(p1=NULL) printf(“内存不足,无法创建链表!“); getch(); printf(“请输入第%d 位职工的信息(以工号为 0 结束):n“,n); printf(“ 工号:“); scanf(“%d“, getchar(); if(p1-num=0) p1=NULL; break; 31 printf(“ 姓名:“); gets(p1-name); printf(“ 工资月份:“); scanf(“%d“, printf(“

40、 岗位工资,技能工资,职务津贴,职龄津贴,交通补贴,业绩 津贴:n“); scanf(“%f,%f,%f,%f,%f,%f“, printf(“ 房租扣款,公积金,水电费,其它扣款:n“); scanf(“%f,%f,%f,%f“, p1-should_pay=p1-gw+p1-jn+p1-zw+p1-zl+p1-jt+p1-yj; p1-rebate=p1-fz+p1-gj+p1-sd+p1-others; p1-actual_pay=p1-should_pay-p1-rebate; p2-next=NULL; /edit by Yan-Xingyu Class Network-021 pr

41、intf(“职工信息已输入,请按任意键返回,并存盘“); getch(); return head; /*输出模块*/ void output() short sel,flag,month; float min,max; do do printf(“nn 请选择您的列表方式:n“); printf(“tt1.全部清单n“); printf(“tt2.按月输出n“); printf(“tt3.按工资段输出n“); printf(“tt0.返回n“); scanf(“%d“, while(sel!=1 head=open(); 32 if(head=NULL) return; else switc

42、h(sel) case 1: printf(“nttt *全部清单*n“); printf(TITLE); p1=head; do printf(DATA); p1=p1-next; while(p1!=NULL); break; case 2: flag=0; printf(“输入要查的月份:“); scanf(“%d“, printf(“nttt*第%d 月工资清单*n“,month); printf(TITLE); p1=head; do if(p1-month=month) printf(DATA); p1=p1-next; flag=1; else p1=p1-next; while

43、(p1!=NULL); if(flag=0) 33 printf(“没有该月清单n“); break; case 3: flag=0; printf(“输入最低工资:“); scanf(“%f“, printf(“输入最高工资:“); scanf(“%f“, printf(“ntt *%5.1f 到%5.1f 工资的名单*n“,min,max); printf(TITLE); p1=head; do if(p1-actual_paymin flag=1; else p1=p1-next; while(p1!=NULL); if(flag=0) printf(“没有该工资段的职工n“); bre

44、ak; case 0: break; while(sel!=0); /*保存文件*/ void save(PAY *head) short write; fp=fopen(“pay.txt“,“w“); if(fp=NULL) 34 printf(“创建文件失败!“); getch(); return; p1=p2=head; while(p1!=NULL) write=fwrite(p1,sizeof(PAY),1,fp); if(!write) printf(“无法写入文件!“); getch(); return; p1=p1-next; fclose(fp); printf(“成功存盘!

45、“); getch(); /*打开文件*/ PAY *open() short n=1,read; fp=fopen(“pay.txt“,“r“); if(fp=NULL) printf(“无法打开档案文件!“); getch(); return NULL; if(p1=p2=(PAY*)malloc(sizeof(PAY)=NULL) printf(“内存不足!“); getch(); return NULL; 35 read=fread(p1,sizeof(PAY),1,fp); if(!read) printf(“文件读取出错!1“); getch(); return NULL; if(

46、p1-next=NULL) head=p1; else do if(n=1) head=p1; else p2-next=p1; n+; p2=p1; if(p1=(PAY*)malloc(sizeof(PAY)=NULL) printf(“内存不足!“); getch(); return NULL; read=fread(p1,sizeof(PAY),1,fp); if(!read) printf(“文件读取出错!2“); getch(); return NULL; while(p1-next!=NULL); p2-next=p1; 36 return head; fclose(fp); /

47、*插入模块*/ PAY *insert() PAY *p3=NULL; char sel; head=open(); if(head=NULL) return NULL; else do printf(“请输入要插入的职工信息:n“); p3=(PAY*)malloc(sizeof(PAY); if(p3=NULL) printf(“内存不足,无法创建链表!“); getch(); printf(“ 工号:“); scanf(“%d“, getchar(); printf(“ 姓名:“); gets(p3-name); scanf(“%d“, printf(“ 岗位工资,技能工资,职务津贴,职

48、龄津贴,交通补贴,业绩津 贴:n“); scanf(“%f,%f,%f,%f,%f,%f“, printf(“ 房租扣款,公积金,水电费,其它扣款:n“); scanf(“%f,%f,%f,%f“, p3-should_pay=p3-gw+p3-jn+p3-zw+p3-zl+p3-jt+p3-yj; p3-rebate=p3-fz+p3-gj+p3-sd+p3-others; p3-actual_pay=p3-should_pay-p3-rebate; p1=head; 37 while(p1!=NULL) p2=p1; p1=p1-next; p2-next=p3; p3-next=NULL; printf(“成功插入,是否继续?是(Y) 否(N)n“); sel=getch(); while(sel=Y|sel=y); printf(“n 任意键返回,并存盘n“); getch(); return head; /*查找模块*/ void search() short

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1