郑州科技学院课程设计课程设计名称:C#房屋中介管理系统专业班级: 10级计科2班学生姓名:高道辉学号: 201015042指导教师:王玉萍课程设计时间:摘要房屋中介管理系统用来对求租者的求租意向设置开始到最后的住户信息管理全过程进行管理.该系统是应对房屋中介管理的现代化,网络化,逐步摆脱房屋中介管理的人工管理方式,提高求助者管理效率而开发的,它包括求租者的信息录入、房屋信息的查询、客户信息查询、出租人信息查询、利润信息等。
可以更快的了解到每个求租者的房屋信息,更加快捷的为不同的求租者分配到合适的房子,提高资源的利用率,使房屋中介更加智能化,人性化。
房屋中介管理系统是一个现代化软件系统,它通过集中式的信息数据库将各种档案管理功能结合起来,达到共享数据,降低成本,提高效率,改进服务等目的。
目录1.引言 (1)1.1问题的提出 (1)1.2课题的研究目的 (1)1.3课题所要解决的问题 (2)1.4课题的研究意义 (2)2.概要设计 (3)2.1设计目的 (3)2.2设计内容 (3)3.系统分析 (3)3.1需求分析 (3)3.2可行性分析 (3)4.系统设计 (4)4.1系统运行环境 (4)4.2系统设计 (4)4.3概念结构设计 (5)4.4逻辑结构设计 (6)出租人信息: (7)4.5窗体设计 (8)主窗体 (8)图表10 房屋信息 (9)5.主要功能模块设计 (11)5.1主窗体 (11)5.2顾客信息查询窗体 (16)总结 (22)参考文献 (23)1.引言随着社会的发展,现在,越来越多的人开始涌向城市。
在城市中大多数劳动者还是买不起房子的,所以他们就必须租房子。
以往的各种房子信息都不全,而且是人工去选择如何去分房子,比较麻烦与冗余,此系统的应用将会大大减轻人力的劳动,让您能更加合理高效的选择您想要租的房子,对于出租者来说,也能很好的管理,给他们的生活带来大大的方便。
此软件控制租房和管理已取代了传统全手工方式。
采用先进的计算机系统管理房屋、客户、出租人等信息。
能及时的反映出出租房子的数目,以及所剩的房子数,能查询到出租人的信息,能查到客户的信息,能记录房子的租期,以及租金。
1.1问题的提出目前,很多房屋出租都存在这样的现象:分散的、不系统的,管理比较混乱,不利于出租人和顾客能高效的选择自己心仪的房屋,所存在问题如下:1)客户对房屋的具体信息不了解2)出租人对客户的信息不了解,造成管理不便3)客户不能及时的选择自己想要的房子4)各种中间环节繁琐,冗余1.2课题的研究目的研究该课题是为了通过对“房屋中介管理系统”的设计与实现,熟悉这类的信息管理系统的开发原理及流程。
在设计过程,能够深入地理解面向对象设计方法的优越性,获得这些方面的相关经验。
对一个即将毕业的计算机专业本科生来说,又想在软件行业领域里有所发展,研究并应用面向对象设计方法是百益无一害的,可以使其走向社会后能够快速地适应行业需求。
这正是本次设计的根本目的所在。
1.3 课题所要解决的问题◆统计房屋的信息(例如在地址、装修、户型等)◆统计出客户的信息(例如客户的编号、姓名、性别、身份证号等)◆统计出出租人的信息(编号,姓名,联系方式等)1.4课题的研究意义首先,该课题属于管理信息系统范畴。
而管理信息系统(Management Information System,简称MIS)在现代社会已深入到各行各业,是一个不断发展的新学科,是由人和计算机设备或其他信息处理手段组成并用于管理信息的系统。
再加上行业信息化的热潮才刚刚开始,特别是中小型企业的信息化建设步伐刚刚迈出第一步。
管理信息系统的开发的市场将是非常庞大的。
这种需求对开发人员在数量上和素质上的要求也是非常迫切的。
为了满足市场的需求以及能在竞争中取胜,系统设计人员就不仅仅是单纯地满足用户对功能的要求,还要从设计方法上来加以改进。
其次,面向对象方法是一种非常实用的软件开发方法,它一出现就受到软件技术人员的青睐,现在已经成为计算机科学研究的一个重要领域,并逐渐成为软件开发的一种主要方法。
面向对象的程序设计将数据及对数据的操作方法封装在一起,作为一个互相依存、不可分离的整体。
采用这种方法来设计系统,可以增加系统的安全性。
同时通过继承与多态性,使程序具有很高的可重用性,使软件的开发和维护带来了方便。
由于面向对象方法的突出优点,它才被广大用户所爱好。
2.概要设计2.1设计目的根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理信息系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。
2.2设计内容题目可根据自己熟悉的物品填充,例如图书进销存系统、电脑设备进销存系统、药品进销存系统等等,下面以房屋中介系统为例完成功能:1)房屋信息、出租人信息2)客户查询、房屋查询以上功能可根据自己对不同物品主要的管理需求进行调整,可以增加或减少相应功能。
3.系统分析3.1需求分析就目前社会中房屋出租所出现的问题,做了分析,通过此系统要解决各类有关房屋出租以及住户的信息的统计及查询,能够快速的进行各类信息的添加,修改以及查询,减少工作人员的参与和基础信息的录入,使系统具有良好的自治功能和信息循环,减少管理人员,减轻管理人员的任务,降低管理成本。
3.2 可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。
因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。
本系统数据库采用目前比较流行的Microsoft SQL Server,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;开发工具采用Delphi7,Delphi7是目前应用最广泛的数据库系统开发工具,可以快速开发Windows应用程序。
4.系统设计4.1系统运行环境系统开发平台:Microsoft Visual Studio 2005系统开发语言:C#数据库管理软件:SQL Server 2005运行平台:Windows 2003 Win7运行环境: Framework SDK v2.04.2系统设计图表 1 系统业务图4.3概念结构设计1. 客户信息实体E-R 图:2.出租人信息实体E-R 图:图表 3 出租人信息实体E-R 图出租人信息租金 联系方式姓名身份证号合同编号备注 图表 2 客户信息实体E-R 图3.房屋信息实体E-R 图:厨房卫生间4.4逻辑结构设计根据设计好的E-R 图在数据库中建立各表,系统数据库中各表的逻辑结构如下:客户信息表:房屋信息宽带备注 楼层 实住人数空调电话 电视 额定人数 地址户型 户主身份证号 编号 价位 面积 图表 1 房屋信息实体E-R 图出租人信息:房屋信息:Internet bit 否有网络否Remark bit 否备注4.5窗体设计主窗体图表 8 登录窗口图表9 出租人信息图表10 房屋信息图表 11 房屋查询窗体图表 12 客户查询窗体图表43 客户入住查询窗体5.主要功能模块设计5.1主窗体1.实现主窗体的运行static void Main(){Application.Run(new mainform());}private void menuItem5_Click(object sender, System.EventArgs e) {Application.Exit();}private void menuItem6_Click(object sender, System.EventArgs e) {Form Renter = new Renter();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}Renter.MdiParent = this;Renter.WindowState = FormWindowState.Maximized;Renter.Show();}private void menuItem7_Click(object sender, System.EventArgs e) {Form Room = new Room();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}Room.MdiParent = this;Room.WindowState = FormWindowState.Maximized;Room.Show();}private void menuItem8_Click(object sender, System.EventArgs e) {Form RoomQuery = new RoomQuery();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}RoomQuery.MdiParent = this;RoomQuery.WindowState = FormWindowState.Maximized;RoomQuery.Show();}private void menuItem10_Click(object sender, System.EventArgs e) {Form Customer = new Customer("1");for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}Customer.MdiParent = this;Customer.WindowState = FormWindowState.Maximized;Customer.Show();}private void menuItem9_Click(object sender, System.EventArgs e) {Form CustomerQuery = new CustomerQuery();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}CustomerQuery.MdiParent = this;CustomerQuery.WindowState = FormWindowState.Maximized;CustomerQuery.Show();}private void menuItem11_Click(object sender, System.EventArgs e) {Form Profit = new Profit();for(int x=0;x<MdiChildren.Length;x++){Form tempChild = (Form)MdiChildren[x];tempChild.Close();}Profit.MdiParent = this;Profit.WindowState = FormWindowState.Maximized;Profit.Show();}private void toolBar1_ButtonClick(object sender,System.Windows.Forms.ToolBarButtonClickEventArgs e){switch(toolBar1.Buttons.IndexOf(e.Button)){case 0:Form Renter = new Renter();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}Renter.MdiParent = this;Renter.WindowState = FormWindowState.Maximized;Renter.Show();break;case 1:Form Room = new Room();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}Room.MdiParent = this;Room.WindowState = FormWindowState.Maximized;Room.Show();break;case 2:Form RoomQuery = new RoomQuery();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}RoomQuery.MdiParent = this;RoomQuery.WindowState = FormWindowState.Maximized;RoomQuery.Show();break;case 3:Form CustomerQuery = new CustomerQuery();for(int x=0;x<this.MdiChildren.Length;x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}CustomerQuery.MdiParent = this;CustomerQuery.WindowState =FormWindowState.Maximized;CustomerQuery.Show();break;case 4:Form Profit = new Profit();for(int x=0;x<MdiChildren.Length;x++){Form tempChild = (Form)MdiChildren[x];tempChild.Close();}Profit.MdiParent = this;Profit.WindowState = FormWindowState.Maximized;Profit.Show();break;case 5:Application.Exit();break;}}private void menuItem4_Click(object sender, System.EventArgs e){Form Help = new Help();for(int x=0;x<MdiChildren.Length;x++){Form tempChild = (Form)MdiChildren[x];tempChild.Close();}Help.MdiParent = this;Help.WindowState = FormWindowState.Maximized;Help.Show();}}5.2顾客信息查询窗体1. 对顾客信息查询,方便进行相关的操作,代码如:private void btQuery_Click(object sender, System.EventArgs e){strSql=" select CustomerName 客户姓名,Sex 性别,NativePlace 籍贯,IDCard 身份证号,InDate 入住时间,"+"RentalDate 交租时间,CustomerRental 月租,ContractID 合同编号,Remark 备注,CustomerID 客户编号,"+"RoomID 房屋编号from Customer where ";if(textRoomID.Text != "")strSql = strSql+"RoomID="+"'"+textRoomID.Text+"'";else if(textCustomerID.Text != "")strSql =strSql+"CustomerID="+"'"+textCustomerID.Text+"'";else if(textName.Text != "")strSql = strSql+"CustomerNamelike"+"'%"+textName.Text+"%'";else{MessageBox.Show("请选择查询条件!","提示");return;}FillDataGrid(strSql);}private void btAll_Click(object sender, System.EventArgs e){strSql=" select CustomerName 客户姓名,Sex 性别,NativePlace 籍贯,IDCard 身份证号,InDate 入住时间,"+"RentalDate 交租时间,CustomerRental 月租,ContractID 合同编号,Remark 备注,CustomerID 客户编号,"+"RoomID 房屋编号from Customer";mandText = strSql;FillDataGrid(strSql);}private void btNew_Click(object sender, System.EventArgs e){textCustomerID.Clear();textName.Clear();textRoomID.Clear();}private void btCheck_Click(object sender, System.EventArgs e){try{Profit profit = newProfit(dataGrid1[dataGrid1.CurrentCell.RowNumber,9].ToString());profit.Show();}catch{MessageBox.Show("请先选择客户!","提示");}}public void FillDataGrid(string sql){if(sqlConnection1.State == ConnectionState.Closed)sqlConnection1.Open();Console.WriteLine(sql);ds = new DataSet("t_customer");SqlDataAdapter adapter = newSqlDataAdapter(sql,sqlConnection1);adapter.Fill(ds,"t_customer");dataGrid1.SetDataBinding(ds,"t_customer");}}2.保存出租者的信息,代码如下private void btNew_Click(object sender, System.EventArgs e){this.textContact.Clear();this.textContractID.Clear();this.textRenterID.Clear();this.textRenterName.Clear();this.textRenterRental.Clear();this.textRemark.Clear();}private void btSave_Click(object sender, System.EventArgs e){this.add = true;if(textContractID.Text==""||textRenterID.Text==""||textRenterRental.T ext==""){MessageBox.Show("请输入完整信息!","提示");return;}int renterID = Convert.ToInt16( this.textRenterID.Text);string renterName = this.textRenterName.Text;float renterRental =Convert.ToSingle(this.textRenterRental.Text);int contractID = Convert.ToInt32(this.textContractID.Text);string contact = this.textContact.Text;string remark = this.textRemark.Text;if(add){this.renterManage.Renter_Add(renterID,renterName,renterRental,contrac tID,contact,remark);MessageBox.Show("保存成功!");this.FillDataGrid(this.strSql);}else{if(this.renterManage.Renter_Modify(renterID,renterName,renterRental,c ontractID,contact,remark)){MessageBox.Show("修改成功!","提示",MessageBoxButtons.OK,rmation);this.FillDataGrid(this.strSql);}else{MessageBox.Show("修改失败!","提示",MessageBoxButtons.OK,rmation);}mandText = this.strSql;try{this.sqlConnection1.Open();this.sqlCommand1.ExecuteNonQuery();this.FillDataGrid(this.strSql);}catch(System.Exception E){MessageBox.Show(E.ToString());}finally{this.sqlConnection1.Close();}this.add = false;}}3.出租者管理,部分代码如下:public void Renter_Add(int renterID,string renterName,float renterRental,int contractID,string contact,string remark){this.strSql="insert into Renter(RenterID,RenterName,RenterRental,ContractID,Contact,Remark)"+"values("+renterID+",'"+renterName+"',"+renterRental+","+contractID+",'"+co ntact+"','"+remark+"')";mandText = this.strSql;try{this.sqlConnection1.Open();this.sqlCommand1.ExecuteNonQuery();}catch(System.Exception E){Console.WriteLine(E.ToString());}finally{this.sqlConnection1.Close();}}public bool Renter_Modify(int renterID,string renterName,float renterRental,int contractID,string contact,string remark){this.strSql="update Renter setRenterName="+renterName+","+"RenterRental="+renterRental+","+"ContractID="+contractID+","+"Contact="+contact+","+"Remark="+remark+" where RenterID="+"'"+renterID+"'";mandText=this.strSql;try{this.sqlConnection1.Open();this.sqlCommand1.ExecuteNonQuery();return true;}catch(System.Exception E){Console.WriteLine(E.ToString());return false;}finally{this.sqlConnection1.Close();}}public void Renter_Del(int renterID){this.strSql="delete from Renter where RenterID="+"'"+renterID+"'";mandText=this.strSql;try{this.sqlConnection1.Open();this.sqlCommand1.ExecuteNonQuery();}catch(System.Exception E){Console.WriteLine(E.ToString());}finally{this.sqlConnection1.Close();}}总结在这个软件设计的最初,按照老师的要求一步一步往下做,努力作好需求分析。