Use files for storage and management. Program startup can read information from the file, or input information from the keyboard; In the process of operation, such as adding or deleting records can also be accessed to the file; You can choose to save the information to a file before exiting. The system functions can be analyzed according to the situation. The recommended system functions are as follows: 1, teacher information query(according to the name or only according to the surname query)
2, teacher information add
3, teacher information modification
4, teacher information delete
5, teacher information sorting(by name or by office location)
6, teacher information score calculation(one point deduction for being late, one point deduction for leaving early, one point deduction for leaving early, One point will be deducted for each time you are absent from class)
7. Sort teachers' information by points
0 Answer
the problem ask me at any time
Reference to GPT and own ideas, the following is a simple teacher information management system C language code sample, including the above functions:
#include
#include
#include
#define MAX_NAME_LENGTH 20
#define MAX_OFFICE_LENGTH 20
#define MAX_TEACHERS 100
// 定义教师结构体
typedef struct {
char name[MAX_NAME_LENGTH];
char office[MAX_OFFICE_LENGTH];
int late_count;
int leave_count;
int absent_count;
int score;
} Teacher;
Teacher teachers[MAX_TEACHERS]; // 定义教师数组
int teacher_count = 0; // 记录当前教师数量
// 显示菜单
void show_menu() {
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("0. 退出程序\n");
printf("请输入选择:");
}
// 从文件中读取教师信息
void load_teachers_from_file() {
FILE* fp;
fp = fopen("teachers.dat", "rb"); // 以二进制读取方式打开文件
if (fp == NULL) {
printf("无法打开文件\n");
return;
}
while (teacher_count < MAX_TEACHERS && fread(&teachers[teacher_count], sizeof(Teacher), 1, fp) == 1) {
teacher_count++;
}
fclose(fp); // 关闭文件
}
// 将教师信息保存到文件中
void save_teachers_to_file() {
FILE* fp;
fp = fopen("teachers.dat", "wb"); // 以二进制写入方式打开文件
if (fp == NULL) {
printf("无法打开文件\n");
return;
}
fwrite(teachers, sizeof(Teacher), teacher_count, fp); // 写入教师信息
fclose(fp); // 关闭文件
}
// 按姓名查找教师信息,返回匹配的教师数量
int find_teacher_by_name(char* name) {
int count = 0;
for (int i = 0; i < teacher_count; i++) {
if (strcmp(teachers[i].name, name) == 0) {
printf("教师姓名: %s\n", teachers[i].name);
printf("办公地点: %s\n", teachers[i].office);
printf("迟到次数: %d\n", teachers[i].late_count);
printf("早退次数: %d\n", teachers[i].leave_count);
printf("旷课次数: %d\n", teachers[i].absent_count);
printf("积分: %d\n", teachers[i].score);
count++;
}
}
return count;
}
// 删除教师信息
void delete_teacher() {
char name[MAX_NAME_LENGTH];
printf("请输入要删除的教师姓名:");
scanf("%s", name);
int index = find_teacher_by_name(name);
if (index == -1) {
printf("未找到该教师\n");
return;
}
for (int i = index; i < teacher_count - 1; i++) {
teachers[i] = teachers[i + 1];
}
teacher_count--;
printf("已删除该教师信息\n");
}
// 按姓名排序教师信息
void sort_teachers_by_name() {
qsort(teachers, teacher_count, sizeof(Teacher), compare_by_name);
printf("已按姓名排序\n");
}
// 按办公地点排序教师信息
void sort_teachers_by_office() {
qsort(teachers, teacher_count, sizeof(Teacher), compare_by_office);
printf("已按办公地点排序\n");
}
// 计算教师积分
int calculate_teacher_score(Teacher teacher) {
return teacher.late_count + teacher.leave_count + teacher.absent_count;
}
// 按积分排序教师信息
void sort_teachers_by_score() {
qsort(teachers, teacher_count, sizeof(Teacher), compare_by_score);
printf("已按积分排序\n");
}
int main() {
load_teachers_from_file(); // 从文件中读取教师信息
int choice;
do {
print_menu(); // 打印菜单
scanf("%d", &choice);
switch (choice) {
case 1:
find_teacher();
break;
case 2:
add_teacher();
break;
case 3:
update_teacher();
break;
case 4:
delete_teacher();
break;
case 5:
sort_teachers_by_name();
break;
case 6:
sort_teachers_by_office();
break;
case 7:
calculate_teacher_scores();
break;
case 8:
sort_teachers_by_score();
break;
case 0:
break;
default:
printf("无效的选择,请重新输入\n");
}
} while (choice != 0);
save_teachers_to_file(); // 保存教师信息到文件
return 0;
}
no x
#include
#include
#define MAX_SIZE 1000
typedef struct Teacher {
char name[20];
char location[20];
int lateCount; // 迟到次数
int leaveEarlyCount; // 早退次数
int absentCount; // 旷课次数
int score; // 积分
} Teacher;
Teacher teacher[MAX_SIZE];
int size; // 当前数组中Teacher的个数
// 查询教师信息
void queryTeacherInfo(char *name) {
int i;
for (i = 0; i < size; i++) {
if (strcmp(teacher[i].name, name) == 0) {
printf("姓名:%!s(MISSING)\n", teacher[i].name);
printf("办公地点:%!s(MISSING)\n", teacher[i].location);
printf("迟到次数:%!d(MISSING)\n", teacher[i].lateCount);
printf("早退次数:%!d(MISSING)\n", teacher[i].leaveEarlyCount);
printf("旷课次数:%!d(MISSING)\n", teacher[i].absentCount);
printf("积分:%!d(MISSING)\n", teacher[i].score);
}
}
}
// 添加教师信息
void addTeacherInfo(Teacher t) {
teacher[size++] = t;
}
// 修改教师信息
void modifyTeacherInfo(char *name, Teacher t) {
int i;
for (i = 0; i < size; i++) {
if (strcmp(teacher[i].name, name) == 0) {
teacher[i] = t;
}
}
}
// 删除教师信息
void deleteTeacherInfo(char *name) {
int i;
for (i = 0; i < size; i++) {
if (strcmp(teacher[i].name, name) == 0) {
int j;
for (j = i; j < size - 1; j++) {
teacher[j] = teacher[j + 1];
}
size--;
}
}
}
// 根据姓名排序
void sortByName() {
int i, j;
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - 1 - i; j++) {
if (strcmp(teacher[j].name, teacher[j + 1].name) > 0) {
Teacher temp = teacher[j];
teacher[j] = teacher[j + 1];
teacher[j + 1] = temp;
}
}
}
}
// 根据办公地点排序
void sortByLocation() {
int i, j;
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - 1 - i; j++) {
if (strcmp(teacher[j].location, teacher[j + 1].location) > 0) {
Teacher temp = teacher[j];
teacher[j] = teacher[j + 1];
teacher[j + 1] = temp;
}
}
}
}
// 计算积分
void calculateScore() {
int i;
for (i = 0; i < size; i++) {
teacher[i].score = 0 - (teacher[i].lateCount + teacher[i].leaveEarlyCount +
teacher[i].absentCount);
}
}
// 根据积分排序
void sortByScore() {
int i, j;
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - 1 - i; j++) {
if (teacher[j].score < teacher[j + 1].score) {
Teacher temp = teacher[j];
teacher[j] = teacher[j + 1];
teacher[j + 1] = temp;
}
}
}
}
int main(void) {
return 0;
}
这家伙很懒,什么都没留下...