数据结构宿舍管理课程设计.docx
- 文档编号:2320220
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:23
- 大小:186.30KB
数据结构宿舍管理课程设计.docx
《数据结构宿舍管理课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理课程设计.docx(23页珍藏版)》请在冰点文库上搜索。
数据结构宿舍管理课程设计
一、实验题目:
宿舍管理查询软件
二、实验要求
1)任务:
为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:
A. 采用交互工作方式
B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
2) 查询菜单:
(用二分查找实现以下操作)
A. 按姓名查询
B. 按学号查询
C. 按房号查询
3) 打印任一查询结果(可以连续操作)
三、实验时间地点:
软件楼6036月18日-21日
四、实验目的
掌握插入和各种查找方法的算法实现,掌握数据结构在排序和查找等常用算法中的应用,进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。
五、实验思路
先输入主菜单,再逐个加学生信息输入函数,排序函数,显示函数,查找功能子菜单函数,查找函数,插入功能子菜单函数,插入函数,在每个区域中会调用不同的函数来实现主要的功能。
比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。
流程图:
YN
六、实验过程(源代码)
#include
#include
#include
#include
#include
#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"女";
else
return"男";
}
};
/****************************主函数开始**************************/
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<<"请输入第"< 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;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;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<<"学号: "; cin>>stu.ID; cout<<"姓名: "; cin>>stu.name; cout<<"性别(g/b): "; fflush(stdin); cin>>stu.sex; cout<<"房间号: "; cin>>stu.roomnum; cout<<"是否继续? (Y/N)"< returnstu; } /*自定义显示函数*/ voiddisplay(structstudentstu) { cout<<"\t"< cout< cout< cout< } /*自定义排序函数*/ voidsort(structstudentstu[N],inti) { intj,k; structstudenttemp; for(j=0;j { for(k=0;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;i { } for(l=k;l>i;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请选择功能选项: "; cin>>choice; 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; cin>>choice3; returnchoice3; } /*自定义按照学号查找函数*/ voidchazhao1(structstudentstu[N],inti) { intselect,j; charch; cout<<"\t*******************您选择的是按照学号查找: *******************\n\n"; do { cout<<"\n\n请输入学号: "; cin>>select; for(j=0;j { if(select==stu[j].ID) { break; } } if(j { 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请输入姓名: "; cin>>name; for(j=0;j { if(strcmp(name,stu[j].name)==0) { break; } } if(j { showheader(); display(stu[j]); } else { cout<<"你查找的信息不存在\n"; } fflush(stdin); ch=getchar(); }while(ch=='y'); } //按照房间号查找 voidchazhao3(structstudentstu[N],inti) { intj,room; charch; cout<<"\t*******************您选择的是按照房间号查找: *******************\n\n"; do { cout<<"\n\n请输入房间号: "; cin>>room; for(j=0;j { if(room==stu[j].roomnum) { break; } } if(j { showheader(); display(stu[j]); } else { cout<<"你查找的信息不存在\n"; } cout<<"是否继续查找? (y/n)"; fflush(stdin); ch=getchar(); }while(ch=='y'); } /*自定义查找功能子菜单函数*/ intmenu5() { 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<<"\t\t\t\t4、退出子菜单,返回上一级菜单\n\n"; cout<<"\n\n请选择功能选项: "; intchoice4; cin>>choice4; returnchoice4; } voidshowheader() {cout<<"\n\n\t*********************************************************\n"; cout<<"\t学号\t姓名\t性别\t房间号\t\n"; cout<<"\t*********************************************************\n"; } 七、程序运行的测试与分析 此程序在输入学号时不能过长,否则学号出现错误,显示时也会对不上相应的位置,在主菜单选择错误时也没按“输入信息有误是否重输(y/n)”执行,在主菜单执行退出功能时未能准确执行,其他功能还行。 主菜单显示: 信息录入界面: 信息显示界面: 插入学生信息界面: 查找学生信息界面: 四、心得 刚开始没有什么头绪,只是想一点做一点,整个过程中出现了很多问题,不懂时问同学或者看书,各个函数的调用比较混乱。 通过一系列的梳理后慢慢清晰,通过本次的课程设计,让我懂得了很多上课时没太掌握的知识,同时也对数据结构这门课程有了更深刻的认识
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 宿舍 管理 课程设计