基于C语言技术设计并开发教师管理系统。
系统以菜单方式工作,包括系统主菜单,子菜单。主菜单为选择各子菜单,子菜单有教师管理模块、学院管理模块、教师实验管理模块、信息统计查询模块。
教师管理模块,包括教师信息录入,信息包括教师工号、所属学院、姓名、性别、年龄、任教课程,班级数目,实验课时;
学院管理模块,包括学院名称,学院负责人,学院地点;修改学院信息;查看所有学院信息。
教师实验管理模块,录入教师实验信息,包括教师工号,教师姓名,所属学院,实验名称,实验时间,实验地点;查询所有教师的实验信息;查询某个教师的实验信息,删除某个教师的实验信息,修改实验时间和地点。
信息统计查询模块,将所有教师按年龄排序;按照课时量排序;如果输入学院名称,统计该学院下教师的信息和人数。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void teacherMeau();
void informationMeau();
int num = 0;
int num1 = 0;
int num2 = 0;
//教师结构体
struct Teacher {
char id[10]; // 工号
char school [50]; // 所属学院
char Name[20]; // 姓名
char Sex[10]; // 性别
int Age; // 年龄
char Degree[20]; // 学历
char Title[20]; // 职称
char Course[10]; // 任教课程
int ClassNum; // 班级数目目
double theoryhours; // 理论课时
double labhours; // 实验课时
double classTime; // 课程总课时
float Workload;
int flag;
} tea[100];
//教师实验信息结构体
struct experiment {
char idnum[10]; // 工号
char location[50]; // 所属学院
char Tname[20]; // 老师姓名
char course[10]; // 课程
char expename[15]; // 实验名称
char time[11]; // 实验时间
char expeaddr[10]; // 实验地点
int flag;
} ex[100];
typedef struct academy {
char acaname[15]; // 学院名称
char acahead[10]; // 学院负责人
char acaaddr[20]; // 学院地址
struct academy *next;
} linklist;
void hello() { //开始
char ttt[] = { "欢迎访问教师信息管理系统!!!" };
int i;
printf("\n 时间:");
system("date/t");
// system ( "time/t " );
printf("\t ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n\n");
puts("\n");
puts("\t ┃ ┃");
puts("\t ┃ ┃");
printf(" ┃ ");
for (i = 0; ttt[i] != '\0'; i++) {
Sleep(100);
printf("%c", ttt[i]);
if (i == 1)
system ( " color 1" );
else if (i == 2)
system ( " color 2" );
else if (i == 3)
system ( " color 3" );
else if (i == 4)
system ( " color 4" );
else if (i == 5)
system ( " color 5" );
else if (i == 6)
system ( " color 6" );
else if (i == 7)
system ( " color 7" );
else if (i == 8)
system ( " color 8" );
else if (i == 9)
system ( " color 9" );
else if (i == 10)
system ( " color A" );
else if (i == 11)
system ( " color B" );
else if (i == 12)
system ( " color 3" );
else if (i == 13)
system ( " color 4" );
else if (i == 14)
system ( " color 6" );
else if (i == 15)
system ( " color 6" );
else if (i == 16)
system ( " color 7" );
else if (i == 17)
system ( " color 8" );
else if (i == 18)
system ( " color 2" );
else if (i == 19)
system ( " color 3" );
else if (i == 20)
system ( " color 4" );
else if (i == 21)
system ( " color 5" );
else if (i == 22)
system ( " color 4" );
}
// system ( " color 0 " );
system ( " color B0" );
printf(" ┃ \n");
puts("\t ┃ ┃");
puts("\t ┃ --------------- ┃");
puts("\t ┃ ┃");
puts("\t ┃ ┃ ");
puts("\n \n");
printf("\n\t 请按回车键进入系统……\n");
system ( " color 0 " );
getchar();
system("cls"); //清空屏幕
}
linklist *linkhead;
void initHead() {
linkhead = (linklist *)malloc(sizeof(linklist));
linkhead->next = NULL;
}
void inputCol() {
initHead();
int f = 1;
linklist *p = linkhead;
while (f) {
linklist *node = (linklist *)malloc(sizeof(linklist));
printf("输入学院名称:");
scanf("%s", node->acaname);
printf("输入学院负责人:");
scanf("%s", node->acahead);
printf("输入学院地址:");
scanf("%s", node->acaaddr);
p->next = node;
node->next = NULL;
p = node;
printf("继续录入请按1:结束录入请按0: ");
scanf("%d", &f);
}
printf("录入完成:\n");
p = linkhead->next;
while (p) {
printf("%-10s%-10s%-10s\n", "学院名称", "学院负责人", "地址");
printf("%-10s%-10s%-10s\n", p->acaname, p->acahead, p->acaaddr);
p = p->next;
}
}
linklist *Creatlinklist() {
linklist *p, *q, *linkhead;
FILE *fp;
linkhead = (linklist *)malloc(sizeof(linklist));
p = linkhead;
while (!feof(fp)) {
q = (linklist *)malloc(sizeof(linklist));
fscanf(fp, "%-20s\t%-20s\t%-20s\n", p->acaname, p->acahead, p->acaaddr);
p->next = q;
p = q;
}
q->next = NULL;
fclose(fp);
return linkhead;
}
void searchCol_ByName() {
char name[20];
printf("请输入查询的学院: ");
scanf("%s", name);
linklist *p = linkhead->next;
while (p) {
if (strcmp(p->acaname, name) == 0) {
printf("%-10s%-10s%-10s\n", "学院名称", "学院负责人", "地址");
printf("%-10s%-10s%-10s\n", p->acaname, p->acahead, p->acaaddr);
break;
}
}
}
void allCol() {
printf("\n打印所有学院的信息:\n");
linklist *p = linkhead->next;
p = linkhead->next;
printf("%-10s%-10s%-10s\n", "学院名称", "学院负责人", "地址");
while (p) {
printf("%-10s%-10s%-10s\n", p->acaname, p->acahead, p->acaaddr);
p = p->next;
}
}
void Input() {
printf("输入教师的信息:\n");
int i;
int flag = 1;
while (flag) {
printf("请输入工号:");
scanf("%s", tea[num].id);
printf("请输入学院:");
scanf("%s", tea[num].school );
printf("请输入姓名:");
scanf("%s", tea[num].Name);
printf("请输入性别:");
scanf("%s", tea[num].Sex);
printf("请输入年龄:");
scanf("%d", &tea[num].Age);
printf("请输入学历:");
scanf("%s", tea[num].Degree);
printf("请输入职称:");
scanf("%s", tea[num].Title);
printf("请输入课程:");
scanf("%s", tea[num].Course);
printf("请输入班级数目:");
scanf("%d", &tea[num].ClassNum);
printf("请输入理论课时:");
scanf("%lf", &tea[num].theoryhours);
printf("请输入实验课时:");
scanf("%lf", &tea[num].labhours);
tea[num].flag = 1;
if (tea[num].ClassNum == 2) {
tea[num].classTime = 1.2 * (tea[num].theoryhours + tea[num].labhours);
} else if (tea[num].ClassNum == 3) {
tea[num].classTime = 1.5 * (tea[num].theoryhours + tea[num].labhours);
} else {
tea[num].classTime = 2 * (tea[num].theoryhours + tea[num].labhours);
}
num++;
printf("输入1(继续录入)/0(结束录入): ");
scanf("%d", &flag);
}
}
void inPutEx() {
printf("输入教师实验的信息:\n");
int i;
int flag = 1;
while (flag) {
printf("请输入工号:");
scanf("%s", ex[num1].idnum);
printf("请输入学院:");
scanf("%s", ex[num1].location);
printf("请输入姓名:");
scanf("%s", ex[num1].Tname);
printf("请输入课程:");
scanf("%s", ex[num1].course);
printf("请输入实验名称:");
scanf("%s", ex[num1].expename);
printf("请输入实验时间:");
scanf("%s", ex[num1].time);
printf("请输入实验地点:");
scanf("%s", ex[num1].expeaddr);
ex[num1].flag = 1;
num1++;
printf("输入1(继续录入)/0(结束录入): ");
scanf("%d", &flag);
}
}
void outPutEx() {
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", "工号", "学院", "姓名", "课程", "名称", "时间", "地点");
int i;
for (i = 0; i < num1; i++) {
if (tea[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", ex[i].idnum, ex[i].location, ex[i].Tname, ex[i].course, ex[i].expename,
ex[i].time, ex[i].expeaddr);
}
}
}
void fileex() {
int i;
FILE *fp = fopen("experiment", "w+");
for (i = 0; i < num1; i++) {
if (ex[i].flag == 1) {
fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n", ex[i].idnum, ex[i].location, ex[i].Tname, ex[i].course, ex[i].expename,
ex[i].time, ex[i].expeaddr);
fclose(fp);
}
}
}
void deleteEx() {
char id[10];
printf("请输入要删除实验的老师工号:");
scanf("%s", id);
int i;
for (i = 0; i < num1; i++) {
if (strcmp(id, ex[i].idnum) == 0) {
ex[i].flag = 0;
printf("工号为%s的老师的实验信息已经删除", ex[i].idnum);
}
}
printf("删除后,实验信息更新:\n");
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", "工号", "学院", "姓名", "课程", "名称", "时间", "地点");
for (i = 0; i < num1; i++) {
if (ex[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", ex[i].idnum, ex[i].location, ex[i].Tname, ex[i].course, ex[i].expename,
ex[i].time, ex[i].expeaddr);
}
}
}
void modifyEx() {
char id[10];
printf("请输入要修改实验的老师工号:");
scanf("%s", id);
int i;
for (i = 0; i < num1; i++) {
if (strcmp(id, ex[i].idnum) == 0) {
char time[11];
char expeaddr[10];
printf("输入地点:");
scanf("%s", expeaddr);
printf("输入时间:");
scanf("%s", time);
strcpy(ex[i].time, time);
strcpy(ex[i].expeaddr, expeaddr);
}
}
printf("修改后,实验信息更新:\n");
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", "工号", "学院", "姓名", "课程", "名称", "时间", "地点");
for (i = 0; i < num1; i++) {
if (ex[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-14s%-14s%-14s\n", ex[i].idnum, ex[i].location, ex[i].Tname, ex[i].course, ex[i].expename,
ex[i].time, ex[i].expeaddr);
}
}
}
void outPut() {
int i;
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n", "工号", "学院", "姓名", "性别", "年龄", "学历", "职称",
"课程", "班级数目", "理论课时", "实验课时", "课程总课时");
for (i = 0; i < num; i++) {
if (tea[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-8d%-8s%-8s%-8s%-8.2d%8.2lf%8.2lf%8.2lf\n", tea[i].id, tea[i].school, tea[i].Name,
tea[i].Sex,
tea[i].Age, tea[i].Degree, tea[i].Title, tea[i].Course, tea[i].ClassNum, tea[i].theoryhours, tea[i].labhours,
tea[i].classTime);
}
}
}
void file() {
int i;
FILE *fp = fopen("teacher", "w+");
for (i = 0; i < num; i++) {
if (tea[i].flag == 1) {
fprintf(fp, "%-8s%-8s%-8s%-8s%-8d%-8s%-8s%-8s%-8.2d%8.2lf%8.2lf%8.2lf\n", tea[i].id, tea[i].school, tea[i].Name,
tea[i].Sex,
tea[i].Age, tea[i].Degree, tea[i].Title, tea[i].Course, tea[i].ClassNum, tea[i].theoryhours, tea[i].labhours,
tea[i].classTime);
// 把tea[i]的数据存入文件中
}
}
fclose(fp);
}
void deleteTea() {
char id[10];
printf("请输入要删除的老师工号:");
scanf("%s", id);
int i;
for (i = 0; i < num; i++) {
if (strcmp(id, tea[i].id) == 0) {
tea[i].flag = 0;
printf("工号为%s的老师信息已经删除", tea[i].id);
}
}
printf("删除后,老师信息更新:\n");
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n", "工号", "学院", "姓名", "性别", "年龄", "学历", "职称",
"课程", "班级数目", "理论课时", "实验课时", "课程总课时");
for (i = 0; i < num; i++) {
if (tea[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-8d%-8s%-8s%-8s%-8.2d%8.2lf%8.2lf%8.2lf\n", tea[i].id, tea[i].school, tea[i].Name,
tea[i].Sex,
tea[i].Age, tea[i].Degree, tea[i].Title, tea[i].Course, tea[i].ClassNum, tea[i].theoryhours, tea[i].labhours,
tea[i].classTime);
printf("falg = %d\n", tea[i].flag);
}
}
}
void searchTea() {
int i;
printf("输入要查询的老师工号:");
char id[21];
scanf("%s", id);
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n", "工号", "学院", "姓名", "性别", "年龄", "学历", "职称",
"课程", "班级数目", "理论课时", "实验课时", "课程总课时");
for (i = 0; i < num; i++) {
if (tea[i].flag == 1 && (strcmp(id, tea[i].id) == 0)) {
printf("%-8s%-8s%-8s%-8s%-8d%-8s%-8s%-8s%-8.2d%8.2lf%8.2lf%8.2lf\n", tea[i].id, tea[i].school, tea[i].Name,
tea[i].Sex,
tea[i].Age, tea[i].Degree, tea[i].Title, tea[i].Course, tea[i].ClassNum, tea[i].theoryhours, tea[i].labhours,
tea[i].classTime);
// printf("falg = %d\n", tea[i].flag);
}
}
}
void sortByAge() {
int i, j, k;
int n = num;
struct Teacher temp;
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n; j++) {
if (tea[j].Age < tea[k].Age)
k = j;
}
if (k != i) {
temp = tea[i];
tea[i] = tea[k];
tea[k] = temp;
}
}
}
void sortByClasstime() {
int i, j, k;
int n = num;
struct Teacher temp;
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n; j++) {
if (tea[j].classTime < tea[k].classTime)
k = j;
}
if (k != i) {
temp = tea[i];
tea[i] = tea[k];
tea[k] = temp;
}
}
}
void sumTeaByCol() {
char Col[50];
printf("学院名称:");
scanf("%s", Col);
int i, j, numOfCol = 0;
int a[20];
for (i = 0; i < num; i++) {
if (strcmp(Col, tea[i].school ) == 0) {
a[numOfCol] = i;
numOfCol++;
}
}
printf("该学院下的老师有%d人,查询结果如下\n%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n", numOfCol, "工号",
"学院", "姓名", "性别", "年龄", "学历", "职称", "课程", "班级数目", "理论课时", "实验课时", "课程总课时");
for (j = 0; j < numOfCol; j++) {
i = a[j];
if (tea[i].flag == 1) {
printf("%-8s%-8s%-8s%-8s%-8d%-8s%-8s%-8s%-8.2d%8.2lf%8.2lf%8.2lf\n", tea[i].id, tea[i].school, tea[i].Name,
tea[i].Sex,
tea[i].Age, tea[i].Degree, tea[i].Title, tea[i].Course, tea[i].ClassNum, tea[i].theoryhours, tea[i].labhours,
tea[i].classTime);
}
}
}
void sumTeaByEdu() {
char Edu[50];
printf("输入学历:");
scanf("%s", Edu);
int i, j, numOfCol = 0;
for (i = 0; i < num; i++) {
if (strcmp(Edu, tea[i].Degree) == 0) {
numOfCol++;
}
}
printf("%s学历有%d人\n", Edu, numOfCol);
}
void teacherMeau() {
int i, j;
while (1) {
// system("CLS");
// 显示菜单
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("☆********************************************************************★\n");
printf("★ 教师信息管理系统 ☆\n");
printf("★ 1.录入教师信息 ☆\n");
printf("★ 2.删除教师信息 ☆\n");
printf("★ 3.教师信息查询 ☆\n");
printf("★ 4.教师信息显示 ☆\n");
printf("★ 5.保存教师信息 ☆\n");
printf("★********************************************************************☆\n");
printf("☆ 输入0退出系统 ★\n");
printf("★ ---------------------------------------------- ☆\n");
scanf("%d", &i);
if (i == 0)
break;
switch (i) {
case 1:
Input();
break;
case 2:
deleteTea();
break;
case 3:
searchTea();
break;
case 4:
outPut();
break;
case 5:
file();
break;
default:
break;
}
}
}
void academyMeau() {
int i, j;
while (1) {
// system("CLS");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*\n");
printf("* 学院管理管理系统 欢迎您 *\n");
printf("* 1.学院信息录入 *\n");
printf("* 2.进入查看学院信息 *\n");
printf("* 3.查看所有学院信息 *\n");
printf("* 输入0退出系统 *\n");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆*\n");
printf("输入选项:");
scanf("%d", &i);
if (i == 0)
break;
switch (i) {
case 1:
inputCol();
break;
case 2:
searchCol_ByName();
break;
case 3:
allCol();
break;
default:
break;
}
}
}
void testMeau() {
int i, j;
while (1) {
// system("CLS");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("* 教师实验管理系统 欢迎您 *\n");
printf("* 1.录入教师实验模块 *\n");
printf("* 2.查询所有教师实验信息 *\n");
printf("* 3.删除某个教师实验信息 *\n");
printf("* 4.修改实验时间和地点 *\n");
printf("* 输入0退出系统 *\n");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("输入选项:");
scanf("%d", &i);
if (i == 0)
break;
switch (i) {
case 1:
inPutEx();
break;
case 2:
outPutEx();
break;
case 3:
deleteEx();
break;
case 4:
modifyEx();
break;
default:
break;
}
}
}
void informationMeau() {
int i, j;
while (1) {
// system("CLS");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("* 欢迎来到教师实验管理系统 *\n");
printf("* 1.按教师年龄排序 *\n");
printf("* 2.按课时量排序 *\n");
printf("* 3.统计该学院下教师的信息和人数 *\n");
printf("* 4.按学历统计教师人数 *\n");
printf("* 输入0退出系统 *\n");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("输入选项:");
scanf("%d", &i);
if (i == 0)
break;
switch (i) {
case 1:
sortByAge();
outPut();
break;
case 2:
sortByClasstime();
outPut();
break;
case 3:
sumTeaByCol();
break;
case 4:
sumTeaByEdu();
break;
default:
break;
}
}
}
void MainMenu() {
int i, j;
while (1) {
system("CLS");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("* 教师工作量管理系统 欢迎您 *\n");
printf("* 1.教师管理模块 *\n");
printf("* 2.学院信息管理模块 *\n");
printf("* 3.进入教师实验模块 *\n");
printf("* 4.进入统计数据模块 *\n");
printf("* 输入0退出系统 *\n");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("输入选项:");
scanf("%d", &i);
if (i == 0)
break;
switch (i) {
case 1:
teacherMeau();
break;
case 2:
academyMeau();
break;
case 3:
testMeau();
break;
case 4:
informationMeau();
break;
default:
break;
}
}
}
int main() {
hello();
MainMenu();
return 0;
}