宿舍管理查询软件一、设计任务与目标任务:为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:采用交互工作方式建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(分别用冒泡、选择、插入排序实现)查询菜单:(用二分查找实现以下操作)按姓名查询按学号查询按房号查询打印任一查询结果并可以连续操作一、方案设计与论证流程图:YN显示“宿舍管理查询系统主菜单”“信息录入”输入“学号,姓名,性别,房间号”是否继续“信息显示”输出已录入的学生信息查找功能子菜单插入功能子菜单插入学生信息分别进行查询输入“4”返回上一级菜单输入“3”返回上一级菜单输入“5”退出结束二、算法说明主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。在每个区域中会调用不同的函数来实现主要的功能。比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。源程序:#includestdio.h#includeiomanip#includefstream#includestdlib.h#includeiostream.h#defineN20/*********************自定义函数声明部分**************************/voidshowheader();//声明显示表头部分intmenu();//声明主菜单函数intmenu3();//声明插入功能子菜单函数intmenu5();//声明查找功能子菜单函数//intquanxian();//声明用户权限管理函数//voidSavePass();//密码显示为*的函数structstudentshuru();//声明学生信息录入函数voiddisplay(structstudent);//声明显示函数voidsort(structstudentstu[N],int);//声明排序函数voidcharu(structstudentstu[N],int);//声明插入函数voidchazhao1(structstudentstu[N],inti);//声明按照学号查找函数voidchazhao2(structstudentstu[N],inti);//声明按照姓名查找函数voidchazhao3(structstudentstu[N],inti);//声明按照房间号查找/*********定义结构体************/structstudent{/*构造结构成员*/intID;charname[15];charsex;introomnum;floatscore[3];char*getSex(){if(sex=='g')return女;elsereturn男;}};/****************************主函数开始**************************/voidmain(){structstudentstu[N];intcount=0,m=0,j;charch,ch1;intchoice,choice3,choice4;//菜单选项及子菜单选项intuser;do//此循环体控制用户信息输入错误后是否重输{do//此循环体控制返回主菜单{ch1='n';//如果用户将主菜单选择错误,可用此变量控制是否重输choice=menu();switch(choice)//此条件结构控制选择菜单功能后的操作{case1://输入学生信息{do//此循环体控制是否继续输入{cout******************************学员信息录入**********************************\n;cout请输入第count+1个学员的信息\n\n;stu[count]=shuru();//调用输入函数//cout是否继续(y/n);fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃ch=getchar();count++;}while(ch=='y');break;}case2://显示排序好的学生信息{cout******************************学员信息显示**********************************\n;cout\n排序后的信息如下:\n;sort(stu,count);//调用排序函数showheader();for(j=0;jcount;j++){display(stu[j]);//调用显示函数}break;}case3://插入功能{while(choice3!=3)//此循环体控制是否退出子菜单{choice3=menu3();//调用子菜单函数if(choice3==1)//此条件结构控制子菜单选项{do//此循环体判断是否继续插入{cout******************************学员信息插入**********************************\n;charu(stu,count);//调用插入函数count++;cout是否继续插入?(y/n);fflush(stdin);ch=getchar();}while(ch=='y');}if(choice3==2)//此条件结构控制子菜单选项{cout\n\n插入学生信息后如下:\n;sort(stu,count);//调用排序函数showheader();for(j=0;jcount;j++){display(stu[j]);//调用显示函数}}}break;}case4://查找功能{while(choice4!=4)//控制是否继续查找{choice4=menu5();//调用查找子菜单函数if(choice4==1)//控制按照学号查找{chazhao1(stu,count);//调用按照学号查找的函数}if(choice4==2)//控制按照姓名查找{chazhao2(stu,count);//调用按照姓名查找的函数}if(choice4==3)//控制按照房间查找{chazhao3(stu,count);//调用按照房间查找的函数}}break;}case5://退出{cout确认退出?(y/n);//让用户确认是否退出fflush(stdin);ch=getchar();break;}default:{cout\a\a警告:您输入错误,是否重输!(y/n);fflush(stdin);ch1=getchar();break;}}}while(ch=='n'||ch1=='y');//控制是否要退出系统{cout\a\a警告:您的用户名或密码输入有误!是否重输?(y/n);}fflush(stdin);ch=getchar();}while(ch=='y');}/*************************主函数结束*************************//*自定义输入函数*/structstudentshuru(){structstudentstu;cout学号:;cinstu.ID;cout姓名:;cinstu.name;cout性别(g/b):;fflush(stdin);cinstu.sex;cout房间号:;cinstu.roomnum;cout是否继续?(Y/N)endl;returnstu;}/*自定义显示函数*/voiddisplay(structstudentstu){cout\tstu.ID\t;coutstu.name\t;coutstu.getSex()\t;coutstu.roomnum\tendl;;}/*自定义排序函数*/voidsort(structstudentstu[N],inti){intj,k;structstudenttemp;for(j=0;ji;j++){for(k=0;ki-j-1;k++){if((stu[k].ID)(stu[k+1].ID)){temp=stu[k];stu[k]=stu[k+1];stu[k+1]=temp;}}}}/*自定义插入函数*/voidcharu(structstudentstu[N],intk){inti,l;structstudentin;in=shuru();//调用输入函数for(i=0;ik;i++){}for(l=k;li;l--){stu[l]=stu[l-1];}stu[i]=in;}/*自定义主菜单函数*/intmenu(){intchoice;cout\t\t****************************************************\n\n\t\t\t欢迎进入学生宿舍管理查询系统\n\n\t\t****************************************************\n\n;cout\t\t\t***************主菜单***************\n\n;cout\t\t\t\t1学生信息录入\n\n;cout\t\t\t\t2学生信息显示\n\n;cout\t\t\t\t3插入学生信息\n\n;cout\t\t\t\t4查找学生信息\n\n;cout\t\t\t\t5退出\n;cout\n\n请选择功能选项:;cinchoice;returnchoice;}/*自定义插入功能子菜单函数*/intmenu3(){cout\t*******************这里显示的是插入功能子菜单*******************\n\n;cout\t\t\t\t1、插入学生信息\n\n;cout\t\t\t\t2、显示插入后的学生信息\n\n;cout\t\t\t\t3、退出子菜单,返回上一级菜单\n\n;cout\n\n请选择功能选项:;intchoice3;cinchoice3;returnchoice3;}/*自定义按照学号查找函数*/voidchazhao1(structstudentstu[N],inti){intselect,j;charch;cout\t*******************您选择的是按照学号查找:*******************\n\n;do{cout\n\n请输入学号:;cinselect;for(j=0;ji;j++){if(select==stu[j].ID){break;}}if(ji){showheader();display(stu[j]);}else{cout你查找的信息不存在\n;}fflush(stdin);ch=getchar();}while(ch=='y');}/*自定义按照姓名查找函数*/voidchazhao2(structstudentstu[N],inti){intj;charname[15];charch;cout\t*******************您选择的是按照姓名查找:*******************\n\n;do{cout\n\n请输入姓名:;cinname;for(j=0;ji;j++){if(strcmp(name,stu[j].name)==0){break;}}if(ji){showheader();display(stu[j]);}else{cout你查找的信息不存在\n;}fflush(stdin);ch=getchar();}while(ch=='y