数据结构宿舍管理课程设计.docx

上传人:b****1 文档编号:12788475 上传时间:2023-04-22 格式:DOCX 页数:23 大小:186.30KB
下载 相关 举报
数据结构宿舍管理课程设计.docx_第1页
第1页 / 共23页
数据结构宿舍管理课程设计.docx_第2页
第2页 / 共23页
数据结构宿舍管理课程设计.docx_第3页
第3页 / 共23页
数据结构宿舍管理课程设计.docx_第4页
第4页 / 共23页
数据结构宿舍管理课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据结构宿舍管理课程设计.docx

《数据结构宿舍管理课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

数据结构宿舍管理课程设计.docx

数据结构宿舍管理课程设计

一、实验题目:

宿舍管理查询软件

二、实验要求

1)任务:

为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:

A. 采用交互工作方式

B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)

2) 查询菜单:

(用二分查找实现以下操作)

A. 按姓名查询

B. 按学号查询

C. 按房号查询

3) 打印任一查询结果(可以连续操作)

三、实验时间地点:

软件楼6036月18日-21日

四、实验目的

掌握插入和各种查找方法的算法实现,掌握数据结构在排序和查找等常用算法中的应用,进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。

五、实验思路

先输入主菜单,再逐个加学生信息输入函数,排序函数,显示函数,查找功能子菜单函数,查找函数,插入功能子菜单函数,插入函数,在每个区域中会调用不同的函数来实现主要的功能。

比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。

 

流程图:

 

 

YN

 

 

六、实验过程(源代码)

#include

#include

#include

#include

#include

#defineN20

/*********************自定义函数声明部分**************************/

voidshowheader();//声明显示表头部分

intmenu();//声明主菜单函数

intmenu3();//声明插入功能子菜单函数

intmenu5();//声明查找功能子菜单函数

//intquanxian();//声明用户权限管理函数

//voidSavePass();//密码显示为"*"的函数

structstudentshuru();//声明学生信息录入函数

voiddisplay(structstudent);//声明显示函数

voidsort(structstudentstu[N],int);//声明排序函数

voidcharu(structstudentstu[N],int);//声明插入函数

voidchazhao1(structstudentstu[N],inti);//声明按照学号查找函数

voidchazhao2(structstudentstu[N],inti);//声明按照姓名查找函数

voidchazhao3(structstudentstu[N],inti);//声明按照房间号查找

/*********定义结构体************/

structstudent

{

/*构造结构成员*/

intID;

charname[15];

charsex;

introomnum;

floatscore[3];

char*getSex()

{

if(sex=='g')

return"女";

else

return"男";

}

};

/****************************主函数开始**************************/

voidmain()

{

structstudentstu[N];

intcount=0,m=0,j;

charch,ch1;

intchoice,choice3,choice4;//菜单选项及子菜单选项

intuser;

do//此循环体控制用户信息输入错误后是否重输

{

do//此循环体控制返回主菜单

{ch1='n';//如果用户将主菜单选择错误,可用此变量控制是否重输

choice=menu();

switch(choice)//此条件结构控制选择菜单功能后的操作

{

case1:

//输入学生信息

{

do//此循环体控制是否继续输入

{

cout<<"******************************学员信息录入**********************************\n";

cout<<"请输入第"<

stu[count]=shuru();//调用输入函数

//cout<<"是否继续(y/n)";

fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

ch=getchar();

count++;

}while(ch=='y');

break;

}

case2:

//显示排序好的学生信息

{

cout<<"******************************学员信息显示**********************************\n";

cout<<"\n排序后的信息如下:

\n";

sort(stu,count);//调用排序函数

showheader();

for(j=0;j

{

display(stu[j]);//调用显示函数

}

break;

}

case3:

//插入功能

{

while(choice3!

=3)//此循环体控制是否退出子菜单

{

choice3=menu3();//调用子菜单函数

if(choice3==1)//此条件结构控制子菜单选项

{

do//此循环体判断是否继续插入

{cout<<"******************************学员信息插入**********************************\n";

charu(stu,count);//调用插入函数

count++;

cout<<"是否继续插入?

(y/n)";

fflush(stdin);

ch=getchar();

}while(ch=='y');

}

if(choice3==2)//此条件结构控制子菜单选项

{

cout<<"\n\n插入学生信息后如下:

\n";

sort(stu,count);//调用排序函数

showheader();

for(j=0;j

{

display(stu[j]);//调用显示函数

}

}

}

break;

}

case4:

//查找功能

{

while(choice4!

=4)//控制是否继续查找

{

choice4=menu5();//调用查找子菜单函数

if(choice4==1)//控制按照学号查找

{

chazhao1(stu,count);//调用按照学号查找的函数

}

if(choice4==2)//控制按照姓名查找

{

chazhao2(stu,count);//调用按照姓名查找的函数

}

if(choice4==3)//控制按照房间查找

{

chazhao3(stu,count);//调用按照房间查找的函数

}

}

break;

}

case5:

//退出

{

cout<<"确认退出?

(y/n)";//让用户确认是否退出

fflush(stdin);

ch=getchar();

break;

}

default:

{

cout<<"\a\a警告:

您输入错误,是否重输!

(y/n)";

fflush(stdin);

ch1=getchar();

break;

}

}

}while(ch=='n'||ch1=='y');//控制是否要退出系统

{

cout<<"\a\a警告:

您的用户名或密码输入有误!

是否重输?

(y/n)";

}

fflush(stdin);

ch=getchar();

}while(ch=='y');

}

/*************************主函数结束*************************/

/*自定义输入函数*/

structstudentshuru()

{

structstudentstu;

cout<<"学号:

";

cin>>stu.ID;

cout<<"姓名:

";

cin>>stu.name;

cout<<"性别(g/b):

";

fflush(stdin);

cin>>stu.sex;

cout<<"房间号:

";

cin>>stu.roomnum;

cout<<"是否继续?

(Y/N)"<

returnstu;

}

/*自定义显示函数*/

voiddisplay(structstudentstu)

{

cout<<"\t"<

cout<

cout<

cout<

}

/*自定义排序函数*/

voidsort(structstudentstu[N],inti)

{

intj,k;

structstudenttemp;

for(j=0;j

{

for(k=0;k

{

if((stu[k].ID)>(stu[k+1].ID))

{

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\t1、插入学生信息\n\n";

cout<<"\t\t\t\t2、显示插入后的学生信息\n\n";

cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";

cout<<"\n\n请选择功能选项:

";

intchoice3;

cin>>choice3;

returnchoice3;

}

/*自定义按照学号查找函数*/

voidchazhao1(structstudentstu[N],inti)

{

intselect,j;

charch;

cout<<"\t*******************您选择的是按照学号查找:

*******************\n\n";

do

{

cout<<"\n\n请输入学号:

";

cin>>select;

for(j=0;j

{

if(select==stu[j].ID)

{

break;

}

}

if(j

{

showheader();

display(stu[j]);

}

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)

{

intj,room;

charch;

cout<<"\t*******************您选择的是按照房间号查找:

*******************\n\n";

do

{

cout<<"\n\n请输入房间号:

";

cin>>room;

for(j=0;j

{

if(room==stu[j].roomnum)

{

break;

}

}

if(j

{

showheader();

display(stu[j]);

}

else

{

cout<<"你查找的信息不存在\n";

}

cout<<"是否继续查找?

(y/n)";

fflush(stdin);

ch=getchar();

}while(ch=='y');

}

/*自定义查找功能子菜单函数*/

intmenu5()

{

cout<<"\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<<"\n\n请选择功能选项:

";

intchoice4;

cin>>choice4;

returnchoice4;

}

 

voidshowheader()

{cout<<"\n\n\t*********************************************************\n";

cout<<"\t学号\t姓名\t性别\t房间号\t\n";

cout<<"\t*********************************************************\n";

}

 

七、程序运行的测试与分析

此程序在输入学号时不能过长,否则学号出现错误,显示时也会对不上相应的位置,在主菜单选择错误时也没按“输入信息有误是否重输(y/n)”执行,在主菜单执行退出功能时未能准确执行,其他功能还行。

主菜单显示:

 

信息录入界面:

 

信息显示界面:

 

插入学生信息界面:

查找学生信息界面:

 

四、心得

刚开始没有什么头绪,只是想一点做一点,整个过程中出现了很多问题,不懂时问同学或者看书,各个函数的调用比较混乱。

通过一系列的梳理后慢慢清晰,通过本次的课程设计,让我懂得了很多上课时没太掌握的知识,同时也对数据结构这门课程有了更深刻的认识

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

当前位置:首页 > 成人教育 > 专升本

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

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