数据结构宿舍管理查询系统实验报告.docx
- 文档编号:1225641
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:17
- 大小:170.21KB
数据结构宿舍管理查询系统实验报告.docx
《数据结构宿舍管理查询系统实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理查询系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构宿舍管理查询系统实验报告
洛阳理工学院实验报告
系别
计算机系
班级
学号
姓名
课程名称
数据结构
实验日期
实验名称
宿舍管理查询系统
成绩
实验目的:
掌握数据结构的两种基本技术:
查找和排序,根据实际情况选择效率较高的算法解决应用问题。
实验条件:
计算机一台,VisualC++6.0
实验内容:
1.问题描述
为宿舍管理人员设计一个宿舍管理查询系统,程序采用交互工作方式,完成下列功能:
(1)建立合适的数据结构作为查找表并输入数据;
数据分别按关键字姓名、学号、房号进行排序(所学排序算法任选一种效率较高的算法);
(2)设计查询菜单,按指定关键字姓名、学号、房号进行查询并输出结果,要求查询采用效率较高的算法实现;
(3)可以连续查询;
2.数据结构类型定义
typedefstruct
{
charS_name[31];
charS_number[16];
intD_number;
}Stud;
typedefstruct
{
Studstudent[M];
intTotal;
}Stu,*St;
3.模块划分
(1)添加学生信息:
voidAdd(StS)
(2)修改学生信息:
voidAlter(StS)
(3)删除学生信息:
voidDelete(StS)
(4)显示所有学生信息:
voidDisplay_All(StS)
(5)按照寝室号从小到大排序:
voidSort_D_number(StS)
(6)按照学号从小到大排序:
voidSort_S_number(StS)
(7)以姓名为关键字查找:
voidQuery_S_name(StS)
(8)以学号为关键字进行查找:
oidQuery_S_number(StS)
(9)以寝室号为关键字进行查找:
voidQuery_D_number(StS)
(10)主函数:
voidmain()
4.详细设计
#include
#include
#include
#defineM100
intchange=0;//用来判断是否已保存操作
typedefstruct
{
charS_name[31];
charS_number[16];
intD_number;
}Stud;
typedefstruct
{
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");
printf("请输入学生的学号:
");
scanf("%s",(S->student[t]).S_number);
getchar();
i=1;
}
}
}
}
//添加学生信息函数
voidAdd(StS)
{
printf("请输入学生的姓名:
");
scanf("%s",(S->student[++(S->Total)]).S_name);
getchar();//获取换行符
printf("请输入学生的学号:
");
scanf("%s",(S->student[S->Total]).S_number);
getchar();
S_number_Judge(S,S->Total);//判断输入的学号是否重复
printf("请输入学生的房号:
");
scanf("%d",&(S->student[S->Total]).D_number);
getchar();
change=1;
printf("信息添加成功!
\n\n");
}
//修改学生信息函数
voidAlter(StS)
{
inti;
intflag=0;//用来判断表中是否存在所要修改的学生的信息
charname[20];
printf("请输入你要修改学生的姓名:
");
scanf("%s",name);
getchar();
for(i=1;i<=S->Total;i++)
if(strcmp((S->student[i]).S_name,name)==0)
flag=i;
if(!
flag)
printf("你所要修改的学生信息在表中不存在!
\n");
else
{
printf("请输入新信息:
\n");
printf("请输入学生的姓名:
");
scanf("%s",(S->student[flag]).S_name);
getchar();
printf("请输入学生的学号:
");
scanf("%s",(S->student[flag]).S_number);
getchar();
S_number_Judge(S,flag);
printf("请输入学生的房号:
");
scanf("%d",&(S->student[flag]).D_number);
getchar();
change=1;
printf("信息修改成功!
\n");
}
putchar('\n');
}
//删除学生信息
voidDelete(StS)
{
inti,j;
intflag=0;//用来判断表中是否存在所要删除的学生的信息
charname[20];
printf("请输入你要删除学生的姓名:
");
scanf("%s",name);
getchar();
for(i=1;i<=S->Total;i++)
if(strcmp((S->student[i]).S_name,name)==0)
flag=i;
if(!
flag)
printf("你所要删除的学生在表中不存在!
");
else
{
for(i=flag;i
{
j=i+1;
strcpy((S->student[i]).S_name,(S->student[j]).S_name);
strcpy((S->student[i]).S_number,(S->student[j]).S_number);
(S->student[i]).D_number=(S->student[j]).D_number;
}
(S->Total)--;
change=1;
printf("信息删除成功!
");
}
printf("\n\n");
}
//显示所有学生信息函数
voidDisplay_All(StS)
{
inti;
printf("全体学生信息如下:
\n");
printf("学生姓名学生学号学生房号\n");
for(i=1;i<=S->Total;i++)
printf("%-20s%-15s%-5d\n",(S->student[i]).S_name,
(S->student[i]).S_number,(S->student[i]).D_number);
putchar('\n\n');
}
voidSort_D_number(StS)//按照房号从小到大排序(冒泡法)
{
inti,j,t;
charname[30];
charnumber[15];
for(i=1;i<=S->Total;i++)
for(j=i;j<=S->Total;j++)
if((S->student[i]).D_number>(S->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->student[i]).S_name,(S->student[j]).S_name);
strcpy((S->student[i]).S_number,(S->student[j]).S_number);
(S->student[i]).D_number=(S->student[j]).D_number;
strcpy((S->student[j]).S_name,name);
strcpy((S->student[j]).S_number,number);
(S->student[j]).D_number=t;
}
}
voidSort_S_number(StS)//按照学号从小到大排序(冒泡法)
{
inti,j,t;
charname[30];
charnumber[15];
for(i=1;i<=S->Total;i++)
for(j=i;j<=S->Total;j++)
if(strcmp((S->student[i]).S_number,(S->student[j]).S_number)>0)
{
strcpy(name,(S->student[i]).S_name);
strcpy(number,(S->student[i]).S_number);
t=(S->student[i]).D_number;
strcpy((S->student[i]).S_name,(S->student[j]).S_name);
strcpy((S->student[i]).S_number,(S->student[j]).S_number);
(S->student[i]).D_number=(S->student[j]).D_number;
strcpy((S->student[j]).S_name,name);
strcpy((S->student[j]).S_number,number);
(S->student[j]).D_number=t;
}
}
//以姓名为关键字进行查询(顺序查找)
voidQuery_S_name(StS)
{
inti,j=0;
charname[31];
printf("请输入要查找的学生的姓名(30个字符以内):
");
scanf("%s",name);
getchar();
printf("要查找的学生信息如下:
\n");
printf("学生姓名学生学号宿舍号\n");
for(i=1;i<=S->Total;i++)
if(strcmp(name,(S->student[i]).S_name)==0)
{
printf("%-20s%-15s%-5d\n",(S->student[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 宿舍 管理 查询 系统 实验 报告