数据结构课程设计宿舍管理.docx
《数据结构课程设计宿舍管理.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计宿舍管理.docx(17页珍藏版)》请在冰豆网上搜索。
![数据结构课程设计宿舍管理.docx](https://file1.bdocx.com/fileroot1/2023-2/8/abf33f6a-9788-4b3a-8ac9-425d8b8f6381/abf33f6a-9788-4b3a-8ac9-425d8b8f63811.gif)
数据结构课程设计宿舍管理
东华理工大学
课程设计报告
课程设计题目:
宿舍管理查询软件
学生姓名:
班级:
专业:
信息与计算科学
指导教师:
年月日
Notableofcontentsentriesfound.
摘要
数据结构课程设计的目的是,通过设计掌握数据结构课程中学到的大体理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要进程。
设计要求学会如何对实际问题概念相关数据结构,并采用适当的设计方式和算法解决问题,同时训练学生进行复杂程序设计的技术和培育良好的程序设计适应。
宿舍管理是对每栋楼房所有宿舍的一个详细情形记录,每一个宿舍在数据库里面的信息都是静态的只有里面的实住人数是动态增加的,用C++语言开发一个程序系统实现对入住学生的信息操作,方便宿舍管理人员进行管理。
关键词:
C++;宿舍管理;程序设计
一、题目的内容及要求
宿舍管理查询软件
1)任务:
为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:
A.采用交互工作方式
B.成立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
2)查询菜单:
(用二分查找实现以下操作)
A.按姓名查询
B.按学号查询
C.按房号查询
3)打印任一查询结果(能够持续操作)
二、需求分析
为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少少没必要要的人力,物力,和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情形等目的,为宿舍管理部门开发设计专用系统软件—宿舍管理软件来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。
该程序应该具有以下功能:
(1)学生的入住处置
(2)输出学生入住信息(别离按姓名,学号,寝室号有序)
(3)学生换宿舍处置
(4)按给定学号,姓名,寝室号查询
(5)插入新增的学生信息
该程序执行的全进程大致为:
(1)选择要实现的功能
(2)依照提示输入所需要的条件
(3)显示执行后的结果
三、概要设计
选择的数据结构为:
#include<>
#include
#include
#include<>
#include<>
数据结构采用链式存储,所有程序从主函数voidmain()开始,第一挪用menu()主菜单函数,在menu()函数中依次增加各类功能,然后通过switch语句别离选择录入,显示,插入,查找,退出功能1,选择录入功能时挪用shuru()函数录入信息;2选择显示功能时,第一用showheader()表头显示函数,然后别离挪用sort_I(structstudentstu[N],int),sort_Q(structstudentstu[N],int),sort_X(structstudentstu[N],int),函数按照学生学号,学生宿舍号,学生姓名关键字进行冒泡排序,然后显示3选择查询功能时第一挪用charu(stu,count)函数进行信息插入,然后挪用showheader()表头显示函数,最后挪用display(structstudentstu)函数显示信息并对其进行排序4选择查询功能时,第一挪用menu5()显示查询的菜单,然后别离挪用chazhao1(stu,count),chazhao2(stu,count),chazhao3(stu,count),以学生学号,姓名,宿舍号为关键字进行查找,最后挪用display()显示函数5退出功能
四、详细设计
1.数据结构设计
数据结构:
线性
存储结构:
链式
件结构设计
模块划分
2.3.12.3.22.3.32.3.4D)>(stu[k+1].ID))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
voidsort_Q(structstudentstu[N],inti)oomnum)>(stu[k+1].roomnum))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
voidsort_X(structstudentstu[N],inti)ame)>(stu[k+1].name))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
case2:
2.3.5D)
break;
elseif(selecthigh=mid-1;
elselow=mid+1;
}
if(low
{
showheader();
display(stu[low]);
}
else
{
cout<<"你查找的信息不存在\n";
}
fflush(stdin);
ch=getchar();
}
while(ch=='y');
}
voidchazhao2(structstudentstu[N],inti)ame)==0)
{
break;
}
}
if(j
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
fflush(stdin);
ch=getchar();
}
while(ch=='y');
}
voidchazhao3(structstudentstu[N],inti)oomnum)
break;
elseif(roomhigh=mid-1;
elselow=mid+1;
}
if(low
{
showheader();
display(stu[low]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是不是继续查找?
(y/n)";
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
2.3.6退出操作
case5:
D)>(stu[k+1].ID))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
voidsort_Q(structstudentstu[N],inti)
{
intj,k;
structstudenttemp;
for(j=0;j
{
for(k=0;k{
if((stu[k].roomnum)>(stu[k+1].roomnum))
{
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\t一、插入学生信息\n\n";
cout<<"\t\t\t\t二、显示插入后的学生信息\n\n";
cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:
";
intchoice3;
cin>>choice3;
returnchoice3;
}
voidchazhao1(structstudentstu[N],inti)
{
intselect,low=0,high=i,mid;
charch;
cout<<"\t***********您选择的是依照学号查找:
*********\n\n";
do
{
cout<<"\n\n请输入学号:
";
cin>>select;
while(low<=high)
{
mid=(low+high)/2;
if(select==stu[mid].ID)
break;
elseif(selecthigh=mid-1;
elselow=mid+1;
}
if(low
{
showheader();
display(stu[low]);
}
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)
{
introom,low=0,high=i,mid;
charch;
cout<<"\t*******************您选择的是依照房间号查找:
*******************\n\n";
do
{
cout<<"\n\n请输入房间号:
";
cin>>room;
while(low<=high)
{
mid=(low+high)/2;
if(room==stu[mid].roomnum)
break;
elseif(roomhigh=mid-1;
elselow=mid+1;
}
if(low
{
showheader();
display(stu[low]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是不是继续查找?
(y/n)";
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
intmenu5()
{
cout<<"\t**********这里显示的是查找功能子菜单***********\n\n";
cout<<"\t\t\t\t一、依照学号查找\n\n";
cout<<"\t\t\t\t二、依照姓名查找\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";
}
六、运行结果及分析
该结果为主菜单界面,可输入相应选项的序号进行操作。
该界面为录入学生信息后的显示,所有学生信息显示在界面上。
录入后已经按宿舍号完成了排序,也能够按学号,姓名进行排序。
插入菜单界面,输入学生信息进行插入操作。
该界面为查找功能界面。
该界面为输相应的学号进行查找的结果,姓名与房号的查找都是相似的操作。
七、收获及体会
这次的课程设计我做的还不是很完善,因为功能不是很多,若是以后有机缘完善的话,应该对管理员和用户登录时做进一步完善,每一个学生有自己的用户名和密码时才能登录。
学生的信息还不是很完整,如,学生的宿舍长,系别,一些费用和学生的成绩等相关详细信息。
虽然有很多遗憾但也收获了很多,我体会到想要做好一个程序系统,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。
只有思想上清楚了,编程才成心义,不然就是白搭力气,同时还要擅长捕捉细小的方面,因为对于程序来讲这是致命的因素。
整体来讲这次课程设计培育了我的细心和耐性,更树立了一种科学的态度
八、参考文献
[1]耿国华,数据结构——用C语言描述,高等教育出版社
[2]苏仕华等,数据结构课程设计,机械工业出版社