1、学 号: 湖南财政经济院课程设计汇报课 程面向对象程序设计题 目 房屋出租管理系统专 业信息管理和信息系统班 级14信管二班姓 名王文雅指导老师龚春红年56月512日课程设计成绩评定表系别:信息管理和信息技术学院 专业:级信息管理和信息系统学 号0姓 名王文雅专题*(设计题目)房屋出租管理系统评定成绩功能要求数据库要求项目 评判标准 (在每一项目对应标准下方空格内标识)优异 良好 中等 及格 不及格 工作量资料搜集方案设计综合应用能力能力技术水平汇报撰写质量实习态度评语: 指导老师: 年月日目录1 绪论42 需求分析52.2数据步骤图:72.3功效需求分析103系统总体设计103.1系统功效模
2、块图103.2系统功效描述114数据库设计114.1概念设计114.2逻辑设计124.3表设计125 系统功效模块实现145.1 model层145.2数据访问层145.3业务逻辑层155.4界面层155.5功效展示和代码166碰到问题和处理措施277总结281 绪论该管理系统采取企业现有软硬件环境及科学管理系统开发方案,建立房屋租赁信息管理系统,实现房屋租赁信息管理计算机自动化。系统应符合物业管理企业原有房屋租赁管理制度,并达成操作直观、方便、实用、安全等要求。将房屋租赁过程中产生房屋信息归入系统, 并利用计算机实现对房屋分类、查询、统计等功效。高效房屋信息查询、预警功效, 建立一个多角度查
3、询系统, 为用户提供强大查询功效, 将房屋位置、户型、房屋面积、和租赁合相同房屋管理中每一要素全部作为查询点, 形成计算机查询和租赁协议期预警体系, 提供高效便捷查询服务。以协议管理为根本, 实现出租房登记、用户管理、协议判定、租金管理等功效。该系统实现是系统管理员对房东,房客,房屋,协议管理;房客对房屋,房东查询和协议上传打印功效;房东对房屋,房客,协议,租金管理和对租房请求申请管理。不一样对象有不一样而功效界面,功效比较完善。本系统总共有23个窗体,6张表格,采取三层架构方法实现。课程设计要求实现:1. 房屋管理:实现管理员或房东对房屋信息增删改查功效;2. 房东管理:实现管理员对房东信息
4、增删改查功效;3. 房客管理:实现管理员或房东对房客信息查询,房东对房客租房请求审核功效;4. 协议管理:房客把协议上传,房东审核协议。5. 租房管理:房客租房请求,房东同意租房功效。试验环境:一台装有Microsoft Visual ,Microsoft SQL server R2软件计算机。2 需求分析2.1业务步骤分析2.1.1顶层业务步骤图:2.1.2一级业务步骤图:一级业务步骤图之房屋管理:一级业务步骤图之房客管理:一级业务步骤图之房东管理:一级业务步骤图之协议管理:一级业务步骤图出租管理:2.2数据步骤图:用户登录模块:该系统用户包含:管理员,房东,房客。查询数据库中用户表(man
5、ager表)以后,有该用户就显示登录成功,没有该用户就显示登录失败,则显示提醒注册用户提醒,注册以后更新用户表。管理员功效界面模块:包含房屋管理,房客管理,房东管理,协议管理。房东管理功效界面:包含房屋管理,房客管理,协议管理,租金管理,接收租房。房客管理功效界面:包含查询房屋,查询房东,租房请求,打印协议。2.3功效需求分析2.3.1总功效步骤图:该系统首先是用户依据自己权限进入该系统,不一样用户有不一样权限和功效。选择用户类型以后即可登陆不一样类型功效模块。 2.3.2细化功效:1. 登录管理:实现以正确登录人员身份才能登陆系统功效,正确登录以后才能进行以后管理。2.添加:添加房屋信息和添
6、加房东信息功效。3.删除:删除房屋信息和删除房东信息功效。4.修改:修改房屋信息和修改房东信息功效。5.查询房屋信息功效:房屋位置、价格、和房屋管理中每一要素全部能够作为查询点。6. 查询房东信息功效:房东类型、房东姓名、和房东管理中每一要素全部能够作为查询点。7.修改密码:用户能够修改密码。8.房主或管理员查询房客功效:请求租房房客具体信息。9.房主上传协议:将word文档以文件形式存放在磁盘内,在数据库中以路径格式存放文件。10.租客下载协议并上传,经过word格式下载下来填写并上传,更新磁盘文件中内容。3系统总体设计3.1系统功效模块图 3.2系统功效描述1. 登录管理:实现以正确用户名
7、、密码和登录人员身份(或权限)才能登陆系统功效,正确登录以后才能进行以后管理。假如登录失败,进行注册操作。2.管理员管理模块:房屋信息增删改查,房客信息查询,房东信息增删改查,协议获取和核查;3.房东管理模块:房屋增删改查,房客查询,协议获取和审核,租金查询,接收租房请求五大功效。4.房客管理模块:查询房屋,查询房东,租房请求,打印协议进行签字。4数据库设计4.1概念设计E-R图:这里用户包含管理员,房东和房客,所以用户和房屋信息表,房东信息表之间是用户操作两张表关系,这里操作试着增删改查。对于租房信息表操作。房东和管理员是查询操作,对于房客来说是指插入信息而操作。而用户对于用户表操作是指登录
8、时查询和未登录时注册。4.2逻辑设计用户信息表(用户名,密码,权限);房屋信息表(房屋编号,房屋位置,房东姓名,房屋租赁状态,房屋类型,装修情况,屋内设施,房屋价格,入住时间,备注信息,房屋图片);房东信息表(身份证号,姓名,性别,电话,房东账户余额,房东类型,房东照片);租房信息表(房屋编号,身份证号,房客姓名,开始租住时间,租住月份数,联络电话,月租金,房客照片);房东类型表(类型编号,类型名称);房屋类型表(类型编号,类型名称);4.3表设计用户信息表:(manager表)usernchar(10)Passwordnchar(10)TypeInt房屋信息表:(roominf表)numnc
9、har(10)locationnchar(10)namenchar(10)typenchar(10)designnchar(10)Faclitiesnchar(10)pricefloatlivetimedatetimeinstruductionvarchar(50)statuenchar(10)imgimage房东信息表:(hosterinformation)idnumnvarchar(50)typeNamenchar(10)hosternamenchar(10)sexnchar(10)telphonenvarchar(50)accountfloatimgimage租房信息表(rentroom
10、表):roomnumnchar(10)idnumnvarchar(50)namenchar(10)starttimedatetimemonthnumintmonthlyrentfloattelphonenvarchar(50)imgimage房东类型表(hostertype表):TypeidIntTypenamenchar(10)房屋类型表(housetype表):TypeidIntTypenamenchar(10)建立表约束:(1)电话号码要为11位:(len(telphone)=(11));(2)房屋编号要为8位:(len(num)=(8));(3)用户密码为6位:(len(passwor
11、d)=(6));(4)身份证号码为18位:(len(idnum)=(18));5 系统功效模块实现5.1 model层实体(Model)用于实现UIBLLDAL之间数据传输。实体(Model)用于封装实体类数据结构,映射数据库数据表或视图,用以描述业务中客观存在对象。Model分离出来是为了愈加好地解耦,为了愈加好地发挥分层作用,愈加好地进行复用和扩展,增强灵活性。这个就是该系统Model层,包含了用户类,房东类,租房类,房屋类,房屋类型类,房东类型类。5.2数据访问层数据访问层:使用 ADO.NET 中数据操作类,为数据库中每个表,设计 1 个数据访问类。类中实现:统计插入、删除、单条统计查
12、询、统计集查询、单条统计有没有判定等基础数据操作方法。封装每个数据表基础统计操作,为实现业务逻辑提供数据库访问基础。这是该系统数据访问层,包含数据库连接类,数据库增删改查操作,用户类,房屋类,房客类,租房类增删改查操作。5.3业务逻辑层业务逻辑层是数据访问层和界面层之间桥梁。经过业务逻辑层,界面层能够调用数据逻辑层中对数据库操作方法。同时,用过业务逻辑层,数据访问层能够把数据库操作结果返回该界面层。这是该系统业务逻辑层,包含了房东类,房屋类,用户类,租房类全部业务操作。5.4界面层展现给用户界面,即用户在使用一个系统时候她所见所得。用于接收用户输入数据和显示处理后用户需要数据。这是该系统界面层
13、,经过连接数据库,实现系统所需全部功效。清楚明了地展示后台数据。很便捷。5.5功效展示和代码1.登录模块:选择用户类型,经过用户名和密码进行登录操作。假如无法登陆请优异行注册。实现不一样用户类型登录代码以下:string s1 = comboBox1.Text; int flag = 0; if (s1 = 管理员) ma.Type = 0; flag = ma.Type; if (s1 = 房东) ma.Type = 1; flag = ma.Type; if (s1 = 房客) ma.Type = 2; flag = ma.Type; ma.User = comboBox2.Text; m
14、a.Password = textBox1.Text; /验证登录 if (auser.managerlogin(comboBox2.Text,textBox1.Text,flag) MessageBox.Show(该用户登录成功!); this.Hide(); if (ma.Type = 0) /管理员主窗体 MainofManager mai = new MainofManager(ma); mai.ShowDialog(); if (ma.Type = 1) /房东主窗体 MainofHoster mah = new MainofHoster(ma); mah.ShowDialog();
15、 if (ma.Type = 2) /房客主窗体 RenterMain mar = new RenterMain(ma); mar.ShowDialog(); else MessageBox.Show(没有该用户,请先注册!); 2.管理员管理模块:从中能够看出包含房屋管理,房客管理,房东管理,协议管理四大模块。2.1房屋管理:treeview中显示房屋多种类型,listview中显示房屋图片,和datagrid中显示该类型房屋全部信息。一目了然。房屋管理模块而功效是对房屋增删改查。在这里也能够修改用户密码。2.1.1房屋增删改查和修改目前用户密码:房屋增加:房屋修改:房屋查询:房屋类型增删改
16、查操作:修改用户密码:这里在点击用户中心修改密码时候,用户名,用户类型,密码要自动显示在修改密码窗体上。2.2房东管理模块:和房屋管理模块思绪是一样。所以该部分功效实现就不贴照片了。2.3协议管理:获取word文档,这个word文档是房客已经签过字文档,所以能够查看房客署名。(下图中最终一行能够看到房客署名)实现代码以下:/调用打开文件对话框获取要打开文件WORD文件,RTF文件,文本文件路径名称 OpenFileDialog opd = new OpenFileDialog(); opd.InitialDirectory = D:/14信管二30班王文雅三层架构实例/wordfile; op
17、d.Filter = Word文档(*.doc)|*.doc|文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|全部文档(*.*)|*.*; opd.FilterIndex = 1; if (opd.ShowDialog() = DialogResult.OK & opd.FileName.Length 0) /建立Word类实例,缺点:不能正确读取表格,图片等等显示 ApplicationClass app = new Microsoft.Office.Interop.Word.ApplicationClass(); Document doc = null; obje
18、ct missing = System.Reflection.Missing.Value; object FileName = opd.FileName; object readOnly = false; object isVisible = true; object index = 0; try doc = app.Documents.Open(ref FileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref mi
19、ssing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing); doc.ActiveWindow.Selection.WholeStory(); doc.ActiveWindow.Selection.Copy(); /从剪切板获取数据 IDataObject data = Clipboard.GetDataObject(); this.richTextBox1.Text = data.GetData(DataFormats.Text).ToString(); finally if (
20、doc != null) doc.Close(ref missing, ref missing, ref missing); doc = null; if (app != null) app.Quit(ref missing, ref missing, ref missing); app = null; 2.4房客管理:这里是管理员对已经递交了租房请求房客查询。3.房客管理模块:包含查询房屋,查询房东,租房请求,打印协议四大模块。3.1查询房屋:能够经过备注,居住日期,价格等房屋信息查询房屋。3.2查询房东:经过身份证号码,房东姓名等租房信息能够查询到房东信息。3.3申请租房:需要把房客自己全
21、部信息全部上传,方便房东审核。3.4打印协议:打印协议是为了签字,签完字以后将文件已房屋编号为名格式保留。方便房东获取协议进行审核。实现打印代码以下:Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); object fileName = D:/14信管二30班王文雅三层架构实例/wordfile/协议.doc; object confirmConversions = Type.Missing; object readOnly = true; ob
22、ject addToRecentFiles = Type.Missing; object passwordDoc = Type.Missing; object passwordTemplate = Type.Missing; object revert = Type.Missing; object writepwdoc = Type.Missing; object writepwTemplate = Type.Missing; object format = Type.Missing; object encoding = Type.Missing; object visible = Type.
23、Missing; object openRepair = Type.Missing; object docDirection = Type.Missing; object notEncoding = Type.Missing; object xmlTransform = Type.Missing; Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open( ref fileName, ref confirmConversions, ref readOnly, ref addToRecentFiles, ref pas
24、swordDoc, ref passwordTemplate, ref revert, ref writepwdoc, ref writepwTemplate, ref format, ref encoding, ref visible, ref openRepair, ref docDirection, ref notEncoding, ref xmlTransform); wordApp.Visible = true; doc.PrintPreview(); 4.房东管理模块:包含房屋管理,租金管理,房客管理,协议管理和接收租房。协议管理功效和上面管理员协议管理是一样就不写了。4.1租金管
25、理:查询每个房子租金。4.2房客管理:查询现在有哪些房客要租房。(和上面管理员房客管理一样,不再烦琐)。4.3接收租房:首先是要查看协议,然后是查看房客信息,这里在datagrid中没选中一行即可显示房客具体信息。点击同意出租时候要在房屋信息表中把表明未出租信息变为已出租。同意出租代码以下所表示: /显示出租以后房客全部信息 string constr = Properties.Settings.Default.constr; private void AgreeRent_Load(object sender, EventArgs e) DataTable dtb = new DataTabl
26、e(); SqlConnection con = new SqlConnection(constr); string sql = string.Format(Select * from roomrent ); SqlDataAdapter ada = new SqlDataAdapter(sql, con); ada.Fill(dtb); dataGridView1.DataSource = dtb; dataGridView1.Columnsimg.Visible = false; /同意出租,即意味着:房间未出租状态要变为已出租 private void button2_Click(obj
27、ect sender, EventArgs e) /roominformation room = new roominformation(); /修改房屋出租状态 HouseDal hda = new HouseDal(); if (hda.statue( num,已出租 ) MessageBox.Show(num+ 号房已经被同意出租啦!); else MessageBox.Show(房东还没有同意,提议电话咨询!); 6碰到问题和处理措施(1) 在将查询以后数据填充到datagrid中时因为忘记将数据加到datagrid中行中而不能显示。type.TypeId = (int)dataGri
28、dView1.CurrentRow.Cells0.Value;textBox1.Text = dataGridView1.CurrentRow.Cells0.Value.ToString();type.TypeName = textBox2.Text = dataGridView1.CurrentRow.Cells1.Value.ToString();(2) 不能实现获取协议和打印协议时,处理措施是:首先在添加引入中引入:Microsoft.Office.Interop.Word;然后:using Microsoft.Office.Interop.Word;这么做完以后还是或有Applicat
29、ion接口不能使用错误,这个问题处理就是:在引用中右Microsoft.Office.Interop.Word引用,打开它属性,把嵌入互操作类型改为:false。 7总结 当我把全部代码全部写完时候,真是一个满足感和成就感油然而生,就算是已经连续熬夜两天情况。不过我也要自我检讨一下,因为代码是三个晚上熬夜写,因为当我开始建数据库时候就就一直感觉无从下手,我想太多,做太少。我认为写系统时候一定要克服为难心理,不要一直自己想呀想,试图经过想象就能够一步到位,不用经过多修改就能够写出一个完美系统。这是不可能,一定要先实现再完美,系统完善一定是不停得试错,不停地改错才会逐步完善。所以写系统时候能够先不
30、需要建一个完美数据库出来,数据库完善也是要经过代码调整而调整。所以能够一边调研,一边完善数据库,一边实现功效。我认为这个系统我数据库建不好,没有实现全部实体关系全部是1:n关系。所以数据库建立还需要改善。尽管现在全部代码全部实现了,不过还是有很多细节没有注意到,下面这些细节全部是需要后续工作去完成。1. 自动登录和记住密码功效没有实现。我是用读取文档和写文档方法实现,不过没有成功。我是想用数据库方法去实现它。2. 当选择用户权限登录时候,房东和管理员注册时应该被限制,不然随便一个人注册一个账号就能够修改房屋,房东和房客信息是很不合理。所以这里要有一个超级用户去实现登录和注册管理。3. 我没有用存放过程写,老师说大型一点系统一定要用存过程去实现。存放过程使用能够少些很多代码。一定要多用。4. 房东账户余额设置那里很不好,因为我没有实现房东余额经过房屋出租完成实现自动添加。