教师信息管理系统设计
建议用结构体数组存储,或动态分配量内存。
1) 系统以菜单方式工作
2) 录入人事档案信息:工号、姓名、性别、年龄、职务、职称、政治面貌、
最高学历、任职时间、人员类别。其中,人员编号唯一,不能重复。
3) 添加、删除功能:能根据学院人事的变动情况,添加删除记录。
4) 查询功能:能根据工号和姓名进行查询。
5) 编辑功能:根据查询对相应的记录进行修改。
6) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女
工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LED sizeof(WORKER)
typedef struct teacher {             //教师信息链表int code;                        //工号char name[20];                   //姓名char sex[10];                    //性别int age;                         //年龄char duty[20];                   //职务char job_title[20];              //职称char politics_status[20];        //政治面貌char qualification[20];          //最高学历int job_time;               //入职时间char category[20];               //人员类别struct teacher *next;
} WORKER;
int count = 0;                       //员工人数
void menu1() {                       //主菜单printf("欢迎使用教师信息管理系统!\n");printf("1-->录入教师信息\n");printf("2-->添加、删除信息\n");printf("3-->查询信息\n");printf("4-->编辑信息\n");printf("5-->统计信息\n");printf("6-->退出系统\n");
}
void menu2() {                        //编辑信息菜单printf("1-->工号\n");printf("2-->姓名\n");printf("3-->性别\n");printf("4-->年龄\n");printf("5-->职务\n");printf("6-->职称\n");printf("7-->政治面貌\n");printf("8-->最高学历\n");printf("9-->入职时间\n");printf("10-->人员类别\n");
}
void menu3() {printf("1-->统计在职人数\n");printf("2-->统计党员人数\n");printf("3-->统计女工人数\n");printf("4-->统计高学历高职称人数\n");
}
void menu4() {printf("1-->按照年龄排序输出\n");printf("2-->按照任职时间排序输出\n");
}
int judge_code(WORKER *head, int code) { //判断想要修改工号是否已经存在int result;WORKER *p;p = head;while (p->code != code && p->next != NULL)p = p->next;if (p->code == code)result = 0;elseresult = 1;return result;
}
int judge_name(WORKER *head, char *name) {  //判断此教师是否存在int result;WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0)result = 1;elseresult = 0;return result;
}
WORKER *create() {                           //创建链表WORKER *head, *p1, *p2;head = NULL;p2 = p1 = (WORKER *)malloc(LED);printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");scanf("%d%s%s%d%s%s%s%s%d%s",&p1->code,p1->name,p1->sex,&p1->age,p1->duty,p1->job_title,p1->politics_status,p1->qualification,&p1->job_time,p1->category);while (p1->code != 0) {count++;if (count == 1)head = p1;elsep2->next = p1;p2 = p1;p1 = (WORKER *)malloc(LED);scanf("%d", &p1->code);if (p1->code != 0) {scanf("%s%s%d%s%s%s%s%d%s",p1->name,p1->sex,&p1->age,p1->duty,p1->job_title,p1->politics_status,p1->qualification,&p1->job_time,p1->category);} elsebreak;}p2->next = NULL;return head;
}
WORKER *add(WORKER *head, WORKER *p1) {    //插入链表 信息WORKER *p, *p2;p = head;if (head == NULL) {head = p1;p1->next = NULL;} elsewhile (p1->code > p->code && p->next != NULL) {p2 = p;p = p->next;}if (p1->code <= p->code) {if (head == p)head = p1;elsep2->next = p1;p1->next = p;} else {p->next = p1;p1->next = NULL;}count++;return head;
}
WORKER *del(WORKER *head, int code) {          //删除链表信息WORKER *p1, *p2;p1 = head;while (p1->code != code && p1->next != NULL) {p2 = p1;p1 = p1->next;}if (p1->code == code) {if (head == p1)head = p1->next;elsep2->next = p1->next;count--;} elseprintf("不存在此教师信息!\n");return head;
}
WORKER * query_code(WORKER *head, int code) {  //根据查询链表信息WORKER *p1;p1 = head;while (p1->code != code && p1->next != NULL) {p1 = p1->next;}if (p1->code == code) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d%s%s%d%s%s%s%s%d%s\n",p1->code,p1->name,p1->sex,p1->age,p1->duty,p1->job_title,p1->politics_status,p1->qualification,p1->job_time,p1->category);printf("教师信息展示完毕!\n");} else {printf("无此教师信息!\n");}return head;
}
WORKER * query_name(WORKER *head, char *name) {    //根据名字查询链表信息WORKER *p1;p1 = head;while (strcmp(p1->name, name) != 0 && p1->next != NULL) {p1 = p1->next;}if (strcmp(p1->name, name) == 0) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d%s%s%d%s%s%s%s%d%s\n",p1->code,p1->name,p1->sex,p1->age,p1->duty,p1->job_title,p1->politics_status,p1->qualification,p1->job_time,p1->category);printf("教师信息展示完毕!\n");} else {printf("无此教师信息!\n");}return head;
}
WORKER *change_code(WORKER *head, char *name) { //修改工号WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新工号:");int new_code;scanf("%d", &new_code);if (judge_code(head, new_code)) {p->code = new_code;printf("修改成功!\n");} elseprintf("此工号已存在!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_name(WORKER *head, char *name) {  //修改名字WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新姓名:");char new_name[20];scanf("%s", new_name);strcpy(p->name, new_name);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_sex(WORKER *head, char *name) {   //修改性别WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新性别:");char new_sex[10];scanf("%s", new_sex);strcpy(p->sex, new_sex);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_age(WORKER *head, char *name) {   //修改年龄WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新年龄:");int new_age;scanf("%d", &new_age);p->age = new_age;printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_duty(WORKER *head, char *name) {   //修改职务WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新职务:");char new_duty[20];scanf("%s", new_duty);strcpy(p->duty, new_duty);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_job_title(WORKER *head, char *name) {   //修改职称WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新职称:");char new_job_title[20];scanf("%s", new_job_title);strcpy(p->job_title, new_job_title);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_politics_status(WORKER *head, char *name) {  //修改政治面貌WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新政治面貌:");char new_politics_status[20];scanf("%s", new_politics_status);strcpy(p->politics_status, new_politics_status);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_qualification(WORKER *head, char *name) {  //修改最高学历WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新的最高学历:");char new_qualification[20];scanf("%s", new_qualification);strcpy(p->qualification, new_qualification);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_job_time(WORKER *head, char *name) {    //修改入职时间WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新入职时间:");int job_time;scanf("%d", &job_time);p->job_time = job_time;printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change_category(WORKER *head, char *name) {  //修改人员类别WORKER *p;p = head;while (strcmp(p->name, name) != 0 && p->next != NULL)p = p->next;if (strcmp(p->name, name) == 0) {printf("请输入修改后的新人员类别:");char new_category[20];scanf("%s", new_category);strcpy(p->category, new_category);printf("修改成功!\n");} elseprintf("不存在此教师信息!\n");return head;
}
WORKER *change(WORKER *head) {             //编辑功能printf("请输入你要修改教师的姓名:");char name[20];scanf("%s", name);if (judge_name(head, name)) {menu2();printf("请输入你要修改信息的编号:");int choice;scanf("%d", &choice);if (choice >= 1 && choice <= 10)switch (choice) {case 1:head = change_code(head, name);break;case 2:head = change_name(head, name);break;case 3:head = change_sex(head, name);break;case 4:head = change_age(head, name);break;case 5:head = change_duty(head, name);break;case 6:head = change_job_title(head, name);break;case 7:head = change_politics_status(head, name);break;case 8:head = change_qualification(head, name);break;case 9:head = change_job_time(head, name);break;case 10:head = change_category(head, name);break;} elseprintf("输入操作编号错误!\n");} elseprintf("无此教师信息!\n");return head;
}
void statistic_working(WORKER *head) {   //统计在职员工WORKER *p = head;char category[20] = "在职员工";while (p != NULL) {if (strcmp(p->category, category) == 0) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d  %s  %s  %d  %s  %s  %s  %s  %d  %s\n",p->code,p->name,p->sex,p->age,p->duty,p->job_title,p->politics_status,p->qualification,p->job_time,p->category);}p = p->next;}
}
void statisitc_party(WORKER *head) {   //统计党员-WORKER *p = head;char politics_status[20] = "党员";while (p != NULL) {if (strcmp(p->politics_status, politics_status) == 0) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d  %s  %s  %d  %s  %s  %s  %s  %d  %s\n",p->code,p->name,p->sex,p->age,p->duty,p->job_title,p->politics_status,p->qualification,p->job_time,p->category);}p = p->next;}
}
void statistic_women(WORKER *head) {  //统计女工WORKER *p = head;char sex[10] = "女";while (p != NULL) {if (strcmp(p->sex, sex) == 0) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d  %s  %s  %d  %s  %s  %s  %s  %d  %s\n",p->code,p->name,p->sex,p->age,p->duty,p->job_title,p->politics_status,p->qualification,p->job_time,p->category);}p = p->next;}
}
void statistic_highqual(WORKER *head) {   //统计高学历WORKER *p = head;char qualification_1[20] = "硕士学位";char qualification_2[20] = "副教授";while (p != NULL) {if (strcmp(p->qualification, qualification_1) == 0 || strcmp(p->qualification, qualification_2) == 0) {printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");printf("%d  %s  %s  %d  %s  %s  %s  %s  %d  %s\n",p->code,p->name,p->sex,p->age,p->duty,p->job_title,p->politics_status,p->qualification,p->job_time,p->category);}p = p->next;}
}
void statistic(WORKER *head) {   //统计功能menu3();int choice;printf("请输入你的操作编号:");scanf("%d", &choice);if (choice >= 1 && choice <= 4)switch (choice) {case 1:statistic_working(head);break;case 2:statisitc_party(head);break;case 3:statistic_women(head);break;case 4:statistic_highqual(head);break;} elseprintf("输入操作编号错误!\n");
}
int main() {                           //主函数for (int i = 1; i; i++) {int choice;WORKER *head;menu1();printf("请输入你的操作编号:");scanf("%d", &choice);if (choice >= 1 && choice <= 5) {switch (choice) {case 1:head = create();printf("教师信息录入完毕\n");break;case 2:printf("1-->添加信息\n");printf("2-->删除信息\n");printf("请输入你的操作编号:");int n;scanf("%d", &n);if (n == 1 || n == 2)switch (n) {case 1:WORKER *p1;p1 = (WORKER *)malloc(LED);printf("请录入要添加的教师信息\n");printf("工号 姓名 性别 年龄 职务 职称 政治面貌 最高学历 入职时间 人员类别 \n");scanf("%d", &p1->code);scanf("%s%s%d%s%s%s%s%d%s",p1->name,p1->sex,&p1->age,p1->duty,p1->job_title,p1->politics_status,p1->qualification,&p1->job_time,p1->category);head = add(head, p1);printf("添加教师信息完毕!\n");break;case 2:int code;printf("请输入想要删除教师的编号:");scanf("%d", &code);head = del(head, code);printf("删除教师信息完毕!\n");break;} elseprintf("输入操作编号错误!\n");break;case 3:int choice;printf("1-->根据工号查询\n");printf("2-->根据姓名查询\n");printf("请输入你的操作编号:");scanf("%d", &choice);if (choice == 1 || choice == 2) {switch (choice) {case 1:int code;printf("请输入你想要查询教师的工号\n");scanf("%d", &code);head = query_code(head, code);break;case 2:char name[20];printf("请输入你要查询教师的姓名\n");scanf("%s", name);head = query_name(head, name);break;}} elseprintf("输入操作编号错误!\n");break;case 4:head = change(head);break;case 5:statistic(head);break;}} else if (choice < 1 || choice > 6)printf("输入操作编号错误!\n");elsebreak;}return 0;
}

用链表编写教师信息管理系统相关推荐

  1. 用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

    基于Java的教师信息管理系统的设计与实现论文 职场大变样社区():下载毕业设计成品 全套资料,全部50元以下 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的教师信息管理系统的 ...

  2. c语言课程设老师信息管理,学生和教师信息管理系统C语言课程设计

    学生和教师信息管理系统C语言课程设计 1目 录一.课题内容 -------------------2二.总体设计 -------------------51.系统要求 ---------------- ...

  3. 简单的教师信息管理系统

    前言 本文内容只适合C语言入门者参考 提示:以下是本篇文章正文内容,下面案例可供参考 一.系统具体内容 1.存储教师信息的数据结构----结构体(后续考虑会出单链表).2.相关操作的子函数:增删查改排 ...

  4. java编写管理系统_用java编写学生信息管理系统

    <用java编写学生信息管理系统>由会员分享,可在线阅读,更多相关<用java编写学生信息管理系统(7页珍藏版)>请在人人文库网上搜索. 1.用java编写学生信息管理系统im ...

  5. 【VB.NET】实验 编写个人信息管理系统

    实验要求--编写个人信息管理系统 基本需求功能如下: 个人基本信息管理 通讯录管理 电子日记本管理 电子小账簿管理 要求使用文件持久化存储数据. VB.NET编程实现 Imports System.I ...

  6. python成绩管理系统设计 gui csdn_用golang简单编写学生信息管理系统

    用golang简单编写学生信息管理系统 发布时间:2020-09-04 11:45:16编辑:三青(参考七米老师的视频)查看次数:187 student.gopackage main import & ...

  7. 一套简单的ASP.NET教师信息管理系统源码,免费分享

    ASP.NET教师信息管理系统源码(源码免费分享,需要源码学习请私信我) 学校教师管理系统主要功能:  1.信息管理: 教师信息管理,家庭成员信息管理,教育履历管理,工作经历管理,奖惩记录管理,职称评 ...

  8. 教师信息管理系统源码(Access数据库)源码分享!

    分享一套C# Winform 教师信息管理系统源码(Access数据库)源码编号:MF00701 需要源码学习可私信我获取. 源码描述: 学校教师管理系统主要功能:  1)信息管理: 教师信息管理,家 ...

  9. 教师信息管理系统(C++)源代码加论文

    我这里有教师信息管理系统(C++)源代码+论文一套 欢迎大家一起交流. 联系方式:QQ:382137632

  10. [优秀作品]教师信息管理系统

    教师信息管理系统 作者: 刘运 教师信息管理系统登陆页面 个人基本信息页面 个人论文科研信息页面 管理员管理界面 系统设计的目的和意义        教师信息管理系统是针对我们学校全体教师各项信息进行 ...

最新文章

  1. 什么是万词霸屏?做万词霸屏有效果么?
  2. 如何利用永洪自服务数据集,构建强大的数据处理能力?
  3. ffmpeg ffplay ffprobe使用说明
  4. Elasticsearch的Scroll操作
  5. 接口隔离原则——面向对象设计原则
  6. hadoop学习3 查找块的位置
  7. 01-Swift 介绍
  8. 利用ASP.NET向服务器上传文件[转]
  9. superset0.34源码级别汉化
  10. 32位单精度浮点乘法器的FPGA实现
  11. 华为mate20pro权限管理_华为钉子户--谈谈Mate20Pro
  12. Rickie的软件测试学习笔记-第四周
  13. 计算机游戏制作的要求,游戏设计美工需要什么样的电脑配置
  14. Schlumberger Drilling Office v4.0 1CD(综合钻井工程设计软件)
  15. dlibdotnet 人脸相似度源代码_HAAR与DLib的实时人脸检测之实现与对比
  16. 需要将录音转文字在线转换,应该如何完成
  17. C语言如何定义p1口,求助C51里如何实现P1口输入?置1了还没行哦。
  18. python把字典保存到文件_将Python字典保存到文件中,并定期更新它
  19. 008.环形链表 II-双指针
  20. ubuntu系统执行lunch时报错的处理方法

热门文章

  1. windows7下硬盘安装linux
  2. 分享6款国内、外开源PHP轻论坛CMS程序
  3. Oracle(7)——Oracle修改国家字符集
  4. 淘宝商城和淘宝网有什么区别
  5. Flash CS6 新功能
  6. 产品综合评价模型——基于商品评论建立的产品综合评价模型(2)
  7. 从WAVE头文件里获取压缩方式
  8. word转pdf转换器11.0注册码
  9. McAfee如何卸载?MacBook 如何卸载麦克菲
  10. 离合器膜片弹簧的优化设计matlab,基于matlab目标函数的建立优化离合器膜片弹簧的设计研究.doc...