宿舍管理查询系统数据结构实验报告Word下载.docx
- 文档编号:13209999
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:15
- 大小:138.19KB
宿舍管理查询系统数据结构实验报告Word下载.docx
《宿舍管理查询系统数据结构实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《宿舍管理查询系统数据结构实验报告Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
内容:
为宿舍管理人员设计一个宿舍管理查询系统,程序采用交互工作方式,完成下列功能:
建立合适的数据结构作为查找表并输入数据;
数据分别按关键字姓名、学号、房号进行排序(所学排序算法任选一种效率较高的算法);
设计查询菜单,按指定关键字姓名、学号、房号进行查询并输出结果,要求查询采用效率较高的算法实现;
可以连续查询;
算法思想:
1.添加学生信息函数
2.修改学生信息函数
3.删除学生信息函数
4.显示所有学生信息函数
5.排序函数按照宿舍号从小到大排序(冒泡法)
6.排序函数按照学号从小到大排序(冒泡法)
7.查询函数以姓名为关键字进行查询(顺序查找)
8.查询函数以学号为关键字进行查询(折半查找)
9.查询函数以宿舍号为关键字进行查询(折半查找)
10.存储函数
运行结果:
实验总结:
此次的实验,使我掌握了冒泡排序与折半查找,也对系统的建立有了一定的了解,并会简单的创建,对结构体定义有更深的理解,在此特别感谢同学的帮助。
此次的实验为最后一个,还是感觉自己掌握的不近人意,还要加强巩固。
附:
源程序:
#include<
stdio.h>
string.h>
stdlib.h>
#defineM100
intchange=0;
//用来判断是否已保存操作
//定义一个存储学生相关信息的结构体
typedefstruct
{
charS_name[31];
//学生姓名
charS_number[16];
//学生学号
intD_number;
//学生所在寝室的宿舍号
}Stud;
Studstudent[M];
intTotal;
//学生总数
}Stu,*St;
//判断学号是否与表中所存学号重复
voidS_number_Judge(StS,intt)
inti;
for(i=1;
i<
=(S->
Total)-1;
i++)
{
if(i!
=t)
{
while((strcmp((S->
student[i]).S_number,(S->
student[t]).S_number)==0)&
&
(i!
=t))
printf("
学号输入失败,该学号已存在,请重新输入学号!
\n"
);
请输入学生的学号(15个字符以内):
"
scanf("
%s"
(S->
student[t]).S_number);
getchar();
i=1;
}
}
}
//添加学生信息函数
voidAdd(StS)
{
printf("
请输入学生姓名(30个字符以内):
student[++(S->
Total)]).S_name);
getchar();
//获取换行符
student[S->
Total]).S_number);
S_number_Judge(S,S->
Total);
//判断输入的学号是否与表中所存在的学号重复
请输入宿舍号码:
%d"
&
(S->
Total]).D_number);
change=1;
添加成功!
\n\n"
//修改学生信息函数
voidAlter(StS)
intflag=0;
//用来判断表中是否存在所要修改的学生的信息
charname[20];
请输入你要修改学生的姓名:
name);
=S->
Total;
if(strcmp((S->
student[i]).S_name,name)==0)
flag=i;
if(!
flag)
printf("
你所要修改的学生信息在表中不存在!
else
新信息如下:
scanf("
student[flag]).S_name);
getchar();
student[flag]).S_number);
S_number_Judge(S,flag);
请输入宿舍号:
student[flag]).D_number);
//getchar(n);
change=1;
修改成功!
putchar('
\n'
//删除学生信息
voidDelete(StS)
inti,j;
//用来判断表中是否存在所要删除的学生的信息
请输入你要删除学生的姓名:
你所要删除的学生在表中不存在!
for(i=flag;
S->
j=i+1;
strcpy((S->
student[i]).S_name,(S->
student[j]).S_name);
student[j]).S_number);
(S->
student[i]).D_number=(S->
student[j]).D_number;
Total)--;
删除成功!
//显示所有学生信息函数
voidDisplay_All(StS)
全体学生信息如下:
学生姓名学生学号宿舍号\n"
printf("
%-20s%-15s%-5d\n"
student[i]).D_number);
\n\n'
//排序函数按照寝室号从小到大排序(冒泡法)
voidSort_D_number(StS)
inti,j,t;
charname[30];
charnumber[15];
for(j=i;
j<
j++)
if((S->
student[i]).D_number>
student[j]).D_number)
{
strcpy(name,(S->
student[i]).S_name);
strcpy(number,(S->
student[i]).S_number);
t=(S->
student[i]).D_number;
strcpy((S->
(S->
student[j]).S_name,name);
student[j]).S_number,number);
student[j]).D_number=t;
}
//排序函数按照学号从小到大排序(冒泡法)
voidSort_S_number(StS)
if(strcmp((S->
student[j]).S_number)>
0)
t=(S->
//查询函数以姓名为关键字进行查询(顺序查找)
voidQuery_S_name(StS)
inti,j=0;
charname[31];
请输入你要查找的学生的姓名(30个字符以内):
所查找学生信息如下:
if(strcmp(name,(S->
student[i]).S_name)==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍 管理 查询 系统 数据结构 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)