为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

中小型宾馆住宿管理系统设计课程设计

2017-09-27 43页 doc 110KB 23阅读

用户头像

is_044822

暂无简介

举报
中小型宾馆住宿管理系统设计课程设计中小型宾馆住宿管理系统设计课程设计 . 《管理信息系统》课程设计报告 小组大报告 系统名称:中小型宾馆住宿管理系统设计 班 级: 管理学院工商1 组 长: 组 员: 指导老师: 日 期: 2013 年 5 月9 日 评阅成绩: 教师签名: . . 附件: 小组成员任务清单 组员 任务 是否组长 第一阶段 对业务流程现行系统问题提出解决方案 第三阶段 系统总体结构设计 是 第四阶段 系统主界面、主程序设计 第一阶段 系统分析阶段对系统需求和可行性分析 第二阶段 数据流程图 否 第四阶段...
中小型宾馆住宿管理系统设计课程设计
中小型宾馆住宿管理系统设计课程设计 . 《管理信息系统》课程设计报告 小组大报告 系统名称:中小型宾馆住宿管理系统设计 班 级: 管理学院工商1 组 长: 组 员: 指导老师: 日 期: 2013 年 5 月9 日 评阅成绩: 教师签名: . . 附件: 小组成员任务清单 组员 任务 是否组长 第一阶段 对业务流程现行系统问提出解决方案 第三阶段 系统总体结构设计 是 第四阶段 系统主界面、主程序设计 第一阶段 系统分析阶段对系统需求和可行性分析 第二阶段 数据流程图 否 第四阶段 编制系统使用#说明书# 第二阶段 功能结构 第二阶段 数据字典 否 第三阶段 系统主要代码设计 第三阶段 概念结构设计 第三阶段 其它详细设计 否 第四阶段 系统测试 第一阶段 数据流程调查 第三阶段 系统数据库设计 否 第三阶段 物理结构设计 第一阶段 了解系统开发背景和对系统功能设计 否 第三阶段 逻辑结构设计、数据库实施 第三阶段 登录界面设计 第一阶段 系统分析阶段系统介绍 第三阶段 系统输入输出设计 否 第五阶段 总结 小组成员设计成绩评价 组员 组长对组员的简单评语 评价 做事认真负责 良 积极准备做小组工作 优 . . 做事认真,有协调能力 优 做事踏实 良 做事认真有效率 良 做事认真,积极 良 做事认真负责 良 绪 论 随着社会经济的发展,人们对生活质量的要求越来越高,作为服务之一的宾馆业也在不断的完善服务体制。它是集餐饮、住宿、娱乐于一体的立体化服务体系,其中顾客可以随意消费并统一结账;宾馆管理者可及时了解宾馆的全部运营情况及经营走势,找出运转成本,作为经营决策的依据。只有运用先进的科学管理手段,利用计算机管理系统才能更好实现这一管理模式。 一 系统调查与分析报告 小组报告一 1 系统概况 1.1 系统背景 客房管理系统是一个宾馆不可缺少的一部分,它的内容对于企业的决策者和管理者来说都是至关重要的,因此,客房管理系统应该能够为用户提供充足的信息和快捷的查询手段,但一直以来人们使用传统的人工方式管理,这种管理方式存在着许多缺点,诸如效率低,保密性差等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学不断发展,使用计算机对宾馆客房信息进行管理,具有人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高宾馆客房的管理效率,也是宾馆管理科学化、正规化,与世界接轨的重要条件。 . . 随着宾馆规模的不断扩大,客房数量的急剧增加,有关客房的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有客房信息管理系统来提高客房管理工作的效率。 传统手工的客房管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们们可以做到信息的规范管理和快速查询,实现了客房信息管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。 1.2 系统介绍 实现一个能对宾馆客房租住信息,客人信息,结算信息的管理,实现前台操作流程较方便,清晰,高效的信息管理系统。 客房管理系统的主要任务是对宾馆的客房进行管理,使用户能轻松地找到所需要的客房信息,提供订房和退房服务,并对宾馆客房的业绩进行统计。宾馆要想依托计算机网络开展现代化管理,必须首先依据宾馆行业特定的运营方式和工作流程,在实用和可行的前提下,对电脑软件系统要开展的工作提出一些基本要求。这些要求会促使开发者和用户共同去全面深入地分析了解宾馆的运作机制,区分经营项目类别和经营方式,掌握经营的难点和侧重点,从而才能在此基础上设计和开发出既符合宾馆的实际情况,又能充分发挥计算机管理的积极作用,独具特色的管理信息系统。这个系统应该给宾馆的经营带来直接或间接的经济效益,使宾馆能在先进的计算机网络系统的支撑下在管理方面逐步上档次上水平,进一步提高效率和体现宾馆的整体形象。基本要求有: 实现多操作点的信息共享,相互之间的信息传递要准确到位、快捷和顺畅。例如客人在结账时离不开入住时间、餐饮、消费、娱乐、房费、账单的相互关系等多种信息的检索和综合。 系统24小时连续可靠运行,对重点业务实施全天候动态监管。宾馆中客人往来是随机的,因此宾馆必须提供24小时不间断的服务。系统维护方便可靠,有较高的安全性,满足实用性、先进性和经济性的要求。实现一个能对宾馆客房租住信息,客人信息,结算信息的管理,实现前台操作流程较方便,清晰,高效的信息管理系统。 1.3 系统开发 这个阶段时间很短,工作内容是通过一段时间的资料收集,然后讨论系统功能需求分析,数据库设计,代码实现,系统测试和文档整理等工作的划分,主要目的是为了便于以后开展工作。该项目产品主要包括程序和文件。所要提交的程序主要有代码和可执行程序;所要提交的文件有设计报告。 在本系统的设计过程中,为了克服这些困难,满足管理工作的需要,我们们. . 采取了下面的一些原则。 ?统一各种原始单据的格式,统一报表的格式。 ?删除不必要的管理冗余,实现管理规范化、科学化。 ?程序代码化,软件统一化,确保软件的可维护性和实用性。 ?界面尽量简单化,做到实用、方便,尽量满足企业中不同层次员工的需要。 1.4 可行性分析 目前宾馆客房管理系统在宾馆中已普遍使用,使用该项目的开发研究有很好发展前景。虽然我们们开始的时间较紧迫且相关少,这给项目开发带来一定的困难,但从我们们所具备的系统开发所需的人员、软件、硬件资源和工作环境来说该项目的开发也是应该具有可行性的。 (1)经济可行性分析 构建管理信息系统的必要性在于传统管理模式的弊端严重影响了我们国宾馆管理现代化的进程以及先进的管理信息系统具有巨大的优势从而可以促进我们国宾馆管理的现代化,而宾馆管理的现代化就是要求管理的高效率,多样化,已经各自数据提取的准确。 传统模式的弊端。传统的宾馆管理模式使得宾馆无法保持高效率的管理,现举例加以说明:(1)查询客房的时间长。客房管理者必须一张张地翻阅大量的住宿登记单,寻找符合条件的信息。书写不规范或客人已换房以及电话占线等问题都会使得查询的时间延长。(2)结账容易出现错、跑账。当客人结账离店时,客房管理总台根据客人的明细表,将客人的各种单据一一相加才能结账,这样难免出现错误,造成客人等待时间长。另外,结账时也很容易出现跑账的情况,给宾馆带来经济损失。(3)重要客人不重要。在内部协调与管理方面,当有VIP人住时客户管理前厅部就要填写多联通知单分送各部门,安排放鲜花、水果、总经理名片以及用餐要求等具体事宜。若有一个部门收到信息晚一点,就会把VIP当成普通客人对待,将会造成不利影响。(4)计算审核困难。计算审核是对一天经营情况进行统计、分析和审核,然后以各种报表的形式送交总经理和有关部门并归档。然而在手工管理模式下,每天统计审核需要花很多时间。客房率高时花费在计算机上的时间则更长,因此,审计员大部分时间都花费在做加法上,很少有时间去分析和审计。总的来说,宾馆作业是一个实时系统。如对数据不能进行及时的处理,就会造成走单。从而造成管理上的混乱,给宾馆的经济方面和信誉方面带来损失。同时,宾馆的账务是连续不断的,如果因为一时的障碍而造成了数据的不完整性,对宾馆未来发展计划的制定也会带来负面的影响,而管理信息系统就能解决以上问题。 (2)技术可行性分析 . . 本系统采用vc++开发的,vc++i是一种应用很广泛、实用且功能很强大的系统开发工具。通过对vc++的探索学习,了解到:在Windows环境下编程的传统方法已经难以胜任。因为传统的结构化编程使用的是面向过程,按顺序进行的机制,这种方法的缺点是编写程序的人员始终要关心什么时候发生什么事情,面对Windows事件驱动的工作方式,处理事件及其可能的组合会是一个非常棘手而且工作量很大的工作。 面向对象程序设计立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为自上而下编程的优胜者。它通过给程序加入扩展语句,把“封装”进Windows 编程所必需的“对象”中,使得复杂的工作条理清晰,编写容易。 一些早期的程序语言如Pascal, Smalltalk等,虽然具有面向对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,仍然要编写大量的代码。 而vc++使用“可视化”的编程方法,程序员不必建立对象,利用vc++所提供的可视控件,只要在提供的程序框架中加入完成功能的代码,如选择命令,移动鼠标等,而不必考虑按精确次序执行的每个步骤。在这种机制下,不必编写一个大型的程序,而是建立一个由若干个微小程序组成的应用程序,这些微小的程序可以由用户启动的事件来触发。这样就可以快速创建强大的应用程序而无需涉及不必要的细节。简单地说,“可视化编程”就是使用vc++语言,利用它所提供的可视化控件来创建“对象”,这是一种编程方法的新概念。 (3)社会上的可行性 近年来,软件产业以年平均超过30%的速度增长,软件和信息技术在国民经济和社会各领域得到广泛应用,成为推动产业结构调整、产业技术改造的重要基础和支撑,极大地推进了我们国信息化建设进程,各个行业目前正处于信息化处理的应用时期,有关的政策法规对企业信息化给予了一个宽松的环境和平台。 二、系统需求分析 1.功能结构 宾馆住宿管理系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操作上包括客房信息。客房类型信息、客户记录信息、客户信息、员工信息和员工工作信息。各个部分的数据内容又有内在的联系。针对该系统的数据特点,可以总结如下的需求: 客房信息包括客房的详细信息 客户信息记录客户登记时的详细信息 入住信息是客户信息和客房信息之间的关联 . . 每个员工信息都对应一个员工类型 每个客房都对应一个员工信息 根据以上需求分析,给出以下功能模块图: 某宾馆客房管理系统 入客价客客住户目房房费和信信类信用退息息型息管房管管管管理管理理理理理 客客客客客客客客查修添删入退户户户户价价查添修删房房房房询改加除住房信信信信目目看加改除信信信信费费费费登登息息息息查添类类类类息息息息用用用用 查修删添查添删修信信信信记记询加型型型型 询改除加询加除改息息息息 图1功能模块图 2.数据流程图 1(业务流程图,如图2.1所示。 . . 图2.1 客房管理业务流程图 (1)顶层数据流程图,如图2.2所示。 客人入住、 更新信息续房、退房 宾馆客房管理 客户系统宾馆管理者 办理客人业务查询信息 图2.2 顶层数据流程图 (2)第二层数据流图,如图2.3所示。 客房信息 表空房信息 入住客户信息 住宿信息 表宾馆管理 房号信息者 更新信息客户续住补交费用单 客房物品房号信息客户信息信息表退房表 结账信息 图2.3 第二层数据流图 . . (3)宾馆开房数据流程图,如图2.4所示。 缴费单 客户信息选定房间P1.2要求P1.1信息客户 客户登记查询客房条件空房信息 客户信息表客房信息表 住宿信息表 图2.4 宾馆开房数据流程图 (4)客户续房数据流程图,如图2.5所示。 住宿信息表 P2.1P2.2房号信息续住信息客户查询住宿信修改登记表息 补交费用 图2.5 客户续房数据流程图 (5)客人退房数据流程图,如图2.6所示。 房号信息检查结果 P3.2P3.1 整理检查结检查客房物客户物品完好信息物品赔偿证明单果品 延迟退房时间信息 P3.4P3.3查询住提前退房物品赔偿住宿信息表房时间 P3.5客户信息表 P3.6退款P3.8扣除费用注销注册正常退房客房信息表 P3.7 结算信息 退押金图2.6 客人退房数据流程图 3.数据字典 . . 数据字典是关于数据信息的集合,即对数据流图中包含的所有元素的定义的集合。 1.数据项 表3-1. 客户(Travellers)信息: 表中列名 数据类型 可否为空 说明 Tno Int Not null(主键) 客户编号 Tname Char(10) Not null 客户姓名 Tsex Char(2) Not null 客户性别 Tid Char(20) Not null 客户身份证号 表3-2. 客房(Rooms)信息: 表中列名 数据类型 可否为空 说明 Rno Int Not null(主键) 客房号 Rstyle Char(10) Not null 客房类型 Rprice Int 客房单价 Rstate Char(10) 客房状态 Rtel Char(15) 客房电话 表3-3. 客户住宿(Living)信息: 表中列名 数据类型 可否为空 说明 Tno Int Not null(主键) 客户编号 Rno Int Not null(主键) 客房号 Tcomedate Datetime Not null 入住日期 Tleftdate Datetime Not null 结算日期 Ttime Int 住宿时间 Tamount Int 房费 表3-4. 客房物品(Roomitem)信息: 表中列名 数据类型 可否为空 说明 Rno Int Not null 客房号 Ritemno Char(10) Not null(主键) 客房物品编号 Ritemname Char(20) Not null 客房物品名称 Ritemstate Char(10) 物品状态 Ritemprice Int 客房物品单价 Ritemnum Int 物品数量 2.数据结构 根据上述系统功能分析和需求总结,设计如下的数据结构 数据结构名 含义说明 客房类型 包括客房类型(单间、标间)、 . . 客房信息 包括客房编号、客房价格、客房所属类型、负责人 编号 客户信息 客户身份证号、客户姓名、客户性别、客户年龄、 联系方式、客房编号 登记信息 客房编号、客户身份证号、入住日期、退房日期、 账目结算 员工信息 员工编号、姓名、年龄、职位、联系方式、工资、 所属部门 员工类型 职位、底薪、工作时间 客房物品 客房剩余物品、客房所需物品等 3.数据流 数据流名称:客房登记信息 位置:宾馆—登录处理 说明:“登记”“查询”“反馈” 数据流名称:退房登记信息 位置:登录处理—宾馆人员 说明:显示客户消费各项信息 数据流名称:宾馆员工管理 位置:宾馆—员工信息 说明:显示员工各项基本信息 数据流名称:客房物品管理 位置:管理人员—宾馆仓库管理人员保护 说明:指定保护物品,保障宾馆各种所需物品的供求 4.数据存储 数据存储名称:客户登记表 输入:客户姓名、身份证号、房间号—输出:登录处理表格 数据结构:客户姓名+身份证号 说明:该注册信息由宾馆保密 . . 数据存储名称:管理人员登记表 输入:管理人员姓名、工号、—输出:登录处理表格 数据结构:管理人员姓名+工号 说明:该注册信息由宾馆保密 数据存储名称:退房登记表 输入:客户姓名、房间号—输出:登录处理表格 数据结构:客户姓名+房间号 说明:显示客户消费信息 5(处理过程 (1)客户入住登记(管理人员登记信息;输入:客户姓名、身份证号;输出:客户房间号;处理:在宾馆住宿系统中,登记好各项信息) (2)管理人员登录(管理人员注册帐号及登录;输入:姓名、工号;输出:管理人员登录验证;处理:在宾馆住宿系统中,登记好各项信息完成登录) (3)客户预订登记(管理人员登记信息;输入:客户姓名、身份证号、预订号;输出:客户房间号;处理:在宾馆住宿系统中,登记好各项信息) (4)客户退房登记(管理人员登记信息;输入:客户姓名、房间号;输出:客户消费信息;处理:在宾馆住宿系统中,显示消费信息) 三、系统设计 3.1 系统总体结构设计 宾馆客房管理信息系统的总体结构设计图如下图6所示: . . 宾馆客房管理系统 前预信报台定息表操管查统作理询计 表在表预表历计开预 开退房预预解定住定史房房房状定定除统客客客记登结态房入预计记帐查间住定人人人录 表 看 列列列统 图6 商业企业库存管理信息系统模块结构图 3.2 系统主要代码设计 void init_rooms() 初始条件:文件hotel.txt存在。 操作结果:各种房间都建立各自的链表,并已初始化。若文件hotel.txt中有入住房间的信息,则从文件中读取信息,并存入链表之中。 char function_print() 初始条件:链表的初始化操作已顺利进行。 操作结果:输出本程序的各种功能,给以用户操作提示。并将用户的选择返回给主函数。 void print_livein(int i) 初始条件:客户选择了入住方案,并入住房间。 操作结果:输出已入住客户的信息,以及入住客户的总数。 void print_book(int i) 初始条件:客户选择了预定方案,并预定房间。 操作结果:输出被预订房间的信息,以及已预定房间的总数。 void print_cusinf() 初始条件:有入住额客户。 操作结果:输出各种房间的入住信息。 int print_chose(int regnum,int regday) 初始条件:输入入住人数与住宿天数。 操作结果:根据入住人数提供房间选择方案,并显示各种方案的花费,以供客户进行选择。 . . void reg_livein(int serial,int regday) void Regist() 初始条件:客户选择了某一种入住方案。 操作结果:根据客户的选择方案,登记客户信息,并将其记录在链表中。 void book_room() 初始条件:客户选择了某一种预定方案。 操作结果:根据客户的选择方案,登记客户信息,并将其记录在链表中。 void Queryempty() 初始条件:选择所要查询的客房种类。 操作结果:输出显示该种房间剩余的房间号。 void Save(char filename[]) 初始条件:建立一个文本文件。 操作结果:将所有入住房间的信息记录到文本文件”hotel.txt”中。 void modify() 初始条件:需修改信息的客户名称,并且存在该客户入住的房间信息。 操作结果:对于三个存储房间信息的链表进行查找,若存在,则进行修改选择并修改,若不存在,则退出修改。 3.3 系统输入输出设计 程序每次执行时,首先从文本文件hotel.txt中语句提取数据生成链表,若文件hotel.txt中无房间信息,则输出“文件中无内容可以导入”,然后输出操作提示。输入命令提示中的序号便可以选择相应的命令,增加记录时逐项提示输入入住人数和入住天数,然后提示各种可行方案供旅客选择,根据提示,选择相应的序号后,再通过登记,就可以将信息添加到链表中。查询分为查询空房和查询已住用户信息,在主菜单中按照命令提示进行选择。如果查询空房,就将未入住旅客的各种类型客房显示在命令中,用户按照提示命令进行选择,就可以将空房的房间号码输出;查询已住客房的信息时,根据提示操作可以查看三种不同类型房间的入住信息。保存至文件即将链表中的信息写到文件中。选择主菜单中的退出则退出程序。 3.4 系统数据库设计 3.4.1 概念结构设计 1、概念设计说明 通常,把每一类数据对象的个体称为实体,而每一类对象的集合称为“实体集”。而E—R模型的主要成分是实体、联系和属性。如果用矩形框表示实体集,. . 用带半圆的矩形表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在实体集与属性的连接上标记一斜线,则可以表示实体集及每个实体集涉及的属性,实体集之间存在各种关系,通常把这种关系称为“联系”。联系有三类:一对一的联系(1:1);一对多的联系(1:n);多对多的联系(m:n)。 所以,此宾馆住宿管理系统中实体集与实体集的联系,E—R模型如下: 2 、E-R图 各实体之间的E-R图,如图3-1所示。 11N 客房提供客户住宿 M 1 N物品使用 图3-1 实体之间的E-R图 局部E-R图如下: 客户信息实体的E-R图,如图1所示。 客户 客户编号客户身份证号 客户姓名客户性别 图1客户信息实体的E—R图 客房信息实体的E-R图,如图2所示。 客房 客房号客房电话 客房类型客房状态 客房单价 图2 客房信息实体的E—R图 客户住宿实体的E-R图,如图3所示。 . . 客户住宿 客房号住宿时间 客户编号结算日期 入住日期房费 图3 客户住宿实体的E—R图 客房物品信息实体的E-R图,如图4所示。 客房物品 客房号物品数量 客房物品编号客房物品单价 图4 客房物品实体的E—R图 客房物品名称物品状态 全局E-R图如下: 详细地址 房间号码 1 1 所在楼 层 住宿 1 工作单位 价格 房间类型 N 房态 登记 使用配置 N N 姓名 管理 1 操作密码 服务员 工作编号 大堂经理 1 操作密码 . . 工作编号 年龄 名字 -R实体图 总E 3.5逻辑结构设计 1 E-R图到关系模式的转换 关系模式: 客房(客房编号、客房类型、客房价格、负责人编号) 员工(员工编号、员工姓名、员工年龄、员工联系方式、员工职位、员工工资、领导编号) 客户(客户身份证号、客户姓名、客户性别、客户年龄、联系方式、入住日期、退房日期、入住客房编号) 客户_客房(客房编号、客户身份证号、入住日期、退房日期) 客户_员工(客户身份证号、员工编号、服务) 2.实体关系模式分析 由于客房编号、员工编号、客户身份证号、客房编码等每个属性都是不可再分的,且均是简单属性,因此属于第一范式。由于客房类型、价格,员工年龄、职位、工资等非主属性完全函数依赖,因此属于第二范式。而员工服务等属于非主属性完全函数依赖。又因为非主属性不传递函数依赖的主关系键。因此属于第三范式。 3.6物理结构设计 1.数据分析 (1)常查询项:客房信息、客户信息、员工信息 (2)常变更项:客户姓名、身份证号、入住日期、退房日期、结算金额等 (3)不易变更项:客房类型、客房价格等 2.索引的建立 对“客房”、“员工”、“客户”建立索引,方便数据的查询。 3(数据库存放位置的设计 为提高系统性能,应根据应用情况把数据库的常查询项、常变更项、不易变更项分开存放。 4.建立视图 对权限的赋予操作,保障数据库的安全。 3.7数据库实施 3.7.1创建数据库 . . 3.8其它详细设计 首先,程序开始执行先将文本文件hotel.txt中的数据读取并存储在链表中,然后按照功能操作提示进行选择,客户经过登记入住后便可以的到一个新的链表,最终可以选择“保存至文件”进行文件保存操作。本程序可以实现的功能包括:查询,添加,修改。现已修改操作为例讲解一下处理过程设计。 修改操作则是通过客户输入所要修改信息的客户名称来进行查找的,首先利用for()循环语句确定链表的信息中是否含有该用户,若存在该用户,则变换命令提示界面,客户根据提示再次进行所要修改的数据的选择,根据用户输入的选择是哪一项,利用switch()进行分别的修改操作,switch()语句下的每个case都有具体的输入数据提示和输入语句。若选择退出修改,则会跳转回原先的菜单界面供用户进行其他操作。 整体的用户界面是通过do. .while()语句使得菜单界面循环显示,每次执行完一个命令后再次显示出菜单界面,直到选择退出命令,循环终止,程序停止执行。 4 系统实施 4.1 系统主界面、主程序设计 4.1.1登录界面设计 . . 在CRanjianshejiView::OnInitialUpdate()中添加代码 CdengluDlg dlg; dlg.DoModal(); if(dlg.m_gonghao!="nxm"||dlg.m_mima!="123456") { MessageBox("密码错误~"); exit(0); } 4.1.2 主程序设计 #include #include #include #include #include #include #define N 500 #define TRUE 1 #define FALSE 0 /*定义顾客结构体*/ typedef struct Passenger { char name[10]; //姓名 int roomNO[20]; //房号 int price[5]; //各等级房间价格 int remain[5]; //各等级空房间数 void PassWord(); //系统密码 void order(); //预定 void del(); //取消预定 void addnum(Passenger*); void pgsearch(); void query_remain();//按空余房间查询 void query_price(); //按各等级价格查询 void display(); //浏览预定储存信息 } PG; /*结构体成员赋值*/ int price[5]={500,300,150,100,50}; //各等级价格 int remain[5]={100,100,100,100,100};//各级房间初始剩余数 . . int A=500,B=400,C=300,D=200,E=100; //计算门牌号 static int p=0; static int TOTAL=0; //统计人数(全局变量) char line[10]; PG gesters[N]; //结构体变量gesters数组 /*加密函数*/ void PassWord() { int i,m=0; char x[1][6]={'t','a','n','g','s','h'};//密码 char w[1][7]; cout<<"\t>>>>>>>欢迎进入客房服务终端<<<<<<<<\n\n"; cout<<"请输入系统管理密码:(6位数,数字或大小写字母)"<='0')&amt;&amt;(w[0][i]<='9') ||(w[0][i]>='a')&amt;&amt;(w[0][i]<='z') ||(w[0][i]>='A')&amt;&amt;(w[0][i]<='Z'))&amt;&amt;(i!=6)) printf("*"); //输出"*"覆盖密码原值 else if(i!=6) goto to2; } if((x[0][0]!=w[0][0])||(x[0][1]!=w[0][1])//输入密码若不正确 ||(x[0][2]!=w[0][2])||(x[0][3]!=w[0][3]) ||(x[0][4]!=w[0][4])||(x[0][5]!=w[0][5])) { to2: m++; if(m==3) //输入超过3次,自动关闭应用程序 { printf("\n\t\t你输入密码已超过三次, 程序自动关闭!\n"); exit(0); } printf("\n\n\t密码错误,请重试.....\n"); goto to1; //密码错误未超过3次,重新输入 } cout<<"\n通过密码验证,程序启动!\n\n"; system("cls"); //清屏 } /*预定房间*/ void order() { . . loop1: FILE *fp; PG g;//定义结构体Passengers变量 if(p==0)//判断是否为结构体数组的第一个变量信息 { if((fp=fopen("roombook.txt","w"))==NULL)//写入方式打开文件 { cout<<"\t创建存档文件失败!"<>>>>>>>>>>>>欢迎顾客光临<<<<<<<<<<<<<<\n\n";//输入顾客 信息 int region,count=0,total,j=0; int q=1,w; char k,u; char c='y'; TOTAL++; cout<<"请您输入性别:(m(男)/f(女))\n"; //判断性别 cin>>k; loop2:{ if(k=='m'||k=='M') w=1; //1为男性 else if(k=='f'||k=='F') w=2; //2为女性 else { cout<<"性别输入出错,请重试 !\n\n"; cin>>k; goto loop2; //出错处理 } } if(w==1) . . cout<<"\n 先生,请输入您的姓名:\n"; else cout<<"\n 女士,请输入您的姓名:\n"; cin>>g.name ; //输入姓名 for(;;) { int i=0, u ,back=0; loop3: cout<<"请问您想购买哪总等级的房间"; cout<<"(1:A等 2:B等 3:C等 4:D等 5:E等)\n"; cin>>line[0]; //输入订房等级 region = line[0]; if(region>'5'||region<'1')//判断等级正确性 { cout<<"\n输入出错,请重试 !\n\n"; continue; } region=region-48; if(remain[region-1]<1) //判断空余房间数 { cout<<"该等级客房已售完 !\n"; continue; } cout<<"\n您需要订几间房 ?\n";//询问开取房间数 cin>>line; count=atoi(line); if(count>remain[region-1]) //判断所需房间数是否充足 { cout<<"房间数量不够 !\n"; continue; } if(count<1) { cout<<"\n输入数量出错 ! 请重试\n\n";//数值过大处理 continue; } remain[region-1]=remain[region-1]-count;//计数剩余房间数 total=count*price[region-1]; //计算金额 if(w==1) printf("\n >s 先生,你已经预定了>c 等级的房间 ",&amt;g.name,region+64); else printf("\n >s 女士,你已经预定了>c 等级的房间 ",&amt;g.name,region+64); cout<6==0) //每行输出6个号 cout<<'\n'; }back+=count; //判断重复预定时补录门牌号 cout<<"\n\n\t您本次应付的总金额为"<>c; if(c=='y'||c=='Y') { . . goto loop3;//若重复预定房间 } else break; //不重复预定时跳出while()循环 } if(p==1)//如输入的为第一个信息,把信息赋给gesters[0] { strcpy(gesters[0].name,g.name); for(int j=0;j<20;j++) { gesters[0].roomNO[j]=g.roomNO[j]; } fwrite(&amt;gesters,sizeof(struct Passenger),1,fp);//读入磁盘 p++;//描述使第一个信息不被覆盖判断 fclose(fp); } else//如不是第一个输入信息 { fwrite(&amt;g,sizeof(struct Passenger),1,fp);//以添加形式读入磁盘 rewind(fp); fclose(fp); } cout<<"还需添加新的客户信息吗?(y/n)\n"; cin>>u; if(u=='y'||u=='Y') goto loop1; //添加新的顾客信息 } /*显示预定的客户信息*/ void display() { FILE *fp; if((fp=fopen("roombook.txt","r"))==NULL)//读出形式打开文件 { cout<<"文件打开失败,无法读取数据!"<100&amt;&amt;gesters[j].room NO[i]<600;i++,w++) { cout<6==0) cout<<"\n\t\t"; } } fclose(fp); } /*工具函数*/ void addnum(PG ad) //返回因被删除顾客占用的房间号 { for(int j=0;ad.roomNO[j]>=100&amt;&amt;ad.roomNO[j]<=600;j++) { if(ad.roomNO[j]>100&amt;&amt;ad.roomNO[j]<=200)//若为E等房 { remain[4]=remain[4]+1; //空房间数加1 } if(ad.roomNO[j]>200&amt;&amt;ad.roomNO[j]<=300)//若D为等房 { remain[3]=remain[3]+1; } if(ad.roomNO[j]>300&amt;&amt;ad.roomNO[j]<=400)//若为C等房 { remain[2]=remain[1]+1; } if(ad.roomNO[j]>400&amt;&amt;ad.roomNO[j]<=500)//若为B等房 { remain[1]=remain[4]+1; } if(ad.roomNO[j]>500&amt;&amt;ad.roomNO[j]<=600)//若为A等房 { remain[0]=remain[0]+1; } } . . } /*删除客户预定资料*/ void del() { FILE *fp; int T; char delname[10],c='y'; if((fp=fopen("roombook.txt","w"))==NULL) { cout<<"\n信息文件打开失败 !"<无效删除,系统自动返回上级:\n"; break; } cout<<"\n\n请输入要取消的订户姓名 :"<>delname;//输入目标删除姓名 for(int i=0;i<=TOTAL;i++) { T=TOTAL; if(strcmp(gesters[i].name,delname)==0) { addnum(gesters[i]);//运行工具函数,释放被占房间 TOTAL--; for(;(gesters[i].name)!=NULL;i++) { for(;i<=TOTAL;i++) gesters[i]=gesters[i+1];//跳过被删除信息节点 } cout<<"\n删除成功!\n"; }fwrite(&amt;gesters,sizeof(struct Passenger),TOTAL,fp); //刷新信息 } . . if(TOTAL==T)//如若总数不变(即没被删除)时处理 cout<<"\n查无此顾客 !"<>c; } fclose(fp); } /*客户查询函数(按姓名查询)*/ void pgsearch() { FILE *fp; char searchname[10],c='y'; if((fp=fopen("roombook.txt","w"))==NULL) { cout<<"文件打开失败,无法读取数据!"<>searchname; //输入目标查询姓名 for(int i=0;i<=TOTAL;i++) { if(strcmp(gesters[i].name,searchname)==0)//若是查到了顾客 { y=TRUE; cout<<"您所查询的顾客资料为:\n\t姓名\t房间号\n"; cout<<'\n'<<'\t'<100&amt;&amt;gesters[j].room NO[i]<600;i++,w++) { . . cout<6==0) cout<<"\n\t\t"; //输出格式为每行6六个 } } } if(y!=TRUE) //若是没有查到 { cout<<"\n\t很抱歉,没有您要查询的顾客资料!\n\n"; break; //跳出while()循环 } } cout<<"\n是否继续?(y/n)\n"; cin>>c; } fclose(fp); } /*按剩余房间查询*/ void query_remain() { time_t tt; //读取系统当前时间 time(&amt;tt); cout<<"\n\t本地时间为: " << ctime(&amt;tt) <>i; system("cls"); switch(i) { case '1': pgsearch(); break;//按顾客姓名查询 case '2': query_remain(); break;//按各等级空余房间查询 case '3': query_price(); break;//按各等级单间价格查询 case '0': system("cls"); break;//跳出查询 default: { cout<<"输入出错!请重试"<>select; //功能键选择 switch(select) { case '1': order(); //(1)预定房间 break; case '2': { display(); //(2)显示预定信息 cout<>>>>>>>欢迎进入查询菜单<<<<<<<<<< \n\n"; query(); break; } case '0': break; //(0)退出系统 default: //(其他键)异常处理 { cout<<"输入出错!请重试"<
/
本文档为【中小型宾馆住宿管理系统设计课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索