版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE42高级语言程序设计课题名称:学生信息管理系统实验报告1设计目的为了方便学校对学生的管理,处理好每个学生的个人信息,加强学校对学生的管理2总体设计组成框架:流程图:查询模块开始开始选择查询方式选择查询方式输入所查学号输入所查学号/姓名信息找到信息找到是输出学生信息是输出学生信息返回主菜单返回主菜单添加模块开始开始添加学生信息添加学生信息返回主菜单录入要添加的学生信息返回主菜单录入要添加的学生信息写入文件写入文件修改模块开始开始输入要修改的学号输入要修改的学号信息是否存在信息是否存在是是修改后的信息修改后的信息保存保存否否写入文件写入文件主菜单主菜单录入模块写入文件输入信息开始写入文件输入信息开始结束结束打印模块关闭文件从文件中读出并显示开始关闭文件从文件中读出并显示开始结束结束排序模块开始开始从文件中读出信息从文件中读出信息输出排序结果年龄/学号输出排序结果年龄/学号选择排序方式结束结束删除模块开始开始输入要删除的学号输入要删除的学号信息找到信息找到删除学生信息信息未找到删除学生信息信息未找到返回主菜单返回主菜单3详细设计(1)头文件,结构体定义及主函数#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM100//数组元素的个数structstu//定义结构体类型{charnum[15];//学号charname[18];//姓名intold;//年龄charsex[10];//性别charbirthday[10];//出生日期charaddr[20];//居住地址chartele[15];//联系电话charemail[20];//邮箱地址charnation[10];//民族};intinput(structstus[]);//输入学生信息voidprint(structstus[],intn);//显示所有信息voidsearchbynum(structstus[],intn);//按学号查询学生信息voidsearchbyname(structstus[],intn);//按姓名查询学生信息voidsearch(structstus[],intn);//学生信息查询方式显示界面intinsert(structstus[],intn);//插入新学生信息voidsave(structstus[],intn);//将输入的学生信息进行保存intload(structstus[]);//从文件中读取学生信息voidmodify(structstus[],intn);//按学号修改学生信息intdel(structstus[],intn);//按学号删除学生信息voidsort(structstus[],intn);//学生信息排序方式显示界面voidsortbynum(structstus[],intn);//按学号对学生信息进行排序voidsortbyold(structstus[],intn);//按年龄对学生信息进行排序intmenu();//菜单函数voidmain(){ structstustudent[M];//定义结构体数组intlength;//保存学生个数for(;;)//无限循环switch(menu())//调用主菜单函数,返回值为整数,作为语句的条件{case1:length=input(student);break;//输入case2:print(student,length);break;//显示信息case3:search(student,length);break;//查找case4:length=insert(student,length);break;//插入case5:modify(student,length);break;//修改case6:length=del(student,length);break;//删除case7:sort(student,length);break;//排序case8:save(student,length);break;//保存case9:length=load(student);break;//读文件case10:printf("退出登录!");return;//如果菜单返回值为10,则结束程序default:printf("输入有误,请输入1-10的数字!\n");}}intmenu(){intchoice;printf("\n学生信息管理系统\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("8保存到文件\n");printf("9打开信息文件\n");printf("10退出\n");printf("***********************************************\n");do{printf("\n请输入您要选择的操作:");scanf("%d",&choice);}while(choice>10||choice<1);//选择项不在1-10之间重新选择returnchoice;//返回选择项,主程序根据返回值调用相应的函数}(2)输入函数intinput(structstus[]){inti,n;printf("\n输入信息的学生个数:");scanf("%d",&n); printf("请输入学生各信息\n");for(i=0;i<n;i++){do{printf("请输入学号:");scanf("%s",s[i].num);if(strlen(s[i].num)>15)printf("inputtoolong");}while(strlen(s[i].num)>15);do{printf("请输入姓名:");scanf("%s",s[i].name);if(strlen(s[i].name)>18)printf("inputtoolong");}while(strlen(s[i].num)>18);printf("输入年龄:");scanf("%d",&s[i].old);printf("输入性别(girl/boy):");scanf("%s",s[i].sex);printf("出生日期输入按年/月/日(97/10/01)格式输入:");scanf("%s",s[i].birthday);printf("输入民族:");scanf("%s",s[i].nation);printf("输入居住地址:");scanf("%s",s[i].addr);do{printf("请输入联系电话:");scanf("%s",s[i].tele);if(strlen(s[i].tele)>15)printf("inputtoolong");}while(strlen(s[i].tele)>15);do{printf("请输入邮箱地址:");scanf("%s",s[i].email);if(strlen(s[i].email)>20)printf("inputtoolong");}while(strlen(s[i].email)>20);printf("\n");}returnn;}(3)输出函数voidprint(structstus[],intn){inti;printf("学生信息如下:\n");printf("\n");printf("学号姓名年龄性别出生日期民族居住地址联系电话邮箱地址\n");printf("\n");for(i=0;i<n;i++){printf("%-16s%-10s%-10d%-10s%-16s%-10s%-11s%-17s%-16s\n",s[i].num,s[i].name,s[i].old,s[i].sex,s[i].birthday,s[i].nation,s[i].addr,s[i].tele,s[i].email); printf("\n"); } getchar();}(4)按学号查询函数voidsearchbynum(structstus[],intn){charnum[15];//存放学号的字符数组inti;printf("请输入学号");scanf("%s",num);//输入待查找的学号for(i=0;i<n;i++)//查找从第一条记录开始,直到最后一条记录为止if(strcmp(num,s[i].num)==0)//待查找的学号与数组中的记录学号比较,相等则显示找到的记录信息{printf("%s的学生信息如下\n",s[i].num);printf("\n");printf("学号姓名年龄性别出生日期民族居住地址联系电话邮箱地址\n");printf("\n"); printf("%-16s%-10s%-10d%-10s%-16s%-10s%-11s%-17s%-16s\n",s[i].num,s[i].name,s[i].old,s[i].sex,s[i].birthday,s[i].nation,s[i].addr,s[i].tele,s[i].email); printf("\n");}printf("\n查询成功\n");}(5)按姓名查询函数voidsearchbyname(structstus[],intn){charname[18];//存放姓名的字符数组inti;printf("请输入姓名");scanf("%s",name);//输入待查找的姓名for(i=0;i<n;i++)//查找从第一条记录开始,直到最后一条记录为止if(strcmp(name,s[i].name)==0)//待查找的姓名与数组中的记录姓名比较,相等则显示找到的记录信息{printf("%s的学生信息如下\n",s[i].name);printf("\n");printf("学号姓名年龄性别出生日期民族居住地址联系电话邮箱地址\n");printf("\n"); printf("%-16s%-10s%-10d%-10s%-16s%-10s%-11s%-17s%-16s\n",s[i].num,s[i].name,s[i].old,s[i].sex,s[i].birthday,s[i].nation,s[i].addr,s[i].tele,s[i].email); printf("\n");}printf("\n查询成功\n");}(6)查询方式选择函数voidsearch(structstus[],intn)//查询方式显示界面{ intm;printf("请选择查询方式\n");printf("**************************************\n");printf("1按学号查询\n");printf("2按姓名查询\n");printf("**************************************\n");printf("\n请输入您的选择:");scanf("%d",&m);switch(m){case1:searchbynum(s,n);break;case2:searchbyname(s,n);break;default:printf("输入有误,请输入1-2的选项!\n");}}(7)插入函数intinsert(structstus[],intn){structstutemp;//新插入记录信息charno[10];//保存插入点位置的学号inti,j;printf("请输入插入点位置(1-%d)",n-1);//输入插入点学号scanf("%s",no);do{//输入插入点各信息printf("请输入学号:");scanf("%s",temp.num);if(strlen(temp.num)>15)printf("inputtoolong");}while(strlen(temp.num)>15);do{printf("请输入姓名:");scanf("%s",);if(strlen()>18)printf("inputtoolong");}while(strlen(temp.num)>18);printf("输入年龄:");scanf("%d",&temp.old);printf("输入性别(girl/boy):");scanf("%s",temp.sex);printf("出生日期输入按年/月/日(97/10/01)格式输入:");scanf("%s",temp.birthday);printf("输入民族:");scanf("%s",temp.nation);printf("输入居住地址:");scanf("%s",temp.addr);do{printf("请输入联系电话:");scanf("%s",temp.tele);if(strlen(temp.tele)>15)printf("inputtoolong");}while(strlen(temp.tele)>15);do{printf("请输入邮箱地址:");scanf("%s",temp.email);if(strlen(temp.email)>20)printf("inputtoolong");}while(strlen(temp.email)>20);for(i=0;i<n;i++){if(strcmp(no,s[i].num)==0){for(j=n-1;j>=i;j--){strcpy(s[j+1].num,s[j].num);strcpy(s[j+1].name,s[j].name);strcpy(s[j+1].sex,s[j].sex);strcpy(s[j+1].addr,s[j].addr);strcpy(s[j+1].birthday,s[j].birthday);strcpy(s[j+1].tele,s[j].tele);strcpy(s[j+1].email,s[j].email);strcpy(s[j+1].nation,s[j].nation);s[j+1].old=s[j].old;}strcpy(s[i].num,temp.num);strcpy(s[i].name,);strcpy(s[i].sex,temp.sex);strcpy(s[i].addr,temp.addr);strcpy(s[i].birthday,temp.birthday);strcpy(s[i].tele,temp.tele);strcpy(s[i].email,temp.email);strcpy(s[i].nation,temp.nation);s[i].old=temp.old;break;//新记录已插入,结束循环}}printf("%s的学生信息已被插入\n",s[i].num);printf("存盘\n");//提示存盘n++;//记录数加1returnn;//返回记录数}(8)删除函数intdel(structstus[],intn){charno[10];//存放要删除记录的学号inti,j;printf("请输入要删除学生的学号");scanf("%s",no);//输入要删除记录的学号for(i=0;i<n;i++){if(strcmp(no,s[i].num)==0){for(j=i+1;j<n;j++){strcpy(s[j-1].num,s[j].num);strcpy(s[j-1].name,s[j].name);strcpy(s[j-1].sex,s[j].sex);strcpy(s[j-1].addr,s[j].addr);strcpy(s[j-1].birthday,s[j].birthday);strcpy(s[j-1].tele,s[j].tele);strcpy(s[j-1].email,s[j].email);strcpy(s[j-1].nation,s[j].nation);s[j-1].old=s[j].old;}break;}}n--;returnn;//记录数减一}(9)修改函数voidmodify(structstus[],intn){charno[15],ch;inti;printf("请输入要修改学生的学号");scanf("%s",no);getchar();//用getchar函数接收回车符,否则,回车将作为下一个字符或字符串变量的输入值for(i=0;i<n;i++)if(strcmp(s[i].num,no)==0)break;if(i>=n)printf("\n没有找到信息\n");else{printf("修改学号(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入学号:");scanf("%s",s[i].num);getchar();}printf("修改姓名(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入姓名:");scanf("%s",s[i].name);getchar();}printf("修改年龄(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入年龄:");scanf("%d",&s[i].old);getchar();}printf("修改性别(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入性别:");scanf("%s",s[i].sex);getchar();}printf("修改民族(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入民族:");scanf("%s",s[i].nation);getchar();}printf("修改出生日期(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入出生日期:");scanf("%s",s[i].birthday);getchar();}printf("修改居住地址(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入居住地址:");scanf("%s",s[i].addr);getchar();}printf("修改联系电话(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入联系电话:");scanf("%s",s[i].tele);getchar();}printf("修改邮箱地址(y/n)?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("输入邮箱地址:");scanf("%s",s[i].email);getchar();}}printf("\n");return;}排序函数voidsort(structstus[],intn){ intm;printf("请选择查询方式\n");printf("**************************************\n");printf("1按学号排序\n");printf("2按年龄排序\n");printf("**************************************\n");printf("\n请输入您的选择:");scanf("%d",&m);switch(m){case1:sortbynum(s,n);break;case2:sortbyold(s,n);break;default:printf("输入有误,请输入1-2的选项!\n");}}按年龄排序;voidsortbyold(structstus[],intn){inti,j;structstutemp;for(i=1;i<n;i++){for(j=0;j<n-i;j++)if(s[j].old>s[j+1].old){strcpy(temp.num,s[j].num);strcpy(,s[j].name);strcpy(temp.sex,s[j].sex);strcpy(temp.addr,s[j].addr);strcpy(temp.birthday,s[j].birthday);strcpy(temp.tele,s[j].tele);strcpy(temp.email,s[j].email);strcpy(temp.nation,s[j].nation);temp.old=s[j].old;strcpy(s[j].num,s[j+1].num);strcpy(s[j].name,s[j+1].name);strcpy(s[j].sex,s[j+1].sex);strcpy(s[j].addr,s[j+1].addr);strcpy(s[j].birthday,s[j+1].birthday);strcpy(s[j].tele,s[j+1].tele);strcpy(s[j].email,s[j+1].email);strcpy(s[j].nation,s[j+1].nation);s[j].old=s[j+1].old;strcpy(s[j+1].num,temp.num);strcpy(s[j+1].name,);strcpy(s[j+1].sex,temp.sex);strcpy(s[j+1].addr,temp.addr);strcpy(s[j+1].birthday,temp.birthday);strcpy(s[j+1].tele,temp.tele);strcpy(s[j+1].email,temp.email);strcpy(s[j+1].nation,temp.nation);s[j+1].old=temp.old;}}printf("排序成功!");return;}b)按学号排序
voidsortbynum(structstus[],intn){inti,j;structstutemp;for(i=1;i<n;i++){for(j=0;j<n-i;j++)if(strcmp(s[j].num,s[j+1].num)>0){strcpy(temp.num,s[j].num);strcpy(,s[j].name);strcpy(temp.sex,s[j].sex);strcpy(temp.addr,s[j].addr);strcpy(temp.birthday,s[j].birthday);strcpy(temp.tele,s[j].tele);strcpy(temp.email,s[j].email);strcpy(temp.nation,s[j].nation);temp.old=s[j].old;strcpy(s[j].num,s[j+1].num);strcpy(s[j].name,s[j+1].name);strcpy(s[j].sex,s[j+1].sex);strcpy(s[j].addr,s[j+1].addr);strcpy(s[j].birthday,s[j+1].birthday);strcpy(s[j].tele,s[j+1].tele);strcpy(s[j].email,s[j+1].email);strcpy(s[j].nation,s[j+1].nation);s[j].old=s[j+1].old;strcpy(s[j+1].num,temp.num);strcpy(s[j+1].name,);strcpy(s[j+1].sex,temp.sex);strcpy(s[j+1].addr,temp.addr);strcpy(s[j+1].birthday,temp.birthday);strcpy(s[j+1].tele,temp.tele);strcpy(s[j+1].email,temp.email);strcpy(s[j+1].nation,temp.nation);s[j+1].old=temp.old;}}printf("排序成功!");return;}写入文件函数voidsave(structstus[],intn){ FILE*fp;//定义指向文件的指针 inti; if((fp=fopen("stu.txt","wb"))==NULL) { printf("cannotopenfile\n"); return; } else { for(i=0;i<n;i++)fwrite(&s[i],sizeof(structstu),1,fp);//写入一条记录 fclose(fp);//关闭文件 printf("保存成功\n");//显示保存成功 }}从文件读取信息函数intload(structstus[])//将磁盘文件中的信息读入到内存中{FILE*fp; intn=0; if((fp=fopen("stu.txt","rb"))==NULL) { printf("cannotopenfile\n"); return0; } else { if(fp!=NULL) while(!feof(fp)) { fread(&s[n],sizeof(structstu),1,fp); n++; } fclose(fp); printf("成功读入文件中的信息\n"); }return--n;}4调试与测试输入学生信息输入需要输入的个数,然后输入学生各信息查询学生信息按学号查询:输入学号201525503012按姓名查询,输入申卓插入学生信息修改学生信息输入学生学号201525503009,修改信息不准确的几项删除学生信息删除结果显示:学生信息排序排序前从文件中读取的信息表:(为对比明显,学生信息除学号及年龄外其他都填*)选择排序方式:按学号排序浏览:按年龄排序:学生信息写入文件在进行学生信息插入,删除,修改,操作后都需进行文件保存,这样才能保证学生信息随时可以变更从文件读取学生信息:可保证随时查看输入了多少学生的信息,哪些学生信息输入过,方便新学生信息的插入从文件中读取出的信息:退出登录:基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上半年广东江门市开平市医疗卫生事业单位进校园招聘41人备考题库及答案详解(真题汇编)
- 2026绵阳嘉信人才服务有限公司招聘工作人员1人备考题库及参考答案详解(满分必刷)
- 2026吉林晨鸣纸业有限责任公司招聘备考题库含答案详解(基础题)
- 2026四川宜宾市健康教育发展集团有限责任公司招聘5人备考题库附参考答案详解(巩固)
- 2026重庆九洲隆瓴科技有限公司招聘助理项目经理1人备考题库带答案详解(完整版)
- 2026浙江宁波市镇海区急救中心编外人员招聘1人备考题库及参考答案详解ab卷
- 2026广西南宁兴宁区五塘镇中心卫生院招聘1人备考题库附参考答案详解ab卷
- 2026内蒙古兴安盟事业单位春季专项人才引进145人备考题库及参考答案详解(完整版)
- 2026北京大学深圳研究生院新材料学院实验技术岗位招聘1人备考题库附参考答案详解(达标题)
- 成都市锦江区特殊教育学校2026年公开招聘员额教师(1人)笔试参考题库及答案解析
- 保密要害部门部位管理制度范文(四篇)
- 全国气象台站经纬度海拔信息
- 液压与气动技术fluidsim36中文版
- CosaGPS说明书完整版
- 环境水中湿法氧化法测量水中的C
- 第一章气体放电的基本物理过程
- 社区工作者经典备考题库(必背300题)
- 胸科手术期间低氧血症课件
- 心理护理基本技能
- 金属熔焊原理及材料焊接绪论
- QCT302023年机动车用电喇叭技术条件
评论
0/150
提交评论