酒店管理系统息系统项目管理课设.docx
《酒店管理系统息系统项目管理课设.docx》由会员分享,可在线阅读,更多相关《酒店管理系统息系统项目管理课设.docx(24页珍藏版)》请在冰点文库上搜索。
酒店管理系统息系统项目管理课设
综合实训报告
课程名称信息系统项目管理
课题名称酒店管理系统
专业信息管理与信息系统
班级
学号
姓名
指导教师
2016年12月6日
湖南工程学院
综合实训任务书
课程名称信息系统项目管理
课题酒店管理系统
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2016年11月12日
任务完成日期2016年12月6日
一、设计内容与设计要求
1.课程设计目的
全面熟悉、掌握信息系统项目管理基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及项目管理描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉java语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。
进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。
2.课题题目
酒店管理系统
目的与要求:
1、目的:
(1)要求学生达到熟练掌握java语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及java的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中定义类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
设计方法和基本原理:
1、问题描述(功能要求):
酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。
依据餐饮行业的特点,本系统实现以下目标:
操作简单方便、界面简洁大方。
方便快捷的开台点菜功能。
智能化定位菜品的功能。
快速查看开台点菜信息的功能。
自动结账功能。
按开台和商品实现的日结账功能。
按日消费额汇总统计实现的月结账功能。
按日营业额实现的年结账功能。
系统运行稳定、安全可靠。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)完成系统总结报告以及系统使用说明书。
3.设计要求:
⑴设计课题题目:
按学号顺序(每15位学生选择一题)选择相应题号的课题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
11.21
上午
下午
11.22
上午
11.24
上午
下午
11.28
上午
晚上
11.29
上午
下午
12.30
上午
下午
1系统需求分析
随着餐饮行业的迅速发展,现有的人工管理方式已经不能呢个满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。
酒店管理系统的大致功能:
1.开台点餐
2.菜品管理
3.自动结账
4.后台菜系菜品管理
5.日月年结账报表
6.用户设置
根据需求分析,本系统采用的语言:
(1)本系统采用Java语言,Java是目前使用最为广泛的计算机语言之一。
它具有简单,面向对象,稳定,与平台无关等特点。
说他简单,并不是说这门语言很干瘪,而是一种清楚更容易理解的方式实现程序。
面向对象是基于对象的变成更符合人的思维方式,使人们更容易编写程序。
(2)本系统还采用SQL语言,SQLServer具有许多显著优点:
易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
(3)本系统有效的利用Java和SQL的优点。
2总体设计
2.1总体设计图
图2.1系统总体设计图
2.2系统流程分析
图2.2系统总体设计图
图2.3系统流程图
2.3功能需求与程序模块对应的关系
图2.4功能需求与程序模块对应的关系
2.4数据库结构设计
(1)系统数据库性能需求
整个系统应当操作简便,界面友好,维护简便。
数据库要求运行稳定,执行速度快,数据安全性高。
软件系统本身运行对计算机硬件平台和操作系统平台要求适中。
数据库技术是信息资源管理最有效的手段。
数据库设计是指对于一个指定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库结构设计的好坏将直接对应用系统的效率及实现的效果产生影响。
合理的数据库设计可以提高数据存储的效率,保证数据的完整和一致。
本系统采用Mysql数据库,灵活方便。
(2)本系统数据库表设计中所遵守的基本原则
系统时间:
由数据库产生的系统时间首选数据库的日期型,如DATE类型。
外部时间:
由数据导入或外部应用程序产生的日期时间类型采用varchar类型,数据格式采用YYYYMMDDHH24MISS。
大字段:
如无特别需要,尽可能避免使用大字段(blob,clob,long,text,image等)
(3)数据库需求分析
针对此适用于中小型酒店的酒店管理系统的需求,设计如下的数据项和数据结构:
住房信息的输入包括:
房间号、客房编号、住房费用、住宿时间、开始日期等。
顾客信息的输入包括:
顾客ID、顾客姓名等。
用户登录信息的输入包括:
用户名、用户密码、验证码等。
餐厅信息的输入包括:
餐桌号、服务人员、就餐编号、就餐日期、就餐费用、客人房间号等。
(4)数据字典设计及数据库表命名规则
本系统的数据库共包含5张数据库表,各个数据库表字段的命名遵守见名知意的规则。
下面为主要的3个表的结构:
图2.5住房信息表
图2.6用户登录表
图2.7顾客餐饮信息表
图2.8空餐桌信息表
3详细设计
3.1系统登陆界面
用户在登陆本酒店管理系统的时候,只需要输入正确的用户名、密码和验证码,验证码每次登陆都会随机刷新出来,假如输入的信息有误,系统会提示错误之处,重新登陆即可。
如图3.1。
图3.1登陆界面
3.2添加住房信息功能
添加住房信息功能可以实现客户的入住登记,其中包含客人的姓名、身份证号、入住日期、选择房间的情况等等,便于管理员进行管理和查询。
如图3.2。
图3.2添加住房信息界面
实现此功能的代码如下:
privatevoiddoAddAssetsInfoAction(HttpServletRequestrequest,
HttpServletResponseresponse,
StayInfoActionformoneStayInfoActionform)throwsServletException,IOException{
StayInfoPOoneStayInfoPO=newStayInfoPO();
stayInfoActionFormSaveToStayInfoPO(oneStayInfoActionform,oneStayInfoPO);
oneStayInfoPO.setStayID(SystemUtil.getRandomIntegerNumber(10,6));
booleanreturnResult;
StayInfoCRUDImpleoneStayInfoCRUDImple=newStayInfoCRUDImple();
try{
returnResult=oneStayInfoCRUDImple.insertOneStayInfo(oneStayInfoPO);
}catch(WebExceptione){
forwardToShowErrorInfoTargetPage(request,response,e.getMessage());
return;
}
if(returnResult){
forwardToSuccessTargetPage(request,response,"/main.html");
}
else{forwardToShowErrorInfoTargetPage(request,response,"在添加住房信息时,系统出现了错误,请重新添加该住房的信息!
");}
return;
}
3.3住房信息查询功能
住房信息查询功能便于管理员和客户的查询,可以按住房编号查询,也可以按照入住日期查询,还可以直接查看全部的住宿信息,准确快捷。
如图3.3。
图3.3住房信息查询界面
3.4添加就餐信息功能
就餐信息添加功能,能够实现管理员对客人就餐消费的管理,如图3.4。
图3.4添加就餐信息界面
实现此功能的代码如下:
privatevoiddoQueryAssetsInfoAction(HttpServletRequestrequest,
HttpServletResponseresponse,
EatingInfoActionformoneEatingInfoActionform)throwsServletException,IOException{
EatingInfoPOoneEatingInfoPO=newEatingInfoPO();
eatingInfoActionFormSaveToEatingInfoPO(oneEatingInfoActionform,oneEatingInfoPO);
oneEatingInfoPO.setEatingID(SystemUtil.getRandomIntegerNumber(10,6));booleanreturnResult;
EatingInfoCRUDImpleoneEatingInfoCRUDImple=newEatingInfoCRUDImple();
try{
returnResult=oneEatingInfoCRUDImple.insertOneEatingInfo(oneEatingInfoPO);
}catch(WebExceptione){
forwardToShowErrorInfoTargetPage(request,response,e.getMessage());
return;
}
if(returnResult){
forwardToSuccessTargetPage(request,response,"/main.html");
}
else{forwardToShowErrorInfoTargetPage(request,response,"在添加就餐信息时,系统出现了错误,请重新添加就餐信息!
");}
return;}
3.5就餐信息查询功能
就餐信息查询功能便于管理员和客人对就餐消费信息的查询,如图3.5。
图3.5就餐信息查询界面
3.6结账功能
当宾客离店结账的时候可以分开进行就餐结账和住房结账,也可以两种账单和在一起清算,如图3.6。
图3.6结账界面
4调试
(1)程序中原来有两个CLendOutDlg:
:
OnCONFIRM()函数,其中一个是空的,但是删掉后会出现错误,在Dialog的IDD_LENDOUT中找到“建立类向导”,删掉其中与对话框按钮名称不同的一个即可。
(2)、CLendOutDlg:
:
OnCONFIRM()函数中原来没有UpdateData(FALSE);UpdateData(TRUE);就会出现错误,经过老师帮忙找到错误所在,就加上使得程序能正常运行。
(3)CLendOutDlg:
:
OnCancel()函数只需一条语句,开始的时候用了很多其他函数,如:
DisplayRecord();SetButtonState();SetTextState();但是会出现没有定义之类的错误,是因为在头文件中根本没有这些函数的定义,所以就会出现这样的错误。
(4)刚开始做了结束模块的框图时按“确定”“取消”按扭不会连接到程序中,后来在ClassWizard中添加就可以了。
然后双击按扭就可以出现了。
(5)程序中原来有两个confirm函数,其中一个是空函数,但是删掉后又有错误,找过之后从“建立类向导”中删掉一个就可以了。
5心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.通过这次对酒店管理系统的设计与开发,让发更加认识到了自身学习的不足之处,但也让我对java编程语言的了理解和应用有了更深的认识。
课程设计之后,感受到了动手能力有所提高,并能够结合实际存在的问题在专业领域内进行更深人的学习。
同时,通过本次的课程设计让我了解到,仅学习书本上的知识是不够的,还要有较强的实践动手能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好地理解与掌握书本上的知识
回顾起此次酒店管理系统课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
6附录
6.1源代码
验证码:
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
CreateVerifyCodeImageBeanoneCreateVerifyCodeImageBean=newCreateVerifyCodeImageBean();
java.awt.imag12y67lc,e.BufferedImageimage=oneCreateVerifyCodeImageBean.createSomeOneVerifyImage();
HttpSessionsession=request.getSession();
StringverifyCodeInSession=oneCreateVerifyCodeImageBean.getVerifyCodeString();
session.setAttribute("verifyCodeNameInSession",verifyCodeInSession);//将认证码存入SESSION对象中
response.setContentType("image/jpeg");//该已经必须要有
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
javax.imageio.ImageIO.write(image,"JPEG",response.getOutputStream());//输出图像
}
登陆界面:
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("gb2312");
StringverifyCode=request.getParameter("verifyCode");
StringuserName=request.getParameter("userName");
StringpassWord=request.getParameter("passWord");
UserInfoRUImpleoneUserInfoRUImple=newUserInfoRUImple();
UserInfoPOoneUserInfoPO=newUserInfoPO();
HttpSessionsession=request.getSession();
StringverifyCodeInSession=(String)session.getAttribute("verifyCodeNameInSession");
if(verifyCode.equals(verifyCodeInSession)){
try{
oneUserInfoPO=
oneUserInfoRUImple.selectUserInfo(userName,passWord);
}catch(WebExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
if(oneUserInfoPO==null){
request.setAttribute("errorText","用户名和密码输入错误!
");
RequestDispatcheroneRequestDispatcher=request.getRequestDispatcher(this.getServletContext().getInitParameter("forwardShowErrorInfoTargetPage"));
oneRequestDispatcher.forward(request,response);
return;
}
else{
RequestDispatcheroneRequestDispatcher=request.getRequestDispatcher("/index.html");
oneRequestDispatcher.forward(request,response);
}
}
else{
request.setAttribute("errorText","验证码输入错误!
");
RequestDispatcheroneRequestDispatcher=request.getRequestDispatcher(this.getServletContext().getInitParameter("forwardShowErrorInfoTargetPage"));
oneRequestDispatcher.forward(request,response);
return;
}
}
住房信息查询:
privatevoiddoQueryAssetsInfoAction(HttpServletRequestrequest,
HttpServletResponseresponse,
StayInfoActionformoneStayInfoActionform)throwsServletException,IOException{
StringsqlQueryWhereString=null;
PageStatePOonePageStatePO=null;
onePageStatePO=newPageStatePO();
onePageStatePO.setCurrentPageNumber
(1);//由于是第一次访问,因此获得第一页的数据
onePageStatePO.setOnePageSize(AllConstantItems.OnePageSize);
switch(oneStayInfoActionform.getQueryMethodRadioButtonID()){
caseAllConstantItems.ProductionInfoManage_QueryAllData:
sqlQueryWhereString="";
break;
caseAllConstantItems.ProductionInfoManage_QueryDataByProductionID:
if(oneStayInfoActionform.getStayID()!
=0){
sqlQueryWhereString="wherestayID="+oneStayInfoActionform.getStayID();
}
break;
caseAllConstantItems.ProductionInfoManage_QueryDataBySomeProductionInfo:
sqlQueryWhereString="wherestartDatelike'%"+oneStayInfoActionform.getStartDate()+"%'";
break;
}
StayInfoCRUDImpleoneStayInfoCRUDImple=newStayInfoCRUDImple();
ListsomeStayInfo=null;
try{
someStayInfo=oneStayInfoCRUDImple.selectSomeS