毕业设计(论文)小区物业管理系统设计.doc
目 录1 引言12 需求分析22.1 问题陈述32.2 可行性研究52.3 需求分析5 2.4 开发环境53 系统总体设计73.1 类设计和数据存储73.2 功能模块设计104 详细设计与实现154.1 数据库设计154.2 功能实现174.2.1 管理员模块的实现174.2.2 用户模块的实现235 系统测试与性能分析265.1管理员模块测试26 5.2 客户端模块测试305.3 亮难点展示326 总结33参考文献34附录351引言随着现代科学技术的迅猛发展,计算机技术已渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入数字化时代,有巨大的数据信息等待着加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。怎样开发出既不过于繁琐又不过分简单,适合管理员和多业主使用的方便便捷的物业管理系统,是软件行业长期思考和努力解决的问题。该款软件四海物业管理系统能为小区带来福音,为物业部门与用户提供桥梁,促进物业管理更加人性透明,更有利于物业管理的发展壮大,也能促进用户和与物业公司的和谐相处。本系统管理员和用户权限分明,既能满足用户自助缴费和足不出户的反映问题,又能满足管理员对费用和业主服务的方便管理。本次设计最大的特点就是图形化界面清晰淡雅,有主色调 ,注重细节的把握。用户和管理员界面设计合理,布局方便使用者易入手。本次设计首先调查系统的需求并进行分析整理,用文字与图形工具相结合的方法,描述了系统的功能需求,以便于接下来的开发和后期的维护维护工作。在系统需求分析的基础上进行了系统模块的划分及模块层次关系的确定,对每个模块功能进行了详细的论述和规划;接下来对系统进行详细设计,包括各个功能的代码的详细完成,并进行单元测试;最后对系统进行集成测试并调试,最后,提交一个可以操作的完整系统,并由用户验收。2需求分析2.1 问题陈述怎样开发出既不过于繁琐又不过分简单,适合管理员和多业主使用的方便便捷的物业管理系统,是本该款软件一直致力解决的问题。首先登录本系统会让操作者选择登录身份,若是业主的话在注册时就已经注册过用户名和密码,用当时的用户名和密码即可登录客户端,若是管理员则有相应的用户名和密码,登录成功后即可对小区的缴费信息,楼宇信息,和业主的投诉和建议进行管理(1)系统流程本系统的基本流程如图2-1所示: 图2-1 物业管理系统流程图2.2 可行性研究(1) 技术可行性:本系统利用RCP/SWT技术完成主体框架的建立,系统中用到的Shell、View、Editor都是用拖拽技术完成的,只需要添加适当的监听即可完成大体逻辑的构建。(2) 经济可行性:本系统适合中小型小区使用,一次性仅需1000元,可终身免费维护,很适合物业部门购买使用。(3) 操作可行性:本系统采用Windows最熟知的菜单系统,操作简明直接,弹出的对话窗口直接友好,很符合大众的习惯。(4) 法律可行性:本系统符合法律规范,业主自助缴费等连接网银的模块符合相关法律规定,系统售卖符合商业有关法律。(5) 社会可行性:本系统符合风俗习惯,符合物业行业的规范和相关的规定,能够适应社会对于物业行业的任何变化。 综上所述,该系统的实现是可行的。2.3 需求分析(1) 用户需求:用户可以修改自己的密码和个人入住信息,能处理自己的维修信息,添加投诉建议和自助缴费,能查看小区通知和发表论坛。(2)管理员需求: 管理员是物业公司的接口,他可以实现对物业费,业主入住,楼宇,生活管理等信息的增删改查和分析工作,还包含修改密码功能。(3) 功能需求 登录模块:主要分为管理员登录及用户登录,不同的身份登录即可使用不同的功能。 物业费用管理模块:管理员可以查询业主缴费信息;本月所有欠费用户信息、本月缴欠费比例、应缴和已缴费用。缴费时仅需填写业主号,其它属性便可自动添加,方便管理员收费,这也是本系统的特色。 业主入住管理模块:管理员可以对业主的入住信息进行更新。 楼宇管理模块:可以得到某楼宇的入住率和空置率,已入住房间信息和未入住房间信息,当然还包含对楼宇信息的更新。 日常生活管理模块:管理员可以发表通知,修改维修进度等信息,处理投诉建议,该模块是与业主联系沟通的重点。 个人信息管理:其中用户可以修改登录密码和入住信息,如自己的手机号变更等都是可以通过客户端的修改来同步传达到管理员那端。 住房维护管理:用户不仅可以发表维修信息、查看自己发表过的维修信息、维修进度和删除自己的维修信息,还可以自助缴费。小区信息处理:用户可以查看小区通知和发表论坛。 2.4 开发环境(1) 开发语言:面向对象的高级编程语言JAVA(2) 中间插件:RCP/SWT(3) 数据库 :MySql数据库(4) 开发工具:Eclipse(5) 操作系统:任何操作系统(JAVA的跨平台性),首选Window7。3系统总体设计物业管理系统的设计,主要解决的是对数据库中缴费信息,房屋信息,楼宇信息,生活信息,维修信息等进行的更新操作。首先,需要做好需求分析,确定物业系统中需要解决的问题是什么,然后再详细分析管理员和用户应该具备哪些功能;其次,实现功能模块时,采用先模块化,后集成化,即对系统各个功能模块分别独立设计和调试,在创建系统主登录界面时再将各个功能模块通过主菜单对各个模块的调用集成到一起,最后进行系统整体设计调试。在数据存储和操作方面,采用MySql数据库,通过间接对LinkedList 操作来实现增删改查的更新,然后放进数据库里面;从而提高系统设计的效率。查询操作的时候也是间接通过对LinkedList的操作来并初始化表格或文本框。3.1 类设计和数据存储(1) 类设计 Editor类:首先创建一个Editor类型的类,要implements IEditorInput接口。然后再重写init(IEditorSite site, IEditorInput input)方法this.setInput(input);和this.setSite(site);通过下述方法打开,即可显示在编辑窗口里,然后可以在Editor类上Design界面布局: PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(obj, "editors."+editorName); Shell类: 创建一个Shell类可以一个弹出窗口,它等同于Editor,也可以通过Design来设计界面,添加组件等。它的打开方法是:Display display = Display.getDefault();Shell类 shell = new Shell类(display);shell.open();shell.layout(); while (!shell.isDisposed() if (!display.readAndDispatch() display.sleep(); database类:它封装了数据库的加载驱动、建立连接、创建语句对象、执行查询语句、关闭等操作,简化了设计的流程,若用到数据库类时,只需调用该方法来创建即可。它还定义了存取数据的方法,改查数据的方法,将结果集放在Linkedlist或Map里,以减少对数据库的频繁访问,减轻服务器的压力。 view类:视图类,一般用作导航条用,可根据使用者的身份动态的显示导航条,以实现不同功能的调用。 help类:复用率高的代码段都写成了方法以便以后方便调用。譬如有关数据库连接和存取数据的操作方法;打开Shell和Editor的方法;转换String和DateTime类型时间的方法;获取表格中一行关键字的方法;初始化Combo的方法;弹出确认和出错信息窗口的方法等等。详BFenXiShell.java action类:顾名思义,就是动作的意思,也就是监听类。创建一个action类首先得继承action类,然后再重写run方法,在run方法里可以设置打开窗口或者Editor的方法。一般可将action置于菜单栏之下。 system类:这也是RCP工程中最重要的包,所有涉及到的逻辑和布局都这里面。其中Application就相当于我们的小应用程序的run()方法,ApplicationActionBarAdvisor类里面可以设置菜单项,添加监听,设置状态栏,工具条等,ApplicationWorkbenchWindowAdvisor里面可以设置窗口的初始大小和位置,和默认打开哪个Editor的方法。Perspective类里面可以根据权限设置显示哪个view。(2) 数据存储本系统使用MySql数据库来存储数据,管理员和用户都是直接对数据库操作,根据其权限执行相应的功能,当需要初始化表格时,就从数据库中查找出数据放在表格中,当需要删除或修改数据时,先执行语句若返回的不是-1则说明它删除成功了;若要添加一条数据,若符合数据格式、主键不同的特性则让他添加进去。3.2 功能模块设计(1)登录管理模块:登录管理模块分为管理员和用户进行登录,其对应的操作流程图如下图3-1所示,对应登录界面如图3-2所示。图3-1 登录流程图图3-2 登录界面图管理员登录成功后进入的界面如图3-3所示,用默认的导航Editor显示,用户登录界面如图3-4所示,有管理员发表的通知Editor显示。 图3-3 管理员登录界面图 图3-4 用户登录界面图(2)管理员的功能模块管理员登录成功后,可操作物业费管理、业主入住管理、楼宇管理、生活管理、修改密码等模块功能,具体模块如图3-5 所示: 图3-5 管理员功能模块图(3)用户的功能模块用户登录成功后,导航栏会有友好提示,用户可以修改个人入住信息、修改个人密码,添加维修信息、投诉建议和自助缴费,查看通知和发表论坛。具体模块如图3-6 所示:图3-6 用户功能模块(2) 修改密码模块管理员和用户都可以是实现对密码的修改,流程图如图3-7所示,对应的界面如图3-8所示:图3-7 修改密码流程图 图3-8 修改密码界面图(3)物业费管理模块管理员可根据收据号、缴费年月、业主名等查询业主缴费信息。只要输入年月便可查出本月所有欠费用户信息、本月缴欠费比例、应缴和已缴费用。这也是本系统最复杂的模块部分。需结合业主的入住时间加以判断。仅需填写业主号,其它属性便可自动添加,方便管理员收费,这也是本系统的特色。管理员既可添加户型信息,也可实现物业费的更改。如图3-9所示: 图3-9 物业费管理模块图(4)业主入住模块可支持业主id、身份证号、入住时间、楼宇号、是否楼长等多条件查询;只要增加入住信息并成功设置密码,即代表业主已经注册。客户端即可使用。本功能的特色是能动态的更新不同楼宇未入住的房间号,已保证用户准确合理的注册信息;管理员可更改业主的联系方式,是否楼长等信息。实现对楼宇的间接管理。如图3-10所示: 图3-10 业主入住模块图(5)楼宇管理模块其中包含本系统中销售部门的重点楼宇分析:可选择全部楼宇和任一楼宇查询该楼宇的入住率和空置率,已入住房间信息和未入住房间信息;除了基本的操作,增加房间的信息时也有很多预防添加不合理房间的机制。当然还包含对楼宇信息的更新。图如3-11所示: 图3-11 楼宇管理模块图(6)生活管理模块管理员不仅可以接受用户的电话报修和亲自来访添加维修信息,还可以根据维修号和房间号对维修信息进行查询并对维修情况及时做到更新,管理员可以及时有效的添加通知和消息,用户登录界面的首页也是直接显示此模块,管理员可以及时了解业主的投诉建议,靠用户的监督来促进发展。如图3-12所示: 图3-12 生活管理模块图(7)个人信息管理模块其中用户可以修改登录密码和入住信息,如自己的手机号变更等都是可以通过客户端的修改来同步传达到管理员那端。如图3-13所示: 图3-13 个人信息管理模块图 (8)住房维护管理模块用户不仅可以发表维修信息、查看自己发表过的维修信息、维修进度和删除自己的维修信息,还可以自助缴费。如图3-14所示: 图3-14 住房维护管理模块图(9) 小区信息模块用户仅需填写主题和内容,便可半匿名发表,后面还带有准确的发表时间,可以拉近业主之间的距离;业主能及时查看管理员发布的通知。如图3-15所示:图3-15 小区信息模块图4详细设计与实现4.1数据库设计其中数据库中包括的表有:楼宇表,业主信息表,房间表,投诉建议表,通知表,物业费类型表,物业费缴纳表,用户论坛表,维修信息表,管理员信息表。(1)楼宇表楼宇的属性有楼宇id、楼层数、户数信息。如表1所示:表1 楼宇表字段名类型长度是否为主键是否允许为空楼宇id Varchar4是否楼层数Int4否是户数Int4否是(2)业主信息表业主信息的属性有业主id、身份证号、业主名、房间号、是否楼长、所属楼宇id、入住时间、联系方式信息,业主id为该表的主键业主一旦买房,则必须注册此信息,这样业主在客户端也可以登录。如表2所示: 表2 业主信息表字段名类型长度是否为主键是否允许为空业主idVarchar10是否身份证号Varchar 18否是业主名Varchar10否是房间idInt10否 外键是是否楼长varchar 4否是所属楼宇idVarchar4否 外键是入住时间DateTime 否是联系方式Varchar15否是(3)房间表房间的属性有房间id,楼宇id,户型信息,楼宇一旦建立则应立即添加房间信息。如表3所示: 表3 房间表字段名类型长度是否为主键是否允许为空房间id Varchar10是否楼宇id Varchar4否是户型varchar10否 外键是(4)投诉建议表投诉建议的属性有投诉编号和内容,添加投诉建议时仅需添加内容信息便可添加成功。如表4所示: 表4 投诉建议表字段名类型长度是否为主键是否允许为空编号int6是否内容Text否是(5)通知表通知的属性有编号和内容,添加通知时仅需添加内容便可添加成功,编号是自动添加的。如表5所示: 表5 通知表字段名类型长度是否为主键是否允许为空编号int6是否内容Text否是(6)物业费类型表物业费属性有户型和物业费用,管理员可以添加户型信息和修改对应户型的物业费用。如表6所示: 表6 物业费类型表字段名类型长度是否为主键是否允许为空户型Varchar10是否物业费用Int6否是(7)物业费缴纳表物业费缴纳分为账单id、房间id、业主id、户型、物业费用、优惠金额、缴费情况、交款时间、缴款人信息。账单id是该表的主键每一个缴费单都有一个唯一的id号。如表7所示: 表7 物业费缴纳表字段名类型长度是否为主键是否允许为空IdVarchar 10是否房间idVarchar10否 外键否业主idVarchar 10否 外键否户型Varchar10否 外键否物业费用Int6否是优惠金额Int6否是交款时间time否是收款人Varchar10否是(8)维修信息表维修信息属性有报修id、房间id、联系电话、预约时间、故障现象、和处理情况信息,维修id是唯一可以区别的信息。如表8所示: 表8 维修信息表字段名类型长度是否为主键是否允许为空报修id Varchar10是否房间idVarchar10是 外键否联系电话Varchar15是否预约时间Datetime否是故障现象Text 是否是否已处理Varchar 4否是(9)管理员信息表管理员分为用户名和密码属性,只要有表中有的数据即可以管理员身份登录成功。如表9所示: 表9 管理员信息表字段名类型长度是否为主键是否允许为空IDVarchar10是否passwordVarchar 10否是(10)论坛表 论坛属性有论坛id、业主id、主题、内容、发表时间属性,用户发表论坛时仅需发表主题和内容,其他属性便可自动添加。如表10所示: 表10 论坛表字段名类型长度是否为主键是否允许为空论坛id Varchar10是否业主idVarchar10是 外键否主题varchar15是否内容text否否发表时间DateTime否是4.2 管理员功能实现(1) 物业费管理模块管理员可以受理业主上门缴费,通过各种方式查询缴费历史,能分析缴费,更新物业费用等功能。按时间查询缴费界面图如图4-1所示,图中可以看出用户可以通过数据号,业主名等对缴费历史进行查询,可以得到本月的缴费情况。如图键入1204查询2012年4月份的缴费情况:图4-1 间查询缴费界面图分析缴费如图4-2所示:键入1203对2012年3月份的缴费进行分析,从而得到缴欠费比例、本月应缴费用和已缴费用,还能得出本月未缴费的业主,后勤部门可以打电话去催促缴费等。 图4-2 按年月分析缴费界面图 物业费更新图如图4-3所示,管理员可以对物业费进行更改,添加费用类型信息,是物业费管理的生命力所在。图4-3 物业费更新图管理员只需填写业主的id号,其他信息即可动态显示,然后确认缴费,即可缴费成功,业主缴费明细图如下图4-4所示: 图4-4 业主缴费明细图(2)业主入住模块管理员可以根据业主id、身份证号、入住时间、楼宇号、是否楼长等多条件查询。界面如图4-5所示: 图4-5 入住信息查询界面图若业主买过房子,则必然会注册一个业主id,填写必要的入住信息,用户则可在家用互联网来利用客户端来享受客户服务,业主信息注册界面图如图4-6所示:图4-6 注册入住信息界面图 若业主联系方式等信息有所变动,既可自己自行修改,也可以通过管理员那边修改,修改入住信息界面图如图4-7所示: 图4-7 修改入住信息界面图(3)楼宇管理模块如有扩建楼宇或爆破楼宇时则要增删楼宇信息,如下图4-8所示: 图4-8 改查楼宇信息界面图 销售部门更看重楼宇的售卖情况,得出楼宇的入住率和空置率等信息,指定相应的促销政策等,楼宇分析界面如图4-9所示: 图4-9 楼宇分析界面图 当有新楼宇建成时,管理员应添加相应的房间信息,房间管理界面如图4-10所示: 图4-10 楼宇分析界面图(4)日常生活管理模块投诉建议信息如图4-11所示:图4-11 投诉建议界面图管理员可以接受用户的电话等信息来添加报修信息,还能及时修改维修状态等信息,维修处理界面图如下图4-12所示: 图4-12 维修处理界面图4.3用户功能实现(1)个人信息管理模块用户可以及时修改自己的变更信息,来传达到管理员那端,个人信息查改界面如图4-13所示: 图4-13 个人信息查改界面图(2)住房维护管理模块用户还可以通过客户端直接发表投诉建议,如下图4-14所示: 图4-14 个人信息查改界面图用户需通过此模块来处理自己的物业费等信息和住房信息,如下图个人维修界面图4-15所示,用户可以查看自己的维修进度和发表维修信息。图4-15 个人维修处理界面图业主可以通过客户端进行自主缴费,省去了去物业部门的交现金烦恼,业主自主缴费如下图4-16所示:图4-16 个人信息查改界面图(3)小区信息管理模块用户可以通过客户端来发表论坛,这是业主交流的平台,论坛界面图如下图4-17所示:图4-17 发表论坛界面图5系统测试与性能分析对系统的各个模块进行测试是整个开发过程中的一个重要的步骤。测试任何产品都有两种方法,一个是黑盒测试,一个是白盒测试。黑盒测试法把程序看成一个黑盒子,完全不考虑程序内部的结构和处理过程,只检查程序功能是否能按照说明书正常使用,程序是否能适当的接收输入数据产生正确的输出信息,又称为功能测试。白盒测试法是把程序看成装在一个透明的白盒里,也就是完全了解程序的结构和处理过程,按照程序内部的逻辑测试程序,称为结构测试。对该系统模块的测试主要采用的是黑盒测试,下面进行各个功能模块的测试工作。5.1管理员模块的测试(1)物业费管理管理员通过收据号查询缴费明细,若不存在,否则会用文本框提示:不存在此信息;如果输入的日期不符合要求,也会提示:输入不合法;按照业主名查询时,不存在此业主名,则也无法查询出来信息。缴费分析时,如果输入的日期格式不符合要求时,则会弹出窗口显示日期不合法,请按照正确的日期格式输入。当所有输入不合法时,后边的按钮都会变成不可点击的。缴费查询输入测试如图5-1所示: 图5-1 缴费查询输入测试界面图如果业主前来缴费,如果不存在此业主的id号,则无法缴纳费用,缴费按钮则无法编辑。缴费输入测试界面如图5-2所示: 图5-2 缴费输入测试界面图(2)业主入住管理管理员可以通过业主id和身份证号等信息来查询业主信息,如果数据库中没有对应的信息,则系统会弹出信息提示:不存在该用户id;不存在该用户身份证相关信息。入住查询测试界面如图5-3所示:图5-3 入住查询测试界面图(3)楼宇管理管理员除了按照要求分析楼宇信息外还要添加房间信息,如果添加房间时房间号不是以楼宇号开头,或者楼层数超过房间号的中间2位,或者房间号的后两位超过每层最多的户数,则会提示:添加失败,房间号不合法信息。添加房间信息测试界面如图5-4所示: 图5-4 添加房间测试界面图(4)生活信息管理当管理员要查询某个维修信息时,可以通过维修号和房间号来查询,如果不存在该维修号的信息或者该房间的信息时,则会提示:不存在该维修号;不存在该房间号信息。添加房间测试界面如图5-5所示:图5-5 添加房间测试界面图 当管理员受理客户添加维修记录信息时,当添加的房间号无产权或者电话等信息信息不符合要求、备注为空等,系统都会提示。添加维修测试界面如图5-6所示:图5-6 添加维修信息测试界面图(5)修改密码当管理员或用户选择修改密码时,首先必须要求原密码输入正确,否则后续文本框不可编辑;原密码输入正确后还要求新密码不能为空;请输入的密码和确认密码必须一致。这样才能修改成功。修改密码测试界面如图5-7所示:图5-7 修改密码测试界面图5.2用户模块的测试(1)个人信息管理修改密码模块与管理员修改密码要求相同,界面如图5-7所示(2)小区信息管理当用户在论坛上发表的主题或内容为空,则提交内容时系统会提示:提交失败,关键信息不能为空,发表论坛信息测试界面如图5-8所示: 图5-8 发表论坛信息测试界面图(3)住房维护管理当用户添加投诉信息内容为空时,系统会提示用户关键信息不能为空,则添加失败,添加投诉信息测试界面如图5-9所示: 图5-9 添加投诉信息测试界面图 通过客户端,业主可以选择自助缴费,若所选缴费月份已缴纳过费用,则系统提示:缴费失败,您本月物业费已经缴完信息。点击查询缴费历史,即可查询哪个月份没缴费用,自助缴费测试界面如图5-10所示: 图5-10 自助缴费测试界面图5.3亮难点展示(1)采用鼠标FocusGain和FocusLost方法来对所输入的内容进行预检验,并有相应的提示信息和后续的文本框不可编辑等操作来限制不合法的继续输入。 (2)界面风格不唯一,功能菜单的实现多样:有ExpendBar,Tree,和传统的下拉菜单形式。增删改查真正做到了不枯燥,有的是对表格选中的一列进行更新操作、有的可在页面上直接进行更新操作,有的用弹出窗口的方式来接受用户所要更改的信息。 (3)权限处理分明且人性化,用户权利下放,可自助缴费,还有缴费鼓励政策,强大的输入提示功能和动态显示动能。 (4)封装性强,只要是复用率高的代码段都写成了方法以便以后方便调用。譬如有关数据库连接和存取数据的操作方法;打开Shell和Editor的方法;转换String和DateTime类型时间的方法;获取表格中一行关键字的方法;初始化Combo的方法;弹出确认和出错信息窗口的方法等等。详BFenXiShell.java (5)有关id号的所有属性都是固定且不可编辑的,这也省去了用户和管理员的许多麻烦。 (6)正则表达式的熟练使用,省去了字符串校验的许多麻烦。 (7)界面清晰淡雅,有主色调 ,注重细节的把握。 6总结与不足感谢王薇和李纯莲老师的耐心指导,基本完成了物业管理系统的设计与实现。通过本次的设计与实现我收获颇多。真正编码的时间应只占软件设计过程中的三分之一,其它时间应该是调试和维护。可以用黑盒测试来测验它的功能是否全部实现;白盒测试来校验它的内部逻辑是否合理。测试过程最好让独立的第三方参与进去,这样才更有针对性;测试一旦发现错误,应敢于改正,不要畏首畏尾嫌麻烦,并且需要耐心和认真,不可带有消极情绪。只有这样设计出来的软件可塑性和健壮性才会很强。编码过程中一定要仔细认真,相同的地方的错误不可犯第二次;可行性研究和总体设计阶段一定要多下功夫;任何细小的不周密的设计都会导致后续工作的复杂度提升;如果某代码段复用率高,一定要将其封装成方法,这样才能让编程成为一种乐趣;要遵循高内聚,低耦合的设计原则,简要的说就是如果只需要一个参数就不要调用返回二个参数的方法,更不能调用一个方法内部的内容;设计过程中一定要和同伴合作交流,取长补短,这样才能共同提高。参考文献1Java语言程序设计 张振领编 中国电力出版社2Java 程序设计教程 耿详义编,清华大学出版社3Java课程设计 耿详义编 清华大学出版社4Java视频教程 孙鑫主讲