我想用c语言编程这一个题目 教师工作最管理系统 建立教师工作量管系统,对教师工作量相关信息进行管理。教师工作量相关信息包括教师工号、教师姓名、学期、工作量和年度总工作量等。具体要求如下: (1)建立该系统的存储结构。 (2)录入教师每个学斯的工作量信息。 (3)查找菜个教师某个学期的工作量。 (4)修改某个教师某个学期的工作量 (5)删除某个教师工作量的相关信息 (6)统计某个教师年度总工作量。 (7)对教师的年度总工作量进行排名。
时间: 2024-03-14 11:46:58 浏览: 50
好的,下面是一份基本实现的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_TEACHERS 100 // 最大教师数
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ID_LEN 10 // 工号最大长度
#define MAX_SEMESTERS 4 // 最大学期数
struct Teacher {
char id[MAX_ID_LEN]; // 工号
char name[MAX_NAME_LEN]; // 姓名
float workload[MAX_SEMESTERS]; // 每个学期的工作量
float total_workload; // 年度总工作量
};
struct Teacher teachers[MAX_TEACHERS]; // 教师数组
int teacher_count = 0; // 教师数
// 录入教师信息
void input_teacher() {
struct Teacher teacher;
printf("请输入教师工号:");
scanf("%s", teacher.id);
printf("请输入教师姓名:");
scanf("%s", teacher.name);
for (int i = 0; i < MAX_SEMESTERS; i++) {
printf("请输入第%d学期的工作量:", i + 1);
scanf("%f", &teacher.workload[i]);
teacher.total_workload += teacher.workload[i];
}
teachers[teacher_count++] = teacher;
printf("教师信息录入成功!\n");
}
// 查找教师信息
void search_teacher() {
char id[MAX_ID_LEN];
int semester;
printf("请输入要查找的教师工号:");
scanf("%s", id);
printf("请输入要查找的学期编号(1~%d):", MAX_SEMESTERS);
scanf("%d", &semester);
for (int i = 0; i < teacher_count; i++) {
if (strcmp(teachers[i].id, id) == 0) {
printf("教师姓名:%s,第%d学期工作量:%f\n", teachers[i].name, semester, teachers[i].workload[semester - 1]);
return;
}
}
printf("未找到该教师信息!\n");
}
// 修改教师信息
void modify_teacher() {
char id[MAX_ID_LEN];
int semester;
float workload;
printf("请输入要修改的教师工号:");
scanf("%s", id);
printf("请输入要修改的学期编号(1~%d):", MAX_SEMESTERS);
scanf("%d", &semester);
printf("请输入修改后的工作量:");
scanf("%f", &workload);
for (int i = 0; i < teacher_count; i++) {
if (strcmp(teachers[i].id, id) == 0) {
teachers[i].workload[semester - 1] = workload;
teachers[i].total_workload = 0;
for (int j = 0; j < MAX_SEMESTERS; j++) {
teachers[i].total_workload += teachers[i].workload[j];
}
printf("教师信息修改成功!\n");
return;
}
}
printf("未找到该教师信息!\n");
}
// 删除教师信息
void delete_teacher() {
char id[MAX_ID_LEN];
printf("请输入要删除的教师工号:");
scanf("%s", id);
for (int i = 0; i < teacher_count; i++) {
if (strcmp(teachers[i].id, id) == 0) {
for (int j = i; j < teacher_count - 1; j++) {
teachers[j] = teachers[j + 1];
}
teacher_count--;
printf("教师信息删除成功!\n");
return;
}
}
printf("未找到该教师信息!\n");
}
// 统计教师年度总工作量
void count_total_workload() {
char id[MAX_ID_LEN];
printf("请输入要统计的教师工号:");
scanf("%s", id);
for (int i = 0; i < teacher_count; i++) {
if (strcmp(teachers[i].id, id) == 0) {
printf("教师姓名:%s,年度总工作量:%f\n", teachers[i].name, teachers[i].total_workload);
return;
}
}
printf("未找到该教师信息!\n");
}
// 排名教师年度总工作量
void sort_total_workload() {
for (int i = 0; i < teacher_count - 1; i++) {
for (int j = 0; j < teacher_count - i - 1; j++) {
if (teachers[j].total_workload < teachers[j + 1].total_workload) {
struct Teacher temp = teachers[j];
teachers[j] = teachers[j + 1];
teachers[j + 1] = temp;
}
}
}
printf("教师年度总工作量排名如下:\n");
for (int i = 0; i < teacher_count; i++) {
printf("%d. %s(工号:%s),年度总工作量:%f\n", i + 1, teachers[i].name, teachers[i].id, teachers[i].total_workload);
}
}
int main() {
int choice;
while (1) {
printf("\n欢迎使用教师工作量管理系统!\n");
printf("1. 录入教师信息\n");
printf("2. 查找教师信息\n");
printf("3. 修改教师信息\n");
printf("4. 删除教师信息\n");
printf("5. 统计教师年度总工作量\n");
printf("6. 排名教师年度总工作量\n");
printf("7. 退出系统\n");
printf("请选择操作(1~7):");
scanf("%d", &choice);
switch (choice) {
case 1:
input_teacher();
break;
case 2:
search_teacher();
break;
case 3:
modify_teacher();
break;
case 4:
delete_teacher();
break;
case 5:
count_total_workload();
break;
case 6:
sort_total_workload();
break;
case 7:
printf("感谢使用教师工作量管理系统,再见!\n");
return 0;
default:
printf("无效的操作!\n");
}
}
}
```
该代码中,使用结构体数组存储教师信息,每个结构体包含教师工号、姓名、每个学期的工作量以及年度总工作量。通过循环遍历数组,实现录入、查找、修改、删除、统计和排名等操作。同时,使用排序算法对教师年度总工作量进行排名。
阅读全文