C语言实现——教师管理系统

基于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;
}

 

 

 

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大鸵鸟

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值