宾馆管理系统设计_第1页
宾馆管理系统设计_第2页
宾馆管理系统设计_第3页
宾馆管理系统设计_第4页
宾馆管理系统设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、宾馆管理系统设计目 录1. 引言52. 相关技术简介62.1 Microsoft Visual Studio 200562.2 SQL Server 200062.3 C#语言63. 系统需求分析74. 数据库的设计84.1 数据库概念结构设计84.2 数据库逻辑结构设计104.3 数据完整性设计134.4 存储过程和视图145. “宾馆管理系统”应用程序结构设计与功能实现155.1 功能模块设计155.2 客户界面设计166.结论247.致谢258.参考文献269.附录(核心代码)271. 引言近年来,随着改革开放步伐的加快和中西方文化的交流与发展,我国人民生活水平显著提高,旅游业日益繁荣发

2、展,伴随着消费的持续增长,宾馆行业已经成为现代社会中发展最快的行业之一。根据调查发现,只有大型的宾馆才有规范、合理的管理系统,大部分中小型宾馆都还是人工服务,因此,中小型宾馆要想在激烈的市场竞争中生存,就必须在经营管理、服务质量等方面提高管理意识,即建立一套合理、高效的管理系统。 应势而出的宾馆管理系统有着很好的应用性。一直以来人们都采用传统人工的方式管理账单,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了很多的困难,同时,也加大了管理者的工作量和工作难度。本系统很好的克服了这些缺点,并且有检索迅速、查找方便、可靠性高、存

3、储量大、保密性好、寿命长、成本低等优点。这些优点能够极大地提高宾馆管理的效率,该宾馆管理系统以Microsoft SQL Server 2000作为后台数据库,C# 语言为前台开发工具,运用自顶向下逐层分解的模块化结构设计思想、面向对象的设计方法,完成了宾馆管理系统的主要模块。现如今随着经济的不断发展,旅游出国等带来的宾馆市场营业量大大增加,如果设计一款专门为宾馆管理人员和宾馆员工查询本宾馆信息,以及各种查询、入住、核账、结算等的专业软件,将会大大减少宾馆内工作人员的 工作量并提高工作效率同时提升宾馆的营业额。因此,该系统的开发不仅解决了中小型宾馆管理复杂、不规范等问题,而且优化了管理流程,实

4、现了宾馆管理工作的无纸化办公。2. 相关技术简介2.1 Microsoft Visual Studio 2005Microsoft Visual Studio .NET和.NET框架为开发人员提供了一套完整的解决方案。Visual Studio .NET提供了一个能够基于.NET框架来创建应用程序的开发环境,该开发环境提供了一些工具,这些工具可以简化Web应用程序和XML WebService的创建、部署和升级。用.NET开发环境所创建的Web应用程序和XML Web Service具有安全性、可伸缩性以及高可用性的特点。2.2 SQL Server 2000SQL Server 2000 支

5、持关系数据库的结构化查询语言SQL,提供了一整套丰富的图形化管理工具和实用程序,使用这些工具和程序,可以设置和管理SQL Server 进行数据库管理和备份,并保证数据的安全和一致。SQL Server 数据库可伸缩性强,可用性强。2.3 C#语言 C#又读作 C Sharp,是由C/C+进化而来的新一代编程语言。C#是微软公司发布的一种面向对象的,运行于.NET framework 之上的高级程序设计语言。从表面上看来C#与java惊人的相似,它包括单一继承和界面,并且和Java拥有几乎相同的语法。但是C#与Java有着明显的不同,它与com是直接集成的,而且它是微软公司.NET windo

6、ws网络框架的主角。C#拥有的独特特点如下:1.中间代码;2.命名空间中的声明; 3.基本的数据类型 4.两个基本类;5.参数传递;6. 与com集成;3. 系统需求分析宾馆管理系统的基本需求归纳如下:(1)客房类型管理应该提供有关客房类型情况的规范,如标准间和双人间的各自设置。(2)客房信息管理用来管理各个客房的信息和状况,包括房间位置、价格、额定人数和实际人数等。(3)客房查询是在客户入住之前根据客户的要求提供给客户的客房的情况。(4)客户查询主要是根据客户的号码来显示客户的住宿记录,以便用户管理和计算。(5)客户入住就是登记客户入住信息。(6)客户结算是客户付清住宿费用并注销房间。(7)

7、系统帮助是用来提示工作人员怎么使用该宾馆管理系统的模块(8)登录设计要求工作人员正确输入ID 和密码且查询相对应之后才能登陆系统,同时设置不同的登录身份便于对系统的管理和保密工作。4. 数据库的设计4.1 数据库概念结构设计系统框架当中包含八个子项目,分别用来实现不同的功能。框架如下图所示: 根据要求和各模块的功能设计出宾馆管理系统的E-R图如下所示: 根据上图可知,在此系统当中一共存在四个实体,客房类型和客房两个实体之间的关系是“属于”,多个客房可以属于一个客房类型即客房类型和客房之间是1:N 的关系;客户和客房之间的关系是“选择”,一个客户可以订多个客房即客户和客房之间是1:N的关系;客户

8、和客户记录之间的关系是“入住”,一个客户入住宾馆后可能有多条入住记录即客户和客户记录之间是1:N 的关系。4.2 数据库逻辑结构设计字段名类型字节数空值说明roomtypenameVarchar20房间类型名称areaSmallint2面积bednumsmallint2额定床数peoplenumsmallint2额定人数priceMoney8价格televisionBit1是否有电视phone Bit1是否有电话airconditionBit1是否有空调toiletbit1是否有卫生间roomtype表的主键是roomtypename字段,用来标识房间类型名称。其内容不能为空。 字段名类型字节

9、数空值说明roomidChar4房间号码roomtypenameVarchar20类型名称roompositionVarchar20房间楼层peoplenumSmallint2额定人数bednumchar11额定床数factpeoplenumSmallint2实际人数remarkVarchar20备注客房表(Room)表的主键是房间号码(roomid)且是标识列,用来唯一标识一个房间。房间类型名称(Roomtypename)是外键,对应客房类型表(roomtype)表中的房间类型名称(roomtypename)。字段名类型字节数空值说明clientidchar16客户编号clientnamev

10、archar20姓名sexVarchar2性别nativeplaceVarchar20籍贯客户表(client)的主键是客户编号(Clientid)。此表中显示的就是当客户入住时要登记的内容字段名类型字节数空值说明clientidchar16客户编号clientnamevarchar20客户名称roomidchar4客房号码indatedatetime8入住日期checkdatedatetime8结算日期totamoneymoney8结算钱数客户记录表(Clientrecord)中的客户编号(clientid)、客户名称(roomid)都是外键。分别对应客户表中的clientid和客房表(ro

11、om)中的roomid。字段名类型字节数空值说明useridchar6用户编号usersortvarchar20用户分类passwordvarchar100用户密码此表当中userid是主键,当工作人员输入的password是正确的时候才能进入系统进行操作。4.3 数据完整性设计设计好表的结构后,需要根据实际应用和操作规则为表指定一系列的约束和规则,从而达到保证数据完整性原则的目的。(1)主键约束、非空值约束在五个表的设计中已经规定了每个表的主键列、非空列,这些规定都是在实际应用环境中所必须的。比如在roomtype表中定义了客房类型名称:roomtypename为主键,则在表roomtype

12、中roomtypename必须是唯一的。也就是说在这个宾馆管理系统当中不可能出现2个相同的客房类型名称,price不能为空是因为每一个类型的客房都有自己价格,这样方便后面的操作和查询。4.4 存储过程和视图(1)存储过程client_add,功能是当客户办理房间入住手续时,把相应的客房入住人数增加1。(2)存储过程client_delete,功能是当客户办理结算手续时,把相应的客房入住人数减1。(3)存储过程roomsearch,功能是进行模糊查询,根据输入的参数将数据库当中符合查询条件的客房全部查询出来。(4)视图view_clientrecord,功能是根据多张表形成一个视图,此视图包含三

13、张表共九个字段,供程序调用查询使用。5. “宾馆管理系统”应用程序结构设计与功能实现设计该宾馆管理系统的应用程序结构,需要从该管理系统的用户需求下手,根据系统功能和实际应用流程设计科学、合理、舒适的程序流程和操作流程。5.1 功能模块设计功能模块设计是根据系统功能的需求,合理地将各类相关的功能分解成相对独立的功能模块。划分功能模块有利于提高系统开发效率,便于设计代码的维护和更新,并且是系统更加结构化。根据系统功能的要求,把程序分为客房类型管理、客房管理、客房查询、客户查询、客户入住、客户结算、用户管理、系统帮助8个页面。(1)客房类型管理页面。客房类型管理应该提供有关客房类型情况的规范,比如现

14、数据库中存在的一等,二等,三等各种类型的客房其各自的设置比如是否有电视,是否有空调,是否有卫生间,是否有电视等。工作人员可以新建客房类型,删除客房类型,查找符合要求的客房,可以退出该页面。(2)客房管理页面。客房管理用来管理各个客房的信息和状况,包括房间类型,房间位置、价格、额定人数和实际人数等。工作人员可以通过该界面新建客房,删除客房记录,查找客房,退出该页面。(3)客房查询页面。客房查询是在客户入住之前根据客户的要求提供给客户的客房的情况。工作人员可以根据输入的查询条件查询相关的客房,可以查找到未注满的客房,可以查找到空房的记录,可以选择一个客房后进入入住界面,可以退出该页面。(4)客户查

15、询页面。主要是根据客户的号码来显示客户的住宿记录,以便用户管理和计算。工作人员可以通过输入客户编号查找客户的入住记录,工作人员可以查找全部的客户记录,可以查找处于“在住”状态的客户记录,可以选定某个客户记录后进行结算操作,可以退出该页面。(5)客户入住页面。客户入住就是登记客户入住信息。该页面要求能输入并保存该入住客户的编号,客户的姓名,客户的性别,客户的籍贯,客户的入住日期同时记录其它一些信息。(6)客户结算页面。客户结算是客户付清住宿费用并注销房间。对于此页面的要求是能实现打折后的结算金额。(7)系统帮助页面。系统帮助是用来提示工作人员怎么使用该宾馆管理系统的页面。(8)用户管理页面。此页

16、面当中要求如果是宾馆管理人员则具有修改所有人密码的权利;如果只是普通工作人员则只具有修改自己密码的权限。另外,除以上八个页面外,在登录系统时有登陆界面,登陆界面要求工作人员输入自己所属的分类,并且准确输入ID和密码后才能登陆系统。在这九个页面中,我主要负责登录页面,客户入住页面和客户结算页面,在下一节里面将对这三个页面做详细的介绍。5.2 用户界面设计(1)当用户登录时,会首先出现登录窗口如上图所示,工作人员应该首先选择用户身份填写工作人员的工号(用户号码)以及用户密码。点击“确定”按钮后查询密码与用户号码是否对应,如果对应则弹出欢迎消息框;如果发生错误会提示“输入密码有误,请重新输入”对话框

17、;如果点击“取消”按钮则清空界面上三个控件的内容等待重新输入;如果点击“退出系统”则退出该系统。(2)当需要查询某个客户是只需在客户号后面的方框中输入相应的客户号后,点击“查找”当单击“全部”当单击“在住”“结算” (3)在主界面中选择客户入住标签后,弹出客户入住登记对话框,在这一对话框中需要填入以下各项客户的相关信息。如房间号,根据客户选择的房间的标准来填入相应的房间号码;顾客ID号有员工填入,并且记住该ID;填入客户的姓名,性别和籍贯,在性别后面的文本框里有一个下拉菜单,可以选择男或女;在籍贯文本框后面也有一个下拉菜单,可以选择相应的籍贯,如果没有相应的籍贯,可以自行填入;对于入住时间,系

18、统会自动给出。如有备注信息,可在信息备注后面的文本框中填入相应的备注。当全部信息填完后,并且确认无误后,可以点击“保存”“已添加信息”的对话框,点击“确认”“客户添加成功”的对话框,此时,对于客户入住登记的信息已添加完成。 总结本毕业设计是一个新一代的宾馆管理系统,通过自学C#语言并且利用C#语言、SQL Server 2000数据库开发的。这个系统已经全部完成。但同时也存在一些不足的地方,比如整个系统是否可以添加更多功能,外观上是否可以再修饰修饰,整个系统的并发性如何,以及用户资料的保密性和安全性还没有考虑和研究。经过近几个月的设计、编码与测试,毕业设计基本完成。在此期间,教师的悉心指导、同

19、学的热心帮助,使我获益非浅。同时我学到了更多新知识,也加深巩固了以前所学知识,无论理论上还是实践操作上。同时还让我知道了团队合作的精神是非常的重要,学会了互相帮助和配合。该系统还有许多不尽如人意的地方。但是从这个系统的开发中学到了很多东西。不光技术上,还有如何跟项目组成员沟通交流上。实践出真知,这次毕业设计把我以前所学的理论知识得以充分地运用,并加以巩固。理论与实践相结合,动手能力得以很大的提高。开发一个良好的系统需要丰富的知识,由于水平有限,系统功能不够完善,需更进一步的改善。致谢此次毕业设计和论文撰写过程中,得到了老师、各位同学和朋友的关心、指导和帮助。入学以来各位老师的辛勤工作和教诲使我

20、能顺利地度过了这难忘的三年,使我在综合素质提高、专业理论知识学习和实践工作能力等各方面受益匪浅。在此,衷心地感谢我的指导老师给予了很大的帮助,他的悉心指导,认真的工作态度,丰富的知识、全面的指导,让我有了很大的进步,对我启发颇多,收获颇丰。边老师平日里工作繁多,但在我做毕业设计的每个阶段,项目框架设计的确定和修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。除了边老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。 其次要感谢和我一起作毕业设计的高欣欣和王宝忠同学,他们在这次毕业设计中勤奋工作,克服了许多困难来完成此次毕业设

21、计。如果没有他们的努力工作,此次设计的完成将变得非常困难。感谢学校对我的培养,感谢三年来我的所有老师,没有您的耐心指导与教育,就没有我今天的成绩。感谢三年以来众多同学和朋友的帮助,大家一起在紧张的学习之余度过了许多愉快的时光。感谢父母多年以来的关爱!养育之恩,无以回报。8.参考文献1. 微软公司,数据库程序设计-SQL Server2000 数据库程序设计,高等教育出版社,2006年11月.2. 张奇,Visual C# 2005数据库项目案例导航,清华大学出版社,2007年10月3. (美)内格尔,C#高级编程,清华大学出版社,2008年4月.4. (美)Karli Watson Chris

22、tian Nagel,c#经典入门(第三版),清华大学出版社,2005年3月.5. (英)夏普,visual c# 从入门到精通,清华大学出版社,2006年6月.6. (美)麦斯科,c#设计模式开发大师系列,中国电力出版社,2005年7月7. 邹建,中文版SQL Server2000管理与开发应用实例,人民邮电出版社,2005年8 月8. 陈明,数据库系统及应用 SQL Server 2000,清华大学出版社,2007年2月9. 莱恩工作室,Microsoft SQL Server2000技术内幕,北京大学出版社,2002年12月10. 龚波,SQL Server 2000教程,北京希望电子出

23、版社,2002年7月9.附录(核心代码)用户登录:using System;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;namespace WindowsApplication1 public partial class login : Form private string str; private SqlCommand sqlcommand1; private SqlConnection sqlconnnection1; /private mainform main

24、form; private DataSet ds; private SqlDataAdapter mydata; public string name; private bool IsLoginOK = false; public login() InitializeComponent(); sqlcommand1 = new SqlCommand(); sqlcommand1.Connection = this.sqlconnnection1; sqlcommand1.CommandType = CommandType.Text; /mainform = new mainform(name)

25、; private void btncancle_Click(object sender, EventArgs e) private void btnok_Click(object sender, EventArgs e) str = string.Format("select password from usermanage where userid='0'", txtuserid.Text); sqlcommand1.CommandText = this.str; sqlcommand1.ExecuteNonQuery(); ds = new DataS

26、et(); try mydata.SelectCommand = sqlcommand1; catch MessageBox.Show("从数据库获取信息失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; IsLoginOK = true; MessageBox.Show("欢迎光临宾馆管理系统", "Welcome!"); this.DialogResult = DialogResult.OK; else MessageBox.Show

27、("输入密码有错,请出新输入!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error); private void button1_Click(object sender, EventArgs e) Application.Exit(); private void login_Load(object sender, EventArgs e) comboBox1.SelectedIndex = 1; private void login_FormClosing(object sender, FormClo

28、singEventArgs e) /if (!IsLoginOK) if (!IsLoginOK && MessageBox.Show("您确定要退出系统吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.No) e.Cancel = true; 客户入住:using System;using System.ComponentModel;using System.Data;using System.Drawing;using Syst

29、em.Text;namespace WindowsApplication1 public partial class clientbookin : Form private string roomid; private string selectstr; private SqlCommand sqlcommand1; private SqlConnection sqlconnection1; public clientbookin() this.sqlcommand1 = new SqlCommand(); InitializeComponent(); public clientbookin(

30、string roomid) this.roomid = roomid; this.sqlcommand1 = new SqlCommand(); InitializeComponent(); public bool clientbookin_add(string clientid, string clientname, string roomid, DateTime indate, DateTime checkdate, double totamoney) this.selectstr = string.Format("insert into clientrecord values

31、('0','1','2',3,4,5)", clientid, clientname, roomid, indate, checkdate, totamoney); try this.roompeoplenum_add(roomid);/调用roompeoplenum_add函数把入住人数加1 return true; catch (System.Exception e) MessageBox.Show(e.ToString(); return false; finally private bool client_search(stri

32、ng clientid) this.selectstr = string.Format("select * from client where clientid='0'", clientid); return true; else return false; public bool client_add(string clientid, string clientname, string sex, string nativeplace) MessageBox.Show("已有该客户信息", "提示", MessageB

33、oxButtons.OK, MessageBoxIcon.Error); return false; try MessageBox.Show("已添加信息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; catch (System.Exception e) MessageBox.Show(e.ToString(); return false; finally private void roompeoplenum_add(string roomid) try c

34、atch (Exception e) MessageBox.Show(e.ToString(); finally private void btnsave_Click(object sender, EventArgs e) MessageBox.Show("请正确填写客户信息,否则不能添加!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information); if (this.client_add(clientid, clientname, sex, clientnativeplace ) = true)

35、 MessageBox.Show("客户添加成功!"); else MessageBox.Show("客户添加失败!"); return; /if (this.client_add(clientid, clientname, sex, clientnativeplace) = true) / / this.Close(); / private void btncancle_Click(object sender, EventArgs e) this.Close(); private void btnchongzhi_Click(object sender

36、, EventArgs e) 客户查询 clientcheck.cs:using System;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;namespace WindowsApplication1 public partial class clientcheck : Form private double facttotalmoney, totamoney; private clientsearch cs; public double FactTotalMoney g

37、et return this.facttotalmoney; set this.facttotalmoney = value; public clientcheck(double totamoney, clientsearch clients) InitializeComponent(); cs = clients; this.facttotalmoney = this.totamoney = totamoney; private void clientcheck_Load(object sender, EventArgs e) this.facttotalmoney = this.totam

38、oney; private void cbdazhe_SelectedIndexChanged(object sender, EventArgs e) cs.p = facttotalmoney; private void btnexit_Click(object sender, EventArgs e) this.facttotalmoney = 0; this.DialogResult = DialogResult.Cancel; private void btnok_Click(object sender, EventArgs e) MessageBox.Show("应收款&q

39、uot; + this.facttotalmoney + "元", "收银台结账", MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = DialogResult.OK; clientsearch.cs:using System;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;namespace WindowsApplication1 publi

40、c partial class clientsearch : Form private string selectstr; private string str; private SqlCommand sqlcommand1; private SqlConnection sqlcon; private clientcheck clientcheck; private SqlDataReader sqldatareader1; public double p; public clientsearch() InitializeComponent(); sqlcommand1 = new SqlCo

41、mmand(); sqlcommand1.Connection = this.sqlcon; sqlcommand1.CommandType = CommandType.Text; private void btnfind_Click(object sender, EventArgs e) if (txtkhhao.Text = "") MessageBox.Show("请先输入客户号", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); else updatelistv

42、iew(this.selectstr); private void updatelistview(string selectstr) try ListViewItem li = new ListViewItem(); li.Text = sqldatareader1"客户编号".ToString(); MessageBox.Show("没有该客户记录", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (System.Exception e) MessageBox.Sh

43、ow(e.ToString(); finally sqldatareader1.Close(); sqlcon.Close(); private void btncheck_Click(object sender, EventArgs e) float checkmoney; if (checkmoney != 0) MessageBox.Show("此客户已经结算", "操作失误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; int days = timespan.Days;/把日期按天数

44、算 double totamoney = days * price; clientcheck = new clientcheck(totamoney, this);/创建类clientcheck的实例来返回实收金额 if (clientcheck.ShowDialog() = DialogResult.OK) double facttotalmoney = clientcheck.FactTotalMoney; DateTime checkdate = DateTime.Now; listView1.SelectedItems0.SubItems6.Text = checkdate.ToString

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论