1、数据库课程设计报告房屋中介管理系统班级:姓名:学号:指导教师: 完成日期:数据库课程设计数据库课程设计评分表班级姓名指导教师题目: 房屋中介管理系统评分标准评分标准分数权重评分的依据得分AC工作态度10态度端正,能主动认真完成各项内容,不迟到早退,出勤好。能够完成各环节基本工作,出勤较好。独立解决问题的能力10能独立完成数据库课程设计项目的各项任务,熟悉项目的整体架构;具有独立分析、解决问题能力,具有独立调试程序与测试程序的能力,程序结构清晰,逻辑严谨,功能完善。有一定的分析、解决问题能力。能够在老师指导下完成任务的编码与调试工作,程序功能较完善。程序完成及运行情况20完成率100%,程序运行
2、正确。 完成率不足70%。课程设计报告30格式规范,层次清晰,设计思想明确,解决问题方法合理,体会深刻。格式较规范,设计思想基本明确,解决问题方法较合理。答辨问题回答30能准确回答老师提出的问题,并充分理解数据库开发技术,程序逻辑清晰。能基本准确回答老师提出的问题总分指导教师(签字):注:介于A和C之间为B级,低于C为D级和E级。按各项指标打分后,总分90100为优,8089为良,7079为中,6069为及格,60分以下为不及格。目录第1章 需求分析11.1 开发背景11.2 需求分析1第2章 系统设计22.1 项目规划22.2 系统业务流程分析22.3 系统业务流程分32.4 系统E-R图4
3、2.5 开发及运行环境6第3章 数据库设计73.1 数据表概要说明73.2 主数据表的结构7第4章 系统模块代码设计144.1 系统登录模块代码144.2 用户信息管理登录模块设计代码154.3 房源信息设置模块设计代码164.4 房源信息查询模块设计代码204.5 房源状态查询模块设计234.6 员工信息设置模块设计代码26第5章 疑难问题解析275.1 通过触发器对视图进行添加、修改和删除操作275.2 结束数据库连接进程完成数据库还原27第6章 课程设计小结和心得296.1 小结296.2 心得29第7章 源代码307.1 系统登录模块设计代码307.2 用户信息管理登录模块设计代码31
4、7.3 房源信息设置模块设计代码337.4 房源信息查询模块设计代码377.5 房源状态查询模块设计417.6 员工信息设置模块设计代码44第1章 需求分析1.1 开发背景 房屋中介行业是房地产业的重要组成部分,其在房地产业经济运作的全过程之中起着至关重要的作用,为房地产业的生产、流通和消费提供了多元化的服务。房屋中介行业作为一个管理房屋信息的机构,其对信息的管理应该准确无误。利用所学的软件工程设计思想、数据库等知识设计一个房屋中介管理系统的软件对于提高该中介机构的工作效率变得尤为重要。1.2 需求分析通过实际调查,要求房屋中介管理系统应该具有一下功能:(1)由于操作人员的计算机知识普遍偏低,
5、因此要求系统具有良好的人机界面;(2)如果系统的使用对象较多,则要求有较好的权限管理;(3)方便的数据查询,支持自定义条件查询;(4)自动匹配房源和求房意向信息;(5)使用垃圾信息处理机制释放空间;(6)在相应的权限下,删除数据方便简单、数据稳定性强;(7)数据计算自动完成,尽量减少人工干预。第2章 系统设计2.1 项目规划房屋中介管理系统在出租者和求租者之间起到了桥梁的作用,是一款非常实用的软件,它主要由用户信息管理、出租信息管理、求租信息管理、房源管理、常用工具和系统管理等模块组成,具体规划如下。(1)用户信息管理模块该模块主要包括求租人员信息设置、出租人员信息设置、人员信息控制等功能。(
6、2)求租管理模块该模块主要包括房源查询设置、房源状态浏览、求租意向设置等功能。(3) 员工管理模块该模块主要包括录入员工信息、员工信息控制等功能。(4)出租管理模块该模块主要包括房型设置、楼层设置、幢/座设置、装修程度设置、朝向设置、用途设置等功能。(5) 交费管理该模块主要包括收费设置、收费记录等功能。(6) 业务统计该模块主要包括成交业务量统计等功能。(7) 窗体布局该模块主要包括层叠排列、水平排列、垂直平铺等功能。(8) 常用工具该模块主要包括记事本、计算器、Word、Excel等功能。(9) 系统管理该模块主要包括口令设置、退出系统、数据备份、数据恢复、清理无效信息等功能。2.2 系统
7、业务流程分析房屋中介管理系统是业务流程如图2.1所示 是否登录收集客户信息身份验证管理员工是否找到房源客户划分填写意向是否与房源相符联系双方交款录入房源是否与房源意愿相符结束结束是员工经理否是否求租人出租人是登录系统否否是 图2.1 房屋中介管理系统是业务流程2.3 系统业务流程分房屋中介管理系统功能结构图如图2.2所示房屋中介管理系统用户信息管理求组管理员工信息出租管理窗体布局常用工具系统管理房源查询设置房源状态浏览求租意向设置房源查询设置房源状态浏览求租意向设置录入员工信息员工信息控制层叠平铺水平平铺垂直平铺记事本Word计算器民族设置学历设置房屋设置楼层设置装修设置幢座设置朝向设置用途设
8、置口令设置退出系统数据库备份数据库还原清理无效信息Excel图2.2 房屋中介管理系统功能结构图2.4 系统E-R图(1)出租房屋信息E-R图如图2.3所示出租房屋信息客户姓名联系方式每月价格房屋种类建筑面积装修情况房型房屋地址房屋情况 图2.3 出租房屋信息E-R图(2)求购人信息E-R图如图2.4所示求租人信息客户姓名联系方式房屋种类建筑面积装修情况户型 图2.4 求购人信息E-R图2.5 开发及运行环境本系统开发平台及运行环境如下1) 系统开发平台:Microsoft Visual Studio 2008.2) 系统开发语言:C#。3) 数据库管理系统软件:SQL Server 2005
9、。4) 运行平台:Windows XP。5) 运行环境:Microsoft.NET Framework第3章 数据库设计本系统采用SQL Server 2005数据库,名称为db-showHouse,其中包含15张数据表。下面分别给出数据表概要说明、主要数据表结构。3.1 数据表概要说明数据表树形结构图包括系统所有数据表如图3.1所示 图3.1 数据表树形结构图包括系统所有数据表3.2 主数据表的结构(1)tb_employee(员工信息表)表tb_employee用于保存员工的基本信息,该表的结构如图3.1所示。图3.1 员工信息表(2)tb_favor(朝向信息表)表tb_favor用于设
10、置房源的朝向信息,该表的结构如图3.2所示。图3.2 朝向信息表 (3)tb_fitment(装修信息表)表tb_fitment用于设置房源装修信息,该表的结构如图3.3所示。 图3.3 装修信息表(4)tb_floor(楼层信息表)表tb_floor用于设置房源楼层信息,该表的结构如图3.4所示。图3.4 楼层信息表(5)tb_gov(民族信息表)表tb_gov用于保存员工的民族信息,该表的结构如图3.5所示。 图3.5 民族信息表(6)tb_log(日志信息表)表tb_log用于保存操作者使用该系统的日志记录,该表的结构如图3.6所示。 图3.6 日志信息表(7)tb_house(房屋信息
11、表)表tb_house用于保存房屋信息,该表的结构如图3.7所示。图3.7 房源信息表(8)tb_intent(求租意向表)表tb_intent用于保存求租人对房源的要求信息,该表的结构如图3.8所示。 图3.8 意向信息表 (9)tb_login(登录信息表)表tb_login用于用户进入系统时进行核对,该表的结构如图3.9所示。图3.9 登录信息表(10)tb_MoneyAndInfo(收费信息表)表tb_ MoneyAndInfo用于保存收费信息,该表的结构如图3.10所示。图3.10 收费信息表(11)tb_mothed(用途信息表)表tb_mothed用于保存房源的用途信息,该表的结
12、构如图3.11所示图3.11 用途信息表 (12)tb_seat(幢座信息表)表tb_seat 用于保存房源幢座信息,该表的结构如图3.12所示。图3.12 幢座信息表(13)tb_StudyDegree(学历信息表)表tb_ StudyDegree用于设置员工的学历,该表的结构如图3.13所示图3.13 学历信息表 (14)tb_type(房型信息表)表tb_type用于保存房源房型信息,该表的结构如图3.14所示。图3.14 房型信息表(15)tb_user(客户信息表)表tb_user用于保存客户信息,该表的结构如图3.15所示图3.15 客户信息表第4章 系统模块代码设计4.1 系统登
13、录模块代码单击“登录”按钮,调用登录信息表的方法类,判断用户输入的用户名和密码是否正确,如果正确,则登录房屋中介管理系统,同时分配该用户相应的权限,否则弹出“密码有误,3次后将自动关闭”的提示信息。“登录”按钮的Click事件代码如下: private void btnLogin_Click(object sender, EventArgs e) #region/用户与密码是否正确不正确给三次机会然后关闭 cl.LName=this.cobName.Text; cl.LPwd=this.txtPwd.Text.Trim().ToString(); string power=cm.select_
14、table(cl); if (power != none) /调一个方法如果成功进入后台否则记到登陆日制中 frmMain fm = new frmMain(); this.Hide(); fm.M_str_Power = this.cobName.Text + + power; fm.Show(); else if(this.txtPwd.Text= & this.cobName.Text=) /当所有信息都没有时这是一个入口 frmMain fm = new frmMain(); this.Hide(); fm.Show(); else if (ErrorNum = cl.LName) N
15、um += 1; if (Num = 3) this.Close(); else ErrorNum = cl.LName; Num += 1; MessageBox.Show(密码有误,三次后将自动关闭,这是第+Num+次); this.txtPwd.Text = string.Empty; this.txtPwd.Focus(); 4.2 用户信息管理登录模块设计代码在frmPeopleList窗体的load事件中,通过调用自定义ListInfo方法对DataGridView控件进行数据绑定,显示所有系统用户信息。frmPeopleList窗体的load事件关键代码如下: private v
16、oid frmPeopleList_Load(object sender, EventArgs e) sbSql.Append(select User_IDs,User_names,User_homePhone,User_cardID,User_phone from tb_User); ListInfo(sbSql.ToString(); UnAble(); private void tp_cancel_Click(object sender, EventArgs e) this.Close(); 当用户在单击“出租人”选项卡或“求租人”选项卡时,在相应的选项卡页中显示客户信息,实现代码如下:
17、 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) if (this.tabControl1.SelectedTab.Text = 出租人) sbWhere.Append( where user_type=lend); ListInfo(sbSql.ToString() + sbWhere.ToString(); sbWhere.Remove(0, sbWhere.Length); else if (this.tabControl1.SelectedTab.Text = 求租人) sbWhere.
18、Append( where user_type=want ); ListInfo(sbSql.ToString() + sbWhere.ToString(); sbWhere.Remove(0, sbWhere.Length); 单击ListView控件中的任一单元格,将对应的详细客户信息显示在相应选项卡的文本框中,实现代码如下: private void listView1_Click(object sender, EventArgs e) string strID =this.listView1.SelectedItems0.Text.ToString(); string sql = se
19、lect User_IDs,User_names,User_homePhone,User_cardID,User_phone from tb_User where user_ids= + strID + ; SqlCommand cmd=new SqlCommand(sql,con.conn); con.closeCon(); cmd.Connection.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (strID.Substring(0, 4) = lend) this.tabControl1.SelectTab(0); while (
20、dr.Read() this.textBox1.Text = dr0.ToString(); this.textBox2.Text = dr1.ToString(); this.textBox3.Text = dr2.ToString(); this.textBox4.Text = dr3.ToString(); this.textBox5.Text = dr4.ToString(); else this.tabControl1.SelectTab(1); while (dr.Read() this.textBox10.Text = dr0.ToString(); this.textBox9.
21、Text = dr1.ToString(); this.textBox8.Text = dr2.ToString(); this.textBox7.Text = dr3.ToString(); this.textBox6.Text = dr4.ToString(); dr.Close(); con.closeCon(); tb_update.Enabled = true; 4.3 房源信息设置模块设计代码在frmHouse窗体的Load事件中,通过M_str_Show变量判断本次调用窗体的目地。如果是浏览或修改信息,则将相应的信息显示到控件上,如果是添加信息,则将基本表的信息绑定到ComboB
22、ox控件上。frmHouse窗体的Load事件中实现代码如下: private void frmHouse_Load(object sender, EventArgs e) string strHouseState = string.Empty; con.ConDatabase(); flushFaove(); flushfitment(); flushfloor(); flushmothed(); flushseat(); flushtype(); if (M_str_Show = String.Empty) try SqlCommand cmd = new SqlCommand(selec
23、t Max(house_ID) from tb_house, con.conn); cmd.Connection.Open(); strResult = cmd.ExecuteScalar().ToString(); con.closeCon(); if (strResult = ) strResult = hou1001; else string strTemp = strResult.Substring(3); strResult = hou + Convert.ToString(Int32.Parse(strTemp) + 1); this.lblHouseID.Text = 您的房屋编
24、号为: + strResult; catch (Exception ey) con.closeCon(); MessageBox.Show(ey.Message); else this.button8.Visible = false; this.butOK.Visible = false; Visable(); SqlCommand cmd = new SqlCommand(select * from tb_house where house_ID= + M_str_Show + , con.conn); con.conn.Open(); SqlDataReader dr = cmd.Exec
25、uteReader(); if (dr.HasRows) while (dr.Read() lblHouseID.Text = dr0.ToString(); this.txtName.Text = dr1.ToString(); this.picHouse.ImageLocation = dr8.ToString(); txtPrice.Text = dr9.ToString(); this.nudYear.Value = Convert.ToDecimal(dr11.ToString(); this.txtArea.Text = dr12.ToString(); this.ttbRemar
26、k.Text = dr13.ToString(); strHouseState = dr4.ToString(); this.cboXing.SelectedValue = dr2.ToString(); this.cobDong.SelectedValue = dr3.ToString(); this.cboFavoe.SelectedValue = dr6.ToString(); this.cobZhuang.SelectedValue = dr5.ToString(); this.cobUser.SelectedValue = dr7.ToString(); this.cobFlood.
27、SelectedValue = dr10.ToString(); con.closeCon(); if (strHouseState = none) /什么时候出显 button1.Visible = true; button2.Visible = true; private void flushFaove() con.ConDatabase(); try SqlDataAdapter da = new SqlDataAdapter(select * from tb_favor, con.conn); DataTable dt = new DataTable(); da.Fill(dt); c
28、boFavoe.DataSource = dt.DefaultView; cboFavoe.DisplayMember = favor_name; cboFavoe.ValueMember = house_favorID; catch (Exception ey) MessageBox.Show(ey.Message); private void flushfitment() con.ConDatabase(); try SqlDataAdapter da = new SqlDataAdapter(select * from tb_fitment, con.conn); DataTable d
29、t = new DataTable(); da.Fill(dt); cobZhuang.DataSource = dt.DefaultView; cobZhuang.DisplayMember = fitment_name; cobZhuang.ValueMember = house_fitmentID; catch (Exception ey) MessageBox.Show(ey.Message); private void flushfloor() con.ConDatabase(); try SqlDataAdapter da = new SqlDataAdapter(select *
30、 from tb_floor, con.conn); DataTable dt = new DataTable(); da.Fill(dt); cobFlood.DataSource = dt.DefaultView; cobFlood.DisplayMember = floor_name; cobFlood.ValueMember = house_floorID; catch (Exception ey) MessageBox.Show(ey.Message); private void flushmothed() con.ConDatabase(); try SqlDataAdapter
31、da = new SqlDataAdapter(select * from tb_mothed, con.conn); DataTable dt = new DataTable(); da.Fill(dt); cobUser.DataSource = dt.DefaultView; cobUser.DisplayMember = mothed_name; cobUser.ValueMember = house_mothedID; catch (Exception ey) MessageBox.Show(ey.Message); private void flushseat() con.ConDatabase(); try SqlDataAdapter da = new SqlDataAdapter(select * from tb_seat, con.conn); DataTable dt = new DataTable(); da.Fill(dt); cobDong.DataSource = dt.DefaultView; cobDong.DisplayMember = seat_name; cobDong.ValueMember = house_seatID;