数据结构课程设计之宿舍管理系统Word文档下载推荐.docx
- 文档编号:15680146
- 上传时间:2022-11-14
- 格式:DOCX
- 页数:52
- 大小:1.05MB
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx
《数据结构课程设计之宿舍管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计之宿舍管理系统Word文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。
为宿舍管理人员编写一个宿舍管理查询软件
(1)采用交互工作方式
(2)建立数据文件,数据文件按关键字(姓名、学号、放号)进行排序(冒泡、选择、插入排序等任选一种)
(3)查询菜单:
(用二分查找实现以下操作)
①按姓名查询
②按学号查询
③按放号查询
(4)打印任一查询结果(可以连续操作)
程序分析:
(1)程序采用交互工作方式,也就是说要有一个人性化的操作界面。
将每一种操作赋给一个数字,通过输入不同的数字来实现不同的操作。
这样使人一看就能明白如何实现不同的操作。
全部使用提示选择方式,只需要输入你要使用方式的代号即可。
(2)本系统无数据信息,在使用的时候首先创建一个数据文件,开发一个录入数据的功能,使得所需要的数据存储到软件中,并暂时存在内存中,以便使用。
(3)录入和修改函数:
建立相应的函数,在主函数中得到调用,以便于对学生信息的增加和修改。
(4)查询:
以不同的关键字分别使用二分查找实现。
(5)为了使用方便和安全,增加了密码登录、密码锁定、退出、删除、全部删除、修改、存储为文本文档信息等功能。
2.基本功能
(1)录入学生信息
(2)显示学生信息(分别按学号、宿舍号、姓名进行排序后显示并在磁盘上以“.txt”格式保存显示的信息)
(3)查询学生信息(分别按学号、宿舍号、姓名进行查询并显示)
(4)修改学生信息(可进行单个删除、全部删除和修改学生信息)
(5)存储学生信息(存储到磁盘上,保存为“.txt”格式)
(6)锁定管理系统(进入密码登录界面,以确保安全)
(7)退出管理系统
3.输入输出
各种功能之间的选择采用了数字提示方式,只需要根据提示进行选择相应的数字,在录入学生信息功能中姓名为长度30以内的任意字符,学生学号和宿舍号控制住15个数字以内。
二、概要设计
1.设计思路:
所有的程序从主函数voidmain()开始,首先调用了load()函数进行密码登录,然后调用Menu()主菜单函数。
然后在Menu()函数中又依次增加了各种功能,然后通过switch语句分别选择录入、显示、查询、修改、存储、锁定、退出功能。
①选择录入功能时调用Add()录入信息函数;
②选择显示功能时,首先调用showhead()表头显示函数,然后分别调用Sort_S_number(StudentS[M]),Sort_D_number(StudentS[M]),Sort_S_name(StudentS[M])函数根据学生学号、学生宿舍号、学生姓名关键字进行冒泡或者直接插入排序方法排序,然后显示;
③选择查询功能时,首先调用searchheader(),表头显示函数,然后分别调用searh_S_number(StudentS[M]);
searh_D_number(StudentS[M]);
searh_S_name(StudentS[M]);
以学生学号、学生宿舍号、学生姓名为关键字进行查找,然后调用Display_All(StudentS[M]);
显示函数;
④选择修改功能,在通过switch语句进行选择删除、全部删除、修改功能;
⑤存储功能进行磁盘文本文档信息存储;
⑥锁定功能调用load()登录函数进行锁定;
⑦退出功能。
大体框架设计以后,然后依次对每个功能进行详细的设计。
2.数据结构设计:
逻辑结构:
线性
存储结构:
链式
//----------线性表的静态单链表表示存储结构------------
//定义一个存储学生相关信息的结构体
#defineM100//链表的最大长度
typedefstruct
{
charS_name[31];
//学生姓名
charS_number[16];
//学生学号
charS_sex[15];
//学生性别
charD_number[15];
//学生所在寝室的宿舍号
intTotal;
//学生总数
}Student,St[M];
这种描述方法避免了“指针”类型的使用,在上述描述的链表中,数组的一个分量表示一个结点,同时用游标(总数Total)代替指针指示结点在数组中的相对位置。
数组的第零分量可以看成头结点,其指针域指示链表的第一个结点。
定义程序中用到的抽象数据类型:
ADTList{
数据对象:
D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0}
数据关系:
R1={<
ai-1,ai>
|ai-1,ai∈D,i=1,2,3,……,n}
基本操作:
Add(Student*S)
初始条件:
链表不存在。
操作结果:
录入信息进行创建新的链表
Display_All(S)
链表S已存在
打印所有S的数据
searh_S_name(Student*S)
链表S已存在。
按照名字查找指定的某元素。
searh_S_number(Student*S)
按照学生学号查找指定的某元素。
searh_D_number(Student*S)
按照学生宿舍号查找指定的某元素。
Sort_D_number(Student*S)
对链表S按照宿舍号的大小进行排序。
Sort_S_name(Student*S)
对链表S按照学生姓名的先后进行排序。
Sort_S_number(Student*S)
对链表S按照学生学号的大小进行排序。
}
3.软件结构设计:
(1)模块划分
①录入学生信息voidAdd(Student*S)
②显示学生信息voidDisplay_All(Student*S)
③查询学生信息voidsearch(Student*S)
④修改学生信息voidExchange(Student*S)
⑤存储学生信息
⑥锁定管理系统voidload()
⑦退出管理系统
(2)函数原型
Voidmain();
//主函数
voidAdd(StudentS[M]);
//声明录入学生信息函数
voidDisplay_All(StudentS[M]);
//声明显示函数
voidExchangehead();
//声明修改学生信息表头函数(删除和修改)
voidClear();
//声明清屏函数
voidload();
//声明登录函数(密码登录和密码锁定)
voidMenu();
//声明主菜单函数
voidsearchheader();
//声明查询表头函数
voidshowhead();
//声明显示方式表头函数
voidSort_S_number(StudentS[M]);
//声明学生学号按从小到大的排序函数(冒泡法/直接插入法)
voidSort_D_number(StudentS[M]);
//声明排序函数按照宿舍号从小到大排序(冒泡法/直接插入法)
voidSort_S_name(StudentS[M]);
//按姓名排序(冒泡法/直接插入法)
voidsearh_S_number(StudentS[M]);
//声明查询函数以学号为关键字进行查询(折半查找)
voidsearh_D_number(StudentS[M]);
//声明查询函数以宿舍号为关键字进行查询(折半查找)
voidsearh_S_name(StudentS[M]);
//查询函数以姓名为关键字进行查询(折半查找)
(3)关系图
(见详细设计)
三、详细设计
1.所有用到的数据结构的基本操作实现
voidAdd(Student*S)//定义录入函数
{
do
{cout<
<
"
请输入第"
S[0].Total+1<
个学生的信息\n\n"
;
cin>
>
S[S[0].Total+1].S_number;
//输入学生学号
S[S[0].Total+1].S_name;
//输入学生姓名
S[S[0].Total+1].S_sex;
//输入学生性别
S[S[0].Total+1].D_number;
//输入学生宿舍号
S[0].Total++;
//每增加一个学生信息,总数++
cout<
按数字“0”退出,任意键继续录入"
endl;
ch;
}while(strcmp(ch,ch1)!
=0);
}
(2)显示所学生信息
voidDisplay_All(Student*S)//定义显示函数
{if(S[0].Total>
0){
for(i=1;
i<
=S[0].Total;
i++)
cout<
S[i].S_name<
S[i].S_number<
S[i].S_sex<
S[i].D_number<
}
else
Cout<
无任何学生信息"
(3)按姓名查找(折半查找)
voidsearh_S_name(Student*S)//查询函数以姓名为关键字进行查询(折半查找)
{
请输入你要查找学生的姓名:
cin>
name;
Sort_S_name(S);
//调用学生姓名按从小到大的冒泡排序函数
while(low<
=high)
{mid=(low+high)/2;
if(strcmp(name,S[mid].S_name)==0)//如果中间值和要查找的值匹配
{inti=mid;
j=1;
for(i=mid+1;
=high;
//因为姓名有可能是相同的,所以继续在mid—high区间进行顺序查找
{if(strcmp(name,S[i].S_name)==0)
{
for(i=mid-1;
i>
=low;
i--)
//因为姓名有可能是相同的,所以继续在low-mid区间进行顺序查找
{if(strcmp(name,S[i].S_name)==0)
{cout<
}
break;
}
else
if(strcmp(name,S[mid].S_name)>
0)
low=mid+1;
else
high=mid-1;
}
if(j!
=1)//判断是否查到学生信息
}
(4)按学号为关键字进行查询(折半查找)
voidsearh_S_numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 宿舍 管理 系统