山东建筑大学应用软件实验旅馆预订系统.docx
- 文档编号:28894454
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:352.10KB
山东建筑大学应用软件实验旅馆预订系统.docx
《山东建筑大学应用软件实验旅馆预订系统.docx》由会员分享,可在线阅读,更多相关《山东建筑大学应用软件实验旅馆预订系统.docx(32页珍藏版)》请在冰豆网上搜索。
山东建筑大学应用软件实验旅馆预订系统
摘要
随着酒店规模的不断扩大,入住客户及客房数量的增加,有关酒店的各种信息也在成倍的增长。
传统手工的管理已不能满足需要,因而需要一个管理信息系统对酒店订房信息进行统一管理,提高管理效率,降低管理成本。
本系统采用MVC模式,使用了WebWork、FreeMarker、Spring、SQL等技术。
WebWork:
灵活的Validation框架,在运行时通过Interceptor自动应用,因此完全脱离Action类。
新版支持客户端验证。
Freemarker是一个Java模版语言,它是JSP的绝佳替代方案。
FreeMarker允许Javaservlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。
Spring其中核心机制以BeanFactory为基础,管理bean和bean之间的依赖。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
本系统遵循面向对象的软件工程方法,实现了酒店预订系统的基本功能,包括客房预订、会员注册、用户管理、客房管理、客户和客房信息增删改,系统维护等功能。
本系统采用先进的MVC架构,具有操作简单、界面友善、灵活性好、系统安全性高、运行稳定等特点,是酒店管理者的理想选择。
关键词:
酒店预定系统,MVC架构,数据库
一、设计目的及要求
1设计目的
1.1学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
1.2全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
1.3掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。
2设计要求
2.1添加新旅馆的详细信息
2.2添加新度假村的详细信息
2.3记录预订的详细信息
2.4记录取消预订的详细信息
2.5查看某一城市中旅馆及度假村的详细信息
二、整体设计
总结设计要求,得出本设计主要模块如下:
1旅店信息管理模块:
旅店信息的增、删、改、查。
2度假村信息管理模块:
度假村信息的增、删、改、查。
3预订和取消模块:
实现旅店、度假村的预订功能。
查阅资料,得到以下主要思路:
设置一个整型变量,choice,接收用户输入的数字赋给choice,然后判断它的值,如果是1,则调用1号功能块
如果是2,则调用2号功能块……。
Switch(choice)
{
Case 1:
…………….break;
Case 2:
……………. break;
Case 3:
……………. break;
……………………. break;
Case 6:
…………….. break;
}
通过调用不同模块实现以上功能。
其中,旅馆的详细信息应存储在一个名为Hotel.dat的文件中,该文件应包含下列详细信息:
代码(从1开始按顺序编码);
名字(最多30个字符);
城市的名字(最多30个字符);
标准间的总数;
标准间的价格;
可预订标准间的数目;
豪华间的总数;
豪华间的价格;
可预订豪华间的数目;
度假村的详细信息应存储在一个名为Resort.dat的文件中,该文件应包含下列详细信息:
代码(从1开始按顺序编码);
名字(最多30个字符);
城市的名字(最多30个字符);
小别墅的总数;
小别墅的价格表;
可预订的小别墅数目;
预订的详细信息应保存在一个名为Booking.dat的文件中,该文件应包含下列详细信息:
预订编号(从1开始按顺序编码);
顾客的名字(最多30个字符);
联系电话;
电子邮件ID(最多30个字符);
旅馆的类型(“H”代表旅馆,“R”代表度假村);
旅馆/度假村的代码;
房间类型(“R”代表标准间,“D”代表豪华间,“C”代表小别墅–如果旅馆类型是“R”则默认设为“C”);
三、详细设计
1、功能1:
要求添加旅馆信息——并写入文件hotel.dat
旅馆信息包括:
第一:
代码(编号)——code——自动产生——方法:
每一次从文件中读取记录,文件中有几个记录,序号就在原有的基础上加1,例:
从文件中读取记录,共有3条记录,则序号自动为4 。
第二:
名字(旅馆名字)——hotelname
第三:
城市名字——cityname
第四:
标准房数量——regularnum
第五:
标准房费用——regulartariff
第六:
豪华房数量——deluxenum
第七:
豪华房费用——deluxetariff
2. 功能2:
要求添加渡假村信息——并写入文件resort.dat
渡假村信息包括:
第一:
代码(编号)——code——自动产生——方法:
每一次从文件中读取记录,文件中有几个记录,序号就在原有的基础上加1,例:
从文件中读取记录,共有3条记录,则序号自动为4 。
第二:
名字(度假村名字)——resortname
第三:
城市名字——cityname
第四:
别墅的数量——cottagesnum
第五:
别墅的价格——cottagestariff
3. 功能3:
查询旅馆信息和渡假村信息(按城市查询)
实际上就是将旅馆信息和渡假村信息从二个文件中读取出来
4. 功能4:
要求输入订单信息
第一:
询问用户是订旅馆还是订渡假村(H订旅馆,R订度假村)
第二:
输入要订的旅馆或者是渡假村的代码(编号)
第三:
如果是订旅馆,则询问用户是订标准房还是豪华房(旅馆)
如果是订渡假村,则自动显示是订别墅(度假村)
第四:
自动给出订单号(自动编号)
第五:
输入姓名(预订人姓名)
第六:
输入联系电话
第七:
输入EMAIL地址
5. 功能5:
撤消订单
第一:
要求输入需要撤消的订单号
涉及到文件的读写 。
首先,要打开BOOKING.DAT这个文件,以只读方式打开ios:
:
in
第二,查找用户输入的这张订单,例:
用户输入1号 ,要在booking文件中先查找到1号订单 ,如果找到了,则继续向下做,如果没有找到,则退出该模块。
第三,如果找到这张订单,则先要删除这张订单,方法:
跳过这张订单——seekg(行数,ios:
:
beg),将所有的内容重新写回到booking文件中
第四,由于删除订单了,所以HOTEL.DAT文件和RESORT.DAT文件也要作相应的修改
例:
用户要撤消1号订单,1号订单是订1号旅馆的标准房
则删除订单后,1号旅馆的标准房的可用间数要重新加1 。
四、部分测试数据与运行结果
1查询信息
选择功能号,然后需要输入一个需要存放信息的文件名,这里输入Hotel.dat.。
创建成功后,出现123选项。
输入1可以录入新的旅馆信息,输入2可以显示以前录入的旅馆信息,输入0退出程序。
在这里我们选择1录入新的旅馆信息。
根据提示输入旅馆信息。
.如果想结束信息的连续输入,则输入范围以外的编号,按下回车键退回上一步。
如下图所示
2预定
选择3预定,数据存入booking.dat中。
根据提示输入客户信息。
五、总结和致谢
通过本次课程设计,我收获许多。
1、在C++环境下,创建.cpp文件及.h文件。
.h文件是各类的定义文件。
.cpp文件是各类的实现文件。
在.cpp文件中引入.h头文件实现类的定义。
在编写类的过程中,我耐心完成定义三个类及其操作,并积极主动找出了错误,编译成功。
2、学会编写操作类及其实现,操作类是一个在C++环境下编写的系统的主要部分。
我的题目是要加入旅店信息,加入度假村信息,加入预订信息,取消预订信息,其需要三个操作类。
操作类中有创建二进制文件,编写菜单功能,输入信息,显示信息,退出等功能。
在编程过程中,由于参照了例子,对各项操作的成员函数的功能及编写过程有了一定的认识。
并积极思考,提出完善操作的解决办法。
3、在有了类的前提,我学会了调用,并完成编写了主函数菜单及主函数。
编写过程中,我由一开始的顺序编写模式,想到后来的需要用循环和switch。
完成了对菜单功能的选择及实现,并积极找出错误,实现运行程序。
并不断调试程序达到比较好看的系统界面。
4、通过整一个C++编写一个系统的过程,我了解了,其实编写一个系统,很多地方都是相似的,只是你要编写的功能不一样,思路是一样的,其步骤都是先定义类,实现类,再实现操作,最后编写主程序实现系统功能。
复杂的只是一个系统中有几个功能的实现,C++程序员必须耐心的修改每个类的定义、实现、操作、主函数等等。
并且细心的找出修改过程中的错误。
同时感谢实验过程中高焕兵老师以及耿淑娟老师的耐心指导。
附录
//****************旅店类的实现文件*******************
#include"Hotel.h"
#include
#include
usingnamespacestd;
//设置城市名的成员函数
voidHotel:
:
setHotel_City(char*newHotel_City)
{
strcpy(Hotel_City,newHotel_City);
}
//得到城市名的成员函数
char*Hotel:
:
getHotel_City()
{
returnHotel_City;
}
//设置旅店编号的成员函数
voidHotel:
:
setHotel_Num(intnewHotel_Num)
{
Hotel_Num=newHotel_Num;
}
//得到旅店编号的成员函数
intHotel:
:
getHotel_Num()
{
returnHotel_Num;
}
//设置旅店名字的成员函数
voidHotel:
:
setHotel_Name(char*newHotel_Name)
{
strcpy(Hotel_Name,newHotel_Name);
}
//得到旅店名字的成员函数
char*Hotel:
:
getHotel_Name()
{
returnHotel_Name;
}
//设置标准间信息的成员函数
voidHotel:
:
setStandardroom(intnewStandardroom_num,doublenewStandardroom_price,intnewStandardroom_available)
{
Standardroom_num=newStandardroom_num;
Standardroom_price=newStandardroom_price;
Standardroom_available=newStandardroom_available;
}
//得到标准间信息的成员函数
returnStandardroom_num;
}
doubleHotel:
:
getStandardroom_price()
{
returnStandardroom_price;
}
intHotel:
:
getStandardroom_available()
{
returnStandardroom_available;
}
//设置豪华间信息的成员函数
voidHotel:
:
setDeluxeroom(intnewDeluxeroom_num,doublenewDeluxeroom_price,intnewDeluxeroom_available)
{
Deluxeroom_num=newDeluxeroom_num;
Deluxeroom_price=newDeluxeroom_price;
Deluxeroom_available=newDeluxeroom_available;
}
//得到豪华间信息的成员函数
intHotel:
:
getDeluxeroom_num()
{
returnDeluxeroom_num;
}
doubleHotel:
:
getDeluxeroom_price()
{
returnDeluxeroom_price;
}
intHotel:
:
getDeluxeroom_available()
{
returnDeluxeroom_available;
}
//****************度假村类的实现文件*******************
#include"Resort.h"
#include
#include
usingnamespacestd;
//设置城市名的成员函数
voidResort:
:
setResort_City(char*newResort_City)
{
strcpy(Resort_City,newResort_City);
}
//得到城市名的成员函数
char*Resort:
:
getResort_City()
{
returnResort_City;
}
//设置度假村编号的成员函数
voidResort:
:
setResort_Num(intnewResort_Num)
{
Resort_Num=newResort_Num;
}
//得到度假村编号的成员函数
intResort:
:
getResort_Num()
{
returnResort_Num;
}
//设置度假村名字的成员函数
voidResort:
:
setResort_Name(char*newResort_Name)
{
strcpy(Resort_Name,newResort_Name);
}
//得到度假村名字的成员函数
char*Resort:
:
getResort_Name()
{
returnResort_Name;
}
//设置度假村间信息的成员函数
voidResort:
:
setResort_Room(intnewResort_Room_num,doublenewResort_Room_price,intnewResort_Room_available)
{
Resort_Room_num=newResort_Room_num;
Resort_Room_price=newResort_Room_price;
Resort_Room_available=newResort_Room_available;
}
//得到度假村间信息的成员函数
intResort:
:
getResort_Room_num()
{
returnResort_Room_num;
}
doubleResort:
:
getResort_Room_price()
{
returnResort_Room_price;
}
intResort:
:
getResort_Room_available()
{
returnResort_Room_available;
}
//****************预定类的实现文件******************
#include"Booking.h"
#include
#include
usingnamespacestd;
//设置预定编号的成员函数
voidBooking:
:
setBookingNum(intnewBookingNum)
{
BookingNum=newBookingNum;
}
//得到预定编号的成员函数
intBooking:
:
getBookingNum()
{
returnBookingNum;
}
//设置顾客名字的成员函数
voidBooking:
:
setCustmerName(char*newCustmerName)
{
strcpy(CustmerName,newCustmerName);
}
//得到顾客名字的成员函数
char*Booking:
:
getCustmerName()
{
returnCustmerName;
}
//设置顾客电话的成员函数
voidBooking:
:
setCustmerTel(intnewCustmerTel)
{
CustmerTel=newCustmerTel;
}
//得到顾客电话的成员函数
intBooking:
:
getCustmerTel()
{
returnCustmerTel;
}
//设置顾客电子邮箱的成员函数
voidBooking:
:
setCustmerEmail(char*newCustmerEmail)
{
strcpy(CustmerEmail,newCustmerEmail);
}
//得到顾客电子邮箱的成员函数
char*Booking:
:
getCustmerEmail()
{
returnCustmerEmail;
}
//设置旅店类型的成员函数
voidBooking:
:
setTYPE(char*newTYPE)
{
strcpy(TYPE,newTYPE);
}
//得到旅店类型的成员函数
char*Booking:
:
getTYPE()
{
returnTYPE;
}
//**********旅店信息操作文件***********
#include"HotelOperate.h"
#include
#include
#include
#include
usingnamespacestd;
HotelOperate:
:
HotelOperate()
{
cout<<"请输入要创建的存放信息的文件名及其所在目录:
"< cin>>filename; operate.clear();//清除错误状态信息 operate.open(filename,ios: : binary|ios: : out|ios: : ate); if(operate.fail()) { cout<<"创建文件失败! "< exit (1); } cout<<"存储文件: "< "< operate.close(); } voidHotelOperate: : createHotelFile()//创建旅店信息文件,并连续输入多个用户数据 { charHotel_City[30]; intHotel_Num; charHotel_Name[30]; intStandardroom_num; doubleStandardroom_price; intStandardroom_available; intDeluxeroom_num; doubleDeluxeroom_price; intDeluxeroom_available; hotel.clear();//清除错误状态信息 hotel.open(filename,ios: : binary|ios: : out|ios: : ate); if(hotel.fail()) { cout<<"创建文件失败! "< exit (1); } cout<<"输入城市名: "; cin>>Hotel_City; ho.setHotel_City(Hotel_City); cout<<"输入旅店编号(范围00001~10000): "; cin>>Hotel_Num; ho.setHotel_Num(Hotel_Num); while(checkOperate()) { cout<<"输入旅店名字: "; cin>>Hotel_Name; ho.setHotel_Name(Hotel_Name); cout<<"输入标准间数量: "; cin>>Standardroom_num; ho.setStandardroom(Standardroom_num,Standardroom_price,Standardroom_available); cout<<"输入标准间的价格: "; cin>>Standardroom_price; ho.setStandardroom(Standardroom_num,Standardroom_price,Standardroom_available); cout<<"输入可预订的标准间的数量: "; cin>>Standardroom_available; ho.setStandardroom(Standardroom_num,Standardroom_price,Standardroom_available); cout<<"输入豪华间的数量: "; cin>>Deluxeroom_num; ho.setDeluxeroom(Deluxeroom_num,Deluxeroom_price,Deluxeroom_available); cout<<"输入豪华间的价格: "; cin>>Deluxeroom_price; ho.setDeluxeroom(Deluxeroom_num,Deluxeroom_price,Deluxeroom_available); cout<<"输入可预订的豪华间的数量: "; cin>>Deluxeroom_available; ho.setDeluxeroom(Deluxeroom_num,Deluxeroom_price,Deluxeroom_available); hotel.seekp((ho.getHotel_Num()-1)*sizeof(Hotel),ios: : beg); hotel.write((char*)&ho,sizeof(Hotel)); cout< cout<<"输入城市名: "; cin>>Hotel_City; ho.setHotel_City(Hotel_City); cout<<"输入旅店编号(范围00001~10000): "; cin>>Hotel_Num; ho.setHotel_Num(Hotel_Num); } hotel.close(); } intHotelOperate: : funcHotelChoice()//选择旅店功能按钮 { cout<<"=========================================================="< cout<<"请输入功能选择数字: (1,2,0)"< cout<<"1--连续输入旅店信息到二进制文件"< cout<<"2--显示文件中所有记录"< cout<<"0--退出"< cout<<"=========================================================="<<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 山东建筑大学应用软件实验 旅馆预订系统 山东 建筑 大学 应用软件 实验 旅馆 预订 系统