住宅小区物业管理系统(共28页).doc
精选优质文档-倾情为你奉上上海电力学院应用软件设计(1)课程设计题目: 住宅小区物业管理系统 学 号: 姓 名: 院系: 计算机科学与技术学院 专业年级: 计算机科学与技术2010级 2013 年 1 月 17日目 录22233346712131313141617182022232828专心-专注-专业第一章、系统需求分析及设计1.1 问题分析随着计算机及网络技术的高速发展,数字化、网络化的信息革命从根本上推动了住宅小区物业管理系统的发展进程,计算机日益成为住宅小区物业管理的主要设备。对于小区物业管理来说,其工作流程的繁杂性、多样化、管理复杂、收缴费用与设备维护繁琐。计算机已完全能够胜任物业管理工作,而且更加准确、方便、快捷、高效、清晰、透明,它完全可以克服以上所述的不足之处。这将给项目查询和管理带来很大的方便,从而给物业管理工作带来更高的效率,这也是物业管理正规化、现代化的重要标志。因此,开发一套高效率、无差错的小区物业管理系统软件十分必要。由于小区物业管理涉及到费用问题,为了增强系统的保密性,使业主利益不受损害,使业主能够对自家的物业费用和投诉等情况提供透明化、直观的了解。该系统就是为小区管理者和小区用户更好的维护各项物业管理业务处理工作而开发的管理软件。1.2 任务概述本学期的数据库基于SQL Server,所以此次课程设计时数据库用SQL Server,开发环境用JAVA。目的是在完成这学期“数据库原理”和“JAVA程序设计”后能够掌握数据库设计的基本步骤并能和JAVA结合完成一个小型应用软件的设计。使用Eclipse编辑软件和JDK连接数据库,对住宅小区物业管理系统实现以下功能:1) 小区管理小区的单位物业费、停车费修改,小区的增删和修改,小区总人数的统计其中对于一个小区的单位物业费与停车费是固定的2) 用户管理用户的增加修改功能,用户信息的查询对于一套房子售出,只是用户的更改,不需删除功能,故只要增加和修改,以及查询功能。3) 物业管理实现查询、缴费、统计、提醒四个功能根据房屋面积计算物业费,在此设定一幢楼的面积可能不一致(如算入了一楼花园的面积)所以面积与楼号没有函数依赖。统计是计算某个时间段的物业费的加和。提醒是根据当前月份往前推两个月之前的未缴物业费列出名单,如现在是一月份,且去年12月之前的月份还未缴,将进入名单。4) 停车管理实现停车位管理、查询、缴费、统计、提醒五个功能停车位作为固定的资产,不能随意的增删,在此只做出新增的功能,不加入删除功能,如需删除,需要访问数据库进行增删,其余功能与物业费一直5) 维修管理维修登记、查询、缴费首先进入登记,才会记录、可查询,缴费单号按照流水排列,资金记录作用,不能随意更改,为提高安全性,没有删除、修改功能。6) 修改密码只有系统管理员才能登陆,只有修改密码的功能,为保证安全性,新增、修改、删除管理员需访问数据库进行修改。本系统面向管理员,不面向用户。1.3 开发技术使用Java程序设计以及JDBC、ODBC数据库等编程技术实现一个界面简洁友好、操作简单客户端系统。1.4 运行环境操作系统:Microsoft Windows 8SQL:Microsoft SQL Server 2012Java:JDK7编辑环境:Eclipse JUNO1.5 系统主要功能1)信息录入:新的物业费、停车费产生,新的维修记录产生,都需要往数据库中添加信息。 2)信息修改:当数据库中信息发生了改变,需要及时修改信息,如用户缴纳了费用 3)信息查询:可以按条件查询住户基本信息、住户缴费信息、停车位基本信息、停车费缴纳信息、维修信息等,并尽可能实现多条件组合查询。 4)统计、汇总在规定时间段内小区的应交物业费总额、未交物业费总额等。 5)将近要交的物业费、停车费,已过期未交的物业费、停车费请给出提醒。6)本系统特性a. 易用性:系统采用个人电脑为客户,界面设计力求简单明确,简单快速、方便使用。设计人性化,操作简单便捷。b. 安全性:用户必须经过输入用户名和密码才能登录到系统中,防止非法用户进入系统,同时用户要分系统管理员,图书管理员,读者等不同的权限,防止出现越权操作。c. 扩充性:系统模块之间相互独立,系统可扩充性强。当添加新功能时,只需改动少量部分或不改动,而不是重新设计。1.6 系统总体构成登录界面包含登录功能主界面包含首页、小区管理、用户管理、物业管理、停车管理、维修管理、修改密码、注销功能。第二章、系统数据库设计与实现单位物业费停车费2.1 系统数据库概念结构设计区号小区管理楼号1 1房号费用查询费用查询 编号区号楼号维修人区号面积编号区号房号 n n内容电话楼号报修日期报修拥有停车位信息住户维修n1登记时间1是否支出维修日期车牌号房号姓名家庭人数金额维修基金 1 1工作单位缴费缴费编号区号缴费单号区号楼号缴费单号 n n经手人年月房号经手人管理员停车缴费信息集了物业缴费信息年月缴费日期缴费日期是否已缴应缴费应缴费是否已缴密码账户1)住户信息:区号、楼号、房号、面积、电话、户主姓名、工作单位、家庭人数、维修基金2)物业费缴费信息:区号、楼号、房号、年月份、应缴物业费、是否已缴费、缴费日期、经手人、缴费单号 3)停车位信息:区号、停车位编号、楼号、房号、车牌号、登记时间4)停车费缴费信息:区号、停车位编号、年月份、应缴停车费、是否已缴费、缴费日期、经手人、缴费单号5)维修信息:维修编号、楼号、房号、维修内容、报修日期、维修日期、金额、是否从维修基金支出、维修人6)小区信息:区号、单位面积物业费、停车费7)管理员信息:管理员账户、管理员密码2.2系统数据库逻辑结构设计(1)模式设计:按系统整体E-R模型,写出关系模式;并利用数据字典加以描述。(如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、有何约束条件等信息)住户信息(区号,楼号,房号,面积,电话,户主姓名,工作单位,家庭人数,维修基金)列名称类型宽度允许空值默认值约束主键外键说明Areanovarchar4否是是区号Buildingnovarchar4否楼号Housenovarchar4否房号Areaint否面积Telnovarchar11否电话Usernamevarchar8否住户姓名Workaddrvarchar40是工作单位Homenumint是家庭人数Fundsint否维修基金物业费缴费信息(区号,楼号,房号,年月份,应缴物业费,是否已缴费,缴费日期,经手人,缴费单号)列名称类型宽度允许空值默认值约束主键外键说明Areanovarchar4否是是区号Buildingnovarchar4否楼号Housenovarchar4否房号Sdatesmalldatetime否年月Scondofeeint是Scondofee>0实缴费用Paybit是False是否已缴Pdatesmalldatetime是Getdate()缴费日期Handlervarchar8是经手人Paynovarchar10是缴费单号停车位信息(区号,停车位编号,楼号,房号,车牌号,登记时间)列名称类型宽度允许空值默认值约束主键外键说明Areanovarchar4否是是区号Parknovarchar6否停车位编号Buildingnovarchar4是是楼号HousenoVarchar4是是房号CarnoVarchar12是车牌号PdateSmadatetime是Getdate()登记时间停车费缴费信息(区号,停车位编号,年月份,应缴停车费,是否已缴费,缴费日期,经手人,缴费单号)列名称类型宽度允许空值默认值约束主键外键说明Areanovarchar4否是是区号Parknovarchar6否停车位编号Sdatesmalldatetime否年月Sparkfeeint否Sparkfee>0实缴费用Paybit否False是否已缴Pdatesmalldatetime否Getdate()缴费日期Handlervarchar8否经手人Paynovarchar10否缴费单号维修信息(维修编号,区号,楼号,房号,维修内容,报修日期,维修日期,金额,是否从维修基金支出,维修人)列名称类型宽度允许空值默认值约束主键外键说明Repairnovarchar4否是维修编号Areanovarchar4否是区号Buildingnovarchar4否楼号Housenovarchar4否房号Contentvarchar50否维修内容Reportdatesmalldatetime否报修日期Repairdatesmalldatetime是Repairdate>=Reportdate维修日期Moneyint是金额Fundspaybit是false是否从维修基金支出Repairnamevarchar6是维修人小区信息(区号,单位面积物业费,停车费)列名称类型宽度允许空值默认值约束主键说明Areanovarchar4否是区号Condofeeint否单位物业费Parkingfeeint否停车费管理员信息(管理员账户,管理员密码)列名称类型宽度允许空值默认值约束主键说明Adminnamevarchar20否是管理员帐户Passwordvarchar15否管理员密码(2)子模式设计:即针对自己的设计模块的应用需定义什么样的视图表结构;并利用数据字典加以描述。物业费信息(区号,楼号,房号、应缴时间,应缴物业费,实缴物业费,是否缴费,实缴时间,实缴时间,缴费单号)列名称类型宽度允许空值默认值约束主键外键说明Areanovarchar4否区号Buildingnovarchar4否楼号Housenovarchar4否房号Sdatesmalldatetime否年月CondofeesintCondofee*Area否应缴费用Scondofeeint是Scondofee>0实缴费用Paybit是False是否已缴Pdatesmalldatetime是Getdate()缴费日期Handlervarchar8是经手人Paynovarchar10是缴费单号停车费信息(停车位编号,区号,楼号,房号,车牌号,应缴时间,应缴停车费,实缴停车费,是否缴费,实缴时间,实缴时间,缴费单号)列名称类型宽度允许空值默认值约束主键外键说明Parknovarchar4否停车位编号Areanovarchar4否区号Buildingnovarchar4否楼号Housenovarchar4否房号Carnovarhar12车牌号Sdatesmalldatetime否应缴时间ParkfeesintCondofee*Area否应缴费用Sparkfeeint是Scondofee>0实缴费用Paybit是False是否已缴Pdatesmalldatetime是Getdate()缴费日期Handlervarchar8是经手人Paynovarchar10是缴费单号2.3系统数据库的物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于某些属性建立索引。给出所建立的索引。(包括按哪些表中哪些属性按升序还是降序来创建索引及相应的T-SQL的创建语句)。每个表的主键为聚集索引本系统创建了三个非聚集索引Condofee按照Payno属性升序create NONCLUSTEREDindex index_Condofee on Condofee(Payno)Parkfee按照Payno属性升序create NONCLUSTEREDindex index_Parkfee on Parkfee(Payno)Repair按照Areano,Buildingno,Houseno,Content,Reportdate 属性升序create UNIQUE NONCLUSTEREDindex index_Repair on Repair(Areano,Buildingno,Houseno,Content,Reportdate)2.4 系统数据库设计实现及运行1、数据库的创建T-SQL语句:create database manageon (name='manage_data', filename='M:databasemanage_data.mdf', size=20mb, maxsize=300mb, filegrowth=5%)log on(name='manage_log', filename='M:databasemanage_log.ldf', size=2mb, maxsize=20mb, filegrowth=1mb )2、数据表的创建(可同时在创建时定义相关的约束)T-SQL语句:create table Area_manage -小区管理表( Areano varchar(4)not null primary key, Condofee int not null, -单位面积物业费 Parkingfee int not null,);create table Houseuser -住户表( Areano varchar(4)not null, Buildingno varchar(4)not null, Houseno varchar(4)not null, Area int not null, Telno varchar(11) not null, Username varchar(8) not null, Workaddr varchar(40), Homenum int, Funds int not null, primary key(Areano,Buildingno,Houseno), foreign key(Areano)references Area_manage(Areano)on delete cascade on update cascade,);-添加级联更新,级联删除create table Condofee -物业费信息( Areano varchar(4)not null, Buildingno varchar(4)not null, Houseno varchar(4)not null, Sdate smalldatetime not null, Scondofee int check(Scondofee>=0), Pay bit default 'false', -false代表未缴费,true代表已缴费 Pdate smalldatetime default getdate(), Handler varchar(8), Payno varchar(10), primary key(Areano,Buildingno,Houseno,Sdate), foreign key(Areano,Buildingno,Houseno)references Houseuser(Areano,Buildingno,Houseno)on delete cascade on update cascade,);create table Parkplace -停车位信息( Areano varchar(4)not null, Parkno varchar(6)not null, Buildingno varchar(4), Houseno varchar(4), Carno varchar(12), Pdate smalldatetime default getdate(), primary key(Areano,Parkno), foreign key(Areano,Buildingno,Houseno)references Houseuser(Areano,Buildingno,Houseno)on delete cascade on update cascade,);create table Parkfee -停车费信息( Areano varchar(4)not null, Parkno varchar(6)not null, Sdate smalldatetime not null, Sparkfee int check(Sparkfee>=0), Pay bit default 'false', -false代表未缴费,true代表已缴费 Pdate smalldatetime default getdate(), Handler varchar(8), Payno varchar(10), primary key(Areano,Parkno,Sdate), foreign key(Areano,Parkno)references Parkplace(Areano,Parkno)on delete cascade on update cascade);create table Repair -维修信息( Repairno varchar(4) not null, Areano varchar(4)not null, Buildingno varchar(4)not null, Houseno varchar(4)not null, Content varchar(50) not null, Reportdate smalldatetime not null, Repairdate smalldatetime, Money int, Fundspay bit, Repairname varchar(6), primary key(Repairno), foreign key(Areano,Buildingno,Houseno)references Houseuser(Areano,Buildingno,Houseno)on delete cascade on update cascade, check(Repairdate>=Reportdate),);create table admin -管理员( adminname varchar(20) not null primary key, Password varchar(15)not null,) 3、视图的创建(仅需给出自己设计模块中所用的视图)T-SQL语句:gocreate view Condoasselect Houseuser.Areano,Houseuser.Buildingno,Houseuser.Houseno,Sdate,Condofee*Area Condofees,Scondofee,Pay,Pdate,handler,Paynofrom Area_manage,Houseuser,Condofeewhere Area_manage.Areano=Houseuser.Areano and Houseuser.Areano=Condofee.Areano and Houseuser.Buildingno=Condofee.Buildingno and Houseuser.Houseno=Condofee.Housenogocreate view Parkasselect Parkfee.Parkno,Parkfee.Areano,Buildingno,Houseno,Carno,Sdate,Parkingfee,Sparkfee,Pay,Parkfee.Pdate,Handler,Paynofrom Parkplace,Parkfee,Area_managewhere Parkfee.Parkno=Parkplace.Parkno and Parkfee.Areano=Parkplace.Areano and Parkfee.Areano=Area_manage.Areano4、存储过程的定义实现(仅需给出自己设计模块中所用的)T-SQL语句:create procedure condo_fee -统计物业费应缴费用、实缴费用、未缴费用Areano varchar(4),date1 smalldatetime,date2 smalldatetime,fee1 int output,fee2 int output,fee3 int outputasselect fee1=sum(Condofees),fee2=sum(Scondofee)from condowhere Areano=Areano and Sdate between date1 and date2if(fee1 is null)begin set fee1=0 set fee2=0 set fee3=0endif(fee2 is null) set fee2=0set fee3=fee1-fee2gocreate procedure park_fee -统计停车费应缴费用、实缴费用、未缴费用Areano varchar(4),date1 smalldatetime,date2 smalldatetime,fee1 int output,fee2 int output,fee3 int outputasselect fee1=sum(Parkingfee),fee2=sum(Sparkfee)from parkwhere Areano=Areano and Sdate between date1 and date2if(fee1 is null)begin set fee1=0 set fee2=0 set fee3=0endif(fee2 is null) set fee2=0set fee3=fee1-fee2gocreate procedure ParknumAreano char(4),num int OUTPUTasselect num=count(*)from Parkplacewhere Areano=Areanogocreate procedure usernumAreano varchar(4),num int OUTPUTasselect num=count(*)from Houseuserwhere Areano=Areanogocreate procedure fee -查询费用Areano varchar(4),Buildingno varchar(4),Area int,Houseno varchar(4),Condofee int OUTPUT,Parkfee int OUTPUTasselect Area=Areafrom Houseuserwhere Areano=Area and Buildingno=Buildingno and Houseno=Housenoselect Parkfee=Parkingfee,Condofee=Area*Condofeefrom Area_managewhere Areano=Areano测试结果粘贴:5、触发器的定义实现(仅需给出自己设计模块中所用的)T-SQL语句:Go -触发从住户表减掉维修基金create trigger deletefoundson Repairfor insert,updateasdeclare a int,f bit,an varchar(4),bn varchar(4),hn varchar(4)select a=Money ,f=Fundspay,an=Areano,bn=Buildingno,hn=Housenofrom insertedif(f='true')beginupdate Houseuserset Funds=Funds-awhere Areano=an and Buildingno=bn and Houseno=hnend6、自行设计各模块中所涉及的操作语句插入语句:insert into Admin values('','4201')insert into Admin values('admin','1234')insert into Area_manage values('A',2,50)insert into Area_manage values('B',1,50)insert into Area_manage values('C',2,40)用户表insert into Houseuser values('A','01','101',140,'','周杰','上海电力',3,100)insert into Houseuser values('A','01','202',120,'','黄伟','北京电力',4,120)insert into Houseuser values('A','02','303',200,'','雨荷','山东电力',5,140)insert into Houseuser values('B','01','404',134,'','刘健','上海电力',3,160)insert into Houseuser values('B','02','505',120,'','张玉','上海电力',3,180)insert into Houseuser values('B','03','606',120,'','白羽','上海电力',3,200)insert into Houseuser values('C','01','707',134,'','李煜','上海电力',3,210)insert into Houseuser values('C','02','808',120,'','林岚','上海电力',3,220)insert into Houseuser values('C','03','909',120,'','王刚','上海电力',3,230)停车位表insert into Parkfee values('A','0003','2012-12-01','40','true',getdate(),'黄伟','13212')insert into Parkfee values('A','0003','2012-11-01','40','false',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-10-01','40','false',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-09-01','40','true',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-08-01','40','true',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-07-01','40','true',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-06-01','40','true',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-05-01','40','true',getdate(),'黄伟','01234')insert into Parkfee values('A','0003','2012-04-01','40','true',getdate(),'黄伟','01234')选择语句7、若有原子性事务的显示定义,也可以给出这段的实现代码,若无则可略。2.5模块结构图管理员登录小区管理注销修改密码用户管理物业管理停车管理维修管理2.6模块设计用户管理增加修改用户查询停车管理物业管理维修管理维修缴费维修查询统计提醒缴费统计查询停车位提醒缴费查询维修登记第三章、系统详细设计3.1管理员登录模块具体设计 3.1.1 功能流图登录输入密码 3.1.2 功能描述输入密码进行登录3.1.3 实现核心代码以及说明public boolean validate(String adminname,String adminpwd) boolean flag=false; String sql="select Password from Admin where adminname='"+adminname+"'" ResultSet rs=SqlHelper.query(sql); try if(rs!=null&&rs.next() if(rs.getString(1).equals(adminpwd) flag=true; catch(Exception ex) ex.printStackTrac