基于JAVA的客房管理系统设计(有源代码+数据库)22865.pdf

上传人:得****3 文档编号:83604705 上传时间:2023-03-31 格式:PDF 页数:24 大小:1.29MB
返回 下载 相关 举报
基于JAVA的客房管理系统设计(有源代码+数据库)22865.pdf_第1页
第1页 / 共24页
基于JAVA的客房管理系统设计(有源代码+数据库)22865.pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《基于JAVA的客房管理系统设计(有源代码+数据库)22865.pdf》由会员分享,可在线阅读,更多相关《基于JAVA的客房管理系统设计(有源代码+数据库)22865.pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、 系统设计 3.1 系统模块设计 根据系统功能分析和一些旅店客房管理的特点,经过模块化的分析得到如下图所示的系统功能模块结构图。系统功能模块结构图 客 房 管 理 登 记 功 能 统 计 功 能 查 询 功 能 已入住客房查寻 空房查询 按名字查询客人信息 按 客人 编号 查询 客人 信息 添加客人信息 删除客人信息 统计入住情况 统计入住率 统计收入 安全管理模块 用户名和密码登陆 注 销 4 3.2 数据库设计 3.2.1 数据流图 顶层数据流图 第 0 层数据流图 5 3.2.2 数据字典 根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:(1)数据项说明 数据

4、项名称 含义说明 类型 长度 记录编号 惟一标识一条记录 bigint 8 客房编号 惟一标识一间客房 varchar 10 离店时间 标识离店时间 datetime 8 金额 标识所收金额 money 8 类别 标识客房类别 smallint 2 名称 标识客房类别名称 varchar 20 价格 标识客房价格 money 8 (2)数据流说明 数据流名称 含义 来源 去向 组成 登陆 管理员进入系统操作 客房管理系统 管理员端 编号+密码 查询已住房 查询住房资料 客人信息表 统计界面 客人信息表+客房编号表 查询空房 查询空住房 客房编号表 统计界面 客房编号表 查询房号 查询房号信息

5、客人信息表 统计界面 客人信息表 计算 计算金额 客房管理系统 管理员端 客房管理系统 登记,删除 录入住房信息 管理员端 客房管理系统 系统数据库 统计 统计住房信息 系统数据库 统计界面 系统数据库 6(3)数据存储说明 数据存储名称 含义说明 组成结构 历史记录表 存放客房历史的有关信息 客房编号+金额 客人信息表 存放客人相关的信息 个人信息+住店时间+金额 客房类别表 存放客房对应的价格 类别+价格 客房编号表 存放客房对应的编号 类别+编号 管理人员表 存放管理员验证信息 编号+密码 (4)处理过程说明 处理过程名称:审核登陆 输入:编号+密码 输出:确认 加工逻辑:根据编号和密码

6、管理员,进入主窗体。(其他处理过程略)7 3.2.3 概念结构设计 依据客房管理系统的实际情况,考虑了多方面的因素以后,确定系统的 E-R图,如图所示:客房管理系统 E-R 图 3.2.4 逻辑结构设计 按照 E-R 图转换规则,可以得到如下的关系模式:客人信息(客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金,需负金额)客人类别(类别,名称,价格)客房编号(编号,类别)历史记录(记录编号,客房编号,离店时间,金额)管理人员(编号,密码)8 3.2.5 物理结构设计 根据 E-R 图及数据字典,设计出公司工资管理系统数据库中的各个

7、数据表,包括:客人信息、客房类别、客房编号、历史记录、管理人员共 5 个数据表。本系统数据库命名为“客房管理系统”,数据库中的各个数据表名称和结构分别如下所示,为便于说明,各个数据表的结构使用该表在SQL Server 企业管理器中的设计视图表示。关系图:客人信息:客人信息结构图 9 客房类别:客房类别结构图 客房编号:客房编号结构图 历史记录:历史记录结构图 管理人员:管理人员结构图 10 4 详细设计 4.1 界面设计 主窗口(Mainwindow)本窗体为主窗体,用到 java 的 swing 中的菜单栏组件,主要代码如下:panel1=new JPanel();this.setCont

8、entPane(panel1);lbPicture=newJLabel(new ImageIcon(管理系统.Mainwindow.class.getResource(背景.jpg);panel1.add(lbPicture);/主菜单 jmbMain=new JMenuBar();jmSystem=new JMenu(系统);jmSearch=new JMenu(查询);jmAdd=new JMenu(登记);jmCount=new JMenu(统计);jmHelp=new JMenu(帮助);setJMenuBar(jmbMain);11 /添加主菜单 jmbMain.add(jmSyst

9、em);jmbMain.add(jmSearch);jmbMain.add(jmAdd);jmbMain.add(jmCount);jmbMain.add(jmHelp);/系统子菜单 jmiLogin=new JMenuItem(登陆);jmiLogin.addActionListener(this);jmSystem.add(jmiLogin);jmiCancel=new JMenuItem(注销);jmiCancel.addActionListener(this);jmiCancel.setEnabled(false);jmSystem.add(jmiCancel);jmiExit=ne

10、w JMenuItem(退出);jmiExit.addActionListener(this);jmSystem.add(jmiExit);/查询子菜单 jmiSearchFullRoom=new JMenuItem(查已住房);jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmSearch.add(jmiSearchFullRoom);jmiSearchVoidRoom=new JMenuItem(查空房);jmiSearchVoidRoom.addActionListener(th

11、is);jmiSearchVoidRoom.setEnabled(false);jmSearch.add(jmiSearchVoidRoom);jmiSearchName=new JMenuItem(按名字或房号查);jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiSearchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=new JMenuItem(结账);jmiCalculate.a

12、ddActionListener(this);jmiCalculate.setEnabled(false);jmSearch.add(jmiCalculate);/登记子菜单 jmiAdd=new JMenuItem(添加);jmiAdd.addActionListener(this);jmiAdd.setEnabled(false);jmAdd.add(jmiAdd);jmiDelete=new JMenuItem(删除);jmiDelete.addActionListener(this);jmiDelete.setEnabled(false);12 jmAdd.add(jmiDelete)

13、;/统计子菜单 jmiCircumstances=new JMenuItem(入住情况);jmiCircumstances.addActionListener(this);jmiCircumstances.setEnabled(false);jmCount.add(jmiCircumstances);jmiRate=new JMenuItem(入住率);jmiRate.addActionListener(this);jmiRate.setEnabled(false);jmCount.add(jmiRate);jmiIncome=new JMenuItem(收入);jmiIncome.addAc

14、tionListener(this);jmiIncome.setEnabled(false);jmCount.add(jmiIncome);/帮助子菜单 jmiAbout=new JMenuItem(关于);jmiAbout.addActionListener(this);jmHelp.add(jmiAbout);/窗体属性 setBounds(300,150,800,600);setVisible(true);菜单中的键用到了 ActionListener 接口来实现 主要代码如下:public void actionPerformed(ActionEvent ae)/退出键 if(ae.g

15、etSource()=jmiExit)/登陆键 else if(ae.getActionCommand()=登陆)/注销键 else if(ae.getSource()=jmiCancel)/查已住房间键 else if(ae.getSource()=jmiSearchFullRoom)/查空房 else if(ae.getSource()=jmiSearchVoidRoom)/按名字或房号查 13 else if(ae.getSource()=jmiSearchName)/结账 else if(ae.getSource()=jmiCalculate)/添加 else if(ae.getSou

16、rce()=jmiAdd)/删除 else if(ae.getSource()=jmiDelete)/入住情况 else if(ae.getSource()=jmiCircumstances)/入住率 else if(ae.getSource()=jmiRate)/收入 else if(ae.getSource()=jmiIncome)/关于 else if(ae.getSource()=jmiAbout)14 登陆界面(Login)本窗体连接到数据库中的管理员表通过定义 ResultSet 来调用表中的数据,相关代码:ResultSet rs;rs=stat.executeQuery(sel

17、ect*from 管理人员 where 编号=+tUser.getText()+and 密码=+password.getText()+);判断成功后实现主窗体中子菜单的 setEnable()方法。登记客人信息(Add)15 本窗体主要用到 T-SQL 语句中的 insert into.VALUES 语句,相关代码:a1=+tName.getText().trim()+;a2=+tSex.getText().trim()+;a3=+tAge.getText().trim()+;a4=+tIdentication.getText().trim()+;a5=+tAddress.getText().

18、trim()+;a6=+tWorkPlace.getText().trim()+;a7=+tFrom.getText().trim()+;a8=+tRoomNo.getText().trim()+;a9=+tWillIn.getText().trim()+;a10=+tIn.getText().trim()+;a11=+tLeave.getText().trim()+;int i=Integer.valueOf(tCash.getText().intValue();String b=insert into 客人信息(客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定

19、入住时间,入住时间,离店时间,押金)VALUES(+a8+,+a1+,+a2+,+a3+,+a4+,+a5+,+a6+,+a7+,+a9+,+a10+,+a11+,+i+);stat=conn.prepareStatement(b);r=stat.executeUpdate();删除客人信息(Delete)删除窗体与添加窗体相类似,用到 T-SQL 中的 delete 语句。客人结账(Calculate)16 本窗体用到的 T-SQL 语句有(1)update 金额_view set 需负金额=datediff(day,入住时间,getdate()*价格-押金 where 客房编号=501 (

20、2)update 金额_view set 离店时间=dateadd(day,datediff(day,入住时间,getdate(),入住时间)where 客房编号=501 (3)select 客房编号,姓名,需负金额 from 金额_view where 客房编号=501 -(前台应用改客房编号就可以了)在前台定义 stat=con.createStatement()再用 stat.executeUpdate(1);stat.executeUpdate(2);rs=stat.executeQuery(3);来实现。查询客人信息(SearchForName)本窗体主要用到 JTable 和连接客

21、人信息表,相关代码:stat=conn.createStatement();rs=stat.executeQuery(select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 姓名=+tName.getText()+);rs=stat.executeQuery(select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 客房编号=+tName.getText()+);17 查询空房(VoidRoom)本窗体用到的 T-SQL 语句有:select distinct 名称,编号 from 客房编号 join 客房类别 on 客房类别.类别

22、=客房编号.类别 where 编号 not in(select distinct 编号 from 客房编号 join 客人信息 on 编号=客人信息.客房编号 where 编号=客人信息.客房编号 and 离店时间 is null)与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery(select distinct 类别,编号 from 客房编号 where 编号 not in(select distinct 编号 as 已定或已住 from 客房编号 join 客人信息 on 编号=客人信息.客房编号 where 编号=客人

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

24、客房编号 where 编号=客人信息.客房编号 and 离店时间 is null);19 统计月收入(InCome)本窗体用到的 T-SQL 语句:select month(离店时间)as 月份,sum(金额)as 收入 from 历史记录 join 客房编号 on 客房编号=编号 where year(离店时间)=2008 group by month(离店时间)与前台连接的相关语句有:stat=con.createStatement();rs=stat.executeQuery(select month(离店时间)as 月份,sum(金额)as 收入 from 历史记录 join 客房编号

25、 on 客房编号=编号 where year(离店时间)=+tYear.getText()+group by month(离店时间);20 统计一段时间内各客房入住率(Rate)本窗体用到的 T-SQL 语句有:select 客房编号,cast(cast(count(*)as float)/(select count(*)from 历史记录)*100.00 as varchar)+%as 入住率 from 历史记录 where 2008-1-1=离店时间 and 离店时间=+tStart.getText()+and 离店时间=+tOver.getText()+group by 客房编号);21

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 离店时间=+tStart.getText()+and 离店时间=+tOver.getText()+group b

27、y 名称);22 4.2 代码设计 -建立客房管理数据库(使用默认设置)create database 客房管理系统 -创建客人信息表 create table 客人信息(客房编号 varchar(10)primary key,姓名 varchar(10)not null,性别 char(2)not null,年龄 tinyint,身份证号码 varchar(20)not null,家庭住址 varchar(50)not null,工作单位 varchar(50)not null,来自地的地名 varchar(50)not null 预定入住时间 datetimr not null,入住时间

28、datetimr not null,离店时间 datetimr,押金 money not null,需负金额 money)-创建客房类别表 create table 客房类别(类别 smallint primary key,名称 varchar(20)not null,价格 money)-创建客房编号表 create table 客房编号(23 编号 varchar(10)primary key,类别 smallint)-创建历史记录表 create table 历史记录(记录编号 bigint,客房编号 varchar(10),离店时间 datetime,金额 money)-创建管理人员表

29、create table 管理人员(编号 varchar(10)primary key,密码 varchar(20)not null)-建立客人信息的默认值约束 create default 性别_default as 男 go sp_bindefault 性别_default,客人信息.性别 go -建立表之间的联系(外键约束)alter table 客人信息 add constraint FK_客人信息_客房编号 foreign key(客房编号)references 客房编号(编号)alter table 客人编号 add constraint FK_客房编号_客房类别 foreign

30、key(类别)references 客房类别(类别)-建立金额视图(供查询客人退房时计算金额方便计算)create view 金额_view as select 客房编号,姓名,性别,入住时间,离店时间,押金,价格,需负金额 from 客人信息 join 客房编号 on 客人信息.客房编号=编号 join 客房类别 24 on 客房类别.类别=客房编号.类别 -在历史记录建立索引 create nonclustered index idx离店时间 on 历史记录(离店时间)-在客人信息建立 DELETE 触发器-(当管理员删除客人信息表的记录时自动添加相应的记录到历史记录表中)create t

31、rigger 客人信息_delete_tri on 客人信息 for delete as declare 记录编号 bigint,客房编号 varchar(10),离店时间 datetime,金额 money select 客房编号=客房编号,离店时间=离店时间,金额=需负金额+押金 from deleted select 记录编号=记录编号+1 from 历史记录 insert into 历史记录 values(记录编号,客房编号,离店时间,金额)数据库的连接主要是用 JDBC-ODBC 技术连接的,方法是用 java 的Class.forName(),DriverManager.getCo

32、nnection(),createStatement(),executeQuery()方法和 T-SQL 语句的 SELECT 查询和触发器。相应的前台应用代码如下 -连接数据库的代码如下:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:客房管理,sa,);5 结论 系统的使用一切正常,实现了很实用和方便的强大管理功能。适合各种大小型客房旅店的需要和实用。通过这次的设计系统,我们三人提前学会到了很多 JAVA 和 SQL 的知识,一些书本上没有的,我们在网上找人帮忙,还有借助其他的一些开发书籍。所以我们真的学会了很多很多。我们还会努力设计出人性化和科学化的程序。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁