教师信息管理系统C语言

使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘辅入信息;运行过程中如添加或捌除记录时也可对文件进行存取:退出前可选择将信息保存到文件中。系统功能可根据情况自行分析,建议系统功能如下:

1.教师信息查询(根据姓名或只根据姓氏查询)

2.教师信息添加

3、教师信息修改

4、教师信息删除

5、教师信息排序(按姓名或按办公地点)

6、教师信息积分计算

7、按积分进行教师信息排序

想把下面的代码删减为前五个题的要qiu

#include<stdio.h>
#include<string.h>
#include <windows.h>
#include<stdlib.h>
#define N 300                        //最大总人数
#define BUMEN 7                      //部门总数
#define _CRT_SECURE_NO_WARNINGS
struct Teacher                       //定义结构体
{
    int Num;                          //编号 -------教师号
    char Name[25];                      //姓名 
    char Sex[20];                     //性别 
    int Age;                          //年龄
    char dianhua[12];                 //电话 
    int money;                        //工资 
    char zhicheng[25];                //职称 
    int time;                         //工作时间
    char bumen[50];                  //所属部门               
}Tc[N];      //定义教师结构体数组名

#define LEN sizeof(struct Teacher)            //结构体占的字节数   
int renshu = 0;                             //全局变量_总人数

void hello();
void caidan();
void jieshu();
void weihu();
void zengjia();
void xiugao();
void shangchu();
void tongji();
void chaxun();
void chaxun_1();
void chaxun_2();
void chaxun_3();
void paixu();
void paixu_1();
void paixu_2();
void save_load();
void save();
void load();

int main()
{
    int n;            //操作选择
    system("title 教师信息管理系统");  //改变标题
    hello();      //开始界面
    while (1)
    {
        system("cls");//清屏
        caidan();     //菜单界面
        scanf_s("%d", &n);   //输入选择
        system("cls");   //清除菜单,展示选择的内容 
        switch (n)
        {
        case 0:

            save();    //退出系统时保存文件
            jieshu();   //退出画面
        case 1:
            weihu();   //维护(增加、修改、删除)
            break;
        case 2:
            tongji();  //统计(根据部门名进行分类)
            break;
        case 3:
            chaxun();  //查询(姓名、教师号、工作时间)
            break;
        case 4:
            paixu();  //排序(教师号、部门名姓名)
            break;
        case 9:
            save_load();  //文件读写
            break;
        default:    //输入错误时
            printf("\n\n\n\n\t请输入正确的选项!!!\n");
            system("pause");
        }
    }
    return 0;
}

void hello()  //开始
{
    printf("时间:");
    system("date/t");
    printf(" ----------------------------------------------------\n");
    printf("\n欢迎来到教师信息管理系统\n\n");
    printf(" ----------------------------------------------------\n");
    system("pause");
}
void caidan()  // 主菜单
{
    printf("时间:");
    system("date/t");
    printf(" ----------------------------------------------------\n");
    printf(" **********************************************************************\n");
    printf(" *                          教师信息管理系统                          *\n");
    printf(" *                                                                    *\n");
    printf(" *         1、维护教师信息                 2、统计教师信息            *\n");
    printf(" *                                                                    *\n");
    printf(" *         3、查询教师信息                 4、排序并查看教师信息      *\n");
    printf(" *                                                                    *\n");
    printf(" *          ----------------------------------------------            *\n");
    printf(" *         0、退出系统                     9、文件保存与读取          *\n");
    printf(" *                                                                    *\n");
    printf(" **********************************************************************\n");
    printf("请选择您的操作:");
}

void weihu()               //维护教师信息_菜单
{
    int m;    //操作选择
    while (1)
    {
        system("cls");   //完成一次操作后清屏
        printf("时间:");
        system("date/t");
        printf(" ----------------------------------------------------\n");
        printf(" **********************************************************************\n");
        printf(" *            ***************维护教师信息***************              *\n");
        printf(" *                                                                    *\n");
        printf(" *                         1、增加教师信息                            * \n");
        printf(" *                         2、修改教师信息                            *\n");
        printf(" *                         3、删除教师信息                            *\n");
        printf(" *                                                                    *\n");
        printf(" *          ----------------------------------------------            *\n");
        printf(" *                         0、返回上一菜单                            *\n");
        printf(" *                                                                    *\n");
        printf(" **********************************************************************\n");
        scanf_s("%d", &m);
        switch (m)
        {
        case 0:
            return;  //返回上一菜单
        case 1:
            zengjia();
            break;
        case 2:
            xiugao();
            break;
        case 3:
            shangchu();
            break;
        default:
            printf("\n请输入正确选项!!!\n");
            system("pause");   //输入错误,冻结屏幕
        }
    }
}


void zengjia()        //  增加教师信息
{

    int i, n;     // n:新增人数
    printf("请输入新增人数:");
    scanf_s("%d", &n);
    if (n == 0)
        return;
    for (i = renshu; i < renshu + n; i++)
    {
        printf("----------------------------------------------------------------------------------------------------\n");
        printf("请输入教师 %d的\n教师号 姓名 性别 年龄 电话 工资 职称 所属部门 工作时间:(空格分隔)\n", i + 1);
        scanf_s("%d%s%s%d%s%d%s%s%d", &Tc[i].Num, Tc[i].Name,128, Tc[i].Sex,128, &Tc[i].Age, Tc[i].dianhua,128, &Tc[i].money, Tc[i].zhicheng, 128,Tc[i].bumen,128, &Tc[i].time);
    }
    renshu += n;    //总人数 == 原本人数 + 新增人数
    printf("\n--------------------------------☆输入结束,返回上一菜单☆--------------------------------------\n");
    system("pause");    //操作结束,冻结屏幕
}
void xiugao()             // 修改教师信息
{
    int i, n, t;  // t:判断输入教师号是否正确
    while (1)
    {
        printf("请输入需要修改的教师号(输入0结束修改):");
        scanf_s("%d", &n);
        t = 0;      //每次修改教师信息时 t = 0,
        if (n == 0)
            break;
        for (i = 0; i < renshu; i++)
        {
            if (n == Tc[i].Num)
            {
                printf("您要修改的教师信息为:\n");
                printf("教师号  姓名    性别  年龄      电话     工资    职称    所属部门    工作时间\n");
                printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
                t = 1;          //存在该教师,t = 1
                printf("请输入修改后的信息:\n");
                printf("请输入教师 %d的\n教师号 姓名 性别 年龄 电话 工资 职称 所属部门 工作时间:(空格分隔)\n", i + 1);
                scanf_s("%d%s%s%d%s%d%s%s%d", &Tc[i].Num, Tc[i].Name,128,Tc[i].Sex,128, &Tc[i].Age, Tc[i].dianhua,128, &Tc[i].money, Tc[i].zhicheng,128, Tc[i].bumen,128, &Tc[i].time);
            }
        }
        if (t == 0)    //  若t == 0, 表示不存在该教师号
            printf("""\n!!!该教师号为空!!! \n");
    }
}
void shangchu()        //删除教师信息
{
    int i, n, m, t;    // t: 判断输入教师号是否正确
    while (1)
    {
        printf("请输入需要删除的教师号(输入0结束删除):");
        scanf_s("%d", &n);
        t = 0;
        if (n == 0)
            break;
        for (i = 0; i < renshu; i++)
            if (n == Tc[i].Num)
            {
                printf("您要删除的教师信息为:\n");
                printf("教师号  姓名    性别  年龄      电话     工资    职称   所属部门    工作时间\n");
                printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
                t = 1;
            q1:                printf("是否确认删除?\n1、确认删除  2、取消删除\n");
                scanf_s("%d", &m);
                if (m == 2)
                    continue;  //取消删除,跳过该教师,继续循环   
                else if (m == 1)
                {
                    Tc[i] = Tc[renshu - 1]; //用最后一名教师的信息覆盖
                    renshu--;   //确认删除,总人数 - 1,放弃最后一条重复的教师信息
                }
                else
                {
                    printf("请正确输入选项:\n");
                    goto q1;  //输入有误,“goto q1”重新确认是否删除
                }
                if (t == 0)
                    printf("""\n!!!该教师号为空!!! \n");
            }
    }
}
void tongji()    //对教师信息进行统计
{
    int i, j;
    char bu[BUMEN][11] = { "办公室", "实验室", "图书室", "宿舍", "美术室" ,"音乐室", "教务处" };  //以部门分类(该二维数组必须将所有部门包括在内)
    for (j = 0; j < BUMEN; j++)
    {
        printf("部门:%s\n", bu[j]);
        for (i = 0; i < renshu; i++)
        {
            if (strcmp(bu[j], Tc[i].bumen) == 0)  //若该教师部门与之相同,输出该教师信息
            {
                printf("教师号  姓名    性别  年龄      电话     工资    职称   所属部门   工作时间 \n");
                printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
            }
        }
        printf("----------------------------------------------------------------------------------------------------\n");  //分割线
    }
    system("pause");  //操作完成,冻结屏幕
}
void chaxun()
{
    int n;
    while (1)
    {
        system("cls");
        printf("时间:");
        system("date/t");
        printf(" ----------------------------------------------------\n");
        printf(" **********************************************************************\n");
        printf(" *            *******************查 询********************            *\n");
        printf(" *                                                                    *\n");
        printf(" *                         1.按教师号查询                             *\n");
        printf(" *                                                                    *\n");
        printf(" *                         2.按姓名查询                               *\n");
        printf(" *                                                                    *\n");
        printf(" *                         3.按工作时间查询                           *\n");
        printf(" *                                                                    *\n");
        printf(" *          ----------------------------------------------            *\n");
        printf(" *                         0、返回上一菜单                            *\n");
        printf(" *                                                                    *\n");
        printf(" **********************************************************************\n");
        printf("请输入您的选择:");
        scanf_s("%d", &n);
        switch (n)
        {
        case 0:
            return;
        case 1:
            chaxun_1();
            break;
        case 2:
            chaxun_2();
            break;
        case 3:
            chaxun_3();
            break;
        default:
            printf("请正确输入!!!");
            system("pause");
        }
    }
}
void chaxun_1()
{
    int i, hao, b = 0;
    while (1)
    {
        printf("请输入查询的教师号(输入0退出):");
        scanf_s("%d", &hao);
        if (hao == 0)
            return;   //输入0, 退出
        printf("---------------------------------------查询结果:---------------------------------------------------\n");
        for (i = 0; i < renshu; i++)
        {
            if (Tc[i].Num == hao)
            {
                b = 1;
                printf("教师号  姓名    性别  年龄      电话     工资    职称    所属部门    工作时间\n");
                printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
            }
        }
        if (b == 0)
            printf("\n   无匹配教师!! \n");
    }
}
void chaxun_2()                                                                           //按条件查询信息--------- 2.按姓名查询 
{
    int i, t = 0;
    char b[20];
    printf("请输入查询的教师姓名:");
    scanf_s("%s", &b,128);
    printf("---------------------------------------查询结果:---------------------------------------------------\n");
    for (i = 0; i < renshu; i++)
    {
        if (strcmp(Tc[i].Name, b) == 0)
        {
            t = 1;
            printf("教师号  姓名    性别  年龄      电话     工资    职称   所属部门    工作时间\n");
            printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
        }
    }
    if (t == 0)
        printf("\n  无匹配教师!! \n");
    system("pause");
}

void chaxun_3()
{
    int i, time, b = 0;
    printf("请输入查询教师工作时间:");
    scanf_s("%d", &time);
    printf("---------------------------------------查询结果:---------------------------------------------------\n");
    for (i = 0; i < renshu; i++)
    {
        if (Tc[i].time == time)
        {
            b = 1;
            printf("教师号  姓名    性别  年龄      电话     工资    职称   所属部门    工作时间\n");
            printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
        }
    }
    if (b == 0)
        printf("\n   无匹配教师!! \n");
    system("pause");
}
void save_load()      //文件保存和读取
{
    int m;
    printf("时间:");
    system("date/t");
    printf(" ----------------------------------------------------\n");
    printf(" **********************************************************************\n");
    printf(" *            *****************文件读写*****************              *\n");
    printf(" *                                                                    *\n");
    printf(" *                         1、从文件中读取信息                        *\n");
    printf(" *                                                                    *\n");
    printf(" *                         2、保存信息到文件                          *\n");
    printf(" *                                                                    *\n");
    printf(" *          ----------------------------------------------            *\n");
    printf(" *                         0、返回上一菜单                            *\n");
    printf(" *                                                                    *\n");
    printf(" **********************************************************************\n");
    scanf_s("%d", &m);
    switch (m)
    {
    case 1:
        load();
        break;
    case 2:
        save();
        break;
    case 0:
        return;
    }
}
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 ");
    system("pause");
}
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 ");
    system("pause");
}
void paixu()
{
    int m;
    while (1)
    {
        system("cls");                                                //清空屏幕 
        printf("时间:");
        system("date/t");
        printf(" ----------------------------------------------------\n");
        printf(" **********************************************************************\n");
        printf(" *            *********************排 序******************            *\n");
        printf(" *                                                                    *\n");
        printf(" *                         1、按部门、教师名字的拼音排序              *\n");
        printf(" *                                                                    *\n");
        printf(" *                         2、按教师编号排序                          *\n");
        printf(" *                                                                    *\n");
        printf(" *          ----------------------------------------------            *\n");
        printf(" *                         0、返回上一菜单                            *\n");
        printf(" *                                                                    *\n");
        printf(" **********************************************************************\n");
        printf("请输入您的选择:");
        scanf_s("%d", &m);
        switch (m)
        {
        case 1:
            paixu_1();
            break;
        case 2:
            paixu_2();
            break;
        case 0:
            return;
        }
    }
}
void paixu_1()    //按条件排序---------1.按部门、教师名字的拼音顺序排序
{
    int i, j;
    struct Teacher t;
    for (i = 0; i < renshu - 1; i++)
        for (j = 0; j < renshu - 1 - i; j++)
            if (strcmp(Tc[j].bumen, Tc[j + 1].bumen) > 0)
            {
                t = Tc[j];
                Tc[j] = Tc[j + 1];
                Tc[j + 1] = t;
            }
    for (i = 0; i < renshu - 1; i++)
        for (j = 0; j < renshu - 1 - i; j++)
            if (strcmp(Tc[j].Name, Tc[j + 1].Name) > 0)
            {
                t = Tc[j];
                Tc[j] = Tc[j + 1];
                Tc[j + 1] = t;
            }
    printf("按部门、教师名字的拼音顺序排序(总人数:%d):\n", renshu);
    for (i = 0; i < renshu; i++)
    {
        printf("----------------------------------------------------------------------------------------------------\n");
        printf("教师号  姓名    性别  年龄      电话     工资    职称   所属部门    工作时间\n");
        printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
    }
    system("pause");
}
void paixu_2()    //按条件排序---------2.按教师号排序
{
    int i, j;
    struct Teacher t;
    for (i = 0; i < renshu - 1; i++)    //冒泡排序法
        for (j = 0; j < renshu - 1 - i; j++)
            if (Tc[j].Num > Tc[j + 1].Num)
            {
                t = Tc[j];
                Tc[j] = Tc[j + 1];
                Tc[j + 1] = t;
            }
    printf("按教师号排序(总人数:%d):\n", renshu);
    for (i = 0; i < renshu; i++)    //输出排序结果
    {
        printf("----------------------------------------------------------------------------------------------------\n");
        printf("教师号  姓名    性别  年龄      电话     工资    职称    所属部门    工作时间\n");
        printf("%5d%9s%5s%5d%13s%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].bumen, Tc[i].time);
    }
    system("pause");
}

void jieshu()             //结束界面 
{
    system("cls");
    printf("\n\n\n");
    printf("时间:");
    system("date/t");
    printf("\n--------------------------------------------\n\n");
    puts("\n");
    puts(" |                                               |");
    puts(" |                                              |");
    puts(" |     感谢访问教师信息管理系统!欢迎下次再来!    |");
    puts(" |                                               |");
    puts(" |                                               |");
    puts(" |                                               |");
    puts(" |                                               |");
    printf("\n--------------------------------------------\n\n");
    printf("\n系统将在3秒后关闭\n");
    Sleep(3000);   //3秒后关闭
    exit(0);

}
 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。

首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、作业代写、安装包资源发送或安装、软件使用指导等服务。

我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。