ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:555.50KB ,
资源ID:18064771      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18064771.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(模拟旅馆管理系统的一个功能床位的分配与回收.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

模拟旅馆管理系统的一个功能床位的分配与回收.docx

1、模拟旅馆管理系统的一个功能床位的分配与回收模拟旅馆管理系统的一个功能床位的分配与回收(总14页)实 验 报 告课程名称 数据结构 实验名称 床位的分配与回收 实验类型 _ 综合型 实验地点 计405机房 实验日期 2017.5.20指导教师 魏海平 专业 软件工程 班级 软件1601 学号 1611030102 姓名 寇春雷 辽宁石油化工大学计算机与通信工程学院数据结构实验报告评分表项目要求分数有无项目()得分预习报告(30分)实验目的明确5实验内容理解透彻5实验方案设计完整合理程序总体框架设计完整10完成相关辅助代码5测试方案合理5实验过程(30分)发现问题5问题的分析15问题的解决方法10

2、实验报告(20分)内容翔实无缺漏5如实记录实验过程10撰写规整5实验总结(10分)实验结果的分析5按照结果对原实验方案的改进意见5实验体会(10分)实验的收获5实验内容的发散考虑5总分实 验 四 模拟旅馆管理系统的一个功能床位的分配与回收题目:模拟旅馆管理系统的一个功能床位的分配与回收1 问题描述:某旅馆有n个等级的房间,第I等级有 个房间,每个等级有个床位(1In)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。 基本要求(1)输入数据分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。回收时,输入房间等级、房间号和床位号。

3、2)输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 实现提示(1)数据结构主要采用顺序结构链接结构的线性表及堆栈。a)每个房间用一个如下所示的具有五个字段的结点(房结点)表示:性别房间号现有空床数BTOPRLINK其中,性别:0表示房间为空状态 1表示房间分配给女旅客 2表示房间分配给男旅客现有空床数:数据在0 之间,其中是第i等级一个房间 的床位数,当现有空床数为时,表示房间为

4、空;为0时,表示房间满。RLINK:当房间空时,用作空房栈的连接;当房间不空时,指向下一个房结点。BTOP:指向该房间的空床号栈栈顶。一个房间对应一个顺序表示的空床号栈。栈的容量为,栈中存放空床号。分配时,从栈顶取出空床号,栈顶下移(BTOP=BTOP+1);回收时,栈顶上移(BTOP=BTOP-1),将回收的空床号填入栈顶。每一个等级中的空房间构成一个空房栈;已住旅客的房间构成一个链栈(简称房链),其头结点结构如下: 可分配女床位总数可分配男床位总数TTOPRLINK其中:第i等级中房间总数 第i等级中每个房间的床位数可分配男、女床位的总数的初值等于* ,因为开始时所有房间和床位既可以分配给

5、男旅客,也可以分配给女旅客。当在房链中分配一个床位给男(女)旅客,床位总数应减1;当从空房栈中取出一个房间作为男(女)旅客房间时,则可分配女(男)床位总数应减,当回收一个男(女)床位时,则可分配男(女)床位总数应加1;当回收一个男(女)空房至空房栈时,则可分配女(男)床位总数应加。TTOP:指向本级空房栈栈顶,当无空房间时,TTOP=(NIL)。RLINK:指向本级房链第一个顶点,当房链为空时,RLINK=(NIL)顺序表s=(),其中,顺序存放第1n等级房间的头结点; 存放内容如下所示:全店可分配女床总数全店可分配女床总数00初始时,全店可分配男、女床总数相同,均为 ,在分配或回收时,对各等

6、级可分配男(女)床位总数处理的同时也要对全店可分配男(女)床总数作相应处理,当全店可分配男(女)床总数等于零时,表示客满。(2)需求分析经过分析,程序要有以下几个功能:a.程序启动的时候应该能够对旅馆的信息进行初始化,并且可以让不同的进行手动初始化;b.当客户到来的时候,可以登录客户的信息,并且根据旅馆的情况和客户的要求进行分配床位;c.当客户结账的时候,可以打印其账单,并且将床位回收;d.在进行输入信息的时候,应该有检查错误的功能,防止输入的信息超出正常范围.4、概要设计功能模块的划分功能模块的描述:1.信息的初始化:应该包括两种初始化,第一种是每次打开程序的时候,自动完成对旅馆信息的初始化

7、。第二种是由用户输入旅馆的信息,完成旅馆信息的初始化。2.显示模块.显示模块是人机交互的必要模块,用于显示主菜单、旅馆的当前住宿情况、床位分配情况、账单等等,方便用户进行下一步操作。3.客户登记及床位分配模块:用来登记客户的信息以及床位的分配。4.客户退房及床位回收模块:用来登记退房客户的信息以及床位的回收。5.保存信息模块:用来保存旅馆的相关信息,包括手动初始化之后的客房信息,以及退出程序之前的保存工作。6.退出:退出程序。4.源程序代码:#include stdafx.h#include using namespace std;#include/数据的输入和输出#include#inclu

8、de#include #include #define N 7/房间等级#define NUM 4/每个等级的房间数#define M 2/每个房间的床位数typedef struct customer/顾客结构 string name; int age; int sex; int day,month,year;/到期时间 int bednumber;/该顾客的床号customer;typedef struct room/房间结构 customer personM; int roomgrade;/该房间的房间等级 int roomnumber;/该房间的房间号 int peoplein;/该房

9、间的房间入住人数 int bedM;/该房间的总床位 struct room *next;/结构体指针Room;Room *creat()/建立房间的链表 Room *head,*p,*q; int i=1,j,k,m=0,h; head=new(Room);/生成头结点 head-next=NULL; q=head;/正位序插在表尾 while (i=N)/从第一等级开始一一建立单链表 for(j=1;j=NUM;j+)/进入该等级,建立不同房间 p=new(Room); for(k=0;kpersonk.sex=-1;/表示一个人也没有 p-personk.age=0;/客人信息置为0 p

10、-personk.day=0; p-personk.month=0; p-personk.year=0; /名字无需初始化 p-personk.bednumber=0;/该顾客的床号 p-roomgrade=i;/该房间的基本信息初始化 p-roomnumber=j;/房间号 p-peoplein=0;/入住人数 for(h=0;hbedh=0;/0表示该床未住人,1表示住人 q-next=p; q=q-next; i+; q-next=NULL; return(head);void init(Room *head)/初始化 Room *p=head; int i,k; /p=head; wh

11、ile(p!=NULL) for(k=0;kpersonk.age=0; p-personk.day=0; p-personk.month=0; p-personk.sex=-1; p-personk.year=0;/顾客姓名无需初始化 p-personk.bednumber=0;/该顾客的床号 p-peoplein=0;/房价基本信息初始化 for(i=0;ibedi=0; p=p-next;/下一个房间搜索 printf(n -操作成功!- n); printf(*n);void checkin(Room *head)/订房间 Room *p; int i,j,bednumber=0,se

12、x,roomgrade;/ printf(n -欢迎使用订房系统- n); printf(*n); /输入性别,及房间等级 /姓名,年龄 string name;int age,day,month,year; printf( 请输入姓名:); cinname; int len=name.length(); if(name0roomgrade=roomgrade) for(i=1;i=NUM;i+)/进入该等级,查找房间 for(j=0;jbedj=0)/查找到次床位 flag=1;/标记分配成功 bednumber=j+1;/标记床号 fangjianhao=p-roomnumber; p-p

13、ersonj.name=name;/写入顾客信息 p-personj.age=age; p-personj.sex=sex; p-personj.year=year; p-personj.month=month; p-personj.day=day; p-personj.bednumber=j+1;/该顾客的床号 p-bedj=1;/标记此房间的词此床位已住人 p-peoplein+;/此房间的入住人数+1 break;/找到床位跳出循环 if(flag=1)break; if(flag=1)break; /进入该等级,查找房间 if(flag=1)break; p=p-next;/继续下一个

14、房间的搜索 /while() printf(*n); if(flag=0) printf(n 该等级的房间已满,请重新另外等级房间!n); if(flag=1) printf(n 您分配的房间信息为:n 房间等级:%dn 房间号:%dn 床号:%dn,roomgrade,fangjianhao,bednumber); printf(*n);void checkout(Room *head)/退房间 Room *p; int roomnumber,roomgrade,bednumber,j; int flag=0;/标志位 printf( -欢迎使用退房系统- n); printf(*n); p

15、rintf( 请输入房间等级:); scanf_s(%d,&roomgrade); printf( 请输入房间号:); scanf_s(%d,&roomnumber); printf( 请输入床号:); scanf_s(%d,&bednumber); p=head;/p标记头节点 while (p!=NULL)/搜索房间号,性别,房间等级 if(p-roomgrade=roomgrade & p-roomnumber=roomnumber) for(j=0;jpersonj.bednumber=bednumber)/查找到此床位 flag=1;/标记查找成功 p-personj.name=;/

16、清除顾客信息 p-personj.age=0; p-personj.sex=-1; p-personj.year=0; p-personj.month=0; p-personj.day=0; p-personj.bednumber=0; p-bedj=0;/标记此房间的词此床位未住人 p-peoplein-;/此房间的入住人数-1 /p-roomnumber=0; break;/找到床位跳出循环 if(flag=1)break; if(flag=1)break; if(flag=1)break; p=p-next;/继续下一个房间的搜索 if(flag=1) printf(-删除信息成功!-n

17、); if(flag=0) printf(-删除信息失败!-n); printf(*n);void display(Room *head)/显示房间信息 Room *p; int i,k; p=head; printf(nn -已订房间查询- nn); printf(*n); while (p-next!=NULL)/搜索 if(p-roomgraderoomgrade=1) for(k=0;kpersonk.bednumber!=0) printf(n 房间等级:%d,房间号:%d,p-roomgrade,p-roomnumber); printf(顾客姓名:); coutpersonk.n

18、ame; printf(,顾客性别:%d该房间内已住人数:%d,房间到期日期:%d年,%d月,%d日,p-personk.sex,p-peoplein,p-personk.year,p-personk.month,p-personk.day); printf(该房间已住人的床号为:); for(i=0;ibedi=1) printf(%d,i+1); p=p-next;/继续下一个房间的搜索 printf(n*n);void main() int n,k=1;/k为判断循环的条件 Room *head; head=creat();/creat()返回room结构类型 while(k=1) pr

19、intf( 欢迎您的光临,很高兴为您服务 n); printf( -系统功能- n); printf( 1:订房 n); printf( 2:退房 n); printf( 3:显示房间分配情况 n); printf( 4:删除所有信息 n); printf( 5:退出系统 n); printf( 请您选择功能(请输入1-5的数字):); scanf_s(%d,&n); switch(n) case 1:checkin(head);break; case 2:checkout(head);break; case 3:display(head);break; case 4:init(head);b

20、reak; case 5:k=0;break;/结束 default :printf(输入的信息错误!请重新输入!);break; 5.程序截图:6.实验总结(1)本次课程设计的题目是模拟旅馆的一个功能床位的分配与回收。我采用的是链表和栈的结构形式进行编程,基本完成题目的要求,既对链表和栈的相关知识有了更加深刻的理解,而且又熟练了c语言编程。(2)我们定义了一个顺序表来存储每一级房间的头结点。然后义了三个结构体,房间节点的结构体,床位节点的结构体,客户节点的结构体,分别用来存放房间、床位、客户的相关信息。然后用了链式存储结构的栈结构,分别为空房栈、已住房栈、空床位栈、已住床位栈。(3)本次实验涉及到的主要是链表的和栈的运算,包括有链表的建立,插入,删除,栈主要是进栈,出栈,栈节点的查找等,进一步加深了对数据结构的了解。

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

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