华北科技学院。
课程设计说明书。
班级: 计科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 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...