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

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

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

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

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

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

4、金额标识所收金额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个数据表。本系统数据库命名为“客房管理系统”,数据库中的各个数据表名称和结构分别如下所示,为便于说明,各个数据表的结构使用该表在SQL Server企业管理器中的设计视图表示。l 关系图:l 客人信息:客人信息结构图l 客房类别:客房类别结构图l 客房编号:客房编号结构图l 历史记录:历史记录结构

7、图l 管理人员:管理人员结构图4 详细设计4.1 界面设计主窗口(Mainwindow)本窗体为主窗体,用到java的swing中的菜单栏组件,主要代码如下:panel1=new JPanel();this.setContentPane(panel1);lbPicture=newJLabel(new ImageIcon(管理系统.Mainwindow.class.getResource(背景.jpg);panel1.add(lbPicture);/主菜单jmbMain=new JMenuBar();jmSystem=new JMenu(系统);jmSearch=new JMenu(查询);jm

8、Add=new JMenu(登记);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=new JMenu

9、Item(注销);jmiCancel.addActionListener(this);jmiCancel.setEnabled(false);jmSystem.add(jmiCancel);jmiExit=new JMenuItem(退出);jmiExit.addActionListener(this);jmSystem.add(jmiExit);/查询子菜单jmiSearchFullRoom=new JMenuItem(查已住房);jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmS

10、earch.add(jmiSearchFullRoom);jmiSearchVoidRoom=new JMenuItem(查空房);jmiSearchVoidRoom.addActionListener(this);jmiSearchVoidRoom.setEnabled(false);jmSearch.add(jmiSearchVoidRoom);jmiSearchName=new JMenuItem(按名字或房号查);jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiS

11、earchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=new JMenuItem(结账);jmiCalculate.addActionListener(this);jmiCalculate.setEnabled(false);jmSearch.add(jmiCalculate);/登记子菜单jmiAdd=new JMenuItem(添加);jmiAdd.addActionListener(this);jmiAdd.setEnabled(false);jmAdd.add(jmiAdd);jmiDelete=

12、new JMenuItem(删除);jmiDelete.addActionListener(this);jmiDelete.setEnabled(false);jmAdd.add(jmiDelete);/统计子菜单jmiCircumstances=new JMenuItem(入住情况);jmiCircumstances.addActionListener(this);jmiCircumstances.setEnabled(false);jmCount.add(jmiCircumstances);jmiRate=new JMenuItem(入住率);jmiRate.addActionListen

13、er(this);jmiRate.setEnabled(false);jmCount.add(jmiRate);jmiIncome=new JMenuItem(收入);jmiIncome.addActionListener(this);jmiIncome.setEnabled(false);jmCount.add(jmiIncome);/帮助子菜单jmiAbout=new JMenuItem(关于);jmiAbout.addActionListener(this);jmHelp.add(jmiAbout);/窗体属性setBounds(300,150,800,600);setVisible(t

14、rue);菜单中的键用到了ActionListener接口来实现 主要代码如下:public void actionPerformed(ActionEvent ae)/退出键if (ae.getSource()=jmiExit)/登陆键else if(ae.getActionCommand()=登陆)/注销键else if(ae.getSource()=jmiCancel)/查已住房间键else if(ae.getSource()=jmiSearchFullRoom)/查空房else if(ae.getSource()=jmiSearchVoidRoom)/按名字或房号查else if(ae.

15、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()=jmiRate)/收入else if(ae.getSource()=jmiIncome)/关于else if(ae.getSource()=jmiAbout)登陆界面(Login)本窗体连

16、接到数据库中的管理员表通过定义ResultSet来调用表中的数据,相关代码: ResultSet rs; rs=stat.executeQuery(select * from 管理人员 where 编号=+tUser.getText()+ and 密码=+password.getText()+);判断成功后实现主窗体中子菜单的setEnable()方法。登记客人信息(Add)本窗体主要用到T-SQL语句中的insert into. VALUES语句,相关代码:a1=+tName.getText().trim()+;a2=+tSex.getText().trim()+;a3=+tAge.getT

17、ext().trim()+;a4=+tIdentication.getText().trim()+;a5=+tAddress.getText().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().i

18、ntValue();String b=insert into 客人信息 (客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金) 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)本窗体用到的T-SQL语句有(1)updat

19、e 金额_viewset 需负金额=datediff(day,入住时间,getdate()*价格-押金where 客房编号=501(2)update 金额_viewset 离店时间=dateadd(day,datediff(day,入住时间,getdate(),入住时间)where 客房编号=501(3)select 客房编号,姓名,需负金额from 金额_viewwhere 客房编号=501 -(前台应用改客房编号就可以了)在前台定义stat=con.createStatement()再用stat.executeUpdate(1);stat.executeUpdate(2);rs=stat.

20、executeQuery(3);来实现。查询客人信息(SearchForName)本窗体主要用到JTable和连接客人信息表,相关代码:stat=conn.createStatement();rs=stat.executeQuery(select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 姓名=+tName.getText()+);rs=stat.executeQuery(select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 客房编号=+tName.getText()+);查询空房(VoidRoom)本窗体用到的T-SQL语句有

21、:select distinct 名称,编号from 客房编号join 客房类别on 客房类别.类别=客房编号.类别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 已定或已住 f

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

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

24、额) as 收入 from 历史记录 join 客房编号 on 客房编号=编号 where year(离店时间)=+tYear.getText()+ 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 离店时间=+tStart.getText()+ and 离店时间=+tOver.g

25、etText()+ group by 客房编号);统计一段时间内各类客房的入住情况(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.

26、getText()+ group by 名称);4.2 代码设计l -建立客房管理数据库(使用默认设置)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预定入住时间 datet

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

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

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

30、 客人信息_delete_trion 客人信息for deleteasdeclare 记录编号 bigint,客房编号 varchar(10),离店时间 datetime,金额 moneyselect 客房编号=客房编号,离店时间=离店时间,金额=需负金额+押金from deletedselect 记录编号=记录编号+1from 历史记录insert into 历史记录values(记录编号,客房编号,离店时间,金额)l 数据库的连接主要是用JDBC-ODBC技术连接的,方法是用java的Class.forName(),DriverManager.getConnection(),createS

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

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

当前位置:首页 > 应用文书 > 工作总结

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

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