高校在职职工管理软件

上传人:aa****6 文档编号:39225278 上传时间:2018-05-13 格式:DOC 页数:21 大小:94KB
返回 下载 相关 举报
高校在职职工管理软件_第1页
第1页 / 共21页
高校在职职工管理软件_第2页
第2页 / 共21页
高校在职职工管理软件_第3页
第3页 / 共21页
高校在职职工管理软件_第4页
第4页 / 共21页
高校在职职工管理软件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《高校在职职工管理软件》由会员分享,可在线阅读,更多相关《高校在职职工管理软件(21页珍藏版)》请在金锄头文库上搜索。

1、高校在职职工管理软件高校在职职工管理软件一、高校在职职工功能要求一、高校在职职工功能要求: 实验内容:编写一个高校在职职工信息管理软件,主要用来管理职 工信息,具体如下: 高校在职职工简单管理软件设计:采用结构体数组或文件形式存 储职工的信息,每个职工应包含如下几方面的信息:职工号、姓名、 性别、所属二级单位、所学专业、职称、月工资,电话号码。软件 由主函数(含欢迎界面)下列 6 个功能模块组成: (1)减少一个职工号(需输入要删除的职工的职工号) ; (2)增加一个职工号(需输入要增加职工号的所有信息) ; (3)查找一个职工号的信息(需指定职工号或电话号码) ; (4)统计指定二级单位的职

2、工人数、工资总额; (5)按职工的工资对职工排序; (6)退出程序的运行;二、系统总体设计(二、系统总体设计(1010)(1)对软件功能的总体分析与构思: 1、预处理,定义一个结构体用来表示每个职工的所有信息,定义增 加职工、删除职工、查找职工信息、统计二级单位在职职工人数和 工资总额、对职工的工资排序、和需用到的所有函数。 2、进入欢迎界面。 3、根据提示,选择某一种功能。 4、根据提示输入的一个字数,进入相应的功能。 5、对于输入的字母编辑函数,如增加职工、删除职工、查找职工信 息、职工的工资排序、统计二级单位在职职工人数和工资总额功能 的函数。 6、在增加职工函数中,先判断是不是要增加一

3、个职工,是的话,开 始增加,输入职工号、姓名、性别、所属二级单位、所学专业、职 称、月工资,电话号码,其中职工号、二级单位、工资手机号码不 能为空或者空格,并在职工人数中加 1。退出增加函数时显示表中 所有职工的信息。 7、在减少职工函数中,先判断职工表是不是为空,是的话则退出; 不是则输入职工号后判断是不是有这个职工,没有则显示没有这个 职工,有则显示是否要删除,选择删除后把此职工信息删除并且职 工人数减 1,然后输出表中剩下职工的信息。28、在查找职工信息函数中,先判断此表是不是空表,是的话则显示 空表,不是则显示查找职工的方式,按照输入的方式查找,找不到 显示没有这个职工,找到则显示此职

4、工信息。 9、在职工的工资排序函数中,先判断此表是不是空表,是的话则显 示空表,不是则显示排序的方式,按照输入的方式进行排序并显示 排序后的结果。 10、在统计二级单位在职职工人数和工资总额函数中,先判断此表 是不是空表,是的话则显示空表,不是则输入指定的二级单位并输 入该二级单位在职职工人数和工资总额。 11 、退出系统。(2 2)系统模块结构图)系统模块结构图主菜单增加功能删除功能查询功能排序功能统计功能退出功能降序 排序升序 排序欢迎界面按电话 查询按职工 号查询统计单 位人数指定职 工号统计 总工资三、系统详细设计思想(三、系统详细设计思想(2020)(1 1)系统文件及函数组成、功能

5、:)系统文件及函数组成、功能:3源文件函数名或其他成分功能 main总控函数 menu_select菜单栏选择 handle_menu处理菜单worker.cquit退出软件 show输出信息名称add.c add在表中增加职工信息 del.cdel删除指定的记录 findwrk查询是否有该职工findinfo.c findinfo查询职工信息 total.ctotal统计指定的二级单位的职工人数和 职工工资总额 copy复制记录sort.c sort根据职工工资对职工排序 结构体申明高校在职职工的信息结构体 库函数及函数源申 明引用库函数及函数worker.h外部变量定义定义需要用到的外部变

6、量 (2 2)函数的描述)函数的描述 1.头文件: 文件名称:worker.h 功能:申明函数原型、库函数和结构体。 要求:报告是否能正常运用结构体数组执行各种操作和记录职工人 数。 2.主函数: 函数原型:void main() 功能:控制整个程序的运行。 返回值:void 要求:控制整个软件和管理整个菜单栏,并完成初始化。 3.菜单选择函数 函数原型:int menu_select() 功能:接收用户输入选择的代号。 返回值:int 工作方式:返回输入对应功能的代号的整数值。 要求:只允许选择规定键,如果输入不合要求,则提醒用户重新输 入(只允许输入对应的数字,其他的均判断出错,包括输入空

7、格和4空) 。 4.菜单处理函数 函数原型:void handle_menu() 功能:处理输入的菜单选择命令 返回值:void。 工作方式:根据命令,调用相应函数。 要求:给出结束信息。 5.增加信息函数 函数原型:void add() 功能:增加一个职工信息的记录。 返回值:void。 工作方式:从尾部开始逐个追加记录(职工号、二级单位、工资手 机号码不能为空或者空格) 。 要求:将新纪录追加到记录尾部,并对记录进行计数。 6.输出表头函数 函数原型:void show () 功能:输出信息名称。 返回值:void。 工作方式:输出一行表头信息。 要求:输出一行表头信息。 7.删除记录函数

8、 函数原型:void del(void) 功能:删除结构体数组中指定的记录。 返回值:void。 工作方式:根据用户输入的职工号(输入不能为空或者空格,否则 重新输入) ,在屏幕上显示出查询到的符合条件职工的信息并删除, 或给出相关信息错误信息。 要求:将后面的记录前移,同时改变名次并给出相关信息。 8.查找指定记录函数 函数原型:int find (char*,int int ) 功能:查找指定的记录。 参数:char *input:欲查找记录的某一项与 input 相同。int inputType:表明通过哪一项来查找,0 为职工号,1 为职 工的手机号码。int from:从第 from

9、 个记录开始查找。 返回值:int (找到的记录的序号),若找不到则返回-1。 工作方式:根据给定的关键字,查找符合记录的序号。 要求:找不到则返回-1。59.查询指定职工信息函数 函数原型:void findinfo() 功能:将存储在结构体数组里面的符合查找条件的职工信息显示出 来。 返回值:void。 工作方式:根据用户输入的选择查询方式去查找记录(输入不能为 空或者空格,否则重新输入)在屏幕上显示出查询到的职工 的信息,或给出相关信息错误信息。 要求:可以按照职工号或职工的手机号码查询信息并输出。 10.记录复制函数 函数原型:void copy (WkrsInfo*, WkrsInf

10、o*)。 功能:将 str 指向的一条记录复制给 dest 指向的记录。 参数:WkrsInfo* str 为源记录,WkrsInfo* dest 为目的记录。 返回值:void。 工作方式:将源纪录逐条复制到目的记录。 要求:正确复制字符串。 11.统计函数 函数原型:void total() 功能:统计指定二级单位职工人数和职工的工资总额。 返回值:void。 工作方式:根据用户输入的二级单位名称(输入不能为空或者空格, 否则重新输入) ,查找符和条件的记录的序号,并将符合条件 记录的职工工资加起来,同时统计职工的人数或给出相关信 息错误信息。 要求:能正确统计给定信息的职工人数和职工工资

11、总额,并输出职 工人数和职工工资总额。 12.排序函数 函数原型:void sort() 功能:根据职工工资多少对职工进行排序。 (升序和降序两种方式) 返回值:void。 工作方式:使用冒泡法,根据用户选择的排序方式调用 copy 函数对 职工工资进行降序或者升序排序,实现对职工的排序。 要求:正确实现对职工的排序,并给出相关信息。 13.结束程序运行函数和退出界面 函数原型:void quit() 功能:结束程序的运行。 返回值:void。 工作方式:当用户在选择菜单中选择该功能后退出程序的运行。 要求:能正确的退出程序的运行,并在屏幕上显示退出界面。 (3)本系统涉及的知识点: 结构体、

12、数组、循环(for,while,for while)、函数、分支、指针,对输入内容的判断等。6四、课程设计总结(四、课程设计总结(2525) 1、首先呢,我要批评一下我的程序。因为我的程序用的是数组,每 一次关闭执行窗口后,里面的所有信息就没了,并没有保存下来。 这在实际中运用的话很不方便,实用性不是很强。我想过用文件来 写,由于我对文件的知识不够,对我来说是个很大的挑战,权衡之 下我还是选择了数组,所以整个程序最大的缺点也是在这里。 2、在程序中,需要用户输入很多东西,比如职工的信息,是否要添 加删除,选择用户想要的方式等等,所以涉及到很多输入边界的判 断问题,我也试着对这些边界进行限制。例

13、如:在输入“Y” “N” , “1” “2”等数字时,若是输入空格、没有输入或者输入其他东西时, 显示输入错误并要求重新输入,但是只是表面上是这样子的。我在 尝试错误输入时,发现输入类似“Y1”这样的东西时和输入“Y”是 一样的效果,而对于这种错误,我至今还是没有解决。另外,因为 职工的职工号、二级单位、工资、手机号在其他地方作为选择条件 用到, 所以它们的输入也不能为空,但是这些数据应该都是数字串, 但是输入的是汉字或者字母,还是没有报错,这里我也不懂怎么修 改。 3、对于整个程序,我对显示的界面比较满意。当有比较重要的输出 时,我用很多“*”将输出围起来,大多数输出都能居中显示,突出 效果

14、,能够引起用户的重视! 4、在一些输出后面,我用了“_sleep(1000);” ,即交出线程占用 CPU 时间一秒钟,简单的说就是暂停 1 秒钟。从而使输出有了动态 的效果,跟我们平时使用的一些软件或者进入页面时有点相似,使 整个界面更加美观。 5、在这次实验中,让我认识到了自己哪里不足,特别是在函数调用 的参数类型这里,犯了很多的错误。很多细节,比如说循环问题, 输入边界判断,都引起了我的注意,但是我还是未能成功解决。文 件存储操作方面很多知识我都不懂,还得花时间好好学习,才能做 出更好的软件出来。最后,完成整个程序我很开心,因为这是第一 次,这么认真,这么仔细的写完代码,并且不断调试改错

15、。虽然在 这个过程中心情时起时落,但在最后完成时还是有些小小的骄傲! 五、结束语五、结束语 在此由衷感谢本班陈潇同学在本次实验中帮我解答了很多疑问, 感谢华农软件工程的张伟杰师兄给出的重要意见,以及网上无私 共享排序代码的未知人士以及谷歌。 参考文献: (刘振安,刘燕君,单继龙)C 程序设计课程设计(第 2 版),北京:机械工业出版社,2012.1.附程序清单:1.1.worker.c:worker.c: #include #include #include7#include #include #define SIZE 50 /数组初始化为 50 #define INCR_SIZE 50 /数

16、组每次增加的大小 typedef struct wrks char num10; /职工号 char name8; /姓名 char sex4; /性别 char dep12; /所属二级单位 char maj10; /专业 char jobname10; /职称 float salary; /工资 char phonenum11; /电话号码 WkrsInfo; extern int wkrnum; /职工人数 extern int arraySize; /存职工所有信息数组大小 extern WkrsInfo *Info; /记录每个职工的所有信息的指针数 组 void del(); /减少职工 void add(); /增加职工

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号