C语言编写一套教师信息系统,详情请看图片

Description
编写一套计算机学院教师信息管理系统,用菜单进行管理,具备输入、显示、查找、排序、插入等功能。每一条记录包括一位教师的职工号、姓名、职称、性别、2门主讲课程,包括课程名称、开课学期、课程性质(必修/限选课)和教学效果,以及教学效果综合评分。
要求:(1)输入功能(input):可以一次完成若干条记录的输入。教师人员数量最多可达到100。(2)显示功能(display):完成全部教师记录的显示。(3)查找功能(search):能够按照教师的姓名或课程名称查找教师的相关记录,并显示。如果没有查找到相关记录,输出 NO match!(4)排序功能(sort):按照职工号或者教学效果综合评分由高至低进行排序。0按照职工号排序,1按照教学效果综合评分排序。(5)插入功能(insert):插入一条教师记录。(6)修改功能(change):按照职工号修改一条教师记录。(7)删除功能(delete):按照教师的姓名删除一条教师记录。(8)退出功能(quit)退出程序 Input选择相应功能,如:输入功能:输入每一条记录包括一位教师的职工号、姓名、职称、性别、2门主讲课程,包括课程名称、开课学期、课程性质(必修/限选课)和教学效果,以及教学效果综合评分。插入功能:插入一条教师记录。排序功能:按照教学效果综合评分由高至低进行排序。显示功能:完成全部教师记录的显示。退出功能:退出程序
Output输出相应信息Sample Inputinput220160000 张三 教授 女 程序设计基础 2019-2020-1 必修 优秀 离散数学 2019-2020-2 必修 优秀 93 20160001 李四 讲师 女 数字逻辑 2019-2020-1 必修 优秀 图像处理 2019-2020-2 必修 优秀 91 insert20160002 王五 讲师 女 软件工程 2019-2020-1 限选课 优秀 高等数学 2019-2020-2 限选课 优秀 92sort1displaysearch李四一change2016000120160001 李四一 副教授 女 数字逻辑 2019-2020-1 必修 优秀 图像处理 2019-2020-2 必修 优秀 91displaydelete王五 displayquitSample Output20160000 张三 教授 女 程序设计基础 2019-2020-1 必修 优秀 离散数学 2019-2020-2 必修 优秀 9320160002 王五 讲师 女 软件工程 2019-2020-1 限选课 优秀 高等数学 2019-2020-2 限选课 优秀 9220160001 李四 讲师 女 数字逻辑 2019-2020-1 必修 优秀 图像处理 2019-2020-2 必修 优秀 91NO match!20160000 张三 教授 女 程序设计基础 2019-2020-1 必修 优秀 离散数学 2019-2020-2 必修 优秀 9320160002 王五 讲师 女 软件工程 2019-2020-1 限选课 优秀 高等数学 2019-2020-2 限选课 优秀 9220160001 李四一 副教授 女 数字逻辑 2019-2020-1 必修 优秀 图像处理 2019-2020-2 必修 优秀 9120160000 张三 教授 女 程序设计基础 2019-2020-1 必修 优秀 离散数学 2019-2020-2 必修 优秀 9320160001 李四一 副教授 女 数字逻辑 2019-2020-1 必修 优秀 图像处理 2019-2020-2 必修 优秀 91

img


求解答

#include <iostream>
#include <cstdio>
#include <string>
#include <cstdlib>

using namespace std;

typedef struct//课程信息
{
    string class_name;
    string class_date;
    string class_type;
    string class_effect;

}Class;

typedef struct//教师信息
{
    string num;
    string name;
    string pos;
    string sexul;
    Class class1;
    Class class2;
    int sumscore;

}Teacher;

typedef struct teacher_xinxi//创建链表节点
{
    Teacher teacher;
    struct teacher_xinxi *next;

}Linklist;

//创建链表
Linklist * creatlinklist(int num)
{
    Linklist *head_node , *temp_node, *end_node;
    head_node = new Linklist;
    if(head_node == NULL){
        //cout<<"内存分配失败"<<endl;
        return NULL;
    }
    end_node = head_node;//刚开始没有存数据的是时候,头节点就是尾节点
    //开始输入学生数据
    for(int i = 1; i <= num; i++){
        temp_node = new Linklist;
        cin>>temp_node->teacher.num>>temp_node->teacher.name>>temp_node->teacher.pos>>temp_node->teacher.sexul;
        cin>>temp_node->teacher.class1.class_name>>temp_node->teacher.class1.class_date>>temp_node->teacher.class1.class_type>>temp_node->teacher.class1.class_effect;
        cin>>temp_node->teacher.class2.class_name>>temp_node->teacher.class2.class_date>>temp_node->teacher.class2.class_type>>temp_node->teacher.class2.class_effect;
        cin>>temp_node->teacher.sumscore;
        end_node->next = temp_node;
        end_node = temp_node;
    }
    end_node->next = NULL;
    return head_node;
}

//输出链表中的内容
void display_Linklist(Linklist *h)
{
    while(h->next != NULL){
        h = h->next;
        cout<<h->teacher.num<<" "<<h->teacher.name<<" "<<h->teacher.pos<<" "<<h->teacher.sexul<<" ";
        cout<<h->teacher.class1.class_name<<" "<<h->teacher.class1.class_date<<" "<<h->teacher.class1.class_type<<" "<<h->teacher.class1.class_effect<<" ";
        cout<<h->teacher.class2.class_name<<" "<<h->teacher.class2.class_date<<" "<<h->teacher.class2.class_type<<" "<<h->teacher.class2.class_effect;
        cout<<" "<<h->teacher.sumscore<<endl;
    }
}

//查找链表中的内容
int Search_teacher(string flag,Linklist *h)
{
    int res = 0;//记录已经找到的符合条件的教师数量;
    while(NULL != h->next){
        h = h->next;
        if(flag == h->teacher.name||flag == h->teacher.class1.class_name||flag == h->teacher.class2.class_name){
            cout<<h->teacher.num<<" "<<h->teacher.name<<" "<<h->teacher.pos<<" "<<h->teacher.sexul<<" ";
            cout<<h->teacher.class1.class_name<<" "<<h->teacher.class1.class_date<<" "<<h->teacher.class1.class_type<<" "<<h->teacher.class1.class_effect<<" ";
            cout<<h->teacher.class2.class_name<<" "<<h->teacher.class2.class_date<<" "<<h->teacher.class2.class_type<<" "<<h->teacher.class2.class_effect;
            cout<<" "<<h->teacher.sumscore<<endl;
            res++;
        }
    }
    return res;
}

//修改系统中某教师信息
int Change_Linklist(string flag_num,Linklist *h)
{
    while(NULL != h->next){
        h = h->next;
        if(flag_num == h->teacher.num){
            cin>>h->teacher.num>>h->teacher.name>>h->teacher.pos>>h->teacher.sexul;
            cin>>h->teacher.class1.class_name>>h->teacher.class1.class_date>>h->teacher.class1.class_type>>h->teacher.class1.class_effect;
            cin>>h->teacher.class2.class_name>>h->teacher.class2.class_date>>h->teacher.class2.class_type>>h->teacher.class2.class_effect;
            cin>>h->teacher.sumscore;
            return 1;
        }
    }
    return 0;
}

//系统教师信息的删除
int delete_Linklist(string name,Linklist *h)
{
    Linklist *temp = h, *t;
    int if_delete = 0;
    while(NULL != temp->next){
        t = temp;
        temp = temp->next;
        if(temp->teacher.name == name){
            if_delete = 1;
            break;
        }
    }
    //如果是头节点后的第一个元素,只需要将头节点连接至第一个元素后面的信息即可
    if(temp == h->next){
        h->next = temp->next;
    }
    //普通节点的情况
    else{
        t->next = temp->next;
    }
    delete(temp);
    return if_delete;
}

//插入数据
void List_insert(Linklist *h)
{
    Linklist *temp = new Linklist;
    cin>>temp->teacher.num>>temp->teacher.name>>temp->teacher.pos>>temp->teacher.sexul;
    cin>>temp->teacher.class1.class_name>>temp->teacher.class1.class_date>>temp->teacher.class1.class_type>>temp->teacher.class1.class_effect;
    cin>>temp->teacher.class2.class_name>>temp->teacher.class2.class_date>>temp->teacher.class2.class_type>>temp->teacher.class2.class_effect;
    cin>>temp->teacher.sumscore;

    /*
    //从头结点插入数据
    temp->next = h->next;
    h->next = temp;*/
    //从尾结点插入数据
    Linklist *end_node = h;
    while(NULL != end_node->next){
        end_node = end_node->next;
    }
    end_node->next = temp;
    temp->next = NULL;
}

//获取链表存储长度
int get_List_len(Linklist *h)
{
    int count = 0;
    while(NULL != h->next){
        h = h->next;
        count++;
    }
    return count;
}

//冒泡排序对列表数据进行排序
void sort_List(Linklist *h,int sort_type)
{
    int length = get_List_len(h);
    Linklist *p = h->next;
    Teacher temp;
    //p,是为了防止排序过程中h被改变,temp做排序交换时的中间变量
    for(int i = 0; i < length - 1; i++){
        p = h->next;//保证每次排序都是从头节点开始
        if(sort_type){//如果输入的是1则按照教学效果综合评分排序
            for(int j = 0; j <length - 1 - i; j++){
                if(p->teacher.sumscore < p->next->teacher.sumscore){
                    temp = p->teacher;
                    p->teacher = p->next->teacher;
                    p->next->teacher = temp;
                }
                p = p->next;
            }
        }
        else{
            for(int j = 0; j <length - 1 - i; j++){
                if(p->teacher.num < p->next->teacher.num){
                    temp = p->teacher;
                    p->teacher = p->next->teacher;
                    p->next->teacher = temp;
                }
                p = p->next;
            }
        }
    }
}

//链表的内存释放
void delete_all_Linklist(Linklist * h)
{
    while(NULL != h){
        Linklist *p = h;
        delete(p);
        h = h->next;
    }
}

int main()
{
    Linklist  *p;
    int tnum;//起始输入系统教师数量
    while(1){
        string oper;
        cin>>oper;
        //起始输入教师信息
        if(oper == "input"){
            cin>>tnum;
            p = creatlinklist(tnum);
        }
        //通过输入的教师姓名或者课程名称查找教师
        if(oper == "search"){
            string flag;
            cin>>flag;
            int ans = Search_teacher(flag,p);
            if(!ans){
                cout<<"NO match!"<<endl;
            }
        }
        //修改系统中教师信息
        if(oper == "change"){
            string flag_num;
            cin>>flag_num;
            int if_change = Change_Linklist(flag_num,p);
        }
        //删除输入教师名信息
        if(oper == "delete"){
            string name;
            cin>>name;
            int if_delete = delete_Linklist(name,p);
            /*if(!if_delete){
                cout<<"删除失败"<<endl;
            }*/
        }
        //插入老师信息,由于这里没有说明每次插入信息的位置,所以默认从头结点插入
        if(oper == "insert"){
            List_insert(p);
        }
        //对系统中的老师按要求进行排序
        //0按照职工号排序,1按照教学效果综合评分排序
        if(oper == "sort"){
            int sort_type;//判断应该按哪种方式进行排序的标识符
            cin>>sort_type;
            sort_List(p,sort_type);
        }
        //输出系统中教师信息
        if(oper == "display"){
            display_Linklist(p);
        }
        //退出程序
        if(oper == "quit"){
            break;
        }
    }
    delete_all_Linklist(p);//释放内存
    return 0;
}

https://blog.csdn.net/CUCUC1/article/details/106913919/

基于ChatGPT4与博主叶秋学长的回答,望采纳!!!有其他问题也可以询问我哦💕:
这是一个相对复杂的项目,需要有一定的C语言基础。这个项目需要设计一个教师信息管理系统,包括输入、显示、查找、排序、插入等功能。

首先,我们需要创建一个数据结构来存储教师的信息。每个教师的信息包括工号、姓名、职称、性别、主讲课程(两门,包括课程名称、开课学期、课程性质和教学效果)、以及教学效果综合评分。我们可以使用一个结构体来存储这些信息。

例如,我们可以定义这样一个结构体:

typedef struct {
    char id[10];
    char name[20];
    char title[20];
    char gender[10];
    struct {
        char courseName[20];
        char term[10];
        char courseType[10];
        char teachingEffect[10];
    } courses[2];
    int overallScore;
} Teacher;

然后我们需要创建一个Teacher类型的数组来存储所有的教师信息:

Teacher teachers[100];

然后我们需要定义一些函数来实现输入、显示、查找、排序、插入等功能。

例如,我们可以定义一个input函数来输入教师的信息:

void input(Teacher* teachers, int* count) {
    // 输入教师信息
}

我们也可以定义一个display函数来显示所有的教师信息:

void display(Teacher* teachers, int count) {
    // 显示教师信息
}

我们也需要定义一个search函数来查找教师的信息:

void search(Teacher* teachers, int count, char* name) {
    // 查找教师信息
}

我们还需要定义一个sort函数来排序教师的信息:

void sort(Teacher* teachers, int count, int type) {
    // 排序教师信息
}

我们还需要定义一个insert函数来插入一条教师的信息:

void insert(Teacher* teachers, int* count, Teacher teacher) {
    // 插入教师信息
}

我们还需要定义一个change函数来修改一条教师的信息:

void change(Teacher* teachers, int count, char* id, Teacher teacher) {
    // 修改教师信息
}

我们还需要定义一个delete函数来删除一条教师的信息:

void delete(Teacher* teachers, int* count, char* name) {
    // 删除教师信息
}

最后,我们需要定义一个main函数来显示菜单并处理用户的输入:

int main() {
    // 显示菜单
    // 处理用户输入
}

每个函数的具体实现需要根据项目的具体要求来编写。这只是一个大致的框架,具体的实现可能会有所不同。

根据您的问题描述,您需要编写一套教师信息管理系统,具备输入、显示、查找、排序、插入等功能。下面是一个基本的C语言实现示例:

#include <stdio.h>
#include <string.h>

#define MAX_TEACHERS 100

typedef struct {
    char id[10];
    char name[20];
    char title[10];
    char gender[5];
    char course1[30];
    char semester1[20];
    char nature1[10];
    char effect1[10];
    char course2[30];
    char semester2[20];
    char nature2[10];
    char effect2[10];
    int score;
} Teacher;

Teacher teachers[MAX_TEACHERS];
int numTeachers = 0;

void input() {
    printf("请输入教师信息:\n");
    while (1) {
        Teacher teacher;
        printf("职工号:");
        scanf("%s", teacher.id);
        if (strcmp(teacher.id, "quit") == 0) break;
        printf("姓名:");
        scanf("%s", teacher.name);
        printf("职称:");
        scanf("%s", teacher.title);
        printf("性别:");
        scanf("%s", teacher.gender);
        printf("主讲课程1:");
        scanf("%s", teacher.course1);
        printf("开课学期1:");
        scanf("%s", teacher.semester1);
        printf("课程性质1:");
        scanf("%s", teacher.nature1);
        printf("教学效果1:");
        scanf("%s", teacher.effect1);
        printf("主讲课程2:");
        scanf("%s", teacher.course2);
        printf("开课学期2:");
        scanf("%s", teacher.semester2);
        printf("课程性质2:");
        scanf("%s", teacher.nature2);
        printf("教学效果2:");
        scanf("%s", teacher.effect2);
        printf("教学效果综合评分:");
        scanf("%d", &teacher.score);

        teachers[numTeachers++] = teacher;
    }
}

void display() {
    printf("教师信息如下:\n");
    for (int i = 0; i < numTeachers; i++) {
        Teacher teacher = teachers[i];
        printf("%s %s %s %s %s %s %s %s %s %s %s %s %d\n",
               teacher.id, teacher.name, teacher.title, teacher.gender,
               teacher.course1, teacher.semester1, teacher.nature1, teacher.effect1,
               teacher.course2, teacher.semester2, teacher.nature2, teacher.effect2,
               teacher.score);
    }
}

void search() {
    char name[20];
    printf("请输入要查找的教师姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numTeachers; i++) {
        Teacher teacher = teachers[i];
        if (strcmp(teacher.name, name) == 0) {
            printf("%s %s %s %s %s %s %s %s %s %s %s %s %d\n",
                   teacher.id, teacher.name, teacher.title, teacher.gender,
                   teacher.course1, teacher.semester1, teacher.nature1, teacher.effect1,
                   teacher.course2, teacher.semester2, teacher.nature2, teacher.effect2,
                   teacher.score);
            found = 1;
        }
    }

    if (!found) {
        printf("NO match!\n");
    }
}

void sort() {
    int type;
    printf("请选择排序类型(0-职工号排序,1-教学效果综合评分排序):");
    scanf("%d", &type);

    for (int i = 0; i < numTeachers - 1; i++) {
        for (int j = 0; j < numTeachers - 1 - i; j++) {
            if ((type == 0 && strcmp(teachers[j].id, teachers[j + 1].id) > 0) ||
                (type == 1 && teachers[j].score < teachers[j + 1].score)) {
                Teacher temp = teachers[j];
                teachers[j] = teachers[j + 1];
                teachers[j + 1] = temp;
            }
        }
    }

    printf("排序完成!\n");
}

void insert() {
    Teacher teacher;
    printf("请输入要插入的教师信息:\n");
    printf("职工号:");
    scanf("%s", teacher.id);
    printf("姓名:");
    scanf("%s", teacher.name);
    printf("职称:");
    scanf("%s", teacher.title);
    printf("性别:");
    scanf("%s", teacher.gender);
    printf("主讲课程1:");
    scanf("%s", teacher.course1);
    printf("开课学期1:");
    scanf("%s", teacher.semester1);
    printf("课程性质1:");
    scanf("%s", teacher.nature1);
    printf("教学效果1:");
    scanf("%s", teacher.effect1);
    printf("主讲课程2:");
    scanf("%s", teacher.course2);
    printf("开课学期2:");
    scanf("%s", teacher.semester2);
    printf("课程性质2:");
    scanf("%s", teacher.nature2);
    printf("教学效果2:");
    scanf("%s", teacher.effect2);
    printf("教学效果综合评分:");
    scanf("%d", &teacher.score);

    teachers[numTeachers++] = teacher;

    printf("插入成功!\n");
}

void change() {
    char id[10];
    printf("请输入要修改的教师职工号:");
    scanf("%s", id);

    int found = 0;
    for (int i = 0; i < numTeachers; i++) {
        Teacher* teacher = &teachers[i];
        if (strcmp(teacher->id, id) == 0) {
            printf("请输入修改后的教师信息:\n");
            printf("姓名:");
            scanf("%s", teacher->name);
            printf("职称:");
            scanf("%s", teacher->title);
            printf("性别:");
            scanf("%s", teacher->gender);
            printf("主讲课程1:");
            scanf("%s", teacher->course1);
            printf("开课学期1:");
            scanf("%s", teacher->semester1);
            printf("课程性质1:");
            scanf("%s", teacher->nature1);
            printf("教学效果1:");
            scanf("%s", teacher->effect1);
            printf("主讲课程2:");
            scanf("%s", teacher->course2);
            printf("开课学期2:");
            scanf("%s", teacher->semester2);
            printf("课程性质2:");
            scanf("%s", teacher->nature2);
            printf("教学效果2:");
            scanf("%s", teacher->effect2);
            printf("教学效果综合评分:");
            scanf("%d", &teacher->score);

            found = 1;
            break;
        }
    }

    if (found) {
        printf("修改成功!\n");
    } else {
        printf("未找到对应职工号的教师!\n");
    }
}

void delete() {
    char name[20];
    printf("请输入要删除的教师姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numTeachers; i++) {
        if (strcmp(teachers[i].name, name) == 0) {
            for (int j = i; j < numTeachers - 1; j++) {
                teachers[j] = teachers[j + 1];
            }
            numTeachers--;
            found = 1;
            break;
        }
    }

    if (found) {
        printf("删除成功!\n");
    } else {
        printf("未找到对应姓名的教师!\n");
    }
}

int main() {
    while (1) {
        printf("请选择功能(input/display/search/sort/insert/change/delete/quit):");
        char choice[10];
        scanf("%s", choice);

        if (strcmp(choice, "input") == 0) {
            input();
        } else if (strcmp(choice, "display") == 0) {
            display();
        } else if (strcmp(choice, "search") == 0) {
            search();
        } else if (strcmp(choice, "sort") == 0) {
            sort();
        } else if (strcmp(choice, "insert") == 0) {
            insert();
        } else if (strcmp(choice, "change") == 0) {
            change();
        } else if (strcmp(choice, "delete") == 0) {
            delete();
        } else if (strcmp(choice, "quit") == 0) {
            break;
        } else {
            printf("无效的选择!\n");
        }
    }

    return 0;
}

这是一个简单的教师信息管理系统,可以根据菜单选择进行输入、显示、查找、排序、插入等功能操作。您可以根据需要进一步扩展和优化代码。

c语言设计 教师信息管理系统


#include<stdio.h>
#include<string.h>
#include <windows.h>
#include<stdlib.h>
int renshu=0,anquan[10]={0},mima=88888888;                           //全局变量,便于各个函数访问和修改    
struct Teacher{
    int    Num;                                                    //编号 -------教师号     《性别,年龄,电话,工资,学历》 
    char    Name[25];                                              //姓名 
    char    Sex[20];                                             //性别 
    int     Age;                                                //年龄
    long int     dianhua;                                      //电话 
    int     money;                                            //工资 
    char    zhicheng[25];                                    //职称 
    char    Course[50];                                     //课程编号--------课程名称    
    int     ClassNum;                                      // 班级数

}Tc[100];

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");                                                           //清空屏幕 
}

void jieshu()                                                               //结束界面 
{   system("cls");  
    printf("\n\n\n");
    printf("\n\t                           ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
    puts("\n");
    puts("\t                             ┃                                               ┃");
    puts("\t                             ┃                                               ┃");
    puts("\t                             ┃     感谢访问教师信息管理系统!欢迎下次再来!    ┃");
    puts("\t                             ┃                                               ┃");
    puts("\t                             ┃                                               ┃");
    puts("\t                             ┃                                               ┃");
    puts("\t                             ┃                                               ┃ ");
    puts("\n ");
    printf("\n\n\n");
}     

void caidan()                                                           //主菜单 
{   printf("\n\n\n\n");
    printf("                                   时间:");
    system("date/t");
   // system ( "time/t " );
    printf("                  ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
    printf("                  ☆********************************************************************★\n");
    printf("                   ★                          教师信息管理系统                          ☆\n");
    printf("                ☆                                                                    ★\n");
    printf("                  ★          1.录入教师信息               5.统计信息                   ☆\n");
    printf("                ☆                                                                    ★\n");
    printf("                  ★          2.浏览所有教师信息           6. 按条件排序                ☆\n");
    printf("                  ☆                                                                    ★\n");
    printf("                  ★          3.按条件查询信息             7.信息安全及权限管理         ☆\n");
    printf("                   ☆                                                                    ★\n");
    printf("                   ★          4.修改教师信息               8.文件保存与读取             ☆\n");
    printf("                  ☆                                                                    ★\n"); 
    printf("                  ★********************************************************************☆\n");
    printf("                  ☆               输入9退出系统           输入10返回主菜单             ★\n");
    printf("                    ★          ----------------------------------------------            ☆\n"); 
    
} 
void save()                                                                          //文件存盘
{                                                                                               
    FILE *fp;                                                                       //定义文件指针 
    int i;
    if((fp=fopen("Tc.txt","w"))==NULL)                                             // 打开文件,没有文件自动创建,‘w’为只写 模式 
    {
    printf("文件打开错误!\n");                                                  //检查文件打开状态,打开不成功则提示 
    exit(0);    
    }
    for(i=0;i<renshu;i++)
    fwrite(&Tc[i],sizeof(struct Teacher),1,fp);                                //将结构体Tc数据写到文件中 
    fclose(fp);                                                               //关闭文件 

         printf("\n                                               ★数据保存成功 ★               \n\n ");
}
void load()
{                                                                                 //  读入函数       磁盘信息读入到内存
    FILE *fp;                                                                     //定义文件指针 
    int i;
    if((fp=fopen("Tc.txt","r"))==NULL)                                           // 打开文件,,‘r’为只读 
    {                                                                                   
        printf("文件打开错误!\n");                                               //检查文件打开状态,打开不成功则提示 
        exit(0);
    }
    for(i=0;!feof(fp);i++)
    fread(&Tc[i],sizeof(struct Teacher),1,fp);                                  //将文件数据写到结构体Tc[]中 
    fclose(fp);                                                                //关闭文件 

    renshu=i-1;
     printf("\n                                             ★数据读取成功 ★               \n\n ");
}
void wenjiancaidan()                                     //文件操作菜单 
{
        system("cls");                                  //清空屏幕 
   printf("\n\n\b                                          ★文件保存与读取★                                   \n"); 
    printf("                    ★          -------------------------------------------                 ☆\n"); 
    printf("                ☆                                                                      ★\n");
    printf("                  ★                      1.文件保存到磁盘                                ☆\n");
    printf("                ☆                                                                      ★\n");
    printf("                  ★                      2.从磁盘读取文件                                ☆\n");
    printf("                  ☆                                                                      ★\n");
    printf("                  ★                      3.返回主菜单                                    ☆\n");
    printf("                   ☆                                                                      ★\n"); 
    printf("                    ★          -------------------------------------------                 ☆\n"); 
}
void wenjian()                                                    //文件功能主函数 
{
     int t,i;
   wenjiancaidan();
     while (1)
    {  printf("\n                          ★请选择您的操作: "); 
         scanf("%d",&t);
       if (t==3) break;
        switch (t)
        {  
            case 1: save();  getchar(); break; 
            case 2: load();getchar(); break;
            
            default:printf("\n                                      ★操作有误!! ★\n");getchar();
            
        }
        
    }
    
        system("cls"); 
            caidan();
} 
void anquancaidan()                                                                         //信息安全及权限管理菜单 
{      system("cls");                                                                         //清空屏幕 
   printf("\n\n\b                                          ★信息安全及权限管理★                                   \n"); 
    printf("                    ★          -------------------------------------------                 ☆\n"); 
    printf("                ☆                                                                      ★\n");
    printf("                  ★                      1.功能权限设置                                  ☆\n");
    printf("                ☆                                                                      ★\n");
    printf("                  ★                      2.修改密码                                      ☆\n");
    printf("                  ☆                                                                      ★\n");
    printf("                  ★                     3.返回主菜单                                     ☆\n");
    printf("                   ☆                                                                      ★\n"); 
    printf("                    ★          -------------------------------------------                 ☆\n"); 
     
} 
void anquan_1()                                                                                 // 1.功能权限设置  
{  int a;
    printf("\n\n");
    printf("     |  1.录入教师信息               5.统计信息              |\n");
    printf("     |  2.浏览所有教师信息           6. 按条件排序           |\n");
    printf("     |  3.按条件查询信息             7.信息安全及权限管理    |\n");
    printf("     |  4.修改教师信息               8.文件保存与读取        |\n");
                     printf("                                ☆ 输入9返回上一级  ☆                                     \n"); 
                while(1)
                {    
                   printf("--------------------------------------------------------------------------------------\n");
                    printf("  请输入需要设置的功能序号(按9返回):");
                    scanf("%d",&a);
                    if(a==9) break;
                    printf("\n  权限设置为(0为关,1为开):");
                    scanf("%d",&anquan[a]);
                    printf("                                     ★ 设置成功  ★                                     \n");
                    getchar(); 
                }
}
void xiugaimima()                                                      //修改密码   
{  int t;
     printf("初始秘密为:88888888\n");
     printf("    输入1返回菜单,输入其他建进行修改密码\n");
     scanf("%d",&t);
     if(t==1) {} 
     else { printf("    请输入新密码:\n");
        scanf("%d",&mima); 
         printf("                                     ★ 修改成功  ★                                     \n");
     
     } 
    
}
int anquangongneng(int x)                                               //权限管理功能实现函数 
{  int shurumima;
      if(anquan[x]==1){
           printf("请输入密码:");
           scanf("%d",&shurumima);
               if (shurumima==mima){ printf("密码正确");return 1;    }
               else {  printf("密码错误"); return 0; }
    }
    else return 1;
    
} 
void anquan_()                                                        //信息安全及权限管理主函数 
{  int t; 
    anquancaidan();
        while (1)
    {  
        printf("\n                          ★请选择您的操作: "); 
        scanf("%d",&t);
        if(t==3) break;
        switch (t)
        {
            case 1: anquan_1();getchar(); break;
            case 2: xiugaimima(); getchar(); break;
                default: printf("\n                                      ★操作有误!! ★\n"); getchar();
        }
    }
    getchar();
        system("cls"); 
            caidan();
}


void paoxucaidan()                                                     //排序函数菜单 
{
         system("cls");                                                //清空屏幕 
   printf("\n\n\n                                            ★按条件排序选项★                                   \n\n"); 
    printf("                    ★          -------------------------------------------                   ☆\n"); 
    printf("                ☆                                                                        ★\n");
    printf("                  ★                      1.按教师号排序                                    ☆\n");
    printf("                ☆                      2.按年龄排序                                      ★\n");
    printf("                  ★                      3.按工资排序                                      ☆\n");
    printf("                  ☆                      4.返回主菜单                                      ★\n");
    printf("                  ★                                                                        ☆\n");
    printf("                   ☆                                                                        ★\n"); 
    printf("                    ★          -------------------------------------------                   ☆\n"); 
    
}
void paixu_1()
                                                                         //按条件排序---------1.按教师号排序
{  int i,j;
 struct Teacher t[2];
    for(i=0;i<renshu-1;i++)
    {    for(j=0;j<renshu-1-i;j++){
          if(Tc[j].Num>Tc[j+1].Num) { t[1]=Tc[j];Tc[j]=Tc[j+1];Tc[j+1]=t[1]; }
         }
        
    }
}
void paixu_2()                                                           //按条件排序--------- 2.按年龄排序   
{  int i,j;
 struct Teacher t[2];
    for(i=0;i<renshu-1;i++)
    {    for(j=0;j<renshu-1-i;j++){
          if(Tc[j].Age>Tc[j+1].Age) { t[1]=Tc[j];Tc[j]=Tc[j+1];Tc[j+1]=t[1]; }
         }
        
    }
}
void paixu_3()                                                               //按条件排序---------  3.按工资排序    
{  int i,j;
 struct Teacher t[2];
    for(i=0;i<renshu-1;i++)
    {    for(j=0;j<renshu-1-i;j++){
          if(Tc[j].money>Tc[j+1].money) { t[1]=Tc[j];Tc[j]=Tc[j+1];Tc[j+1]=t[1]; }
         }
        
    }
}
void paixu()                                                                //排序功能主函数 
{ int t,i;
    paoxucaidan();
     while (1)
    {  printf("\n                          ★请选择您的操作: "); 
         scanf("%d",&t);
       if (t==4) break;
        switch (t)
        {  
            case 1: paixu_1(); getchar();break; 
            case 2: paixu_2();getchar();break;
            case 3: paixu_3();getchar();break;
            
                default:printf("\n                                      ★操作有误!! ★\n");getchar();
            
        }
    
        printf("---------------------------------------排序结果:---------------------------------------------------\n");
        for (i=0;i<renshu;i++)
        {
        printf("  第%d位教师信息:\n",i+1);
        printf("教师号  姓名    性别  年龄    电话     工资    职称    课程名称    班级数\n");
        printf("%5d%9s%5s%5d%11d%10d%9s%9s%9d\n",Tc[i].Num,Tc[i].Name,Tc[i].Sex,Tc[i].Age,Tc[i].dianhua,Tc[i].money,Tc[i].zhicheng,Tc[i].Course,Tc[i].ClassNum);
        
        }
            printf("\n---------------------------------☆所有信息已显示,按回车上一级☆-------------------------------\n");  
        
   getchar();
    }
    
   getchar();
   system("cls"); 
            caidan();
} 

void tongjicaidan()                                                                    //统计函数菜单 
{
           system("cls");                                                              //清空屏幕 
   printf("\n\n\n                                                  ★统计信息选项★                                   \n\n"); 
    printf("                    ★              -------------------------------------------               ☆\n"); 
    printf("                ☆                                                                        ★\n");
    printf("                  ★                      1.统计工资的平均值、最大最小值                    ☆\n");
    printf("                ☆                                                                        ★\n");
    printf("                  ★                      2.统计年龄的平均值、最大最小值                    ☆\n");
    printf("                  ☆                                                                        ★\n");
    printf("                  ★                      4.返回主菜单                                      ☆\n");
    printf("                   ☆                                                                        ★\n"); 
    printf("                    ★              -------------------------------------------               ☆\n"); 
    
}




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_TEACHERS 100

// 定义课程结构体
typedef struct {
    char name[20]; // 课程名称
    char semester[10]; // 开课学期
    char nature[10]; // 课程性质(必修/限选课)
    char effect[10]; // 教学效果
} Course;

// 定义教师结构体
typedef struct {
    char id[20]; // 职工号
    char name[20]; // 姓名
    char title[20]; // 职称
    char sex[10]; // 性别
    Course course[2]; // 主讲课程
    int score; // 教学效果综合评分
} Teacher;

// 定义教师信息管理系统结构体
typedef struct {
    Teacher teachers[MAX_TEACHERS]; // 教师信息数组
    int count; // 教师数量
} TeacherSystem;

// 输入功能
void input(TeacherSystem* system) {
    while (1) {
        int n;
        printf("请输入要输入的教师人数(最多100人):");
        scanf("%d", &n);
        if (n <= 0 || n > MAX_TEACHERS) {
            printf("输入有误,请重新输入!\n");
            continue;
        }
        printf("请依次输入每位教师的信息:\n");
        for (int i = 0; i < n; i++) {
            Teacher* teacher = &system->teachers[system->count];
            printf("职工号:");
            scanf("%s", teacher->id);
            printf("姓名:");
            scanf("%s", teacher->name);
            printf("职称:");
            scanf("%s", teacher->title);
            printf("性别:");
            scanf("%s", teacher->sex);
            for (int j = 0; j < 2; j++) {
                printf("主讲课程%d:\n", j+1);
                printf("  课程名称:");
                scanf("%s", teacher->course[j].name);
                printf("  开课学期:");
                scanf("%s", teacher->course[j].semester);
                printf("  课程性质(必修/限选课):");
                scanf("%s", teacher->course[j].nature);
                printf("  教学效果:");
                scanf("%s", teacher->course[j].effect);
            }
            printf("教学效果综合评分:");
            scanf("%d", &teacher->score);
            system->count++;
        }
        break;
    }
}

// 显示功能
void display(const TeacherSystem* system) {
    printf("职工号\t姓名\t职称\t性别\t主讲课程1\t\t\t\t\t主讲课程2\t\t\t\t\t教学效果综合评分\n");
    for (int i = 0; i < system->count; i++) {
        const Teacher* teacher = &system->teachers[i];
        printf("%s\t%s\t%s\t%s\t%s(%s,%s,%s)\t%s(%s,%s,%s)\t%d\n",
               teacher->id, teacher->name, teacher->title, teacher->sex,
               teacher->course[0].name, teacher->course[0].semester, teacher->course[0].nature, teacher->course[0].effect,
               teacher->course[1].name, teacher->course[1].semester, teacher->course[1].nature, teacher->course[1].effect,
               teacher->score);
    }
}

// 查找功能
void search(const TeacherSystem* system) {
    char keyword[20];
    printf("请输入要查找的关键字(姓名或课程名称):");
    scanf("%s", keyword);
    int found = 0;
    for (int i = 0; i < system->count; i++) {
        const Teacher* teacher = &system->teachers[i];
        if (strcmp(teacher->name, keyword) == 0 ||
            strcmp(teacher->course[0].name, keyword) == 0 ||
            strcmp(teacher->course[1].name, keyword) == 0) {
            printf("%s\t%s\t%s\t%s\t%s(%s,%s,%s)\t%s(%s,%s,%s)\t%d\n",
               teacher->id, teacher->name, teacher->title, teacher->sex,
               teacher->course[0].name, teacher->course[0].semester, teacher->course[0].nature, teacher->course[0].effect,
               teacher->course[1].name, teacher->course[1].semester, teacher->course[1].nature, teacher->course[1].effect,
               teacher->score);
            found = 1;
        }
    }
    if (!found) {
        printf("没有找到符合条件的教师!\n");
    }
}

int main() {
    TeacherSystem system = {0};
    int option;
    while (1) {
        printf("\n教师信息管理系统:\n");
        printf("1. 输入教师信息\n");
        printf("2. 显示教师信息\n");
        printf("3. 查找教师信息\n");
        printf("0. 退出程序\n");
        printf("请选择功能:");
        scanf("%d", &option);
        switch (option) {
            case 1:
                input(&system);
                break;
            case 2:
                display(&system);
                break;
            case 3:
                search(&system);
                break;
            case 0:
                printf("程序已退出!\n");
                return 0;
            default:
                printf("输入有误,请重新选择功能!\n");
        }
    }
}

设计结构体,函数列出来:

void input() {
    // 输入若干条记录
}

void display() {
    // 显示全部教师记录
}

void search() {
    // 按照教师的姓名或课程名称查找教师的相关记录,并显示
}

void sort(int type) {
    // 按照职工号或者教学效果综合评分由高至低进行排序
}

void insert() {
    // 插入一条教师记录
}

void change() {
    // 按照职工号修改一条教师记录
}

void delete() {
    // 按照教师的姓名删除一条教师记录
}

可以参考:https://peakchen.blog.csdn.net/article/details/131407519?spm=1001.2014.3001.5502