1、宾馆客房管理信息系统数据库原理及应用课程设计宾馆客房管理信息系统专业:计算机科学与技术(网络)班级:网络101姓名:王 勇学号: 1013113018一、 课题名称宾馆客房管理信息系统二、 目的及要求、任务通过本次课程设计,加深对数据库原理以及相关程序设计语言的理解和应用水平。通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。自选一种程序设计语言(如JAVA、VC等)以及一种数据库管理系统(如SQL Server、Access等)开发一个小型的数据库应用系统。三、 需求分析1、 组织机构情况宾馆分为以下几个部门: 安保部:负责宾馆
2、内所有人员的安全以及宾馆设施的保护工作; 客房部:负责客房服务、客房的卫生、客房设备的管理; 前厅部:负责客人的接待、咨询、投诉以及相关前厅服务和信息传递; 财务部:负责宾馆的资金管理、成本控制、日常的会计审核、出纳等; 营销部:负责宾馆的宣传工作、市场开拓、顾客的关系发展等; 人力资源部:负责宾馆职员的招聘、考核、调度、管理等; 所有部门都统一归总经理管理负责。2、 各部门业务活动情况(1)预定管理:客户查找是否有合适房间,若有则填写预订登记单,员工审核登记单,若正确无误,则对预订登记,产生预订登记表;(2)接待管理:员工根据客户需求为其提供服务,若客户已预订房间,则直接填写入住登记单,若没
3、有预定,则员工查找客户需要类型的房间,若客户满意,则填写入住登记;(3)换房管理:根据客户的需要,员工查找相应类型的房间,若有则填写调房登记单,员工审核登记单,若正确无误,则对修改客房信息表和入住登记表;(4)结账管理:客人到前台对挂账进行结账,员工进行结账登记,并填写收据和打印报表给客户;(5)客房管理:接受员工的客房信息单,审核信息单,若正确无误,则对客房信息登记,记录到总帐。3、 用户对系统的各种要求用户希望通过使用宾馆客房管理系统得到所需信息,达到提高管理水平的目的,希望新系统具有以下功能: (1)使用计算机快速处理日常的业务及相关数据,实现实时查询各种入住信息;(2)可以实时的录入住
4、宿单、换房单和退宿单等的情况; (3)可以实时查询客房信息、客人账单信息等的具体情况; (4)可以建立客户的资料,方便日后建立良好的客户关系; (5)数据的安全性:不同用户有对数据查看,修改等处理不同的权限; (6)打印退宿报表、结帐报表等报表。四、 总体功能设计1、用户功能需求 (1)密码设置:每个用户均有自己的密码,可以防止非本系统人员进入本系统;又因每个用户的权限不一致,故可防止用户越权操作; (2)权限设置:设置每个用户的权限,使各用户在自己的操作范围内工作,不得超出自己的操作范围。只有系统管理员才能进行权限设置; (3)数据输入:可以进行宾馆各种原始数据的输入; (4)数据查询:要求
5、可以分别按房间编号,房间类型等进行数据查询; (5)数据输出:根据需要打印退宿报表、结帐报表等报表; (6)其它要求:可以修改用户密码,有系统的帮助文件。 2、系统功能需求 (1)预订功能需求:其主要目的是提高宾馆的开房率,为客人预留房间,并提供良好的预订服务。其功能需求包括预订查询,可用房确认,预订记录建立,预订确认,预订记录维护等; (2)接待功能需求:其主要目的是以最快的速度为客人开房。其功能需求包括宾客登记、可用房确认、修改宾客信息、删除宾客信息和查询宾客信息等; (3)换房功能需求:其主要目的是满足客人换房的需要。其主要功能是查询客房,换房登记,换房确认等;(4)结账功能需求:其功能
6、需求包括客人结账、打印报表和客人挂账等; (5)客房管理功能需求:其主要目的是对客房的信息化管理,提高客房管理的精度和准确度,同时减轻宾馆客房中心员工的工作负担,从而提高客房管理的效率和服务质量。其主要功能是房态维护,费用记录和客人查询等。 3、系统非功能性需求 (1)低成本; (2)方便二次开发,适应宾馆的个性化需求; (3)简单易用,可维护性强; (4)适合宾馆现场的使用环境和条件。五、 数据库设计概念结构设计E-R 图逻辑结构设计关系模型将酒店客房管理系统的E-R图转换为关系模型为:客户(客户编号,客户姓名,客户性别,客户身份证号)其中客户编号是主码;房间(房间编号,类型编号,房间类型,
7、房间位置,房间价格,房间状态,备注)其中房间号是主码,类型编号为外键;房间类型(类型编号,类型名称,面积,床位数,价格,三电信息,卫生间,超期罚款额)其中类型编号是主码;费用(费用编号,费用名称,费用总额,收费人,收费日期)其中费用编号是主码,收费人为外键;属于(房间编号,类型编号)其中房间编号和类型编号是主码;订退(订单编号,客户编号,房间编号,客户姓名,订房日期,退房日期)其中订单编号,客户编号和房间编号是主码;缴纳(客户编号,费用编号)其中客户编号和费用编号是主码;物理结构设计1物理设计阶段的目标以及任务数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段
8、中要完成确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构。建立索引可以提高查询的效率,但是维护起来又造成很大的不方便,所以只对部分表中的主键建立索引2数据存取方法可采用所以存取方法,在本系统中,房间编号、订房编号、客户编号这几个属性是主码,设计时考虑建立这些索引,使得对数据库的查询、插入、修改和删除的速度加快,效率也提高。3数据库的存储结构(1)存放位置在开发本系统时因数据库的规模随着顾客的增多将会增大,但因开发环境条件限制,所以数据库是存在个人的计算机磁盘上。(2)系统配置开发以及运用本数据库应用系统时要求操作系统拥有WindowsXP 或Windows7以上的配置,能创建数据库
9、,保存数据,并将系统数据库作为应用系统运行操作的数据源,为方便开始时创建和调试查看数据库内容,要求系统装有SQL Server。数据库实施 数据库的运行与维护 维护:在数据库运行阶段,对数据库经常性的维护工作是由DBA完成的,它包括以下工作: (1)数据库的转储和恢复。 (2)数据库安全性、完整性控制。 (3)数据库性能的监督、分析和改进。 (4)数据库的重组织和重构造六、 应用程序设计#include#include/*void initial_room(); /初始化80个房间信息void welcome(); /验证用户登陆,登陆成功显示欢迎信息void enter();void boo
10、k_room();void check_in();void check_out();void inquire();int i=0;/*struct Roomint number;int dank;int price;int state;class Customerpublic:Customer();void set_name(char *n)strcpy(name,n);void set_ID(char *p)strcpy(ID,p);void set_room_number(int n)room_number=n;void set_day(int d)day=d;void set_prepa
11、id(int p)prepaid=p;char *get_name()return name;char *get_ID()return ID;int get_room_number()return room_number;int get_day()return day;int get_prepaid()return prepaid;virtual Customer();private:char name10,ID19;int room_number;int prepaid;int change;int day;Customer:Customer()coutname;coutID;prepaid
12、=change=day=0;Customer:Customer()cout该顾客退房成功!endl;/*Room room80;Customer *customer80;void main() /程序入口从这里开始运行char choice=1;initial_room(); /初始化80个房间的信息,分四个等级welcome(); /验证用户登陆,登陆成功显示欢迎信息while(choice=1)enter(); /根据用户的选择执行不同的功能coutendl;coutchoice;coutendl;/系统登陆界面*void welcome() /验证用户登陆,登陆成功显示欢迎信息char
13、name9,code9;coutnamecode;while(strcmp(name,wangyong)!=0)|(strcmp(code,19911211)!=0)coutnamecode;coutendl;coutendl;cout *n; cout 欢迎使用*系统!n; cout *n; coutendl;/系统入口*void enter()int kind_of_service;cout请选择服务类别:订房、入住、退房还是查询? n; cout定房 2-入住 3-退房 4-查询: ;cinkind_of_service;if(kind_of_service4) | (kind_of_s
14、ervice1)coutkind_of_service;elseswitch(kind_of_service)case 1: book_room();break;case 2: check_in();break;case 3: check_out();break;case 4: inquire();break;/订房实现*void book_room()customeri=new Customer;int room_standard,day;cout请您选择预定房间的标准:n; coutroom_standard;coutday;customeri-set_day(day);switch(ro
15、om_standard)int n;case 1:cout住房费用总共为: day*150元n; /计算住房费用for(n=0;n20;n+) /从第一个级别的房间中查找一个空闲的房间if(roomn.state=0) /state=0表示该住房没有被预定的cout预定成功房间号码为: roomn.numberset_room_number(roomn.number);break;break;case 2:cout住房费用总共为: day*200 元n; for(n=20;n40;n+)if(roomn.state=0)cout预定成功房间号码为: roomn.numberset_room_n
16、umber(roomn.number);break;break;case 3:cout住房费用总共为: day*300 元n; for(n=40;n60;n+)if(roomn.state=0)cout预定成功房间号码为: roomn.numberset_room_number(roomn.number);break;break;case 4:cout住房费用总共为: day*600元n; for(n=60;n80;n+)if(roomn.state=0)cout预定成功房间号码为: roomn.numberset_room_number(roomn.number);break;break;i
17、+; /住房的顾客数加1/入住登记*void check_in()char name110,id119;int ding_or_no,prepaid;cout订了 2-没订) ;cinding_or_no;if(ding_or_no=1)cout请输入顾客的姓名:name1;cout请输入顾客的身份证号码:id1;for(int j=0;jget_name(),name1)=0)&(strcmp(customerj-get_ID(),id1)=0) /查找该顾客的定房信息int num=customerj-get_room_number(); /取得定房的房间号cout顾客name1今天入住本
18、宾馆! 房间号码为: numget_day()*150;customerj-set_prepaid(prepaid);cout请收房费 prepaid元整!get_day()*200;customerj-set_prepaid(prepaid);cout请收房费 prepaid元整!get_day()*300;customerj-set_prepaid(prepaid);cout请收房费 prepaid元整!get_day()*600;customerj-set_prepaid(prepaid);cout请收房费 prepaid元整!endl;room59+num%100.state=2;br
19、eak;break;elsecustomeri=new Customer;int room_standard,day;cout请您选择预定房间的标准:n; coutroom_standard;coutday;customeri-set_day(day);switch(room_standard)int n;case 1:prepaid=day*150;customeri-set_prepaid(prepaid);cout请收房费 prepaid元整!n; for(n=0;n20;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_numb
20、er(roomn.number);break;break;case 2:prepaid=day*200;customeri-set_prepaid(prepaid);cout请收房费 prepaid元整!n; for(n=20;n40;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break;case 3:prepaid=day*300;customeri-set_prepaid(prepaid);cout请收房费 prepaid元整!n; for(n=40;n60;n+)if(
21、roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break;case 4:prepaid=day*600;customeri-set_prepaid(prepaid);cout请收房费 prepaid元整!n; for(n=60;n80;n+)if(roomn.state=0)cout入住房间号码为: roomn.numberset_room_number(roomn.number);break;break;i+;/退房结算*void check_out()char name210,id219
22、;int standard,j,room_number,day1,day2,day;coutname2id2;coutday2;for(j=0;jget_name(),name2)=0)&(strcmp(customerj-get_ID(),id2)=0)room_number=customerj-get_room_number();standard=room_number/100;day1=customerj-get_day();day=day1-day2;switch(standard)case 6:cout顾客的房间号是room_number :为单人间,每天150元n;cout该顾客预付了房费 get_prepaid()元, 实际消费 day2*150元整!n;cout0)cout请退给该顾客 day*150 元整!n; if(day0)cout请补收该顾客住房费 -day*150 元整!n;break;case 7:cout顾客的房间号是
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1