版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宿舍管理系统源代码源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intdirty=0;//用来判断是否已保存操作//定义一个存储学生相关信息的结构体typedefstruct{charS_name[31];//学生姓名charS_number[16];//学生学号intD_number;//学生所在寝室的宿舍号intTotal;//学生总数}Student[M],St;//判断学号是否与表中所存学号重复voidS_number_Judge(StudentS,intt){inti;for(i=1;i<=(S->Total)-1;i++)while(strcmp(S[i].S_number,S[t].S_number)==0){printf("学号输入失败,该学号已存在,请重新输入学号!\n");printf("请输入学生的学号(15个字符以内):");scanf("%s",S[t].S_number);getchar();i=1;}}//添加学生信息函数voidAdd(StudentS){printf("请输入学生姓名(30个字符以内):");scanf("%s",S[++(S->Total)].S_name);getchar();//获取换行符printf("请输入学生的学号(15个字符以内):");scanf("%s",S[S->Total].S_number);getchar();S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复printf("请输入宿舍号码:");scanf("%d",&S[S->Total].D_number);getchar();dirty=1;printf("添加成功!\n\n");}//修改学生信息函数voidAlter(StudentS){inti;intflag=0;//用来判断表中是否存在所要修改的学生的信息charname[20];printf("请输入你要修改学生的姓名:");scanf("%s",name);getchar();for(i=1;i<=S->Total;i++)if(strcmp(S[i].S_name,name)==0)flag=i;if(!flag)printf("你所要修改的学生信息在表中不存在!\n");elseprintf("新信息如下:\n");printf("请输入学生姓名(30个字符以内):");scanf("%s",S[flag].S_name);getchar();printf("请输入学生的学号(15个字符以内):");scanf("%s",S[flag].S_number);getchar();S_number_Judge(S,flag);scanf("%d",&S[flag].D_number);getchar();dirty=1;printf("修改成功!\n");}putchar('\n');}//删除学生信息voidDelete(StudentS){inti,j;intflag=0;//用来判断表中是否存在所要删除的学生的信息charname[20];printf("请输入你要删除学生的姓名:");scanf("%s",name);getchar();for(i=1;i<=S->Total;i++)if(strcmp(S[i].S_name,name)==0)flag=i;if(!flag)printf(〃你所要删除的学生在表中不存在!〃);else{for(i=flag;i<S->Total;i++){j=i+1;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);S[i].D_number=S[j].D_number;}(S->Total)--;dirty=1;printf("删除成功!");}printf("\n\n");}//显示所有学生信息函数voidDisplay_All(StudentS){inti;printf(“全体学生信息如下:\n");printf(〃学生姓名学生学号宿舍号\n");for(i=1;i<=S->Total;i++)printf(〃%-20s%-15s%-5d\n〃,S[i].S_name,S[i].S_number,S[i].D_number);putchar('\n\n');}//排序函数按照寝室号从小到大排序(冒泡法)voidSort_D_number(StudentS){inti,j,t;charname[30];charnumber[15];for(i=1;i<=S->Total;i++)for(j=i;j<=S->Total;j++)if(S[i].D_number>S[j].D_number){strcpy(name,S[i].S_name);strcpy(number,S[i].S_number);t=S[i].D_number;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);S[i].D_number=S[j].D_number;strcpy(S[j].S_name,name);strcpy(S[j].S_number,number);S[j].D_number=t;}}//排序函数按照学号从小到大排序(冒泡法)voidSort_S_number(StudentS){inti,j,t;charname[30];charnumber[15];for(i=1;i<=S->Total;i++)for(j=i;j<=S->Total;j++)if(strcmp(S[i].S_number,S[j].S_number)>0){strcpy(name,S[i].S_name);strcpy(number,S[i].S_number);t=S[i].D_number;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);S[i].D_number=S[j].D_number;strcpy(S[j].S_name,name);strcpy(S[j].S_number,number);S[j].D_number=t;}}//查询函数以姓名为关键字进行查询(顺序查找)voidQuery_S_name(StudentS){inti,j=0;charname[31];printf("请输入你要查找的学生的姓名(30个字符以内):");scanf("%s",name);getchar();printf(“所查找学生信息如下:\n");printf(〃学生姓名学生学号宿舍号\n〃);for(i=1;i<=S->Total;i++)if(strcmp(name,S[i].S_name)==0){printf("%-20s%-15s%-5d\n",S[i].S_name,S[i].S_number,S[i].D_numberprintf("%-20s%-15s%-5d\n",S[i].S_name,S[i].S_number,S[i].D_number);j=1;}if(!j)printf("\n查找失败,表中不存在该学生的信息!\n\n");}//查询函数以学号为关键字进行查询(折半查找)voidQuery_S_number(StudentS){inti,j,top,base,mid;charnumber[15];j=0;base=1;top=S->Total;printf("请输入你要查找学生的学号:");scanf("%s",number);getchar();Sort_S_number(S);//将表中原数据按照学号从小到大排序printf(“所查找学生信息如下:\n");printf(〃学生姓名学生学号宿舍号\n");if(strcmp(number,S[1].S_number)>=0&&strcmp(number,S[S->Total].S_number)<=0)while(base<=top){mid=(base+top)/2;if(strcmp(number,S[mid].S_number)==0){printf("%-20s%-15s%-5d\n",S[i].S_name,S[i].S_number,S[i].D_number);putchar('\n');j=1;break;}elseif(strcmp(number,S[mid].S_number)>0)base=mid+1;elsetop=mid-1;}}if(!j)printf("\n查找失败,表中不存在该学生的信息!\n\n");}//查询函数以寝室号为关键字进行查询(折半查找)voidQuery_D_number(StudentS){inti,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf("请输入你要查询的寝室号:");scanf("%d",&i);getchar();Sort_D_number(S);//将表中原数据按照寝室号从小到大排序printf("所查找寝室信息如下:\n");printf(〃学生姓名学生学号宿舍号\n〃);if(i>=S[1].D_number&&i<=S[S->Total].D_number){while(base<=top){mid=(base+top)/2;if(i==S[mid].D_number){m=mid;n=mid-1;while(S[m].D_number==i){printf(〃%-20s%-15s%-5d\n〃,S[m].S_name,S[m].S_number,S[m].D_number);m++;if(m>S->Total)break;}if(n>0){while(S[n].D_number==i){printf("%-20s%-15s%-5d\n",S[n].S_name,S[n].S_number,S[n].D_number);n--;if(n<1)break;}}j=1;putchar('\n');break;}elseif(i>S[mid].D_number)base=mid+1;elsetop=mid-1;}}if(!j)printf("\n查找失败,表中不存在该寝室的信息!\n\n");}//存储函数voidSave(StudentS){StStd;inti;intflag1=0,flag2=0;//判断存储是否成功FILE*fp;if((fp=fopen("Dorm_Manage","w"))==NULL){printf("打开文件失败!\n\n");flag1=1;exit(0);//结束程序}for(i=1;i<=S->Total;i++)if(fwrite(&S[i],sizeof(Std),1,fp)!=1){printf("数据写入错误\n\n");flag2=1;exit(0);}if(!flag1&&!flag2){printf("数据存储成功!\n\n");dirty=0;}fclose(fp);}//加载记录函数voidLoad(StudentS){StStd;FILE*fp;if((fp=fopen("Dorm_Manage","r"))==NULL){printf("打开文件失败!\n\n");exit(0);}while(!feof(fp))fread(&S[++(S->Total)],sizeof(Std),1,fp);fclose(fp);printf("加载数据成功!\n\n");(S->Total)--;//由于读取问题,表中个数要减去}//退出程序时判断是否保存函数voidJudge_Save(inti,StudentS){charch;if(i){printf(〃表中数据已改变,是否保存后再退出(Y/N)?:〃);ch=getchar();getchar();while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf(〃请输入N(n)或者Y(y):");ch=getchar();getchar();}if(ch=='y'||ch=='Y')Save(S);}}//菜单voidMenu(){//菜单printf(〃宿舍管理系统\n\n〃);printf(〃*************************************菜*************************************\n〃);printf(〃l.添加学生信息|7.按照寝室号从小到大排序\n");printf("2.修改学生信息|8.按照学号从小到大排序\n");printf("3.删除学生信息|9•显示所有学生的相关信息\n");printf("4.以姓名查询学生信息|10.保存操作\n");printf("5.以学号查询学生信息|11.加载记录\n");printf("6.以寝室号查询该寝室中的全部学生信息丨12.退出程序\n");printf("***************************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届广东省深圳市宝安区高二物理第一学期期中统考试题含解析
- 2025届上海市华师大第一附属中学物理高一第一学期期中学业质量监测模拟试题含解析
- 达州市重点中学2025届高一物理第一学期期中质量跟踪监视试题含解析
- 2025届千校联盟物理高一上期中学业质量监测试题含解析
- 广东省肇庆市实验中学、广东省高要市新桥中学两校2025届物理高三上期末联考模拟试题含解析
- 2025届福建省龙海市第二中学物理高三第一学期期中质量检测模拟试题含解析
- 2025届广东省深圳市格睿特高级中学物理高一第一学期期末统考试题含解析
- 2025届江苏省南大附中物理高三第一学期期末经典试题含解析
- 静力水准仪基础知识单选题100道及答案解析
- 陕西省榆林市(2024年-2025年小学五年级语文)统编版专题练习((上下)学期)试卷及答案
- 煤矿机电运输安全培训课件
- 货车安全隐患排查表
- 学前教育职业规划书
- 教师专业成长概述教师专业发展途径PPT培训课件
- 球磨机安装专项施工方案
- 2023年山东省港口集团有限公司招聘笔试题库及答案解析
- GB/T 25217.10-2019冲击地压测定、监测与防治方法第10部分:煤层钻孔卸压防治方法
- GB/T 20284-2006建筑材料或制品的单体燃烧试验
- GB/T 15604-2008粉尘防爆术语
- 科研-稀土发光材料
- 《小米手机营销策略研究开题报告(含提纲)》
评论
0/150
提交评论