《房屋中介系统实习报告.doc》由会员分享,可在线阅读,更多相关《房屋中介系统实习报告.doc(63页珍藏版)》请在三一办公上搜索。
1、 目 录第1章 系统设计111系统的需求分析112系统功能模块设计213系统用例图设计214系统业务流程图3第2章 数据库设计421概念设计422逻辑设计423物理设计424数据完整性设计6第3章 数据库编程631视图632存储过程733触发器9第4章 系统功能的设计与实现1241登陆功能的设计与实现1242主界面的设计与实现13第5章 总结4451系统的不足与展望4452体会44参考文献44第1章 系统设计11系统的需求分析 经过对房屋中介系统的需求分析,确定最终用户包括客户和员工。超级用户为:房产中介管理员。主要的实体对象有:1、管理员2、员工3、客户,(这三者都是用户,对用户设一张表,存
2、储信息和权限)4、房源(包括求购房产信息、求租房产信息、出售房产信息、出租房产信息)5、交易(交易的基本信息,可以单独列一张表)6、咨询(员工对客户的回答及客户对交易的提问在列一张表)7、考勤(用于对员工的出勤查询和奖罚制定,包含每次出勤的记录以及统计信息)一、用户管理部分: 1、处理用户注册:当有员工或客户加入时,依据条件添加用户并分配相关权限。注册免费,但是查询时到满意的房源时,想要获得联系方式就要交费。 2、处理用户登录:根据不同角色选择界面。 管理员拥有最全面,全部权限。 客户只有查询、提交、删除自己的出售出租,求购求租房产信息的权限。 客户和员工第一次注册时可以修改自己的信息,然后只
3、有对分配的业务进行提交及查询自己信息的权限。 3、用户可以查询、提交、删除自己的出售出租,求购求租房产信息。(员工除外):客户根据自己的客户编号来提交信息,可以查询符合条件的房源,来获取联系方式,达成交易,记录在交易表上。 4、员工可以添加房源信息。 5、用户可以提交与查询交易信息。 6、用户可以查询自己的基本信息。 7、用户可以修改用户自己密码。二、管理员管理部分1、 处理管理员登录2、 管理员可以添加,查询,修改,删除客户与员工信息。3、 管理员可以发布与更新出售出租房产信息。4、 管理员可以修改与删除求购求租房产信息。5、 管理员可以查询与修改交易信息。6、 管理员可以查询与修改咨询信息
4、。7、 管理员可以查询与修改考勤信息。8、 管理员可以对员工和客户颁发工资和奖励。管理员可以修改管理员密码。 12系统功能模块设计系统功能模块如下所示:系统的功能介绍:1、 数据录入功能:录入系统的基本信息,例如:客户信息、员工信息、房源信息、咨询信息、交易信息、考勤信息。2、 数据查询功能:在员工表、客户表与房源表之间建立视图,方便客户和员工对房源的查询。建立存储过程,可以查询每个表的信息。3、 数据统计功能:在交易表上建立视图,生成交易的简易统计结果。4、 数据更新功能:建立存储过程,可以通过查询时更新数据。5、房产中介管理系统交易管理房源管理用户管理退出考勤管理咨询管理退出系统添加房源添
5、加交易添加咨询查询咨询查询考勤删除考勤修改考勤添加考勤删除咨询修改咨询查询交易修改交易删除交易查询房源删除房源修改房源员工管理客户管理删除用户查询客户修改用户添加用户13系统用例图设计系统Use Case图如下所示:14系统业务流程图系统业务流程图如下所示: 第2章 数据库设计21概念设计 根据系统需求分析可得系统数据库的E-R图如下所示:22逻辑设计根据E-R图得出逻辑设计如下: 用户(账号、密码、类型、姓名、性别、联系电话、住址、注册日期、用户状态、用户钱数)房源(房源编号、房源类型、户型、面积、地址、楼层、价格、发布人ID、发布时间、房源状态)交易(交易号、成交价格、成交时间、房源编号、
6、房主、交易人、交易类型)咨询(咨询人ID、咨询内容、咨询时间、回复内容、回复时间、回复人ID)考勤(ID、登录时间、注销时间、登录次数、绩点) 23物理设计 Customer表(用户表)House表(房源表)Deal表(交易表)Consult表(咨询表)Checkload表(考勤表)24数据完整性设计主键及外键约束、缺省约束、非空约束、CHECK约束、规则约束的说明(1) 主键及外键约束、非空约束ID为Customer表的主键,Hno为House表的主键,Ctime为Consult表的主键,Dno为Deal表的主键,Ltime为Checkload表的主键,not null.(2) 使用默认值H
7、no、Dno为自动增值型,每次加一。 (3) CHECK约束Htime,Dtime、Cbirth、Ctime、Atime默认值为getdate();(ctype=管理员 OR ctype=员工 OR ctype=客户)(ctype=管理员 OR ctype=员工 OR ctype=客户);(Csex=女 OR Csex=男);(HLeixing=求购 OR HLeixing=求租 OR HLeixing=出售 OR HLeixing=出租)(Hstate=未成交 OR Hstate=已成交) 第3章 数据库编程31视图 1查看详细房源视图 该视图显示未成交的房源的详细信息,可根据提供的房源信息
8、进行满足条件的搜索功能; 代码:create VIEW dbo.查看详细房源ASSELECT HID , Hno, HLeixing, Htype, Harea, Haddress, Hfloor, Hprice,Htime,HstateFROM dbo.HouseWHERE (Hstate NOT IN (已成交) 运行效果图: 2员工业绩查询视图 该视图显示该员工经手成交的业务的详细信息。 代码:CREATE view dbo.员工业绩查询asselect ID 员工ID,SUM(Dno) 交易总数,SUM(Dprice) 累计金额 from Deal,Customer,House whe
9、re Deal.Hno=House.Hno and House.HID=Customer.ID and Customer.Ctype=员工group by ID 运行效果图:32存储过程1添加房源 当需要增加新的房源时,调用该存储过程代码:CREATE proc dbo.添加房源HLeixing char(10),Htype char(10),Harea int,Haddress char(10),Hfloor char(10),Hprice money,ID char(10)asinsert into House(HLeixing ,Htype ,Harea ,Haddress ,Hfloo
10、r ,Hprice ,HID )values(HLeixing ,Htype ,Harea,Haddress,Hfloor,Hprice,ID) 运行效果图: 2添加交易 当需要增加新的交易时,调用该存储过程代码:CREATE proc dbo.添加交易-传递三个值Dprice money,Hno int,ID char(10)Dprice money,Hno int,ID char(10)-当前员工编号asdeclare Hname char(10),Dname char(10),Dleixing char(10)select Hname =Cname,Dleixing =HLeixing
11、from House,Customer where HID=ID and Hno =Hno select Dname =Cname from Customer where ID =ID insert into Deal (Dprice ,Hno ,Hname ,Dname, Dleixing )values(Dprice ,Hno ,Hname,Dname,Dleixing ) 运行效果图:3添加用户 当需要增加新的用户时,调用该存储过程代码:CREATE proc dbo.添加用户ID char(10),Ccode char(10),Ctype char(10),Cname char(10)
12、,Csex char(2),Cphone char(10),Clocal char(10),Cstate char(10),Cmoney moneyasinsert into Customer (ID ,Ccode ,Ctype ,Cname ,Csex ,Cphone ,Clocal ,Cstate,Cmoney)values(ID,Ccode,Ctype ,Cname,Csex,Cphone,Clocal,闲,Cmoney) 运行效果图:33触发器1删除记录触发器 当删除用户信息时,把与他有关的房源信息都删除。代码:create trigger dbo.删除on dbo.Customera
13、fter deleteAsdelete from House where HID=(select ID from deleted) 运行效果图:删除前:删除后:2添加考勤记录触发器 当添加用户信息时,相应的添加考勤记录。代码:CREATE trigger dbo.添加考勤初始记录on dbo.Customerafter insertasdeclare LID char(10),Loadtime datetime,Downtime datetime, Ltimes int, Grade intselect LID = ID from insertedset Loadtime =GETDATE (
14、)set Downtime=GETDATE ()insert into Checkload Values (LID,Loadtime,Downtime,1,0) 运行效果图:插入用户前:插入用户后:3添加咨询记录触发器 当添加用户信息时,相应的添加咨询记录。 代码:CREATE trigger dbo.添加客户咨询记录on dbo.Customerafter insertasif not exists (select * from inserted where Ctype=客户)returndeclare CID char(10),Ctime date,Atime date,AID char(
15、10)set Ctime=getdate()set Atime=getdate()select CID=ID from inserted where Ctype=客户select top 1 AID=ID from Customer where Ctype=员工 and Cstate=闲insert into ConsultValues(CID,未知,Ctime,未知,Atime,AID)update Customerset Cstate=忙where Ctype=员工 and ID=AID 运行效果图:添加用户前:添加用户后:4修改房源状态触发器 当添加用户信息时,相应的添加咨询记录。 代码
16、:CREATE trigger dbo.修改房源状态 on dbo.Dealafter insertasdeclare a intselect a=Hno from insertedupdate House set Hstate=已成交where Hno=a 运行效果图:修改房源状态前:修改房源状态后:5修改员工状态触发器 当添加交易信息时,相应的修改与该业务相关员工状态记录。 代码:create trigger dbo.修改员工状态on dbo.Dealafter insertasdeclare ID char(10)select ID=ID from Deal,Customer where
17、 Cname=Dnameupdate Customerset Cstate=闲where Ctype in(员工,管理员) and ID=ID 运行效果图:修改员工状态前:修改员工状态后: 第4章 系统功能的设计与实现41登陆功能的设计与实现为了避免非授权用户进入系统,设计并实现登陆窗口。当输入合法用户信息后,方可访问本系统。合法用户都是向管理员申请注册后获得的身份。包括员工和客户。运行效果图如下所示:主要代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;
18、using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 房产中介管理系统 public partial class Form1 : Form public Form1() InitializeComponent(); /登陆判断 private void button1_Click(object sender, EventArgs e) if (textBox2.Text = | textBox1.Text
19、= )MessageBox.Show(请输入登录名或密码!);textBox2.Focus(); elsestring str = data source =PC-20120426CZM;Initial Catalog = fczj;Integrated Security = SSPI; SqlConnection con = new SqlConnection(str); con.Open(); SqlCommand com = new SqlCommand();com.Connection = con; com.CommandType = CommandType.Text; com.Com
20、mandText = select Ctype from Customer where ID= + textBox1.Text + and Ccode= + textBox2.Text + ; SqlDataReader myread = com.ExecuteReader(); if (myread.Read() string Ctype = myreadCtype.ToString ().Trim(); this.Hide(); Form2 f2 = new Form2(); f2.ID = textBox1.Text; f2 .Ccode = textBox2.Text; switch
21、(Ctype) case 管理员: f2.tab = 2; f2.Text = 管理员+textBox1.Text + 已登录; break ; case 员工: f2.tab = 0; f2.Text = 员工+textBox1.Text + 已登录; break; case 客户: f2.tab = 1; f2.Text = 客户+textBox1.Text + 已登录; break; f2.Show(); else MessageBox.Show(对不起,您输入有误!); textBox2.Text = ; textBox1.Text = ; textBox1.Focus(); myre
22、ad.Close(); /登陆关闭 private void button2_Click(object sender, EventArgs e) this.Close(); private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = r) textBox2.Focus(); private void textBox2_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = (char)13) button1_Click(nu
23、ll, null); 42主界面的设计与实现说明:主界面只有三个:(管理员界面和员工界面及最主要的客户界面)使用Tabcontrol分页控件区分:主界面加载代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 房产中介管
24、理系统public partial class Form2 : Formpublic int ab = 0; public int tab = 0; public string ID = ;public string Ccode = ;public static string stron = data source =MICROSOF-EF05AC ;Initial Catalog = fczj;Integrated Security = SSPI;public string select =;public SqlConnection conn = new SqlConnection(stro
25、n);public Form2() InitializeComponent();/系统主界面 /显示系统时间private void timer1_Tick(object sender, EventArgs e)this.toolStripButton1.Text =当前时间为:+ DateTime.Now.ToString();/关闭主界面private void button1_Click(object sender, EventArgs e) Application.Exit(); / 登陆权限分配及加载某些代码模块private void Form2_Load(object sende
26、r, EventArgs e)string sc =; /权限分配if (tab = 2) this .tabControl1.SelectedIndex = 2; /管理员 tabControl1.TabPages1.Enabled = false;/ 权限设置 tabControl1.TabPages0.Enabled = false;/加载管理员模块的房源select = select * from House;try SqlDataAdapter adapter = new SqlDataAdapter(select , conn);DataSet dstable = new Data
27、Set(); adapter.Fill(dstable, testTable);dataGridView4.DataSource = dstable.TablestestTable; dataGridView4.Show();catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); else if (tab = 1) this.tabControl1.SelectedIndex = 1; /客户 tabControl1.TabPages0.Enabled = false;/ 权限设置tabControl1.T
28、abPages2.Enabled = false;/加载客户模块的房源button21_Click(null, null);/加载客户信息button31_Click(null, null);/加载客户咨询内容和员工回复内容select = select CID 客户ID ,Ctext 咨询内容,Ctime 咨询日期 from Consult where CID= + ID ;trySqlDataAdapter adapter = new SqlDataAdapter(select, conn);/实例化数据库适配器DataSetdstable=newDataSet();adapter.Fil
29、l(dstable,testTable);dataGridView6.DataSource = dstable.TablestestTable;dataGridView6.Show(); catch(Exceptionex) MessageBox.Show(ex.Message); finally conn.Close(); sc = select AID 员工ID,Atext 回复内容,Atime 回复日期 from Consult where CID= + ID ;try SqlDataAdapter adapter = new SqlDataAdapter(sc, conn);/实例化数
30、据库适配器DataSet dstable = new DataSet(); adapter.Fill(dstable, testTable); dataGridView7.DataSource = dstable.TablestestTable;dataGridView7.Show(); catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); else if (tab = 0) this.tabControl1.SelectedIndex = 0; /员工 tabControl1.TabPages2.Ena
31、bled = false;/ 权限设置tabControl1.TabPages1.Enabled = false;/加载员工模块的房源button20_Click(null, null);/加载员工回复内容 /加载客户咨询内容和员工回复内容select = select CID 客户ID ,Ctext 咨询内容,Ctime 咨询日期 from Consult where AID= + ID+ ;try SqlDataAdapter adapter = new SqlDataAdapter(select, conn);/实例化数据库适配器DataSet dstable = new DataSet
32、();adapter.Fill(dstable, testTable);dataGridView9.DataSource = dstable.TablestestTable; dataGridView9.Show();catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); sc = select AID 员工ID,Atext 回复内容,Atime 回复日期 from Consult where AID= + ID ;try SqlDataAdapter adapter = new SqlDataAdapte
33、r(sc, conn);/实例化数据库适配器DataSet dstable = new DataSet(); adapter.Fill(dstable, testTable); dataGridView10.DataSource = dstable.TablestestTable; dataGridView10.Show();catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); /记录考勤select = declare LID char(10),Loadtime datetime,Downtime da
34、tetime,Ltimes int,Grade int set LID =+ID+set loadtime=getdate();select += select Ltimes =Ltimes from Checkload where LID =+ID+set Ltimes=Ltimes+1;select += select Grade =Grade from Checkload where LID =+ID+;select += insert into Checkload values (LID ,Loadtime ,Downtime ,Ltimes ,Grade );SqlCommand c
35、md = new SqlCommand(select, conn);try conn.Open();cmd.ExecuteNonQuery();catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); textBox10.Text = 如:求租、求购、出租、出售、两室一厅、三室一厅、一室一厅、天津、浙江、北京、上海; /form2关闭private void Form2_FormClosed(object sender, FormClosedEventArgs e) select = declare Load
36、time datetime, Downtime datetime,Grade int ,Gradeday int ,Gradeend int,Gradestart int set Downtime=getdate();select += select top 1 Grade =Grade from Checkload where LID = +ID + order by Loadtime desc ;select += select top 1 Loadtime =Loadtime from Checkload where LID = + ID + order by Loadtime desc
37、 ;select+= set Gradestart=datepart(HOUR,Loadtime) set Gradeend=datepart(HOUR ,Downtime) set Gradeday=Gradeend-Gradestart set Grade =Grade+Gradeday;select += update Checkload set Downtime=Downtime , Grade =Grade where Ltimes =(select top 1 Ltimes from Checkload where LID=10001 order by Loadtime desc)
38、;SqlCommand cmd = new SqlCommand(select, conn);try conn.Open();cmd.ExecuteNonQuery();catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); Application.Exit();/重新登录private void button2_Click(object sender, EventArgs e) this.Hide(); Form1 f1 = new Form1();f1.Show();4.2.1当客户登陆成功后,会弹出主
39、界面,显示客户主页运行效果图如下所示:1当客户登陆成功后,会弹出主界面,当选择房源跟进信息后显示该页。运行效果图如下所示:主要代码:/高级搜索private void button3_Click(object sender, EventArgs e) select = select Hno 房源编号,HLeixing 房源类型,Htype 房源户型,Harea 房源面积,Haddress 房源地址 ,Hfloor 所在楼层,Hprice 预售价,HID 房主ID,Htime 发布时间,Hstate 房源状态 from House where;if (comboBox2.Text = ) Mes
40、sageBox.Show(房源状态不能为空!); return; if(comboBox2.Text =已成交 & textBox1.Text =) select += Hstate=已成交 ; else if (comboBox2.Text =已成交& textBox1.Text!=)switch (textBox1.Text)case 求租: select += HLeixing=求租 and Hstate=已成交 ; break ;case 求购: select += HLeixing=求购 and Hstate=已成交; break;case 出租: select += HLeixin
41、g=出租 and Hstate=已成交; break;case 出售: select += HLeixing=出售 and Hstate=已成交; break;case 两室一厅: select += Htype=两室一厅 and Hstate=已成交; break;case 三室一厅: select += Htype=三室一厅 and Hstate=已成交; break;case 一室一厅: select += Htype=一室一厅 and Hstate=已成交; break;case 天津: select += Haddress=天津 and Hstate=已成交; break;case 浙江: select += HLeixing=浙江 and Hstate=已成交; break;case 北京: select += HLeixing=北京 and Hstate=已成交; break;case 上海: select += HLeixing=上海 and Hstate=已成交; break; else if (comboBox2.Text =未成交& textBox1.Text =) select += Hstate=未成交 ;else if (comboBox2.Text