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

下载本文档

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

文档简介

1、计算机软件学专业课程设计报告书课程名称 SQL server 2000课程设计题目 客房管理系统 1 概述1.1 背景客房管理是旅店管理事务中的一项重要工作,在管理过程中涉及到大量的数据处理,传统的人工管理已经无法完成胜任。相关数据的处理带来了更大的工作量。本系统采用目前比较流行的JDBC-ODBC 数据访问技术,成功地将面向对象的程序设计思想应用到数据库应用程序设计中。1.2 开发与运行环境本客房管理系统的开发与运行环境如下: 开发环境:Eclipse 3.1 开发工具:JA V A 1.5数据库管理系统:SQL Server 2000 运行环境:Windows 2000/XP/2003/V

2、ista使用说明:用户自己附加数据库,并且在控制面板下的数据工具中的数据源(ODBC,在用户DSN 下添加名为“客房管理”,驱动程序为SQL-Server 。并且安装了JA V A 虚拟机,该程序即可使用。2 需求分析客房资管理系统涉及到:客人信息、客房信息、入住信息、历史信息等多种数据信息。 客房管理系统的用户包括系统管理员。系统管理员负责整理工作,如各种基本信息的添加、删除和简单的结账计算等操作。本系统的主要功能包括:客人信息管理:客人信息数据的添加、删除、结账计算。 数据查询:查看客人信息数据,查看客房信息数据。 数据统计:统计一段时间内的客房情况和月收入等基本统计。3 系统设计3.1

3、系统模块设计根据系统功能分析和一些旅店客房管理的特点,经过模块化的分析得到如下图所示的系统功能模块结构图。 系统功能模块结构图3.2 数据库设计 数据流图顶层数据流图 第0层数据流图根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:(1)数据项说明 (2)数据流说明 (3)数据存储说明 (4)处理过程说明处理过程名称:审核登陆 输入:编号+密码 输出:确认加工逻辑:根据编号和密码管理员,进入主窗体。(其他处理过程略依据客房管理系统的实际情况,考虑了多方面的因素以后,确定系统的E-R图,如图所示: 客房管理系统E-R 图按照E-R 图转换规则,可以得到如下的关系模式:客

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

5、客人信息: 客人信息结构图 客房类别: 客房类别结构图 客房编号: 历史记录: 管理人员: 客房编号结构图历史记录结构图管理人员结构图4 详细设计4.1 界面设计 主窗口(Mainwindow本窗体为主窗体,用到java 的swing 中的菜单栏组件,主要代码如下:panel1=new JPanel(;this.setContentPane(panel1;jmbMain=new JMenuBar(; jmSystem=new JMenu("系统" jmSearch=new JMenu("查询" jmAdd=new JMenu("登记"

6、 jmCount=new JMenu("统计" jmHelp=new JMenu("帮助" setJMenuBar(jmbMain;/添加主菜单jmbMain.add(jmSystem;jmbMain.add(jmSearch;jmbMain.add(jmAdd;jmbMain.add(jmCount;jmbMain.add(jmHelp;/系统子菜单jmiLogin=new JMenuItem("登陆"jmiLogin.addActionListener(this;jmSystem.add(jmiLogin;jmiCancel=ne

7、w JMenuItem("注销"jmiCancel.addActionListener(this;jmiCancel.setEnabled(false;jmSystem.add(jmiCancel;jmiExit=new JMenuItem("退出"jmiExit.addActionListener(this;jmSystem.add(jmiExit;/查询子菜单jmiSearchFullRoom=new JMenuItem("查已住房"jmiSearchFullRoom.addActionListener(this;jmiSearc

8、hFullRoom.setEnabled(false;jmSearch.add(jmiSearchFullRoom;jmiSearchV oidRoom=new JMenuItem("查空房"jmiSearchV oidRoom.addActionListener(this;jmiSearchV oidRoom.setEnabled(false;jmSearch.add(jmiSearchVoidRoom;jmiSearchName=new JMenuItem("按名字或房号查"jmiSearchName.addActionListener(this;j

9、miSearchName.setEnabled(false;jmSearch.add(jmiSearchName;jmiLine.setEnabled(false;jmSearch.add(jmiLine;jmiCalculate=new JMenuItem("结账"jmiCalculate.addActionListener(this;jmiCalculate.setEnabled(false;jmSearch.add(jmiCalculate;/登记子菜单jmiAdd=new JMenuItem("添加"jmiAdd.addActionListene

10、r(this;jmiAdd.setEnabled(false;jmAdd.add(jmiAdd;jmiDelete=new JMenuItem("删除"jmiDelete.addActionListener(this;jmiDelete.setEnabled(false;11jmAdd.add(jmiDelete; /统计子菜单jmiCircumstances=new JMenuItem("入住情况"jmiCircumstances.addActionListener(this;jmiCircumstances.setEnabled(false;jmCo

11、unt.add(jmiCircumstances;jmiRate=new JMenuItem("入住率"jmiRate.addActionListener(this;jmiRate.setEnabled(false;jmCount.add(jmiRate;jmiIncome=new JMenuItem("收入"jmiIncome.addActionListener(this;jmiIncome.setEnabled(false;jmCount.add(jmiIncome;/帮助子菜单jmiAbout=new JMenuItem("关于"

12、;jmiAbout.addActionListener(this;jmHelp.add(jmiAbout;/窗体属性setBounds(300,150,800,600;setVisible(true;菜单中的键用到了ActionListener 接口来实现 主要代码如下:public void actionPerformed(ActionEvent ae/退出键if (ae.getSource(=jmiExit/登陆键else if(ae.getActionCommand(="登陆"/注销键else if(ae.getSource(=jmiCancel/查已住房间键else

13、 if(ae.getSource(=jmiSearchFullRoom/查空房else if(ae.getSource(=jmiSearchVoidRoom/按名字或房号查12else if(ae.getSource(=jmiSearchName/结账else if(ae.getSource(=jmiCalculate/添加else if(ae.getSource(=jmiAdd/删除else if(ae.getSource(=jmiDelete/入住情况else if(ae.getSource(=jmiCircumstances/入住率else if(ae.getSource(=jmiRat

14、e/收入else if(ae.getSource(=jmiIncome/关于else if(ae.getSource(=jmiAbout1000 登陆界面(Login 本窗体连接到数据库中的管理员表通过定义ResultSet 来调用表中的数据,相关代码: ResultSet rs;rs=stat.executeQuery("select * from 管理人员 where 编号="+"'"+tUser.getText(+"' and 密码="+"'"+password.getText(+&q

15、uot;'"蜡烛的重压之下。本窗体主要用到T-SQL 语句中的inser t into. VALUES 语句,相关代码:a1="'"+tName.getText(.trim(+"'"a2="'"+tSex.getText(.trim(+"'"a3="'"+tAge.getText(.trim(+"'"a4="'"+tIdentication.getText(.trim(+"

16、'"a5="'"+tAddress.getText(.trim(+"'"a6="'"+tWorkPlace.getText(.trim(+"'"a7="'"+tFrom.getText(.trim(+"'"a8="'"+tRoomNo.getText(.trim(+"'"a9="'"+tWillIn.getText(.trim(

17、+"'"a10="'"+tIn.getText(.trim(+"'"a11="'"+tLeave.getText(.trim(+"'"int i = Integer.valueOf(tCash.getText(.intValue(;String b="insert into 客人信息 (客房编号, 姓名, 性别, 年龄, 身份证号码, 家庭住址, 工作单位, 来自地的地名, 预定高温风机与增湿塔哪个设备在前更好?删除窗体与添加窗体相类似,用到T-

18、SQL 中的delete 语句。客人结账(Calculate15本窗体用到的T-SQL 语句有(1)update 金额_viewset 需负金额=datediff(day,入住时间,getdate(*价格-押金where 客房编号=501(2)update 金额_viewset 离店时间=dateadd(day,datediff(day,入住时间,getdate(,入住时间where 客房编号=501(3)select 客房编号, 姓名, 需负金额from 金额_viewwhere 客房编号=501 -(前台应用改客房编号就可以了在前台定义stat=con.createStatement(再用

19、stat.executeUpdate(1;stat.executeUpdate(2;rs=stat.executeQuery(3;来实现。 查询客人信息(SearchForName本窗体主要用到JTable 和连接客人信息表,相关代码:stat=conn.createStatement(;rs=stat.executeQuery("select 姓名, 性别, 工作单位, 客房编号, 入住时间 from 客人信息 where 姓名="+"'"+tName.getText(+"'"rs=stat.executeQuery

20、("select 姓名, 性别, 工作单位, 客房编号, 入住时间 from 客人信息 where 客房编号="+"'"+tName.getText(+"'"查询空房(VoidRoom本窗体用到的T-SQL 语句有:select distinct 名称, 编号from 客房编号join 客房类别on 客房类别. 类别=客房编号. 类别where 编号 not in(select distinct 编号from 客房编号join 客人信息on 编号=客人信息. 客房编号where 编号=客人信息. 客房编号 and 离店

21、时间 is null与前台连接的相关语句有:stat=conn.createStatement(;rs=stat.executeQuery("select distinct 类别, 编号 from 客房编号 where 编号 not in (select distinct 编号 as 已定或已住 from 客房编号 join 客人信息 on 编号=客人信息. 客房编号 where 编号=客人信息. 客房编号 and 离店时间 is null" 查询已住或已定的客房(FullRoom本窗体用到的T-SQL 有:select distinct 名称, 编号from 客房编号jo

22、in 客人信息on 编号=客人信息. 客房编号join 客房类别on 客房类别. 类别=客房编号. 类别where 编号=客人信息. 客房编号 and 离店时间 is null与前台连接的相关代码:stat=conn.createStatement(;rs=stat.executeQuery("select distinct 类别, 编号 from 客房编号 join 客人信息 on 编号=客人信息. 客房编号 where 编号=客人信息. 客房编号 and 离店时间 is null" 统计月收入(InCome本窗体用到的T-SQL 语句:select month(离店时间

23、 as 月份,sum(金额 as 收入from 历史记录join 客房编号on 客房编号=编号where year(离店时间=2008group by month(离店时间与前台连接的相关语句有:stat=con.createStatement(;rs=stat.executeQuery("select month(离店时间 as 月份,sum(金额 as 收入 from 历史记录 join 客房编号 on 客房编号=编号 where year(离店时间="+"'"+tYear.getText(+"'"+"

24、group by month(离店时间" 统计一段时间内各客房入住率(Rate本窗体用到的T-SQL 语句有:select 客房编号,cast(cast(count(* as float/(select count(* from 历史记录*100.00 as varchar+'%' as 入住率from 历史记录where '2008-1-1'<=离店时间 and 离店时间<='2008-12-31'group by 客房编号与前台连接的相关语句有:stat=conn.createStatement(;rs=stat.exe

25、cuteQuery("select 客房编号,cast(cast(count(* as float/(select count(* from 历史记录*100.00 as varchar+'%' as 入住率 " +"from 历史记录 where 离店时间>="+"'"+tStart.getText(+"' and 离店时间<="+"'"+tOver.getText(+"' group by 客房编号" 统计一段时

26、间内各类客房的入住情况(StatisticsInto 本窗体用到的 T-SQL 语句有: select 名 称 ,cast(cast(count(* as real/(select count(* from 历 史 记 录 *100.00 as varchar+'%' as 入住率,sum(金额 as 收入金额 from 历史记录 join 客房编号 on 客房编号=编号 join 客房类别 on 客房类别.类别=客房编号.类别 where '2008-1-1'<=离店时间 and 离店时间<='2008-12-31' group b

27、y 名称 -(前台应用改时间就可以了 与前台连接的相关语句有: stat=conn.createStatement(; rs=stat.executeQuery("select 名称,cast(cast(count(* as real/(select count(* from 历史记 录*100.00 as varchar+'%' as 入住率,sum(金额 as 收入金额 " +"from 历史记录 join 客房 编号 on 客房编号=编号 join 客房类别 on 客房类别.类别=客房编号.类别 " +"where 离店

28、时间>="+"'"+tStart.getText(+"' and 离店时间<="+"'"+tOver.getText(+"' group by 名称" 21 4.2 代码设计 l -建立客房管理数据库(使用默认设置 create database 客房管理系统 -创建客人信息表 create table 客人信息( 客房编号 varchar(10 primary key, 姓名 varchar(10 not null, 性别 char(2 not null, 年龄 tinyint, 身份证号码 varc

温馨提示

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

评论

0/150

提交评论