1计算机软件学专业课程设计报告书课程名称SQLserver2000课程设计题目客房管理系统21概述1.1背景客房管理是旅店管理事务中的一项重要工作,在管理过程中涉及到大量的数据处理,传统的人工管理已经无法完成胜任。相关数据的处理带来了更大的工作量。本系统采用目前比较流行的JDBC-ODBC数据访问技术,成功地将面向对象的程序设计思想应用到数据库应用程序设计中。1.2开发与运行环境本客房管理系统的开发与运行环境如下:开发环境:Eclipse3.1开发工具:JAVA1.5数据库管理系统:SQLServer2000运行环境:Windows2000/XP/2003/Vista使用说明:用户自己附加数据库,并且在控制面板下的数据工具中的数据源(ODBC),在用户DSN下添加名为“客房管理”,驱动程序为SQL-Server。并且安装了JAVA虚拟机,该程序即可使用。2需求分析客房资管理系统涉及到:客人信息、客房信息、入住信息、历史信息等多种数据信息。客房管理系统的用户包括系统管理员。系统管理员负责整理工作,如各种基本信息的添加、删除和简单的结账计算等操作。本系统的主要功能包括:客人信息管理:客人信息数据的添加、删除、结账计算。数据查询:查看客人信息数据,查看客房信息数据。数据统计:统计一段时间内的客房情况和月收入等基本统计。33系统设计3.1系统模块设计根据系统功能分析和一些旅店客房管理的特点,经过模块化的分析得到如下图所示的系统功能模块结构图。系统功能模块结构图客房管理登记功能统计功能查询功能已入住客房查寻空房查询按名字查询客人信息按客人编号查询客人信息添加客人信息删除客人信息统计入住情况统计入住率统计收入安全管理模块用户名和密码登陆注销43.2数据库设计3.2.1数据流图顶层数据流图第0层数据流图53.2.2数据字典根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:(1)数据项说明数据项名称含义说明类型长度记录编号惟一标识一条记录bigint8客房编号惟一标识一间客房varchar10离店时间标识离店时间datetime8金额标识所收金额money8类别标识客房类别smallint2名称标识客房类别名称varchar20价格标识客房价格money8(2)数据流说明数据流名称含义来源去向组成登陆管理员进入系统操作客房管理系统管理员端编号+密码查询已住房查询住房资料客人信息表统计界面客人信息表+客房编号表查询空房查询空住房客房编号表统计界面客房编号表查询房号查询房号信息客人信息表统计界面客人信息表计算计算金额客房管理系统管理员端客房管理系统登记,删除录入住房信息管理员端客房管理系统系统数据库统计统计住房信息系统数据库统计界面系统数据库6(3)数据存储说明数据存储名称含义说明组成结构历史记录表存放客房历史的有关信息客房编号+金额客人信息表存放客人相关的信息个人信息+住店时间+金额客房类别表存放客房对应的价格类别+价格客房编号表存放客房对应的编号类别+编号管理人员表存放管理员验证信息编号+密码(4)处理过程说明处理过程名称:审核登陆输入:编号+密码输出:确认加工逻辑:根据编号和密码管理员,进入主窗体。(其他处理过程略)73.2.3概念结构设计依据客房管理系统的实际情况,考虑了多方面的因素以后,确定系统的E-R图,如图所示:客房管理系统E-R图3.2.4逻辑结构设计按照E-R图转换规则,可以得到如下的关系模式:客人信息(客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金,需负金额)客人类别(类别,名称,价格)客房编号(编号,类别)历史记录(记录编号,客房编号,离店时间,金额)管理人员(编号,密码)83.2.5物理结构设计根据E-R图及数据字典,设计出公司工资管理系统数据库中的各个数据表,包括:客人信息、客房类别、客房编号、历史记录、管理人员共5个数据表。本系统数据库命名为“客房管理系统”,数据库中的各个数据表名称和结构分别如下所示,为便于说明,各个数据表的结构使用该表在SQLServer企业管理器中的设计视图表示。关系图:客人信息:客人信息结构图9客房类别:客房类别结构图客房编号:客房编号结构图历史记录:历史记录结构图管理人员:管理人员结构图104详细设计4.1界面设计主窗口(Mainwindow)本窗体为主窗体,用到java的swing中的菜单栏组件,主要代码如下:panel1=newJPanel();this.setContentPane(panel1);lbPicture=newJLabel(newImageIcon(管理系统.Mainwindow.class.getResource(背景.jpg)));panel1.add(lbPicture);//主菜单jmbMain=newJMenuBar();jmSystem=newJMenu(系统);jmSearch=newJMenu(查询);jmAdd=newJMenu(登记);jmCount=newJMenu(统计);jmHelp=newJMenu(帮助);setJMenuBar(jmbMain);11//添加主菜单jmbMain.add(jmSystem);jmbMain.add(jmSearch);jmbMain.add(jmAdd);jmbMain.add(jmCount);jmbMain.add(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);jmSystem.add(jmiExit);//查询子菜单jmiSearchFullRoom=newJMenuItem(查已住房);jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmSearch.add(jmiSearchFullRoom);jmiSearchVoidRoom=newJMenuItem(查空房);jmiSearchVoidRoom.addActionListener(this);jmiSearchVoidRoom.setEnabled(false);jmSearch.add(jmiSearchVoidRoom);jmiSearchName=newJMenuItem(按名字或房号查);jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiSearchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=newJMenuItem(结账);jmiCalculate.addActionListener(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);12jmAdd.add(jmiDelete);//统计子菜单jmiCircumstances=newJMenuItem(入住情况);jmiCircumstances.addActionListener(this);jmiCircumstances.setEnabled(false);jmCount.add(jmiCircumstances);jmiRate=newJMenuItem(入住率);jmiRate.addActionListener(this);jmiRate.setEnabled(false);jmCount.add(jmiRate);jmiIncome=newJMenuItem(收入);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接口来实现主要代码如下:publicvoidactionPerformed(ActionEventae){//退出键if(ae.getSource()==jmiExit){}//登陆键elseif(ae.getActionCommand()==登陆){}//注销键elseif(ae.getSource()==jmiCancel){}//查已住房间键elseif(ae.getSource()==jmiSearchFullRoom){}//查空房elseif(ae.getSource()==jmiSearchVoidRoom){}//按名字或房号查13elseif(ae.getSource()==jmiSearchName){}//结账elseif(ae.getSource()==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){}}14登陆界面(Login)本窗体连接到数据库中的管理员表通过定义ResultSet来调用表中的数据,相关代码:ResultSetrs;rs=stat.executeQuery(select*from管理人员where编号=+'+tUser.getText()+'and密码=+'+password.getText()+');判断成功后实现主窗体中子菜单的setEnable()方法。登记客人信息(Add)15本窗体主要用到T-SQL语句中的insertinto…..VALUES语句,相关代码:a1='+tName.getText().trim()+';a2='+tSex.getText().trim()+';a3='+tAge.getText().trim()+';a4='+tIdentication.getText().trim()+';a5='+tAddress.getText().trim()+';a6='+tWorkPlace.getText().trim()+';a7='+tFrom.getText().trim()+';a8='+tRoomNo.getText().trim()+';a