版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院计算机工程学院课程设计报告设计名称:数据库原理及应用课程设计姓名:薛思雨学号:511020825专业班级:D软件101系院):东港学院设计时间:2012.12.23——2013.1.4设计地点:东港学院D2-308指导教师评语:签名:年月日<<数据库原理及应用>>课程设计报告第26页,共28页课程设计题目:宾馆客房管理系统1概述1.1课题背景随着经济的发展,工作人士出差,节假日人们外出旅游,免不了要住宾馆的,因此,各种星级的宾馆都应运而生。直至现在,宾馆行业竞争越来越剧烈,宾馆之间客源的争夺也越来越激烈,所以,宾馆使用有效的客房管理手段是尤为重要的,这样能够为酒店管理人员提供一个快速安全可靠的管理平台。客房业务涉及的各个工作环节已不再仅仅是传统的住宿,结算业务,而是更广更全面的服务性行业的代表。宾馆作为一个服务性行业,从客人预定房间开始,到入住登记直至最后退房结账,整个过程应该是能体现以客人为中心,提高快捷方便的服务,给客人感受一种顾客之上的享受,提高酒店的管理水平,简化各种复杂操作,在最合理最短时间内完成客房业务规范操作,这才能令客人方便快捷,增加客人回头率。本系统要实现一个简单快捷的宾馆客房管理,主要是对客房的信息,客人的信息,客人订房入住信息,以及收银结账的管理。为管理者提供迅速,高效的服务,减免手工处理的繁琐与误差,及时准确地反映的工作经营情况。1.2开发平台系统:Windows7开发工具:MicrosoftVisualStudio2008数据库:MicrosoftSQLServer20052需求分析2.1功能模块根据课题的具体要求,可以将宾馆客房管理系统大体结构图示为如下(如图1所示):图图SEQ图\*ARABIC1功能模块整个系统分4个模块:通过不同角色登入系统:经理有以下模块:客房类型管理:录入房间类型,修改房间类型,删除房间类型。客房信息管理:录入房间信息,修改房间信息,查询房间信息,删除房间信息。员工管理:增加员工,查询员工,修改员工信息,删除员工。前台有以下模块:客房经营管理:客房使用情况,客户入住,退房结算。客户信息查询:新增会员,客户入住记录。2.2数据流图顶层数据流图:经理经理宾馆客房管理系统前台登录返回信息登录返回信息订房退房登记信息结账,归还房卡图图SEQ图\*ARABIC2顶层数据流图核心数据流图:图图SEQ图\*ARABIC3核心数据流图经理管理数据流图:图图SEQ图\*ARABIC4经理管理数据流图数据字典根据系统功能模块结构图及典型旅店客房管理系统的需求,总结出来如下的数据字典:数据项说明UseInfo(用户信息表):记录登入系统的用户的身份,姓名和密码。如下表所示。表SEQ表\*ARABIC1UserInfo表数据项名称含义说明类型长度主键允许Nullrole登入系统的身份varchar10name用户名char10pwd密码varchar20RoomType(客房类型表):记录客房类型。如下表所示。表SEQ表\*ARABIC2RoomType表数据项名称含义说明类型长度主键允许NullRoomTypeName客房类型名称varchar20√Area面积smallint2BedNum床位smallint2Price价格money8Phone电话bit1Television电视bit1Net宽带bit1AirCondition空调bit1WashRoom淋浴间bit1Toilet卫生间bit1Room(房间信息表):记录房间信息。如下表所示。表SEQ表\*ARABIC3Room表数据项名称含义说明类型长度主键允许NullRoomID房间编号char4√RoomTypeName客房类型名称varchar20√RoomPosition房间位置varchar20√PeopleNum额定人数smallint2√BedNum床位smallint2√FactPeopleNum实际入住人数smallint2√Remark备注varchar50√Client(客人信息表):记录客人的信息。如下表所示。表SEQ表\*ARABIC4Client表数据项名称含义说明类型长度主键允许NullClientID客人ID号码char9√ClientName客人姓名varchar10sex客人性别char2tel客人联系方式char11SID客人身份证号char18ClientRecord(客人入住记录表):记录客人的入住记录。如下表所示。表SEQ表\*ARABIC5ClientRecord表数据项名称含义说明类型长度主键允许NullClientID客人ID号码char9√ClientName客人姓名varchar10RoomID客房编号char4InDate客人入住时间datetime8CheckDate客人退房时间datetime8√TotalMoney客人结算金额money8√Remark备注varchar50√Employee(员工信息表):记录员工信息。如下表所示。表SEQ表\*ARABIC6Employee表数据项名称含义说明类型长度主键允许NullEmployeeName员工姓名varchar10√sex员工性别char2tel员工联系方式char11addr员工住址varchar50Post员工职位varchar20SID员工身份证号char18数据流说明数据流说明如下表所示。表SEQ表\*ARABIC7数据流说明数据流名称含义来源去向组成登陆用户进入系统操作客房管理系统经理端/前台端用户名+密码查询客人查询客人资料客人信息表统计界面客人信息表查询房号查询房间信息客房信息表统计界面客房信息表查询空房查询住房状态客房信息表统计界面客房信息表查询入住记录查询入住记录客人信息表统计界面客人信息表+客房信息表计算计算金额客房管理系统前台端客房管理系统变更客房类型修改/删除客房类型经理端客房管理系统系统数据库变更房间信息修改/删除房间信息经理端客房管理系统系统数据库查询员工查询员工信息经理端统计界面员工信息表变更员工修改/删除员工信息经理端客房管理系统系统数据库统计统计住房信息系统数据库统计界面系统数据库数据存储说明数据存储说明如下表所示。表SEQ表\*ARABIC8数据存储说明数据存储名称含义说明组成结构客房类型表存放客房类型信息类型名称+额定人数客房信息表存放客房当前状态客房编号+实际人数客人信息表存放客人信息客人信息入住记录表存放客房历史的有关信息客人ID+房间ID+入住时间+结算时间+金额管理人员表存放管理员验证信息用户名+密码员工信息表存放员工信息员工信息3系统设计3.1概要设计—E-R图依据客房管理系统的实际情况,考虑了多方面的因素以后,确定系统的E-R图,如图所示:用户实体属性图(如下图所示)图SEQ图\*ARABIC5用户实体属性图客户实体属性图(如下图所示)图SEQ图\*ARABIC6客户实体属性图客房类型实体属性图(如下图所示)图SEQ图\*ARABIC7客房类型实体属性图房间实体属性图(如下图所示)图SEQ图\*ARABIC8房间实体属性图客人入住记录实体属性图(如下图所示)图SEQ图\*ARABIC9客人入住记录实体属性图员工实体属性图(如下图所示)图SEQ图\*ARABIC10员工实体属性图整体E-R图(如下图所示)图SEQ图\*ARABIC11整体E-R图3.2逻辑设计—E-R图实体转换表/联系转换表用户(身份,姓名,密码)客房类型(类型名称,面积,床位,价格,电话,电视,宽带,空调,卫生间,淋浴间)房间信息(客房编号,客房类型,位置,额定人数,床位,实际人数,备注)客人信息(客人ID,姓名,性别,联系方式,身份证号)入住记录(客人ID,客人姓名,房间编号,入住时间,退房时间,金额,备注)员工信息(员工姓名,性别,联系方式,住址,职位,身份证号)3.3将关系模型转换成SQL中的表(1)用户信息表图SEQ图\*ARABIC12用户信息表(2)客房类型表图SEQ图\*ARABIC13客房类型表(3)房间信息表图SEQ图\*ARABIC14房间信息表(4)客人信息表图SEQ图\*ARABIC15客人信息表(5)入住记录表图SEQ图\*ARABIC16入住记录表(6)员工信息表图SEQ图\*ARABIC17员工信息表4系统实现关键代码添加/修改功能:privatevoidbutton5_Click(objectsender,EventArgse){SqlConnectionmyconn=newSqlConnection(Connection.ConnString);if(textBox1.Text!=""&&textBox2.Text!=""&&textBox3.Text!=""&&textBox4.Text!=""){try{Regexregex1=newRegex("^\\d{1,4}$",RegexOptions.None);if((!regex1.IsMatch(textBox2.Text))||(!regex1.IsMatch(textBox3.Text))||(!regex1.IsMatch(textBox3.Text))){MessageBox.Show("输入参数的格式有误!","提示");panel1.Enabled=false;return;}myconn.Open();stringroomtypename=textBox1.Text;intarea=Int32.Parse(textBox2.Text);intbednum=Int32.Parse(textBox3.Text);floatprice=Convert.ToSingle(textBox4.Text);intno1=Convert.ToInt32(checkBox1.Checked);intno2=Convert.ToInt32(checkBox2.Checked);intno3=Convert.ToInt32(checkBox3.Checked);intno4=Convert.ToInt32(checkBox4.Checked);intno5=Convert.ToInt32(checkBox5.Checked);intno6=Convert.ToInt32(checkBox6.Checked);if(create==true){stringmysql0="select*fromRoomTypewhereRoomTypeName='"+roomtypename+"'";SqlCommandmycmd0=newSqlCommand(mysql0,myconn);SqlDataReadermyreader=mycmd0.ExecuteReader();if(myreader.Read()){MessageBox.Show("房间类型已经存在!","提示");panel1.Enabled=false;myconn.Close();return;}myreader.Close();stringmysql="insertintoRoomTypevalues('"+roomtypename+"',"+area+","+bednum+","+price+","+no1+","+no2+","+no3+","+no4+","+no5+","+no6+")";SqlCommandmycmd=newSqlCommand(mysql,myconn);mycmd.ExecuteNonQuery();MessageBox.Show("添加成功!","提示");}else{stringmysql="updateRoomTypesetRoomTypeName='"+roomtypename+"',Area="+area+",BedNum="+bednum+",Price="+price+",Phone="+no1+",Television="+no2+",Net="+no3+",AirCondition="+no4+",WashRoom="+no5+",Toilet="+no6+"whereRoomTypeName='"+selroomtype+"'";SqlCommandmycmd=newSqlCommand(mysql,myconn);mycmd.ExecuteNonQuery();MessageBox.Show("修改成功!","提示");}UpdateListView();}catch(Exceptionmyex){MessageBox.Show(myex.ToString());}finally{myconn.Close();}}else{MessageBox.Show("请将信息填写完整!","提示");}panel1.Enabled=false;}删除功能:privatevoidbutton3_Click(objectsender,EventArgse){for(inti=0;i<listView1.Items.Count;i++){if(listView1.Items[i].Selected==true){SqlConnectionmyconn=newSqlConnection(Connection.ConnString);try{myconn.Open();stringmysql="deletefromRoomTypewhereRoomTypeName='"+listView1.Items[i].SubItems[0].Text+"'";SqlCommandmycmd=newSqlCommand(mysql,myconn);mycmd.ExecuteNonQuery();}catch(Exceptionmyex){MessageBox.Show(myex.ToString());}finally{myconn.Close();}}}MessageBox.Show("删除成功!","提示");UpdateListView();}查询功能(精确查询和条件查询)publicpartialclassRoomSearch:Form{publicRoomSearch(){InitializeComponent();}privatevoidUpdateListView(stringmysql){boolempty=true;listView1.Items.Clear();SqlConnectionmyconn=newSqlConnection(Connection.ConnString);myconn.Open();SqlCommandmycmd=newSqlCommand(mysql,myconn);SqlDataReadermyreader=mycmd.ExecuteReader(CommandBehavior.CloseConnection);try{while(myreader.Read()){empty=false;ListViewItemli=newListViewItem();li.SubItems.Clear();li.SubItems[0].Text=myreader["RoomID"].ToString();li.SubItems.Add(myreader["RoomTypeName"].ToString());li.SubItems.Add(myreader["RoomPosition"].ToString());li.SubItems.Add(myreader["PeopleNum"].ToString());li.SubItems.Add(myreader["FactPeopleNum"].ToString());li.SubItems.Add(myreader["Remark"].ToString());listView1.Items.Add(li);}if(empty){MessageBox.Show("没有找到符合条件的房间!","提示");return;}}catch(Exceptionmyex){MessageBox.Show(myex.ToString());}finally{myreader.Close();}}privatevoidbutton6_Click(objectsender,EventArgse){this.Close();}privatevoidRoomSearch_FormClosed(objectsender,FormClosedEventArgse){listView1.Items.Clear();Forminitial=newInitialForm();initial.MdiParent=this.MdiParent;initial.WindowState=FormWindowState.Maximized;initial.Show();}privatevoidRoomSearch_Load(objectsender,EventArgse){SqlConnectionmyconn=newSqlConnection(Connection.ConnString);try{myconn.Open();stringmysql="selectRoomTypeNamefromRoomType";SqlCommandmycmd=newSqlCommand(mysql,myconn);SqlDataReadermyreader=mycmd.ExecuteReader();while(myreader.Read()){comboBox1.Items.Add(myreader["RoomTypeName"].ToString());}}catch(Exceptionmyex){MessageBox.Show(myex.ToString());}finally{myconn.Close();}}privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text==""&&comboBox1.Text==""&&comboBox2.Text==""&&comboBox3.Text==""&&comboBox4.Text==""&&textBox2.Text==""){MessageBox.Show("请至少添写一项内容!","提示");return;}boolfirst=false;stringmysql="select*fromRoomwhere";if(textBox1.Text!=""){mysql+="RoomID='"+textBox1.Text+"'";first=true;}else{if(comboBox1.Text!=""){if(first==false){mysql+="RoomTypeName='"+comboBox1.Text+"'";}else{mysql+="andRoomTypeName='"+comboBox1.Text+"'";}first=true;}if(comboBox2.Text!=""){if(first==false){mysql+="RoomPosition='"+comboBox2.Text+"'";}else{mysql+="andRoomPosition='"+comboBox2.Text+"'";}first=true;}if(comboBox3.Text!=""){if(first==false){mysql+="PeopleNum="+comboBox3.Text;}else{mysql+="andPeopleNum="+comboBox3.Text;}first=true;}if(comboBox4.Text!=""){if(first==false){mysql+="FactPeopleNum='"+comboBox4.Text+"'";}else{mysql+="andFactPeopleNum='"+comboBox4.Text+"'";}first=true;}if(textBox2.Text!=""){if(first==false){mysql+="Remark='"+textBox2.Text+"'";}else{mysql+="andRemark='"+textBox2.Text+"'";}first=true;}}UpdateListView(mysql);}privatevoidbutton2_Click(objectsender,EventArgse){stringmysql="select*fromRoomwhereFactPeopleNum=0";UpdateListView(mysql);}privatevoidbutton3_Click(objectsender,EventArgse){stringmysql="select*fromRoomwherePeopleNum>FactPeopleNum";UpdateListView(mysql);}privatevoidbutton4_Click(objectsender,EventArgse){textBox1.Clear();textBox2.Clear();comboBox1.Text="";comboBox2.Text="";comboBox3.Text="";comboBox4.Text="";listView1.Items.Clear();}privatevoidbutton5_Click(objectsender,EventArgse){stringroomid=null;boolisselected=false;if(listView1.Items.Count==0){MessageBox.Show("没有记录存在!","没有记录",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}for(inti=0;i<listView1.Items.Count;i++){if(listView1.Items[i].Selected==true){isselected=true;if(listView1.Items[i].SubItems[3].Text==listView1.Items[i].SubItems[4].Text){MessageBox.Show("房间已满","无法入住");return;}roomid=listView1.Items[i].SubItems[0].Text;break;}}if(isselected==false){MessageBox.Show("请选择一项","未选择");return;}ClientBookInnewbook=newClientBookIn(roomid);newbook.ShowDialog();}}系统测试及用户手册5.1数据库连接步骤(1)首先,在SQLServer2005中建好数据库。(2)在VS2008中,【服务资源管理器】-【数据连接】-【添加连接】,如下图所示。图SEQ图\*ARABIC18添加连接(3)选择“MicrosoftSQLServer数据库文件”,点击【确定】,如下图所示。图SEQ图\*ARABIC19数据源(4)点击【浏览】,选择建好的数据库文件,如下图所示。图SEQ图\*ARABIC20选择数据库文件(5)点击,弹出消息框“测试连接成功”,如下图所示。图SEQ图\*ARABIC21测试连接成功(6)点击,查看数据库文件的属性,如下图所示。图SEQ图\*ARABIC22高级属性(7)在此项目中【添加新项】,选择“C#代码文件”,命名为“Connection.cs”,添加上图圈出的语句,代码如下。可以被整个程序调用,方便使用。classConnection{publicstaticstringConnString{get{return"DataSource=.\\SQLEXPRESS;AttachDbFilename=E:\\sql\\data\\HotelManage1.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True";}}}5.2主要功能模块和主界面的相关截图(1)登陆界面,如下图所示。图SEQ图\*ARABIC23登陆界面(2)选择身份,输入用户名和对应的密码,登录系统。前台身份的主界面,如下图所示。图SEQ图\*ARABIC24前台身份登入的主界面(3)选择“客房查询”或者“客户入住”,如下图所示。图SEQ图\*ARABIC25客房查询/客户入住(4)输入查询条件,至少填写一个查询条件,如下图所示。图SEQ图\*ARABIC26条件查询房间信息(5)点击【空房】/【未满】,如下图所示。图SEQ图\*ARABIC27查询空房(6)选中某个房间,点击【入住】,弹出“客户入住”消息框,填入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年4月西南医科大学附属中医医院招聘23人备考题库(四川)带答案详解(夺分金卷)
- 2026河南郑州巩义市产业投资发展有限公司招聘副总经理1人备考题库带答案详解(综合题)
- 2026云南昆明华航技工学校蒙自校区招聘12人备考题库完整参考答案详解
- 2026四川大学华西医院刘吉峰主任医师课题组专职博士后招聘备考题库附参考答案详解(培优b卷)
- 2026南通师范高等专科学校长期招聘高层次人才15人备考题库附参考答案详解(基础题)
- 2026湖北恩施州宣恩县园投人力资源服务有限公司招聘外包服务人员10人备考题库带答案详解(精练)
- 2026重庆市大足区人民政府龙岗街道办事处公益性岗位招聘1人备考题库及参考答案详解(达标题)
- 2026湖北工业大学院士助理招聘2人备考题库附答案详解(夺分金卷)
- 2026年3月临泉皖能环保电力有限公司社会招聘1人备考题库(第二次)带答案详解(突破训练)
- 内蒙古聚英人力资源服务有限责任公司定向招聘外派综合行政辅助人员(劳务外包)1人备考题库及答案详解(基础+提升)
- 2026河南豫能控股股份有限公司及所管企业招聘31人备考题库及参考答案详解(精练)
- 内镜黏膜下剥离术(ESD)诊疗与护理规范
- 2026四川宜宾传媒集团有限公司及下属子公司第一批员工招聘13人笔试备考题库及答案解析
- 2026北京事业编考试题库
- 2025年陕西国防工业职业技术学院单招职业技能考试试题及答案解析
- GB 15322.1-2026可燃气体探测器第1部分:工业及商业用途点型可燃气体探测器
- 2025年扬州市职业大学单招职业技能考试题库附答案解析
- 2026年光储充一体化充电站项目可行性研究报告
- 新版部编人教版七年级下册道德与法治全册教案(完整版)教学设计含教学反思
- 中药饮片GSP培训课件
- 2025年省属国企公开招聘备考题库参考答案详解
评论
0/150
提交评论