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

下载本文档

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

文档简介

1、C语言课程设计报告题 目 小型职工工资管理系统 专业班级 2016级通信工程本科1班 组 别 通信第二组 学生姓名 院 (系) 信息工程系 指导教师(职称) 完成时间 2017年5月31日 课程设计任务书题目 职工工资管理系统 班级 2016级通信工程本科1班 学号 201605070106 姓名 学号 201605070111 姓名 学号 201605070118 姓名 学号 201605070119 姓名 学号 201605070136 姓名 一、 主要内容:本课程设计结合本学期所学C语言知识,准备设计开发一个简单职工工资管理系统。工资管理系统是企业不可或缺的一部分,它利用计算机对员工工资

2、进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。设计开发这个系统需要用到单链表、文件读取操作、结构体、函数、指针等C语言知识。本课程设计准备通过Windows控制台应用程序实现职工工资管理系统的简单运行。利用所学知识,本着简单、易用的设计原则,本课程设计尽量实现良好、美观的“人机界面”,便于软件的操作使用。本次设计主要学习内容包括:(一)进一步学习并熟练掌握C语言语法和编程思想。(二)学习C语言提供的库函数,熟悉Visual C+ 6.0的开发工具。(三)学习C语言函数、链表、结构体、文件读取、指针等知识。(四)学习如何查阅他人的文档进行软件的设计与开发。二、基本要

3、求:(一)质量要求1.职工工资管理系统基本功能模块的设计应包括:显示主菜单功能、职工信息的录入、添加、删除、修改、查询、排序功能,退出系统。测试文件的读取与存储是否正常、测试评估界面是否合理,友好。2.对职工工资管理系统设计并进行调试、修复、完善、测试。3.定期主动向指导教师汇报任务进度,认真填写相关报告文档。4.按时完成各阶段工作,不突击,不抄袭。(二)进度要求1.明确课程设计任务,搜集资料:2017年2月28日3月14日。2.完成程序的设计与实现,撰写课程设计论文初稿:2017年3月15日5月15日。3.与指导教师沟通,完成课程设计论文定稿:2016年5月16日2017年5月28日。4.进

4、入课程设计论文审阅阶段,准备答辩:2017年5月29日6月9日。三、主要参考资料:1. 工资管理系统课程设计程序2. C语言程序设计规范及基础 3. 明解C语言 第3版,(日)柴田望洋著,人民邮电出版社4. C Primer Plus 第6版 中文版,姜佑 译,人民邮电出版社5. C程序设计 第四版,谭浩强著,清华大学出版社6. C和C+实物精选,徐波著,北京邮电出版社学 生 签 名: 指导教师签名: 年 月 日 目 录1 概述11.1 设计思想11.2 设计原则11.3 性能需求11.4 课程设计报告内容及分工情况21.4.1 课程设计报告内容21.4.2 课程设计分工情况22 总

5、体设计32.1 系统功能设计图32.2 主函数 main()32.3 程序流程图43 详细设计53.1 函数53.2 函数流程图104 运行结果与调试164.1 运行结果164.2 程序调试21结束语22附录251 概述1.1 设计思想1.系统分成几个相对独立的模块,但这些模块都进行集中式管理。2.分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。3.合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性 。 1.2 设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从

6、而满足用户的实际需要,在设计开发过程中遵循了如下原则:1.合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。2.实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。3.准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。4.易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。5.源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。1.3 性能需

7、求(1) 支持工资信息一次性多组导入(2) 非法操作能够提示错误并且知道安全行为方式(3) 信息查询时界面显示数量1.4 课程设计报告内容及分工情况1.4.1 课程设计报告内容1.系统功能模块结构图和程序流程图2.数据结构设计及用法说明3.程序结构(画功能模块图或流程图)4.各模块的功能5.实验结果(包括输入数据和输出结果)6.设计体会7.参考文献1.4.2 课程设计分工情况本组共有5人,具体分工情况如下:(1)学号:201605070106,姓名:司笑笑,具体负责功能模块结构图和程序流程图的设计;负责“排序”代码的编写及整体代码的整合;负责程序设计报告中函数详细设计。(2)学号:201605

8、070111,姓名: 代慧 ,负责“添加”、“录入”代码的编写;负责显示界面的优化、美化。(3)学号:201605070118,姓名:王春亚,负责“查询”代码的编写;程序的测试与调试;。(4)学号:201605070119,姓名:董子阳,负责“修改”代码的编写;具体负责实验结果的采集;程序设计报告书的校对;负责流程图的绘制。(5)学号:201605070136,姓名:马良智,负责“删除”代码的编写;具体负责程序设计报告书的排版与完善;相关文献的查找和参考。2 总体设计2.1 系统功能设计图系统功能设计是使整个系统能基本实现职工工资管理功能,能让公司的管理者利用计算机对员工工资进行统一管理,实现

9、工资管理系统的系统化、规范化和自动化,提高了工作效率。管理信息系统(MIS)主要的功能就是进行信息的收集、查询、存储,同时对这些信息进行维护的。 本系统共包括七大模块,分别是录入模块,添加模块,修改模块,删除模块,查询模块,排序模块,输出模块。系统功能模块设计如图2-1所示。 图2-1 小型职工工资管理系统功能模块结构图2.2 主函数 main() (1)函数的功能: 用于联系各个功能函数模块,以及退出程序时的退出画面提示。(2)函数的入口: 整个程序是从主函数开始的。(3)函数的出口: 当从main()的switch()开关结构中进入,即choise的值大于7时通过return退出main(

10、)函数,即:退出整个程序。(4)函数调用关系:该函数不被其它函数调用。2.3 程序流程图3 详细设计3.1 函数(1)功能函数mainMenu()函数的功能:显示主菜单 函数的入口:从main()进入,main()运行时进入该函数。函数调用关系:被主函数调用。函数的出口:当主菜单显示在屏幕上,结束该函数。(2)功能函数input (LinkList head)函数的功能:进入录入职工信息系统。 函数的入口:程序从main()的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先用inputMenu()显示录入菜单选项,然后选择选项进行录入职工信息。函数调用

11、关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。函数的出口:录入职工信息完成后,结束该函数而并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(3)功能函数inputMenu ()函数的功能:显示录入菜单。 函数的入口:从input(LinkList head)进入,input(LinkList head)被调用时进入该函数。函数调用关系:被input(LinkList head)调用,并在文中无返回值的空值void函数

12、。函数的出口:当录入菜单显示在屏幕上,结束该函数。(4)功能函数hand (LinkList head)函数的功能:进入“手动录入职工信息”。 函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先输入录入职工人数,然后逐个录入职工信息。函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。函数的出口:录入全部职工信息完成后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关

13、函数,继续执行while循环结构。(5)功能函数read(LinkList head)函数的功能:进入“文件录入职工信息”。函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为2时,开始进入该函数,进入函数后,输入需要录入的文件路径fileName,通过fopen()函数,即“if(fq=fopen(fileName,"r")=NULL)” 打开文件,进入数据的处理。函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。函数的出口:自动录

14、入文件中全部职工信息后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(6)功能函数output (LinkList head)函数的功能:输出职工信息。函数的入口:程序在录入、添加、修改、删除、查询、排序后都进入该函数,进入函数后,将职工信息用printf()标准输出到屏幕上,然后通过fopen()函数,即“if(fp=fopen("d:worker.dat", "w") = NULL)” 打开文件,将职工信息写到d:worker.dat文件中。函数调用关系:被mai

15、n()等多个调用。在文中无返回值的空值void函数。函数的出口:将职工信息用printf()标准输出到屏幕上,将职工信息存入磁盘后,结束该函数。(7)功能函数add(LinkList head)函数的功能:添加一个职工信息。函数的入口:从main()的switch()开关结构中进入,即choice的值为2的时侯,进入该函数,根据提示输入职工信息。函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1添加成功。函数的出口:职工信息添加成功返回1后结束该函数, 并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职

16、工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(8)功能函数deleteWorker (LinkList head)函数的功能:删除 一个职工信息。函数的入口:从main()的switch()开关结构中进入,即choice的值为3的时侯,进入该函数,输入要删除的职工编号,删除改编号职工信息。函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1删除成功。函数的出口:职工信息删除成功返回1后结束该函数, 并执行主函数main()中“output(head);”,输出剩余的职工信息在屏幕上,然后

17、执行“break;”跳出switch()开关函数,继续执行while循环结构。(9)功能函数update(LinkList head)函数的功能:修改一个职工信息。函数的入口:从main()的switch()开关结构中进入,即choice的值为4的时侯,进入该函数,输入要修改的职工编号,根据提示输入新的职工信息。函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1修改成功。函数的出口:职工信息修改成功返回1后结束该函数, 并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“brea

18、k;”跳出switch()开关函数,继续执行while循环结构。(10)功能函数find (LinkList head)函数的功能:进入查询职工信息系统函数的入口:程序从main()的switch()开关结构中进入,即choice的值为5时,开始进入该函数,进入函数后,首先用findMenu()显示查询菜单选项,然后选择选项进行查询职工信息。函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。函数的出口:查询职工信息完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(11)功

19、能函数findMenu()函数的功能:显示查询菜单。 函数的入口:从find (LinkList head)进入,find (LinkList head)被调用时进入该函数。函数调用关系:被find (LinkList head)调用,并在文中无返回值的空值void函数。函数的出口:当查询菜单显示在屏幕上,结束该函数。(12)功能函数findByWay(LinkList head, int n)函数的功能:查询职工信息”。 函数的入口:程序从find(LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同

20、的选项值进行相应的查询。函数调用关系:被find(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1查询成功。函数的出口:查询职工信息完成后,执行“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行find(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(13)功能函数sort (LinkList head)函数的功能:进入职工信息排序系统函数的入口:程序从main()的switch()开关结构中进入,即choice的值为6时,开

21、始进入该函数,进入函数后,首先用sortMenu()显示排序菜单选项,然后选择选项进行职工信息排序。函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。函数的出口:职工信息排序完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(14)功能函数sortMenu()函数的功能:显示排序菜单。 函数的入口:从sort(LinkList head)进入,sort(LinkList head)被调用时进入该函数。函数调用关系:被sort (LinkList head)调用,并在文中无返

22、回值的空值void函数。函数的出口:当排序菜单显示在屏幕上,结束该函数。(15)功能函数sortByWay(LinkList head, int n)函数的功能:职工信息排序。 函数的入口:程序从sort (LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同的选项值进行相应的排序。函数调用关系:被sort(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1排序成功。函数的出口:职工信息排序完成后,执行“output(head);”,输出职

23、工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行sort(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(16)功能函数uqnum(LinkList head, int num)函数的功能:判断职工编号是否已存在。 函数的入口:程序add (LinkList head)中进入, 输入职工编号后,开始进入该函数,进入函数后,判断输入的职工编号是否已经存在。函数调用关系:被add(LinkList head)调用。在文中有返回值的的整型int函数,返回值为1职工编号已存在。函数的出口:判断职工编号是否已存在后返回add(LinkL

24、ist head),继续输入其它职工信息或重新输入职工编号。功能实现效果如图3-1所示。图3-1 主菜单界面3.2 函数流程图(1) 录入职工信息该功能模块流程如图3-2所示。图3-2 “录入职工信息”功能模块流程图(2)添加职工信息该功能模块流程如图3-3所示。图3-3 “添加职工信息”功能模块流程图(3)删除职工信息该功能模块流程如图3-4所示。图3-4“删除职工信息”功能模块流程图(4)修改职工信息该功能模块流程如图3-5所示。图3-5“修改职工信息”功能模块流程图(5)查询职工信息该功能模块流程如图3-6所示。图3-6“查询职工信息”功能模块流程图(6)排序职工信息该功能模块流程如图3

25、-7所示。图3-7“排序职工信息”功能模块流程图4 运行结果与调试4.1 运行结果本系统运行初始页面如图4-1所示。图4-1 初始页面在函数开始时,初始化临时结构体数组,让结构体内所有信息为空.,读取目标文件,然后运行功能函数,选择需要的功能。实现效果如图4-2所示。图4-2 输入界面(1)根据自己需要的功能输入相应数字图4-3职工信息的录入 图4-4职工信息的添加图4-5职工信息的删除 4-6职工信息的修改 图4-7职工信息的查询 图4-8职工信息的排序 图4-9退出系统 (2)录入职工的信息,通过手动录入和文件录入两个方法录入职工的信息。图4-10职工信息录入的方式(3)查找职工的个人信息

26、,通过输入编号、姓名、部门、基本工资、奖金和总工资进行查找。图4-11职工信息的查询方式(4)职工信息的排序可以通过编号排序、姓名排序、部门排序、基本工资排序、奖金排序和总工资排序。 图4-12职工信息的排序方式(5)每次将职工信息输出在屏幕上时,都会通过fwrite写到文件D:woker.date中。(6)根据数字提示结束程序。4.2 程序调试(1)每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过同学的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:有些函数会出现错误;经过多次调试和修改,才发现把“system(“cls

27、”);”放在调用的函数之前以及适当的位置可以解决此问题。(2)修改员工信息时,输入职工编号查询出多条信息,修改错误!后来加入职工编号唯一判断的函数,让职工编号唯一不重复。(3)排序,开始交换指针指向,一直出现指针不存在导致乱码问题,后来修改为交换指针的数据域。(4)文件写入磁盘,用笔记本打开磁盘内的文件乱码,经查询资料了解写入磁盘的文件是二进制数据,不能通过笔记本打开,可重新把文件读入程序中,在程序中显示。(5)忘导入<string.h>,导致strcmp不能用。(6)字符串输入输出要用%s。结束语工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足

28、的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件工资档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对工资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件。这一个月以来,在开发这个工资管理系统过

29、程中,我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学们进行交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。在这里要同学的帮助、老师的悉心指导下基本完成本次课程设计,基本达到了工资管理系统的要求。小组各成员心得体会Xxx:这个系统实现了对员工信息的存储、修改、删除、查询及排序。从拿到题目到完成整个编程,从理论到实践学到了很多东西。通过这次程序设计我深入了解了链表、结构体,也学会了文件的读写,懂得了理论和实际结合是很重要的。在设计过程中遇到了很多问题,这毕竟是第一次做,同时在设计过程中发现了自己的不足之处,对以前所学的知识理解的不够深刻,掌握的不够牢固,比如单链表。总之不收获很多!Xxx:通过这次课程设计,我对数据结构中单链表的应用有了更深的理解,并且深刻的认识了实践的重要性,只有理论与实践相结合才能很好的学习。发现想要做好课程设计,仅靠书本上的知识是不够的,还需要查阅其他的程序和知识。在这个过程中,我充分认识

温馨提示

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

评论

0/150

提交评论