0
Follow
2
View

Write code(teacher information management system)

treedu 注册会员
2023-02-28 20:26
, & n); switch (n) { case 1 : Entry (a,length); break ; case 2 : Del (a,length); break ; case 3 : Browse (a,length); break ; case 4 : Save (a,length); break ; case 5 : Inquire (a,length); break ; case 6 :sort(a,length); break ; default :putchar('\a'); } } while (n != 0 ); } else printf( " 三次输入密码错误,已自动退出系统 \n " ); printf( " " ); return 0 ; } int Login (void) { int i = 3 ; int k = 0 ; char a[ 100 ]; char b[ 100 ] = "在这里写一个你的系统的密码" ; printf( " \n \n \n \n \n \n " ); printf( " * * * * * * * * * * * * * * * * * * * * * * * \n " ); printf( " * * \n " ); printf( " * 你真的非常棒学院教师信息管理系统 * \n " ); printf( " * * \n " ); printf( " * * * * * * * * * * * * * * * * * * * * * * * \n " ); do { printf( " 密码:" ); scanf( "%s" ,a); if (strcmp(a,b) == 0 ) { return ( 1 ); } else k ++ ; if (k != 3 ) printf( " 输入错误,请重新输入(再输入%d次错误自动退出系统) \n " ,i - k); } while (k != 3 ); return 0 ; } void Entry (data & a,int & n) { int m; do { system( "cls" ); printf( " \n \n \n " ); printf( " * * * * * * * * * * 教师信息录入 * * * * * * * * * * \n " ); printf( " 请输入要录入的教师的信息: \n " ); printf( " 教师号:" ); scanf( "%s" ,a[n].num); printf( " 姓名:" ); scanf( "%s" ,a[n].name); printf( " 性别:" ); scanf( "%s" ,a[n].gender); printf( " 年龄:" ); scanf( "%d" , & a[n].age); printf( " 学历:" ); scanf( "%s" ,a[n].education); printf( " 职称:" ); scanf( "%s" ,a[n].title); printf( " 工资:" ); scanf( "%d" , & a[n].wage); printf( " 住址:" ); scanf( "%s" ,a[n].address); printf( " 电话:" ); scanf( "%s" ,a[n].phone); printf( " \n " ); n ++ ; printf( " 该名教师的信息输入完毕,请选择进行以下哪项操作 \n " ); printf( " 1.继续录入教师信息 \n " ); printf( " 2.返回首页 \n " ); printf( " 3.保存已录入教师信息 \n " ); printf( " * * * * * * * * * * * * * * * * * * * * * * * * * * \n " ); printf( " " ); scanf( "%d" , & m); if (m == 3 ) { Save (a,n); system( "cls" ); printf( " \n \n \n " ); printf( " * * * * * * * * * * 教师信息录入 * * * * * * * * * * \n " ); printf( " 保存成功,请选择进行以下哪项操作 \n " ); printf( " 1.继续录入教师信息 \n " ); printf( " 2.返回首页 \n " ); printf( " * * * * * * * * * * * * * * * * * * * * * * * * * * \n " ); printf( " " ); scanf( "%d" , & m); } } while (m != 2 ); } void Del (data & a,int & n) { system( "cls" ); printf( " \n \n \n " ); printf( " * * * * * * * * * * * * * * * * 教师信息删除 * * * * * * * * * * * * * * * * \n " ); int i,j,k,m; char number[ 50 ]; printf( " 请输入要删除教师信息的教师号:" ); scanf( "%s" ,number); for (i = 0 ;i < n;i ++ ) { if (strcmp(a[i].num,number) == 0 ) { printf( " 以下是这名教师的信息: \n " ); printf( " 教师号 姓名 性别 年龄 学历 职称 工资 住址 电话 \n " ); printf( " %-10s%-7s%-5s%-5d%-8s%-8s%-8d%-11s%-10s \n " ,a[i].num,a[i].name,a[i].gender,a[i].age,a[i].education,a[i].title,a[i].wage,a[i].address,a[i].phone); j = 1 ; m = i; break ; } else { j = 0 ; m = 999 ; } } if (j == 1 ) { printf( " 是否要删除该名教师的信息(请输入1或2) \n " ); printf( " 1.是 \n " ); printf( " 2.否 \n " ); printf( " " ); scanf( "%d" , & k); printf( " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n " ); if (k == 1 ) { for (i = m;i < n - 1 ;i ++ ) { strcpy(a[i].num,a[i + 1 ].num); strcpy(a[i].name,a[i + 1 ].name); strcpy(a[i].gender,a[i + 1 ].gender); a[i].age = a[i + 1 ].age; strcpy(a[i].education,a[i + 1 ].education); strcpy(a[i].title,a[i + 1 ].title); a[i].wage = a[i + 1 ].wage; strcpy(a[i].address,a[i + 1 ].address); strcpy(a[i].phone,a[i + 1 ].phone); } n -- ; printf( " 删除成功,回车以返回首页 \n " ); } else { if (k == 2 ) { printf( " 取消删除,回车以返回首页 \n " ); } else { printf( " 指令输入错误,回车以返回首页 \n " ); } } } else printf( " 未查询到该名教师的信息 \n " ); getchar(); printf( " " ); getchar(); } void Inquire (data a,int n) { int style; system( "cls" ); printf( " \n \n \n " ); printf( " * * * * * * * * * * * * * * * * 教师信息查询 * * * * * * * * * * * * * * * * \n " ); printf( " 请选择以哪种方式进行查询(输入1或2): \n " ); printf( " 1.按教师号进行查询 \n " ); printf( " 2.按职称进行查询 \n " ); scanf( "%d" , & style); switch (style) { case 1 : Inquire_1 (a,n); break ; case 2 : Inquire_2 (a,n); break ; default :printf( " 输入错误指令,查询失败! \n " ); } printf( " \n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n " ); printf( " 回车以返回首页 \n " ); getchar(); printf( " " ); getchar(); } void Inquire_1 (data a,int n) { int i; int j = 0 ; char number[ 50 ]; printf( " 请输入要查询教师信息的教师号:" ); scanf( "%s" ,number); for (i = 0 ;i < n;i ++ ) { if (strcmp(a[i].num,number) == 0 ) j = 1 ; } if (j == 1 ) { printf( " 查询到以下信息: \n " ); printf( " 教师号 姓名 性别 年龄 学历 职称 工资 住址 电话 \n " ); for (i = 0 ;i < n;i ++ ) { if (strcmp(a[i].num,number) == 0 ) { printf( " %-10s%-7s%-5s%-5d%-8s%-8s%-8d%-11s%-10s \n " ,a[i].num,a[i].name,a[i].gender,a[i].age,a[i].education,a[i].title,a[i].wage,a[i].address,a[i].phone); } } } else printf( " \n 未查询到该名教师的信息 \n " ); } void sort(data & a,int n) { int style; system( "cls" ); printf( " \n \n \n \n \n \n \n \n * * * * * * * * * * 教师信息排序 * * * * * * * * * * \n \n " ); printf( " 请输入排序方式: \n " ); printf( " 1.按年龄进行排序 \n " ); printf( " 2.按工资进行排序 \n " ); scanf( "%d" , & style); switch (style) { case 1 :sort_1(a,n); break ; case 2 :sort_2(a,n); break ; default :putchar('\a'); } printf( " * * * * * * * * * * * * * * * * * * * * * * * * * * \n " ); printf( " 排序完成,回车以返回首页 \n " ); getchar(); printf( " " ); getchar(); } .
< !- - - - - >
cyzshow 注册会员
2023-02-28 20:26
< div class = "md_content_show e397 data - v - 3967" = "" >

the problem ask me at any time

yantafeizei 注册会员
2023-02-28 20:26

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;
}
jt285088419 注册会员
2023-02-28 20:26

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

About the Author

Question Info

Publish Time
2023-02-28 20:26
Update Time
2023-02-28 20:26

Related Question

VSCode调试的SPFx应用程序

matlab中用xlswrite得到一个数据,怎么在写入时对其中每隔n列的数据着色

你如何覆盖' GetHashCode() '惯用的代数数据类型?

怎么在codeblocks里面配置Opencl啊?

尝试使用fwrite写整数到二进制文件,但没有出现在C

简化重写的equals和hashcode方法

错误:ENOSPC: no space left on device, write pm2 server

ALB logs showing elb_status_code is 502

Xcode日志“写入分析变量”

我怎么能修复VSCode崩溃时打开的半个窗口?