数据结构课程设计报告

发布 2022-10-05 03:09:28 阅读 9487

华北科技学院。

课程设计说明书。

班级: 计科b113 姓名:__来丹丹__学号 30

设计题目:__模拟酒店的管理系统。

设计时间:__2013.6.24___至__2013.7.5 __

指导教师。评语。

评阅成绩:__评阅教师: _

一、课题设计任务及要求。

1.问题描述:

某酒店有n个等级的房间,第i等级有个房间,每个房间有个床位(1≤i≤n)。试模拟酒店管理系统中床位分配和**的功能,设计能为单个旅客分配床位,在其离店便**床位(供下次分配)的算法。

2.基本要求:

1)设计目的:编写一个酒店管理管理系统,实现对酒店信息的基本管理。把所学数据结构知识应用到实际软件开发中去。

内容包括:1、 订房管理(包括房间等级、房客性别)

2、 退房管理。

3、 已订房查询。

2)设计要求:

1)用菜单调用。

2)作为一个完整的系统,应具有友好的界面和较强的容错能力。

3)上机能正常运行,并写出课程设计报告。

二、需求分析。

经分析,程序要有以下功能:

对酒店信息进行初始化;

在旅客到来时记录旅客信息并为其分配床位;

在旅客离开时为其打印账单,并**其床位;

在输入过程中对输入的数据进行检查,以防止输入超出范围的信息。

三、系统的概要设计。

1.功能模块的划分。

程序功能模块划分下图所示:

图1 系统结构图。

2.参考的adt

adt设计使用线性表和栈:

adt list

数据关系:r1=

基本操作:initlist( &l )

操作结果:构造一个空的线性表 l 。

destroylist( &l )

初始条件:线性表 l 已存在。

操作结果:销毁线性表 l 。

listempty( l )

初始条件:线性表l已存在。

操作结果:若 l 为空表,则返回 true,否则返回 false。

listlength( l )

初始条件:线性表 l 已存在。

操作结果:返回 l 中元素个数。

priorelem( l, cur_e, &pre_e )

初始条件:线性表 l 已存在。

操作结果:若 cur_e 是 l 中的数据元素,则用 pre_e 返回它的前驱,否则操作失败,pre_e 无定义。

nextelem( l, cur_e, &next_e )

初始条件:线性表 l 已存在。

操作结果:若 cur_e 是 l 中的数据元素,则用 next_e 返回它的后继,否则操作失败,next_e 无定义。

getelem( l, i, &e )

初始条件:线性表 l 已存在,1≤i≤lengthlist(l)。

操作结果:用 e 返回 l 中第 i 个元素的值。

locateelem( l, e, compare( )

初始条件:线性表 l 已存在,compare( )是元素判定函数。

操作结果:返回 l 中第1个与 e 满足关系 compare( )的元素的位序。

若这样的元素不存在,则返回值为0。

listtr**erse(l, visit( )

初始条件:线性表 l 已存在,visit( )为元素的访问函数。

操作结果:依次对 l 的每个元素调用函数 visit( )

一旦 visit( )失败,则操作失败。

clearlist( &l )

初始条件:线性表 l 已存在。

操作结果:将 l 重置为空表。

putelem( &l, i, &e )

初始条件:线性表l已存在,1≤i≤lengthlist(l)。

操作结果:l 中第 i 个元素赋值同 e 的值。

listinsert( &l, i, e )

初始条件:线性表 l 已存在,1≤i≤lengthlist(l)+1。

操作结果:在 l 的第 i 个元素之前插入新的元素 e,l 的长度增1。

listdelete( &l, i, &e )

初始条件:线性表 l 已存在且非空,1≤i≤lengthlist(l)。

操作结果:删除 l 的第 i 个元素,并用 e 返回其值,l 的长度减1。

adt list

adt stack

数据关系:r1=

约定an端为栈顶,a1端为栈底。

基本操作:initstack(&s)

操作结果:构造一个空栈 s。

destroystack(&s)

初始条件:栈 s 已存在。

操作结果:栈 s 被销毁。

clearstack(&s)

初始条件:栈 s 已存在。

操作结果:将 s 清为空栈。

stackempty(s)

初始条件:栈 s 已存在。

操作结果:若栈 s 为空栈,则返回true,否则返回false。

stacklength(s)

初始条件:栈 s 已存在。

操作结果:返回栈 s 中元素个数,即栈的长度。

gettop(s, &e)

初始条件:栈 s 已存在且非空。

操作结果:用 e 返回s的栈顶元素。

push(&s, e)

初始条件:栈 s 已存在。

操作结果:插入元素 e 为新的栈顶元素。

pop(&s, &e)

初始条件:栈 s 已存在且非空。

操作结果:删除 s 的栈顶元素,并用 e 返回其值。

stacktr**erse(s, visit( )

初始条件:栈 s 已存在且非空,visit( )为元素的访问函数。

操作结果:从栈底到栈顶依次对s的每个元素调用函数visit( )一旦visit( )失败,则操作失败。

adt stack

四、程序设计思路。

1.建立结构体及链表。

建立酒店房间结构体及其信息类型,如下:

typedef struct node

int roomgrade;//房间等级。

int roomnumber;//房间号。

int peoplein;//入住人数。

int bed[n];/床号。

int sex;//性别。

struct node *next;//结构体指针。

room;建立空的房间链表。

room *creat()

//建立房间的链表。

建立指向房间的指针room *head,*p,*q;

while(等级循环)

for(房间号在小于等级的情况下进行循环)

p指向下一个房间;

if(房间号和床位号都不为空)

打印:客满;

else打印旅客入住信息;

流程图为:图2 订房程序流程图。

退房函数的建立。

void tuifang(room *head)

//退房间。

建立房间指针room *p;

输入旅客退房的房间号,性别,床号;

while(房间不为空)

if(查找到的房间号与输入的一致)

if(性别与输入一致)

for(循环等级)

将此人的所有信息进行删除操作。

p指向下一个房间;

流程图为:图3 退房程序流程图。

显示函数的建立。

void display(room *head)

//显示房间信息。

建立房间指针room *p;

while(入住人数不为空)

打印旅客入住的相关信息。

for(等级循环)

if(床位不为空)

打印已经入住的床位号;

p指向下一个房间。

流程图为:图3 显示已订房流程图。

5、运行结果和程序分析。

1. 程序运行主界面。

图5 主界面。

2.在图5中点“进入”,则出现如图6所示模块1界面。测试实例如图。

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...