




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上计算机软件学专业课程设计报告书课程名称 SQL server 2000 课程设计题目 客房管理系统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.1
3、 系统模块设计根据系统功能分析和一些旅店客房管理的特点,经过模块化的分析得到如下图所示的系统功能模块结构图。客房管理登记功能统计功能查询功能已入住客房查寻空房查询按名字查询客人信息按客人编号查询客人信息添加客人信息删除客人信息统计入住情况统计入住率统计收入安全管理模块用户名和密码登陆注销系统功能模块结构图3.2 数据库设计3.2.1 数据流图顶层数据流图第0层数据流图3.2.2 数据字典根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:(1)数据项说明数据项名称含义说明类型长度记录编号惟一标识一条记录bigint8客房编号惟一标识一间客房varchar10离店时间标识
4、离店时间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个数据表。本系统数据库命名为“客房管理系统”,数据库中的各个数据表名称和结构分别如下所示,为便于说明,各个数据表的结构使用该表在SQL Server企业管理器中的设计视图表示。l 关系图:l 客人信息:客人信息结构图l 客房类别:客房类别结构图l 客房编号:客房编号结构图
7、l 历史记录:历史记录结构图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(&quo
8、t;系统");jmSearch=new JMenu("查询");jmAdd=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 JMen
9、uItem("登陆");jmiLogin.addActionListener(this);jmSystem.add(jmiLogin);jmiCancel=new JMenuItem("注销");jmiCancel.addActionListener(this);jmiCancel.setEnabled(false);jmSystem.add(jmiCancel);jmiExit=new JMenuItem("退出");jmiExit.addActionListener(this);jmSystem.add(jmiExit);/查询子
10、菜单jmiSearchFullRoom=new JMenuItem("查已住房");jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmSearch.add(jmiSearchFullRoom);jmiSearchVoidRoom=new JMenuItem("查空房");jmiSearchVoidRoom.addActionListener(this);jmiSearchVoidRoom.setEnabled(false);jmSearch.ad
11、d(jmiSearchVoidRoom);jmiSearchName=new JMenuItem("按名字或房号查");jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiSearchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=new JMenuItem("结账");jmiCalculate.addActionListener(this);jmiC
12、alculate.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);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(&qu
14、ot;收入");jmiIncome.addActionListener(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 actionP
15、erformed(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.getSource()=jmiSearchName)/结账else if(ae.getSour
16、ce()=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)本窗体连接到数据库中的管理员表通过定义ResultSet来调用表中的数据,相关代码: ResultSe
17、t rs; rs=stat.executeQuery("select * from 管理人员 where 编号="+"'"+tUser.getText()+"' and 密码="+"'"+password.getText()+"'");判断成功后实现主窗体中子菜单的setEnable()方法。登记客人信息(Add)本窗体主要用到T-SQL语句中的insert into. VALUES语句,相关代码:a1="'"+tName.getTex
18、t().trim()+"'"a2="'"+tSex.getText().trim()+"'"a3="'"+tAge.getText().trim()+"'"a4="'"+tIdentication.getText().trim()+"'"a5="'"+tAddress.getText().trim()+"'"a6="'"
19、;+tWorkPlace.getText().trim()+"'"a7="'"+tFrom.getText().trim()+"'"a8="'"+tRoomNo.getText().trim()+"'"a9="'"+tWillIn.getText().trim()+"'"a10="'"+tIn.getText().trim()+"'"a11=&q
20、uot;'"+tLeave.getText().trim()+"'"int i = Integer.valueOf(tCash.getText().intValue();String b="insert into 客人信息 (客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金) VALUES ("+a8+","+a1+","+a2+","+a3+","+a4+","+a
21、5+","+a6+","+a7+","+a9+","+a10+","+a11+","+i+")"stat=conn.prepareStatement(b);r=stat.executeUpdate();删除客人信息(Delete)删除窗体与添加窗体相类似,用到T-SQL中的delete语句。客人结账(Calculate)本窗体用到的T-SQL语句有(1)update 金额_viewset 需负金额=datediff(day,入住时间,getdate()*价
22、格-押金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.executeQuery(3);来实现。查询客人信息(SearchForName)本窗体主要用
23、到JTable和连接客人信息表,相关代码:stat=conn.createStatement();rs=stat.executeQuery("select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 姓名="+"'"+tName.getText()+"'");rs=stat.executeQuery("select 姓名,性别,工作单位,客房编号,入住时间 from 客人信息 where 客房编号="+"'"+tName.getText()+
24、"'");查询空房(VoidRoom)本窗体用到的T-SQL语句有: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 类别,编号 fro
25、m 客房编号 where 编号 not in (select distinct 编号 as 已定或已住 from 客房编号 join 客人信息 on 编号=客人信息.客房编号 where 编号=客人信息.客房编号 and 离店时间 is null)");查询已住或已定的客房(FullRoom)本窗体用到的T-SQL有:select distinct 名称,编号from 客房编号join 客人信息on 编号=客人信息.客房编号join 客房类别on 客房类别.类别=客房编号.类别where 编号=客人信息.客房编号 and 离店时间 is null与前台连接的相关代码:stat=con
26、n.createStatement();rs=stat.executeQuery("select distinct 类别,编号 from 客房编号 join 客人信息 on 编号=客人信息.客房编号 where 编号=客人信息.客房编号 and 离店时间 is null");统计月收入(InCome)本窗体用到的T-SQL语句:select month(离店时间) as 月份,sum(金额) as 收入from 历史记录join 客房编号on 客房编号=编号where year(离店时间)=2008group by month(离店时间)与前台连接的相关语句有:stat=c
27、on.createStatement();rs=stat.executeQuery("select month(离店时间) as 月份,sum(金额) as 收入 from 历史记录 join 客房编号 on 客房编号=编号 where year(离店时间)="+"'"+tYear.getText()+"'"+" group by month(离店时间)");统计一段时间内各客房入住率(Rate)本窗体用到的T-SQL语句有:select 客房编号,cast(cast(count(*) as flo
28、at)/(select count(*) from 历史记录)*100.00 as varchar)+'%' as 入住率from 历史记录where '2008-1-1'<=离店时间 and 离店时间<='2008-12-31'group by 客房编号与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery("select 客房编号,cast(cast(count(*) as float)/(select count(*) from 历史记录)*100.00
29、 as varchar)+'%' as 入住率 " +"from 历史记录 where 离店时间>="+"'"+tStart.getText()+"' and 离店时间<="+"'"+tOver.getText()+"' group by 客房编号");统计一段时间内各类客房的入住情况(StatisticsInto)本窗体用到的T-SQL语句有:select 名称,cast(cast(count(*) as real)/(se
30、lect count(*) from 历史记录)*100.00 as varchar)+'%' as 入住率,sum(金额) as 收入金额from 历史记录join 客房编号on 客房编号=编号join 客房类别on 客房类别.类别=客房编号.类别where '2008-1-1'<=离店时间 and 离店时间<='2008-12-31'group by 名称 -(前台应用改时间就可以了)与前台连接的相关语句有:stat=conn.createStatement();rs=stat.executeQuery("select
31、名称,cast(cast(count(*) as real)/(select count(*) from 历史记录)*100.00 as varchar)+'%' as 入住率,sum(金额) as 收入金额 " +"from 历史记录 join 客房编号 on 客房编号=编号 join 客房类别 on 客房类别.类别=客房编号.类别 " +"where 离店时间>="+"'"+tStart.getText()+"' and 离店时间<="+"'
32、;"+tOver.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,来自地的地名v
33、archar(50) not null预定入住时间 datetimr 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)-创建管理人员表create table 管理人员(编号 varchar(10) primary key,密码 varchar(20) not null)l -建立客人信息的默认值约束create default 性别_default as '男'gosp_bindefault '性别_default','客人信息.性别'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年微生物标本运输要求试题及答案
- 电视设备智能生物样本库技术考核试卷
- 皮革服装企业竞争策略制定考核试卷
- 2025年金属非金属矿山支柱证考试题及答案
- 2024年项目管理考试考点试题及答案
- 企业融资方式的财务分析试题及答案
- 汽车配件连锁经营理念考核试卷
- 2024年行政管理师考试相关课程的试题及答案
- 2024年项目管理知识展示试题及答案
- 核安全事故分析与整改建议考核试卷
- 发热病人中医护理
- 捕鼠公司合同协议
- 工程审计面试题及答案
- 安置房收楼合同协议
- 2025-2030中国煤化工行业发展分析及投资风险与战略研究报告
- 病历书写规范2025版
- 2025-2030中国养老服务行业市场深度调研及前景趋势与投资研究报告
- 洗涤机械生产过程质量控制考核试卷
- 画龙点睛成语故事
- (一模)2025年广东省高三高考模拟测试 (一) 历史试卷(含官方答案及详解)
- 湖北省武汉市七一华源中学2024-2025学年九年级下学期第二次月考化学试题(含答案)
评论
0/150
提交评论