数据结构课程设计之宿舍管理系统Word文档下载推荐.docx

上传人:b****5 文档编号:15680146 上传时间:2022-11-14 格式:DOCX 页数:52 大小:1.05MB
下载 相关 举报
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx_第1页
第1页 / 共52页
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx_第2页
第2页 / 共52页
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx_第3页
第3页 / 共52页
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx_第4页
第4页 / 共52页
数据结构课程设计之宿舍管理系统Word文档下载推荐.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

数据结构课程设计之宿舍管理系统Word文档下载推荐.docx

《数据结构课程设计之宿舍管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计之宿舍管理系统Word文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。

数据结构课程设计之宿舍管理系统Word文档下载推荐.docx

为宿舍管理人员编写一个宿舍管理查询软件

(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模板 > 其它模板

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

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