题目如下

教师信息包括教师号、姓名、性别、年龄、学历、职称、工资、住址、电话等(教师号不重复)。试设计一教师信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)教师信息录入功能--输入
(3)教师信息删除功能
(4)教师信息浏览功能 --输出
(5)查询和排序功能:(至少一种查询方式) --算法
 按教师号查询
 按职称查询等
要求:
(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立的子功能。
(2)程序运行时,首先进行口令检查,再显示菜单。并能根据菜单调用相应的函数功能。
口令程序段的功能要求:
《1》提示用户输入一个口令。
《2》用户输入口令后,若口令对,则提示用户通过,可执行后续程序;否则不通过。
《3》可对用户的口令输入进行次数限制(如:重复输入3次都不对),则自动退出系统。
(3)显示数据时,一页显示不下,可分页显示。


我是个菜鸟,本着相互学习的目的, 我将我那拙劣的代码发到这里,给几年后的自己看,有问题还请网友多多指出。未来的自己回过头来看的时候,就当是个笑话吧。

代码优化了吗?没有,所以有很多冗长且无意义的语句。并且!!!变量名的命名很不明不白。
还有一件很致命的缺陷,我没有写注释。

好了,废话少说,上代码。

再补充一句,我这里有一个简单的登录函数,但我在main函数那里注释掉了。如果需要看看效果的话可以自行去掉注释。密码就在Login函数里,去找吧,我把所有的都放在那里了。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int man=0;
struct Teacher
{int idnum;//教师号 char name[15];//姓名 char sex[5];//性别 int age;//年龄 char xueli[10];//学历 char zhicheng[10];//职称 float income;//工资char where[25];//地址 char tel[13];//电话
}T[51];int count=0; void input()
{FILE *fp;int i=count;system("cls");if(i>=51){printf("数据已爆满");return;}int L,id;printf("请输入\n");printf("教师号: ");scanf("%d",&id);L=location(id);int Max=0;for(;L!=-1&&Max<3;Max++){ printf("教师号重复, 请重新输入(你还有%d次输入机会): ",3-Max);scanf("%d",&id);L=location(id);}if(Max>2)return;T[i].idnum=id;printf("姓名: ");scanf("%s",T[i].name);printf("性别: ");scanf("%s",T[i].sex);printf("年龄: ");scanf("%d",&T[i].age);printf("学历: ");scanf("%s",T[i].xueli);printf("职称: ");scanf("%s",T[i].zhicheng);printf("地址: ");scanf("%s",T[i].where);printf("电话: ");scanf("%s",T[i].tel);printf("工资: ");scanf("%f",&T[i].income);fp=fopen("teacher.bat","ab+");fwrite(&T[i],sizeof(struct Teacher),1,fp);fclose(fp);count++;
}int location(int id)
{int i;for(i=0;i<count;i++){if(T[i].idnum==id)return i;}return -1;
} void Delete()
{printf("请输入要删除教师的教师号\n");int id,L;scanf("%d",&id);L=location(id);if(L==-1){printf("未找到该教师号\n");system("pause");return;}int i;count--;for(i=L;L<count;L++){T[i]=T[i+1];}FILE *fp1,*fp2;//fp1=fopen("teacher.bat","r+");fp2=fopen("temp.bat","a+");for(i=0;i<count;i++){fwrite(&T[i],sizeof(struct Teacher),1,fp2);}fclose(fp2);remove("teacher.bat");                rename("temp.bat", "teacher.bat");printf("删除完成 :)");system("pause");
}void showtimE()
{if(count==0)printf("无数据\n"); int i;printf("人数统计: %d\n",count); for(i=0;i<count;i++){printf("序号:%-2d  教师号:%d  姓名:%s  性别:%s  年龄:%d  学历:%s  \n\t 职称:%s  工资:%.2f  地址:%s  电话:%s\n",i+1,T[i].idnum,T[i].name,T[i].sex,T[i].age,T[i].xueli,T[i].zhicheng,T[i].income,T[i].where,T[i].tel);}
}void Change()
{printf("1.教师号 2.姓名 3.性别 4.年龄 5.学历 6.职称 7.地址 8.电话 9.工资\n");printf("请选择需要修改的选项:");char error[10];int in;scanf("%s",error);for(in=0;57<error[0]||error[0]<48||strlen(error)!=1;){printf("输入有误,重新输入\n");scanf("%s",error);}in=error[0]-48;printf("请输入要修改的教师编号: "); int id;scanf("%d",&id);while(location(id)==-1){printf("未找到该教师编号,请重新输入\n");scanf("%d",&id);};id=location(id);switch(in){case 1: {int Max=0;int new_id,L;//printf("139count=%d\n",count); printf("请输入教师号: ");scanf("%d",&new_id);L=location(new_id);for(;Max!=2&&L!=-1;Max++){printf("教师号重复, 请重新输入(你还有%d次输入机会): ",2-Max);scanf("%d",&new_id);L=location(new_id);}if(Max==2)return;T[id].idnum=new_id;break;}case 2: {printf("请输入姓名: ");scanf("%s",T[id].name);break;}case 3: {printf("请输入性别: ");scanf("%s",T[id].sex); break;}case 4: {printf("请输入年龄: ");scanf("%d",&T[id].age); break;}case 5: {printf("请输入学历: ");scanf("%s",T[id].xueli); break;}case 6: {printf("请输入职称: ");scanf("%s",T[id].zhicheng); break;}case 7: {printf("请输入地址: ");scanf("%s",T[id].where); break;}case 8: {printf("请输入电话: ");scanf("%s",T[id].tel); break;}case 9: {printf("请输入工资: ");scanf("%f",&T[id].income); break;}}FILE *fp1,*fp2;int i;fp2=fopen("temp.bat","a+");for(i=0;i<count;i++){fwrite(&T[i],sizeof(struct Teacher),1,fp2);}fclose(fp2);remove("teacher.bat");                rename("temp.bat", "teacher.bat");printf("修改完毕\n");
}void S1()
{printf("请输入需要查询的教师号: ");int id,L;scanf("%d",&id);L=location(id); if(L==-1)printf("未查询到该教师号\n");else {int i=L;printf("教师号:%d  姓名:%s  性别:%s  年龄:%d  学历:%s  \n\t 职称:%s  工资:%.2f  地址:%s  电话:%s\n",T[i].idnum,T[i].name,T[i].sex,T[i].age,T[i].xueli,T[i].zhicheng,T[i].income,T[i].where,T[i].tel);}system("pause");
}void S2()
{printf("请输入需要查询的职称: ");char a[10];scanf("%s",a);int i,key=-1;for(i=0;i<count;i++){key=strcmp(a,T[i].zhicheng);if(key==0)printf("教师号:%d  姓名:%s  性别:%s  年龄:%d  学历:%s  \n\t 职称:%s  工资:%.2f  地址:%s  电话:%s\n",T[i].idnum,T[i].name,T[i].sex,T[i].age,T[i].xueli,T[i].zhicheng,T[i].income,T[i].where,T[i].tel);}if(key==-1){printf("未找到该职称\n"); system("pause");return; }system("pause");
}void Search()
{system("cls");int key;getchar();int now=0;do{printf("请选择你需要查询的项目: 1:教师号   2:职称\n");scanf("%d",&key);getchar();switch(key){case 1:S1();now=1;break;case 2:S2();now=1;break;default:printf("输入有误,请重新输入\n");system("pause"); }}while(now==0);
}void show(int a[])
{int i;for(i=0;i<count;i++){printf("%d  ",a[i]);}printf("\n");
}void SL(int a[])
{int i,j,temp;for(i=0;i<count-1;i++)for(j=0;j<count-1-i;j++){if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf("降序情况如下:\n");show(a);
}void SR(int a[])
{int i,j,temp;for(i=0;i<count-1;i++)for(j=0;j<count-1-i;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf("升序情况如下:\n");show(a);
} void S_age()
{int age[count];int i,ab,now;for(i=0;i<count;i++){age[i]=T[i].age;}do{printf("请选择:1.升序  2.降序\n");scanf("%d",&ab);getchar();switch(ab){case 1:SR(age);now=1;break;case 2:SL(age);now=1;break;default:printf("输入有误,请重新输入\n");system("pause"); }}while(now==0);
}void S_id()
{int id[count];int i,ab,now;for(i=0;i<count;i++){id[i]=T[i].idnum;}do{printf("请选择:1.升序  2.降序\n");scanf("%d",&ab);getchar();switch(ab){case 1:SR(id);now=1;break;case 2:SL(id);now=1;break;default:printf("输入有误,请重新输入\n");system("pause"); }}while(now==0);
}void Sort()
{system("cls");int key;getchar();int now=0;do{printf("请选择你需要排序的项目: 1:年龄   2:教师号\n");scanf("%d",&key);getchar();switch(key){case 1:S_age();now=1;break;case 2:S_id();now=1;break;default:printf("输入有误,请重新输入\n");system("pause"); }}while(now==0);
}int Login()
{int n=0;int i=0;char name[10];char mima[]={"123456"};do{system("cls");printf("***********************\n");printf("*                     *\n");printf("*                     *\n");printf("*   请输入登录口令:  *\n");scanf("%s",&name);n++;i=strcmp(name,mima);if(i!=0){printf("口令错误,你还有%d次机会\n\n",3-n);system("pause");}else {printf("*  匹配成功, 登陆成功 *\n");printf("*                     *\n");printf("*                     *\n");printf("***********************\n");system("pause");return 1;}}while(n<3);return 0;
}void whatyouC()
{system("cls");printf("*********************************************\n");printf("*             教师信息管理系统              *\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("*************   工作次数 %d 次  **************\n",man);man++;
}int DoyouLike()
{int in;char error[20];printf("请输入一个数字指令:");scanf("%s",error);for(in=0;57<error[0]||error[0]<48||strlen(error)!=1;){printf("输入有误,重新输入\n");scanf("%s",error);}in=error[0]-48;switch(in){case 0:return 0;case 1:input();break;case 2:Delete();break;case 3:showtimE();system("pause");break;case 4:Search();break;case 5:Change();system("pause");break;case 6:Sort();system("pause");break;case 7:break;default:{printf("输入有误,请重新输入\n");system("pause");break;}}return 1;
}void hennsinn()
{int key=1;do{whatyouC();key=DoyouLike();}while(key!=0);
}void inti()
{FILE *fp;int i; fp=fopen("teacher.bat","ab+");getc(fp);if(feof(fp));else{rewind(fp);}for(i=0;feof(fp)==0;i++){fseek(fp,sizeof(struct Teacher)*count,SEEK_SET);fread(&T[i],sizeof(struct Teacher),1,fp);count++;getc(fp);}fclose(fp);
}int main()
{//int keykey=Login();//if(keykey==0)return 0;inti();//初始化, 读取文件数据 hennsinn();return 0;
}

看完后想打我的话记得评论一句。
感谢阅读

时间20200103

教师信息管理系统设计(C语言)相关推荐

  1. 诊所信息管理系统设计C语言,医院管理信息系统设计

    内容介绍 医院管理信息系统设计 页数:31 字数:13949 摘 要 医院信息系统(Hospital Information System,简称HIS),是指利用电子计算机和通信设备,为医院所属各部门 ...

  2. 学生学籍信息管理系统设计c语言,c语言学籍信息管理系统设计

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 使用下面的数据设计一个简单的学籍管理系统. 学生基本信息文件(A.TXT)极其内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87 ...

  3. c语言课程设老师信息管理,学生和教师信息管理系统C语言课程设计

    学生和教师信息管理系统C语言课程设计 1目 录一.课题内容 -------------------2二.总体设计 -------------------51.系统要求 ---------------- ...

  4. 计算机信息管理系统设计原理探究,计算机信息管理系统设计原理探究

    盛巍 摘 要:在计算机信息技术发展和应用速度不断提升的背景之下,我国社会各个行业的计算机信息管理系统需求不断提升.人们可以通过计算机信息管理系统收集自己需要的信息资料,并对数据信息进行分析,在各项决策 ...

  5. C#毕业设计——基于C#+asp.net+sqlserver的教师档案信息管理系统设计与实现(毕业论文+程序源码)——教师档案信息管理系统

    基于C#+asp.net+sqlserver的教师档案信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver的教师档案信息管理系统设计与实现, ...

  6. 河南理工大学c语言报告封面,河南理工大学图书信息管理系统设计_纯c语言课程设计.doc...

    河南理工大学图书信息管理系统设计_纯c语言课程设计 C语言课程设计报告 题 目:图书信息管理系统设计 河南理工大学计算机学院 目 录 第一章 题目与要求 1.1 问题提出1 1.2 本系统涉及的知识点 ...

  7. C语言课设:图书信息管理系统设计

    观前注意:复制粘贴没关系请点个赞,局部有误但无影响总体.本文只设计C语言基础语法.因为历史遗留问题,时间冗长,笔者现已不想修改此文,抱歉.请"拿来主义者"自行修改调整代码. 图书信 ...

  8. c语言按专业查找学籍信息,C语言学生学籍信息管理系统设计0001

    <C语言学生学籍信息管理系统设计0001>由会员分享,可在线阅读,更多相关<C语言学生学籍信息管理系统设计0001(9页珍藏版)>请在人人文库网上搜索. 1.精品文档学生学籍信 ...

  9. c语言图书信息管理系统报告,c语言实习报告--图书信息管理系统设计

    <c语言实习报告--图书信息管理系统设计>由会员分享,可在线阅读,更多相关<c语言实习报告--图书信息管理系统设计(16页珍藏版)>请在皮匠网上搜索. 1.C 语 言 课 程 ...

最新文章

  1. Mybatis使用接口开发
  2. 5、ResultSet结果集
  3. AI时代的全链路监控,阿里工程师怎么做?
  4. 初识空中计算(Over-the-Air Computation)
  5. 【Scikit-Learn 中文文档】支持向量机 - 监督学习 - 用户指南 | ApacheCN
  6. R语言加载UCI糖尿病数据集、并启动Rattle GUI、调用party包中的ctree函数构建条件推理树模型、Rattle混淆矩阵、使用R自定义编写函数通过混淆矩阵计算特异度、敏感度、PPV、NPV
  7. 注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd
  8. 【看表情包学Linux】插叙:实现简易的 Shell | 通过内建命令实现路径切换 | 再次理解环境变量
  9. 追风筝的人 第一章
  10. Fix Self Tanner Mistakes
  11. android app trifit_Android人脸识别app——基于Face++,MVP+Retofit+RxJava+Dagger高度解耦
  12. VS Code安装Python3开发环境
  13. R绘图案例|基于分面的面积图
  14. python描述分析常用统计量(最大值、最小值、平均值、众数、中位数、四分位数、异众比率、极差、离散系数、偏态系数、峰态系数)
  15. 【Unity3D】如何打开外部 exe 程序
  16. 劲舞团登陆不上消息服务器,《劲舞团》在内的多款产品服务器无法登陆
  17. 前后端分离下微信登录高并发问题
  18. 闪客工具:ghostcat
  19. 《团队-排课软件-成员简介及分工》
  20. 更改html网页的图标大小吗,html-使用path元素调整svg图标的大小

热门文章

  1. Hexo+GitHub 博客部署 个人踩坑记录(一)
  2. https/ssl总结
  3. [2022年]解决Centos8 yum 官方源下线后无法使用问题(yum更换最新阿里源)
  4. 中国科学技术史论文计算机,选修课《中国科学技术史》期末论文
  5. Problem H 编写函数atof()
  6. ArcGISPro 批量插入层图并将图层符号设置为指定目标图层的样式
  7. 程序员突破内卷大法:软件架构师成长之路(干货系列,说人话接地气)
  8. 如何将ArcGis进行中英文切换
  9. MTK驱动---平台待机功耗分析流程
  10. 数据库工程师四级学习笔记(2) ||纸上得来终觉浅