基于JAVA的客房管理系统设计有源代码+数据库_第1页
基于JAVA的客房管理系统设计有源代码+数据库_第2页
基于JAVA的客房管理系统设计有源代码+数据库_第3页
基于JAVA的客房管理系统设计有源代码+数据库_第4页
基于JAVA的客房管理系统设计有源代码+数据库_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机软件学专业课程设计报告书课程名称SQLserver2000课程设计题目客房管理系统儿JAVA1SH-2008/11/2821:23文一设计援舌2012/4/221427文件实上SS201M/2514:07文件夹1概述1.1 背景客房管理是旅店管理事务中的一项重要工作,在管理过程中涉及到大量的数据处理,传统的人工管理已经无法完成胜任。相关数据的处理带来了更大的工作量。本系统采用目前比较流行的JDBC-ODB数据访问技术,成功地将面向对象的程序设计思想应用到数据库应用程序设计中。1.2 开发与运行环境本客房管理系统的开发与运行环境如下:开发环境:Eclipse3.1开发工具:JAVA1.5数

2、据库管理系统:SQLServer2000运行环境:Windows2000/XP/2003/Vista使用说明:用户自己附加数据库,并且在控制面板下的数据工具中的数据源(ODBC),在用户DSN下添加名为“客房管理”,驱动程序为SQL-Server。并且安装了JAVA虚拟机,该程序即可使用。2需求分析客房资管理系统涉及到:客人信息、客房信息、入住信息、历史信息等多种数据信息。客房管理系统的用户包括系统管理员。系统管理员负责整理工作,如各种基本信息的添加、删除和简单的结账计算等操作。本系统的主要功能包括:客人信息管理:客人信息数据的添加、删除、结账计算。数据查询:查看客人信息数据,查看客房信息数据

3、。数据统计:统计一段时间内的客房情况和月收入等基本统计。3系统设计3.1系统模块设计根据系统功能分析和一些旅店客房管理的特点,经过模块化的分析得到如下图所示的系统功能模块结构图。查询功能登记功能统计功能安全管理模块删除客人信息统计入住情况统计入住统计收入用户名和密码登陆系统功能模块结构图3.2数据库设计3.2.1数据流图-1理系统J+查看统计管»理吊登记、删除客户埔第0层数据流图3.2.2数据字典根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:(1)数据项说明数据项名称含义说明长度记小编P惟,标识一条记录bigint8客房编号,标识一间客房varchar1

4、0离店时间标识离店时间datetime8金额标识所收金额money8类别标识客房类别smallint2名称标识客房类别名称varchar20价格标识客房价格money8(2)数据流说明数据流名称含义来源去向组成登陆管理员进入系统操作客房管理系统管理员端编号+密码查询已住房查询住房资料客人信息表统计界面客人信息表+客房编号表查询空房查询空住房客房编号表统计界面客房编号表查询房号查询房号信息客人信息表统计界面客人信息表计算计算金额客房管理系统管理员端客房管理系统登记,删除录入住房信息管理员端客房管理系统系统数据库统计统计住房信息系统数据库统计界面系统数据库(3)数据存储说明数据存储名称含义说明组成

5、结构历史记录表存放客房历史的有关信息客房编号拉额客人信息表存放客人相关的信息个人信息+主店时间捡额客房类别表存放客房对应的价格类别+价格客房编号表存放客房对应的编号类别+编号管理人员表存放管理员验证信息编号+密码(4)处理过程说明处理过程名称:审核登陆输入:编号+密码输出:确认加工逻辑:根据编号和密码管理员,进入主窗体(其他处理过程略)3.2.3概念结构设计依据客房管理系统的实际情况,考虑了多方面的因素以后,确定系统的E-R图,如图所示:客房管理系统E-R图3.2.4逻辑结构设计按照E-R图转换规则,可以得到如下的关系模式:客人彳息(客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,

6、来自地的地名预定入住时间入住时间,离店时间,押金,需负金额)客人类别(类别,名称,价格)客房编号(编号,类别)历史记录(记录编号,客房编号,离店时间,金额)管理人员(直文密码)3.2.5物理结构设计根据E-R图及数据字典,设计出公司工资管理系统数据库中的各个数据表,包括:客人信息、客房类别、客房编号、历史记录、管理人员共5个数据表。本系统数据库命名为“客房管理系统”,数据库中的各个数据表名称和结构分别如下所示,为便于说明,各个数据表的结构使用该表在SQLServer企业管理器中的设计视图表示。关系图:客房髡号自编号二类别客房类别幽名称价格客人信息客房编号姓名性别年龄身份证号蚂凉庭住址工作单位来

7、自地的地名预定入住时间入住时间离店时间押金需负金题客人信息:列名数据类型长度允详空阁貂国遍号Ivarchar10姓名varchar10性别char2年龄tinyinl1身份证号码varcharEC乐庭住址Yarchar50工作单位varchar5C来自地的地名varchar50预定入住时间datetime8入住时间datetime8寓店时间datetiineB押金inoney8需负金瓠moneyS客人信息结构图客房类别:列名数据类型长度1允许空?强1smallint2名称varuh.20money3客房类别结构图客房编号:而列名数据类型长度允许空wchar1C类别smallint2客房编号结构

8、图历史记录:列名数据类型长度1允许空bigint8vrcharIQ离店时间datetime3金颜money8历'史记录结构图管理人员:管理人员结构图4详细设计4.1界面设计主窗口(Mainwindow)本窗体为主窗体,用到java的swing中的菜单栏组件,主要代码如下:panel1=newJPanel();this.setContentPane(panell);lbPicture=newJLabel(newImageIcon(管理系统.Mainwindow.class.getResource("背景.jpg");panel1.add(lbPicture);主菜单j

9、mbMain=newJMenuBar();jmSystem=newJMenu("系统");jmSearch=newJMenu("查询");jmAdd=newJMenu("登记");jmCount=newJMenu("统计");jmHelp=newJMenu("帮助)setJMenuBar(jmbMain);10/添加主菜单jmbMain.add(jmSystem);jmbMain.add(jmSearch);jmbMain.add(jmAdd);jmbMain.add(jmCount);jmbMain.a

10、dd(jmHelp);系统子菜单jmiLogin=newJMenuItem("登陆)jmiLogin.addActionListener(this);jmSystem.add(jmiLogin);jmiCancel=newJMenuItem("注销");jmiCancel.addActionListener(this);jmiCancel.setEnabled(false);jmSystem.add(jmiCancel);jmiExit=newJMenuItem("退出");jmiExit.addActionListener(this);jmS

11、ystem.add(jmiExit);/查询子菜单jmiSearchFullRoom=newJMenuItem("查已彳i房");jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmSearch.add(jmiSearchFullRoom);jmiSearchVoidRoom=newJMenuItem("查空房");jmiSearchVoidRoom.addActionListener(this);jmiSearchVoidRoom.setEnab

12、led(false);jmSearch.add(jmiSearchVoidRoom);jmiSearchName=newJMenuItem("按名字或房号查");jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiSearchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=newJMenuItem("结账)jmiCalculate.addActionListen

13、er(this);jmiCalculate.setEnabled(false);jmSearch.add(jmiCalculate);登记子菜单jmiAdd=newJMenuItem("添加");jmiAdd.addActionListener(this);jmiAdd.setEnabled(false);jmAdd.add(jmiAdd);jmiDelete=newJMenuItem("删除");jmiDelete.addActionListener(this);jmiDelete.setEnabled(false);11jmAdd.add(jmiDe

14、lete);/统计子菜单jmiCircumstances=newJMenuItem("入住T青况");jmiCircumstances.addActionListener(this);jmiCircumstances.setEnabled(false);jmCount.add(jmiCircumstances);jmiRate=newJMenuItem("入住率");jmiRate.addActionListener(this);jmiRate.setEnabled(false);jmCount.add(jmiRate);jmiIncome=newJMe

15、nuItem("收入");jmiIncome.addActionListener(this);jmiIncome.setEnabled(false);jmCount.add(jmiIncome);帮助子菜单jmiAbout=newJMenuItem("关于");jmiAbout.addActionListener(this);jmHelp.add(jmiAbout);/窗体属性setBounds(300,150,800,600);setVisible(true);菜单中的键用到了ActionListener接口来实现主要代码如下:publicvoidac

16、tionPerformed(ActionEventae)/退出键if(ae.getSource()=jmiExit)登陆键elseif(ae.getActionCommand()="登陆")注销键elseif(ae.getSource()=jmiCancel)/查已住房间键elseif(ae.getSource()=jmiSearchFullRoom)/查空房elseif(ae.getSource()=jmiSearchVoidRoom)按名字或房号查12elseif(ae.getSource()=jmiSearchName)(/结账elseif(ae.getSource(

17、)=jmiCalculate)(/添力口elseif(ae.getSource()=jmiAdd)(/删除elseif(ae.getSource()=jmiDelete)(/入住情况elseif(ae.getSource()=jmiCircumstances)(/入住率elseif(ae.getSource()=jmiRate)(收入elseif(ae.getSource()=jmiIncome)(/关于elseif(ae.getSource()=jmiAbout)(13登陆界面(Login)本窗体连接到数据库中的管理员表通过定义ResultSet来调用表中的数据,相关代码:ResultSet

18、rs;rs=stat.executeQuery("select*from管理人员where编号="+""'+tUser.getText()+"'and密码="+""'+password.getText()+""');判断成功后实现主窗体中子菜单的setEnable()方法。登记客人信息(Add)14本窗体主要用到T-SQL语句中的insertinto-:VALUES语句,相关代码:a1=""'+tName.getText().trim(

19、)+""'a2="”'+tSex.getText().trim()+"”'a3="”'+tAge.getText().trim()+"”'a4=""'+tIdentication.getText().trim()+""'a5=""'+tAddress.getText().trim()+""'a6=""'+tWorkPlace.getText().trim()

20、+""'a7=""'+tFrom.getText().trim()+""'a8=""'+tRoomNo.getText().trim()+""'a9="”'+tWillIn.getText().trim()+皿;a10="”'+tIn.getText().trim()+皿;a11=""'+tLeave.getText().trim()+""'inti=Integer

21、.valueOf(tCash.getText().intValue();Stringb="insertinto客人信息(客房编号,姓名性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金)VALUES("+a8+","+a1+","+a2+","+a3+","+a4+","+a5+","+a6+","+a7+","+a9+","+a10+”,"

22、+a11+”,"+i+")"stat=conn.prepareStatement(b);r=stat.executeUpdate();删除客人信息(Delete)删除窗体与添加窗体相类似,用到T-SQL中的delete语句。客人结账(Calculate)15本窗体用到的T-SQL语句有(1) update金额Viewset需负金额=datediff(day,入住时间,getdate()*价格-押金where客房编号=501(2) update金额_viewset离店时间=dateadd(day,datediff(day,入住时间,getdate(),入住时间)wh

23、ere客房编号=501(3) select客房编号,姓名,需负金额from金额_viewwhere客房编号=501-(前台应用改客房编号就可以了)在前台定义stat=con.createStatement(泄用stat.executeUpdate(1);stat.executeUpdate(2);rs=stat.executeQuery(3);来实现。查询客人信息(SearchForName)本窗体主要用到JTable和连接客人信息表,相关代码:stat=conn.createStatement();rs=stat.executeQuery("select姓名,性别,工作单位,客房编

24、号,入住时间from客人信息where姓名="+""'+tName.getText()+""');rs=stat.executeQuery("select姓名,性别,工作单位,客房编号,入住时间from客人信息where客房编号="+""'+tName.getText()+""');16查询空房(VoidRoom)本窗体用到的T-SQL语句有:selectdistinct名称,编号from客房编号join客房类别on客房类别.类别=客房编号.类别wher

25、e编号notin(selectdistinct编号from客房编号join客人信息on编号=客人信息.客房编号where编号=客人信息.客房编号and离店时间isnull)与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery("selectdistinct类别,编号from客房编号where编号notin(selectdistinct编号as已定或已住from客房编号join客人信息on编号=客人信息.客房编号where编号=客人信息.客房编号and离店时间isnull)");17查房22022204220

26、53301330233034401440344044406550255035605类别房号2201返回有我查询已住或已定的客房(FullRoom)本窗体用到的T-SQL有:selectdistinct名称,编号from客房编号join客人信息on编号=客人信息.客房编号join客房类别on客房类别.类别=客房编号.类别where编号=客人信息.客房编号and离店时间isnull与前台连接的相关代码:stat=conn.createStatement();rs=stat.executeQuery("selectdistinct类别,编号from客房编号join客人信息on编号=客人信息

27、.客房编号where编号=客人信息.客房编号and离店时间isnull");18月收入回回宜月份收入1450.00002600.00003550.000041900.000051300000061250.0000Y8100.0000B145000009750,0000104350.000011520000001225000000年借:2008讨算返回统计月收入(InCome)本窗体用到的T-SQL语句:selectmonth(离店时间)as月份,sum(金额)as收入from历史记录join客房编号on客房编号=编号whereyear(离店时间)=2008groupbymonth(离

28、店时间)与前台连接的相关语句有:stat=con.createStatement();rs=stat.executeQuery("selectmonth(离店时间)as月份,sum(金额)as收入from历史记录join客房编号on客房编号=编号whereyear(离店时间)="+""'+tYear.getText()+""'+"groupbymonth(离店时间)”);19统计一段时间内各客房入住率(Rate)本窗体用到的T-SQL语句有:select客房编号,cast(cast(count(*)asflo

29、at)/(selectcount(*)from历史记录)*100.00asvarchar)+'%'as入住率from历史记录where'2008-1-1'<=离店时间and离店时间<='2008-12-31'groupby客房编号与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery("select客房编号,cast(cast(count(*)asfloat)/(selectcount(*)from历史记录)*100.00asvarchar)+'%&#

30、39;as入住率"+"from历史记录where离店时间>="+,""+tStart.getText()+"'and离店时间<="+皿+tOver.getText()+"'groupby客房编号");20统计一段时间内各类客房的入住情况(StatisticsInto)本窗体用到的T-SQL语句有:select名称,cast(cast(count(*)asreal)/(selectcount(*)from历史记录)*100.00asvarchar)+'%'as入住

31、率,sum(金额)as收入金额from历史记录join客房编号on客房编号=编号join客房类别on客房类别.类别=客房编号.类别where'2008-1-1'<=离店时间and离店时间<='2008-12-31'groupby名称-(前台应用改时间就可以了)与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery("select名称,cast(cast(count(*)asreal)/(selectcount(*)from历史记录)*100.00asvarchar)+'

32、;%'as入住率,sum(金额)as收入金额"+"from历史记录join客房编号on客房编号=编号join客房类别on客房类别.类别二客房编号.类别"+"where离店时间>="+""'+tStart.getText()+"'and离店时间<="+,""+tOver.getText()+"'groupby名称");214.2代码设计- -建立客房管理数据库(使用默认设置)createdatabase房管理系统- -创建客

33、人信息表createtable客人信息(客房编号varchar(10)primarykey,姓名varchar(10)notnull,性别char(2)notnull,年龄tinyint,身份证号码varchar(20)notnull,家庭住址varchar(50)notnull,工作单位varchar(50)notnull,来自地的地名varchar(50)notnull预定入住时间datetimrnotnull,入住时间datetimrnotnull,离店时间datetimr,押金moneynotnull,需负金额money)- -创建客房类别表createtable客房类别(类别smallintprimarykey,名称varchar(20)notnull,价格money)- -创建客房编号表createtable客房编号(22编号varchar(10)primarykey,类别smallint)- -创建历史记录表createtable历史记录(记录编号bigint,客房编号varchar(10),离店时间datetime,金额money)- -创建管理人员表createtable管理人员(编号varchar(10)primarykey,密码varchar(20)notnull)- -建立客人信息的默认值约束createdefault性另_de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论