数据结构宿舍管理查询系统实验报告.docx

上传人:b****4 文档编号:1225641 上传时间:2022-10-19 格式:DOCX 页数:17 大小:170.21KB
下载 相关 举报
数据结构宿舍管理查询系统实验报告.docx_第1页
第1页 / 共17页
数据结构宿舍管理查询系统实验报告.docx_第2页
第2页 / 共17页
数据结构宿舍管理查询系统实验报告.docx_第3页
第3页 / 共17页
数据结构宿舍管理查询系统实验报告.docx_第4页
第4页 / 共17页
数据结构宿舍管理查询系统实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构宿舍管理查询系统实验报告.docx

《数据结构宿舍管理查询系统实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理查询系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构宿舍管理查询系统实验报告.docx

数据结构宿舍管理查询系统实验报告

洛阳理工学院实验报告

系别

计算机系

班级

学号

姓名

课程名称

数据结构

实验日期

实验名称

宿舍管理查询系统

成绩

实验目的:

掌握数据结构的两种基本技术:

查找和排序,根据实际情况选择效率较高的算法解决应用问题。

实验条件:

计算机一台,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;iTotal;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]

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1