使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘辅入信息;运行过程中如添加或捌除记录时也可对文件进行存取:退出前可选择将信息保存到文件中。系统功能可根据情况自行分析,建议系统功能如下:
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、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、作业代写、安装包资源发送或安装、软件使用指导等服务。
我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。