1、河南城建学院 C#课程设计报告书 专业:信息管理与信息系统 课程设计名称:《可视化编程技术课程设计》 题目:宾馆管理系统 班级:0634081班 设计者:063408139_苏朝锴 同组人员:063408138_任建超 063408105_孔焕颖 063408106_李文艳 指导老师:张延红 赵军民 郭猛 完成时间:2010年1月6日 前言 2 一、需求分析: 3 (一)系统主要功能: 3 (二)关系模式 3 (三)功能模块 4 (四)数据库需求分析 4 二、概要设计 5 (一)数据库概念结构设计 5 1、 用户管理E-R图 6
2、 2.、顾客信息实体E-R图: 6 3、房间信息实体E-R图: 6 4、顾客入住信息实体E-R图: 7 5、房间类型实体E-R图: 7 6.、整体结构E-R图: 8 (二)数据表设计 9 三、详细设计 11 (一)系统详细设计目标规划 11 (二)系统详细设计任务 11 (三)系统物理配置方案设计 11 (四 )系统输出设计 12 (五)系统输入设计 12 (六)界面设计 12 1、用户登录界面设计 12 2、超级用户登录界面 13 3、用户管理界面设计 13 4、用户添加界面设计 14 5、用户修改界面 14 6、主界面 15 7、房间类型管理界面 1
3、5 8、客房查询界面 16 9、客房信息管理界面 16 10、客户记录查询界面 17 11、客户结算界面 17 12、客户入住界面 17 四、代码设计 18 1、用户表示层(room窗体) 18 2、业务逻辑层 20 3、model层 21 4、数据访问层 23 5、公用类层 24 (1)data.cs 24 (2)d_Bind.cs 28 五、参考文献 29 六、心得 29 前言 随着计算机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。各类行业在日常经营管理各个方面也在悄悄地走向规范化和网络化。宾馆管理的信息化程度体现在将计算机及网络与信息技术应用
4、于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使宾馆管理更先进、更高效、更科学,信息交流更迅速。 宾馆管理系统是典型的信息管理系统的一部份,而且是必不可少的一部份。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起简洁且资料一致性和完整性强、资料安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 宾馆管理系统是宾馆经营管理中不可缺少的部分,它的内容对于经营的决策者和管理者来说都至关重要,所以宾馆管理系统、信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方
5、式存在着许多弊端,如:效率低、保密性差,容易出现差错等,且对于查询空房间及已定房间等极为不方便。在当今时代,这些完全可以改用计算机来代替人的手工操作。 作为计算机及网络应用的一部分,使用计算机对客房信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高宾馆管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。且办事效率也是决定收入的一个关键因素。 因此,我决定选择宾馆管理系统作为本人的毕业设计,力求开发出一套界面友好,功能强大,使用简单的适用于各大、中、小规模的宾馆的管理系统。同时也是一款完全适
6、合宾馆或旅馆管理傻瓜式日常业务管理的软件。 一、需求分析: (一)系统主要功能: 1、 客房类型管理:提供有关客房类型状况的规范:有客房类型名、房间面积、额定床数、额定人数、住房单价、是否有空调、电视机、电话以及单独卫生间等,并可进行添加、修改、删除、查询等操作。 2、 客房信息管理:用来管理各个客房的信息和状况,并在客户入住之前根据客户的要求提供给客户的客房的情况,可进行添加、修改、删除、查询等操作。 3、 客户入住信息管理:记录用户入住的信息,根据客户的身份证号码来显示客户的 入住记录,以便用户管理和结算,可进行添加、修改、删除、查询等操作。 4、 结算信息记录管
7、理:对入住用户的入住信息情况的管理,客户付清住宿费用并注销房间。可进行添加、修改、删除、查询等操作。 5、 用户管理:对系统使用人员进行管理,只有符合要求的人才能进行一些相关操作,并可进行添加、修改、删除等操作。 (二)关系模式 1、RoomType信息:(RoomTypeName、BedNum、PeopleNum、Price、 Toilet、AirCondition) 2、 Room记录:(RoomID、RoomTypeName、RoomPostion、PeopleNum、BedNum、FactPeopleNum) 3、 Client信息:(ClientID、ClientNa
8、me、Sex 、NativePlace、IdentifyID) 4、 ClientRecord信息:( ClientID、ClientName、RoomID、 InDate、CheckDate、TotalMone、Check) 5、 User信息:(UserID、Username、Password、UserRole) (三)功能模块 修改住宿房间 系统管理 房间类型管理 客房信息管理 客户记录查询 用户管理 添加住宿房间 删除住宿房间 添加房间类型 修改房间类型 删除房间类型 客户结算管理 预定房间 退订房间 客房查询 添加用户 修改用户
9、 删除用户 (四)数据库需求分析 1、酒店管理系统需要提供信息的查询、保存、更新以及删除等功能,这就要求数据库能充分满足各种信息的输入输出。通过对上述系统功能的分析。针对酒店管理系统的特点,总结出如下的需求信息。 l 每个房间有两个状态:空房、已入住。 l 每种房间类型下有多个房间。 l 每个房间有正在入住客人的信息。 l 每个房间有以往所有入住客人的信息。 l 一个房间入主信息指向一个顾客。 l 每个顾客有自己的入住历史。 2、针对上述系统功能的分析和需求总结,设计如下数据项。 l 顾客信息:姓名、电话、身份证号。 l 房间记录:订房时间、退房时间、价格统计、入住
10、顾客姓名、 入住顾客电话。 l 房间信息:类型名称、使用面积、床位、价格。 l 管理人员:用户名、密码、地址、电话。 l 房间状态:状态标识。 二、概要设计 (一)数据库概念结构设计 l 通过上面的数据项,即可设计出满足需求的各种实体以及他们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。实体之间的关系的E-R图如下: RoomType Room Client 预定 结算 ClientRecord 含有 1 n n 1 1 1 1、 用户管理E-R图 User UserID
11、 Password UserRole Username 2.、顾客信息实体E-R图: Client IdentifyID ClientID ClientName NativePlace Sex 3、房间信息实体E-R图: Room BedNum RoomPostion RoomTypeName FactPeopleNum PeopleNum RoomID 4、顾客入住信息实体E-R图: ClientRecord RoomID TotalMoney ClientName InDate C
12、heckDate ClientID 5、房间类型实体E-R图: RoomType RoomTypeName BedNum PeopleNum Peo Price AirCondition Toilet 6.、整体结构E-R图: RoomType Room Client ClientRecord 预定 结算 Toilet BedNum RoomTypeName Price PeopleNum AirCondition 含有 RoomID BedNum RoomPostion R
13、oomTypeName PeopleNum FactPeopleNum RoomID InDate TotalMoney ClientName CheckDate ClientID IdentifyID NativePlace Sex ClientID n 1 n 1 1 1 Check (二)数据表设计 1、(RoomType表) 序号 列名 数据类型 是否允许空 1 RoomTypeName nchar(20) 否 2 BedNum smallint 否 3 PeopleNum smallint
14、否 4 Price money 否 5 Toilet varchar(2) 否 6 AirCondition varchar(2) 否 2、(Room表) 序号 列名 数据类型 是否允许空 1 RoomID nchar(15) 否 2 RoomTypeName nchar(20) 否 3 RoomPostion nchar(10) 否 4 PeopleNum smallint 否 5 BedNum smallint 否 6 FactPeopleNum smallint 否 3、(Client表) 序号 列名
15、 数据类型 是否允许空 1 ClientID nchar(16) 否 2 ClientName nchar(20) 否 3 Sex nchar(2) 否 4 NativePlace nchar(20) 否 5 IdentifyID nchar(20) 是 4、(ClientRecord表) 序号 列名 数据类型 是否允许空 1 ClientID nchar(16) 否 2 ClientName nchar(20) 否 3 RoomID nchar(15) 否 4 InDate datetime 否 5 C
16、heckDate datetime 否 6 TotalMoney money 是 7 Check Char(2) 是 5、(User) 序号 列名 数据类型 是否允许空 1 UserID nchar(10) 否 2 Username nchar(10) 否 3 Password nchar(20) 否 4 UserRole nchar(10) 否 三、详细设计 (一)系统详细设计目标规划 在此阶段设计出具体能够运行的系统,详细列出新系统的各种参数与规格。为即将用C# 编程语言对其进行编写做好准备。 (二)系统详细设计
17、任务 1、数据结构的设计: 对于处理过程中涉及的概念性的数据类型进行确切的定义; 2、测试用例设计: 测试用例包括输入数据和预期结果等内容。 (三)系统物理配置方案设计 1 、设计指标 (1)系统吞吐量 要提高系统的吞吐量,就要求使用具有大吞吐量的计算机。应该选择具有较高性能的计算机。 (2)系统响应时间 响应时间不超过2秒 (3)系统处理方式 该系统采用主机系统方式。 (4)地域范围 本系统采用局域网方式。 (5)数据管理方式 使用SQL Server2005数据管理系统 2、 计算机硬件配置 计算机硬件选择取决于要运行的软件系统,本系统建议最低采取如下配
18、置: 内存:2GB CPU:奔三2.0GHZ 硬盘: 500G (四 )系统输出设计 输出设计的内容包括: 1、 输出信息应包括系统的使用者,如客户、酒店管理人员、前台 服务人员等。 2、 信息应以表格及文档形式输出。 3、 输出设备:打印机、终端显示器、Pos机。 4、 输出介质:输出到专用纸张及电脑屏幕上。 (五)系统输入设计 1、输入数据量设计 需要输入客户数据,数据量不大 2、数据输入设备的选择 本系统选择键盘、鼠标人工输入方式。 (六)界面设计 1、用户登录界面设计 2、超级用户登录界面 3、用户管理界面
19、设计 4、用户添加界面设计 5、用户修改界面 6、主界面 7、房间类型管理界面 8、客房查询界面 9、客房信息管理界面 10、客户记录查询界面 11、客户结算界面 12、客户入住界面 四、代码设计 1、用户表示层(room窗体) using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; usin
20、g System.Windows.Forms; using System.Data.SqlClient; using Three.DLL; using Three.Model; namespace hotelmanger { public partial class Room : Form { public Room() { InitializeComponent(); } private ArrayList mylist; private voi
21、d Room_Load(object sender, EventArgs e) { //combox2的函数 mylist = new ArrayList(); mylist.Add("一楼"); mylist.Add("二楼"); mylist.Add("三楼"); bindingSource1.DataSource = mylist;//附加数据源 boBox2.DataSource = t
22、his.bindingSource1; //填充combox1的函数 SqlDataReader w_sda=DLL_room.DLL_AddRoom(); while (w_sda.Read()) { comboBox1.Items.Add(w_sda[0]); } w_sda.Close(); } private void comboBox1_SelectedInd
23、exChanged(object sender, EventArgs e) { string cb1_str; cb1_str = comboBox1.SelectedItem.ToString(); //填充combox3,combox4的函数 SqlDataReader W_sda2 = DLL_room.DLL_AddRoom2(cb1_str); while (W_sda2.Read()) {
24、 comboBox3.Items.Add(W_sda2[2]); comboBox4.Items.Add(W_sda2[1]); comboBox3.Text = W_sda2[2].ToString(); comboBox4.Text = W_sda2[1].ToString(); } W_sda2.Close(); } private void show_room_Click(object
25、sender, EventArgs e) { DLL_room.ShowRoom(dataGridView1); } private void add_room_Click(object sender, EventArgs e) { string roomid = roomnum_box.Text; string rtn = comboBox1.Text; string rp = comboBox2.Text;
26、 string pn = comboBox3.Text; string bn = comboBox4.Text; string fpn = "0"; DLL_room.AddRoom(roomid, rtn, rp, pn, bn, fpn); } //查找 private void select_rooom_Click(object sender, EventArgs e) { string str
27、 textBox1.Text; DLL_room.SelectRoom(str, dataGridView1); } //删除 private void delete_room_Click(object sender, EventArgs e) { string str = textBox1.Text; DLL_room.DeleteRoom(str, dataGridView1); } private vo
28、id exit_room_Click(object sender, EventArgs e) { this.Close(); } } } 2、业务逻辑层 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using Three.Model; using Three.sqlDAL; using System.Data; using System.Data.SqlCli
29、ent; namespace Three.DLL { public class DLL_room { //显示所有的房间 public static bool ShowRoom( DataGridView dgrid) { string strr = "select* from Room"; D_room.ShowRoom(strr, dgrid); //D_roomtype.ShowRoomEmployee(strr, dgrid);
30、 return true; } //查找 public static bool SelectRoom(string str, DataGridView dgvid) { string strr = "select *from Room where RoomID='" + str + "'"; D_room.ShowRoom(strr, dgvid); return true; } //删除
31、 public static bool DeleteRoom(string str ,DataGridView dgvid) { string strr = "delete from Room where RoomID='" + str + "'"; D_room.ShowRoom(strr, dgvid); return true; } //调用无参的D_addtable() public static SqlDataReader DLL_AddRoom
32、) { SqlDataReader sdr = D_room.D_addtable(); return sdr; } //调用有参的D_addtable() public static SqlDataReader DLL_AddRoom2(string slt_str) { string st = slt_str; SqlDataReader sdr = D_room.D_addtable(st);
33、 return sdr; } //添加相应的房间信息 public static int AddRoom(string RoomID, string RoomTypeName, string RoomPostion, string PeopleNum, string BedNum, string FactPeopleNum) { Room1 M_room = new Room1(); M_room.RoomID = RoomID; M_room.RoomT
34、ypeName = RoomTypeName; M_room.RoomPostion = RoomPostion; M_room.PeopleNum = Convert.ToInt32(PeopleNum); M_room.BedNum = Convert.ToInt32(BedNum); M_room.FactPeopleNum = Convert.ToInt32(FactPeopleNum); return D_room.D_ADDRoom(M_room);
35、 } //增加房间实际人数 public static int update_factpeople(string r_roomid) { return D_room.D_addfactpeoplenum(r_roomid); } //减少房间实际人数 public static int update_jianfactpeopele(string j_roomid) { return D_room.D_jianfactpeoplen
36、um(j_roomid); } } } 3、model层 using System; using System.Collections.Generic; using System.Text; namespace Three.Model {//由于窗体中出现了Room.cs,故定义为Room1 public class Room1 { private string _RoomID; public string RoomID { get { return _
37、RoomID; } set { _RoomID = value; } } private string _RoomTypeName; public string RoomTypeName { get { return _RoomTypeName; } set { _RoomTypeName = value; } } private string _RoomPostion; public str
38、ing RoomPostion { get { return _RoomPostion; } set { _RoomPostion = value; } } private int _PeopleNum; public int PeopleNum { get { return _PeopleNum; } set { _PeopleNum = value; } } pr
39、ivate int _BedNum; public int BedNum { get { return _BedNum; } set { _BedNum = value; } } private int _FactPeopleNum; public int FactPeopleNum { get { return _FactPeopleNum; } set { _FactPeopleN
40、um = value; } } public Room1() { } public Room1(string roomid, string roomtypename, string roompostion, int peopenum, int bednum, int factpeoplenum) { this._RoomID = roomid; this._RoomTypeName = roomtypename;
41、 this._RoomPostion = roompostion; this._PeopleNum = peopenum; this._BedNum = bednum; this._FactPeopleNum = factpeoplenum; } } } 4、数据访问层 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using Th
42、ree.Model; using Three.database; using System.Data; using System.Data.SqlClient; namespace Three.sqlDAL { public class D_room { //显示所有客房信息 public static bool ShowRoom(string str, DataGridView dgrid) { { d_Bind.BindDataGrid(str,
43、dgrid); return true; } } //读取RoomType中的部分值--无参 public static SqlDataReader D_addtable() { string str = "select * from RoomType"; SqlDataReader sdr ; sdr = database.d_Bind.BindComboBox(str);
44、 return sdr; } //读取RoomType中的部分值--有参 public static SqlDataReader D_addtable(string select_str) { string str = "select * from RoomType where RoomTypeName='" + select_str + "'"; SqlDataReader sdr; sdr = database.d_Bind.BindComboBox(st
45、r); return sdr; } public static int D_ADDRoom(Room1 M_room) { SqlParameter[] param = new SqlParameter[] { new SqlParameter ("@RoomID",M_room.RoomID), new SqlParameter ("@RoomTypeName",M_room.RoomTypeName),
46、 new SqlParameter ("@RoomPostion",M_room.RoomPostion), new SqlParameter ("@PeopleNum",M_room.PeopleNum), new SqlParameter ("@BedNum",M_room.BedNum), new SqlParameter ("@FactPeopleNum",M_room.FactPeopleNum) }; string
47、 str = "insert into[Room](RoomID,RoomTypeName,RoomPostion,PeopleNum,BedNum,FactPeopleNum) values(@RoomID,@RoomTypeName,@RoomPostion,@PeopleNum,@BedNum,@FactPeopleNum)"; int i=data.ExecuteNoQuery(str, param); return i; } //添加实际人数 public st
48、atic int D_addfactpeoplenum(string roomid) { string str = "update Room set FactPeopleNum=FactPeopleNum+1 where RoomID='" + roomid + "'"; int i = data.ExecuteNoQuery(str); return i; } //减少实际人数 public static int D_jianfactpeoplenum(st
49、ring roomid) { string str = "update Room set FactPeopleNum=FactPeopleNum-1 where RoomID='" + roomid + "'"; int i = data.ExecuteNoQuery(str); return i; } } } 5、公用类层 (1)data.cs using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Data; using System.Windows.Forms; using System.IO; namespace Three.database {//封装数据库 public class data { private static string _con = @"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\C#宾馆管理系统整合后\Solution\database\hotel.mdf;Integrated






