1、工资管理系统课程设计汇报 编写人: 同组组员、 (课程设计责任人) 、 完成日期: 、6、23 教导老师: 批阅日期: 分数: 1 功 能 描 述本程序关键数据结构是单链表,它由四大模块组成(以下图所表示):工资管理系统本程序关键数据结构是单链表,它由五大模块组成(以下图所表示):工资管理系统输入统计模块查询统计模块 更 新 记 录 模 块输出统计模块从键盘读入 按编号查询按姓名查询插入资料删除资料排序资料输出至屏幕工资管理系统功效模块图(1) 输入统计模块:输入统计模块关键完成数据存入单链表工作。在此工资管理系统中提供了从键盘读入。即从键盘一一输入职员信息(包含编号,姓名,性别,年纪,工资等
2、)而且读入过程会显示在屏幕上。(2) 查询统计模块:查询也提供了两种关键字方法,按编号和按姓名查询。该模块关键工作是在单链表中查找满足关键字职员信息,用户能够选择以中方法进行查询,假如找到返回该职员节点而且打印该职员工资信息,不然返回空指针NULL,并打印没有找到提醒。(3) 更新统计模块:更新数据包含对职员工资信息删除、插入、和排序(排序是对链表节点修改而不修改职员信息)。删除功效是根本删除掉某职员工资信息,也就是单链表删除操作,在删除某职员同时也要修改她所在部门信息;插入功效是增添以职员工资信息,采取是链表插入操作,在插入同时也修改她所在部门工资信息;排序功效用到是冒泡排序,能够根据工资实
3、发和应发升序排序。 (4) 输出统计模块:输出功效是将全部职员工资信息输出到屏幕中,输出在屏幕上为表格形式,方便读取方便。2 总 体 设 计2.1 功效模块设计 1. 主函数main()实施步骤本系统提供了5个选项供用户选择,先显示目录菜单,提醒用户输入选择。有效值为0到4,输入1则进入键盘输入职员信息功效模块,系统将会循环调用ADD()函数键盘添加职员信息。输入2进入查询统计模块,关键工作是在单链表中查找满足关键字职员信息。输入3进入更新统计模块:更新数据包含对职员工资信息删除、插入、和排序(排序是对链表节点修改而不修改职员信息)。输入4进入输出统计模块:输出功效是将全部职员工资信息输出到屏
4、幕中,输出在屏幕上为表格形式,方便读取方便。输入0退出本系统,操作结束。main()会循环显示主界面直到输入0。(以下图所表示) 否是开始进入主函数调用menu()菜单函数进入主界面进入switch函数输入06中一数值,选择对应操作输入是否为0?判定键值,调用对应函数,完成对应功效结束主控函数步骤图2.输入统计模块输入统计模块关键实现将数据存入单链表中,这部分操作较为简单。从键盘输入,键盘输入则是循环调用Add()函数一一提醒用户输入职员各项信息包含(姓名,编号,性别,年纪,工资等),也同时修改部门信息。这里字符串和数值输入分别采取了函数来实现,在函数中完成输入数据任务,并对数据进行条件判定,
5、直到满足条件判定为止,这么降低了代码反复和冗余,符合模块化程序设计特点。3.查询统计模块查询统计模块关键实现了在单链表中按职员姓名和编号查找满足相关条件职员统计。在查询函数Sq()中,调用了Query()函数,依据*name查询信息,结果保留于link指针数组中,避免找到姓名相同职员被覆盖。4.更新数据模块更新数据包含插入、删除、排序,前二项用ADU()函数控制,删除调用Del()函数删除满足要求职员信息,该操作需要遍历单链表,时间复杂度为O(n);插入是调用Add()函数 从键盘一一输入职员节点信息,然后插入到链表中时间复杂度为O(1);排序调用Sort()函数采取冒泡排序算法对链表排序,时
6、间复杂度为O(n*n)。5. 输出信息模块输出模块屏幕输出,屏幕输出为Display()函数根据TFORM2格式按表格输出全部链表中职员信息。文件输出是Save()函数将信息以TFORM3格式写入C盘data.txt中,以方便下次读取。3 数据结构体设计1、工资信息结构体typedef struct /-职员工资信息结构体; char gonghao100; /-工人工号; char name100; /-工人姓名; char bumen1000; /-工人部门; int phone100; /-工人基础工资; char addr100; /-工人特殊津贴;datatype;2、单链表node
7、结构体typedef struct node datatype data; struct node * next;listnode;4 程 序 实 现1、 源代码分析 程序预处理#include /-标准输入输出头文件 ; #include /-开辟空间头文件;#include /-字符串处理函数头文件;typedef struct /-职员工资信息结构体; char gonghao100; /-工人工号; char name100; /-工人姓名; char bumen1000; /-工人部门; int phone100; /-工人基础工资; char addr100; /-工人特殊津贴;d
8、atatype;typedef struct node datatype data; struct node * next;listnode;typedef listnode * linklist;linklist head; /-定义一全局变量 head 计链表头指针;listnode *p; /-定义一全局变量 p ;int count=0; /-定义一全局变量 count 统计工人总数;主函数main()void main() /主函数int hh,uu; while(1) system( color D); /-颜色调用; menu(); printf( :请输入你选择:n ); sc
9、anf(%d,&hh) switch(hh) case 1: system( color F); /-颜色调用; head=createlist(); system(pause);/-系统暂停调用; system(cls); break; case 2: system( color 2); /-颜色调用; printf( * 信息添加 *n); printf( * 工号 姓名 部门 基础工资 特殊津贴 *n); printf( *n); p=(listnode *)malloc(sizeof(listnode); scanf(%s%s%s%d%s,p-data.gonghao,p-data.n
10、ame,p-data.bumen,p-data.phone,p-data.addr); insertnode(head,p); count+=1; printf( 工人总数为 %d n,count); system(pause); /-系统暂停调用; system(cls); break; case 3: system( color 3); /-颜色调用; printf( * 信息查询 *n); p=listfind(head); if(p!=NULL) printf(工号 姓名 部门 基础工资 特殊津贴n); printf( -n); printf( %s %s %s %d %sn,p-da
11、ta.gonghao,p-data.name,p-data.bumen,*(p-data.phone),p-data.addr); printf( -n); else printf( 没有找到 ! n); system(pause); /-系统暂停调用; system(cls); break; case 4: system( color 6); /-颜色调用; delnode(head); system(pause); /-系统暂停调用; system(cls); break; case 5: system( color 8); /-颜色调用; sort_worker( head); prin
12、tf( 排序完成 !n); system(pause); /-系统暂停调用; system(cls); break; case 6: system( color A); /-颜色调用; printlist(head); system(pause); /-系统暂停调用; system(cls); break; default: system( color B); /-颜色调用; printf(t 对不起,请输入指定功效,谢谢!n); system(pause); /-系统暂停调用; system(cls); break; printf(n 是否退出,是-1,否-0 n);/-是否退出程序,进行判
13、定; scanf(%d,&uu); system(pause); /-系统暂停调用; system(cls); if(uu=1) xx(); system( color C); /-颜色调用; system(pause); /-系统暂停调用; system(cls); break; else ; 主菜单界面void menu() /-菜单函数; printf( n); printf( n); printf( n); printf( 工资管理系统 n); printf( n); printf( =n); printf( =1. 工资管理系统建立 =n); printf( =2. 新员 工 插入
14、=n); printf( =3. 职员 信息 查询 =n); printf( =4. 职员 信息 删除 =n); printf( =5. 职员 工资 排序 =n); printf( =6. 职员 信息 输出 =n); printf( =n);5 运 行 结 果1、主界面2、 工资管理系统建立 3、 新 员 工 插 入 4、 职员 信息 查询 5、职员 信息 删除6、职员 工资 排序 7、 职员 信息 输出 6设 计 小 结 1、人员分工 马晓红:输入函数、插入函数。 王 秀:排序函数、查找函数。 胡燕秀:删除函数、输出函数。 主函数、菜单函数、结束函数:马晓红、王 秀、胡燕秀。2、小结优点:(1)该程序没有错误、没有警告,结构严谨。 (2)该程序设计内容较全方面,操作方便。不足:(1)输入太多个信息时,屏幕不能一页一页显示。 (2)没有设计修改类函数,所以若想修改某职员信息只能优异行删除然后再重新插入,比较繁琐。