1、设计题目:高校教师人事管理系统班 级:姓 名: 学 号:完成日期:11. 课程设计目的和要求 .21.1. 课程设计目的与要求 .21.2 课程设计任务内容 .22系统总体设计 .32.1 系统开发中涉及的主要知识点 .32.2 功能模块图 .32.3 数据结构设计 .42.4 功能模块设计 .421. 课程设计目的和要求1.1. 课程设计目的与要求建立教师的信息系统,进行信息的更改以及查询的相关功能。1.2 课程设计任务内容教师包含以下信息项:教师编号、姓名、性别、出生日期、参加工作时间、工资、学院、职称(助教、讲师、副教授、教授) 、学位(学士、硕士、博士) 。系统的主要功能包括:1. 创
2、建教师信息文件,根据提示输入教师的各项信息,按教师编号对教师信息进行排序,并将排序后的教师信息存储到一个二进制文件中。2. 增加教师信息,在原有教师信息文件的基础上增加新的教师信息,要求:增加后的教师信息仍按编号排序,并继续保存至文件。3. 删除教师信息,提示用户输入要进行删除操作的教师编号,如果在文件中有该信息存在,则将该编号所对应的教师信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。4. 修改教师信息,提示用户输入要进行修改操作的教师编号,如果在文件中有该息存在,则将提示用户输入该编号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。5. 按不同条件
3、对教师信息进行查询操作,输出满足条件的教师信息。(1) 按教师编号查询,输入一个编号,输出对应的教师信息。(2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。(3) 按学院查询,输入学院名称,输出该学院的全部教师的信息。(4) 按职称查询,输入职称名称,输出相应职称的教师信息。(5) 按参加工作时间查询,输入一个日期,输出在该日期以前参加工作的所有教师信息。6. 按不同条件对教师信息进行统计工作。(1) 统计 1980 年以后出生的教师的人数,及 80 后教师占教师总数的比例。(2) 统计各职称岗位的教师人数是多少,计算高级职称(包括副教授和教授)的比例。(3) 统计各学位的教师
4、人数是多少,计算拥有博士学位的教师占教师总数的比例。(4) 计算教师的平均工资,并输出。2系统总体设计2.1 系统开发中涉及的主要知识点 函数的定义与调用,指针变量做函数参数。 结构体数组的应用。 链表的应用。 字符串函数的应用。 文件的打开、关闭及读写操作。2.2 功能模块图高校教师人事管理系统的功能模块图如下:高校教师人事管理系统创建教师信息增加教师信息删除教师信息查询操作及统计修改教师信息按编号并计算学位人数按照教师编号排序将建立的信息存入 文件中增加信息按编号排序删除教师信息提示是否继续删除修改教师信息保存至文件按姓名并计算平均工资按学院按职称并统计人数按工作时间计算 80后42.3
5、数据结构设计 系统定义了一个结构体链表:struct stu_nodeint num;char name12;char sex10;int birth;int worktime;float wage;char college12;char zhicheng12;char degree12;struct stu_node *next; 一个宏定义: #define LEN sizeof(struct stu_node)2.4 功能模块设计 Main 函数的设计:输出系统的提示信息,并通过 switch 结构选择性要实现的功能。不足:不能直接通过文件读取信息。 建立链表并有序排列:struct s
6、tu_node *creat(void),首先建立链表,并将后续输入的链表以插入的形式存入链表中。 输出建立的有序链表:void list(struct stu_node * head) 将建立的链表存入到文件中:void cfile(struct stu_node * head),首先将链表中的数据存入到结构体数组中,将结构体数组通过 fwrite 函数写入到文件中。 增加新的教师信息函数:truct stu_node *insert(struct stu_node *head)。 删除教师信息:truct stu_node *del(struct stu_node *head)。 修改教师
7、信息:truct stu_node *rewrite(struct stu_node *head),先将链表中要修改的教师的信息删除,然后通过建立新的结点,重新输入教师的信息, 编号查询:5void bianhao(struct stu_node *head), 通过链表的遍历查找教师的信息 姓名查询:void xingming(struct stu_node *head),通过链表的遍历,查找姓名,并通过strstr函数进行姓氏的模糊查询。 学院查询:void xueyuan(struct stu_node *head) 职称查询:void zhicheng(struct stu_node
8、*head) 参加工作时间查询:void time(struct stu_node *head) 教师总人数:float renshu(struct stu_node *head),通过链表的遍历,增加变量的值,计算链表中结点的个数。 80后教师信息:void year(struct stu_node *head),教师的出生日期以int 的形式存储,所以计算80后教师的信息,即计算int 值在19800101到19891231之间的个数各职称人数:void zhichengshu(struct stu_node *head),通过strcmp函数匹配。 各学位的教师人数:void xueweishu(struct stu_node *head)。 计算平均工资:void averwage(struct stu_node *head)。