第二章:系统分析
2.1 系统的开发背景
小区管理在手工操作时代,工作非常繁琐,需要大量的人力、物力和财力,极大的浪费了小区物业的资源,对于小区的管理人员来说,物业管理包括物业设备管理、仪表数据管理、停车场管理、住户的投诉管理、住户的报修管理、住户的设备维修管理等等。而这些项目在过去手工操作时代,需要手工记录这些事情,不但麻烦,还经常出错,给广大用户带来很多不便。为了更好的为广大住户服务,我们决定开发一套小区物业管理系统,帮助小区管理人员从复杂的物业管理之中解放出来。
2.2 小区物业管理系统的需求分析
小区物业管理系统是面向小区的的各项事务,包括物业管理,资料管理等业务处理工作,是利用计算机进行集中管理而开发的系统。该系统是基于MDI窗体以VB自带的JET引擎连接ACCESS数据库进行开发的小区物业管理系统,力求与实际相结合具有查询、管理等功能,旨在达到使小区的管理和运营趋于计算机化,使之更加方便、快捷以提高工作效率。
2.3 功能说明
物业业主服务子系统功能模块说明如下:
基本设置:系统管理员对管理员登陆密码进行修改管理
住户资料管理:(1)添加:包括住户的姓名、房产联系电话,迁入时间,房产类型等。(2)管理:查看及删除用户信息。
(3)投诉管理:(1)投诉添加:对业主投诉的基本信息及处理结果记录。
(2)管理:查看和删除投诉信息。
报修管理:(1)报修添加:对维修过程及处理方式结果等信息管理
(2)管理:查看和删除报修信息
缴费管理:(1)缴费添加:列出指定用户应缴费用的清单,包括水电气停车费等。(2)管理:查看所有用户的缴费信息,并可进行删除操作。
停车车位管理:(1)添加:添加车位使用信息。
(2)管理:查看和删除现有登记的车位信息
2.4 系统网络应用原理
对于本小区物业系统,其功能目标是实现将现有的纸张小区物业信息管理向基于Internet的无纸化小区信息管理的转变,所以它必须实现住户资料管理、投诉管理等信息。由于系统数据收集的实时性要求并不高,因此采用Browser/Server结构来进行设计是合理可行的。图2-1是本系统的网络应用原理示意图。
图2-1网络应用原理图
说明:1、浏览器从服务器上请求ASP文件。
2、服务器端脚本开始运行ASP。
3、ASP文件按照从上到下的顺序开始处理,执行脚本命令。
4、把处理后的HTML代码发送到浏览器 ,浏览器 解释代码生成网页。
第三章:系统设计
3.1 系统功能设计
根据系统功能的要求,小区物业系统分为五个主要模块。即住户资料管理、投诉管理、住户报修管理、物业缴费管理、住户停车车位管理。可以将系统分解成为几个功能模块来分别设计,功能模块间的关系如图3.1.1所示。
图3.1.1基本模块图
对于小区物业系统,根据系统功能分析,仅有一个单一的流程化页面。所以从欢迎页面到登录页面,如果登录成功,则进入相应的功能页。
整个系统的页面逻辑结构示意图如图3.1.2所示。
图3.1.2系统页面图
3.2物业业主服务子系统功能模块图
该系统主要是针对系统管理员的小区物业管理系统,没有设置其他用户登录,该系统有六个主要的功能模块构成其中有:
(1)基本设置:主要是对系统管理员的登陆密码进行修改和管理,管理员身份admin,初始密码:admin,登录后才能对起进行修改。
(2)住户资料管理:包括业主基本资料添加和管理模块。
(3)投诉管理:包括投诉添加和投诉管理,主要是内容上投诉的基本事项和处理详细内容。
(4)报修管理:报修添加和报修管理两个子模块,添加信息有报修事项和报修处理结果及产生的费用内容。
(5)缴费管理:是该系统的最重要组成模块,包括主要收费项目和缴费业主信息,包括指定业主的主要产生费用项目管理。
(6)停车车位管理:包括停车车位管理和信息管理,主要是车位基本信息方面的添加与查看。
图3.2系统功能模块图
3.3业务流程图
图3-3系统业务流程图
流程说明:
(1)用户填写基本信息交给系统管理员,有系统管理员将用户信息添加到用户信息库。
(2)用户将投诉单交给系统管理员,待投诉处理后,给用户处理回执结果。
(3)业主提交报修单给维修人员,维修人员处理后将处理信息给系统管理员,管理员向用户提供回执和将维修信息报维修总计。
(4)系统管理员通过业主基本信息库向用户提交缴费清单,用户缴费到财务,财务回复用户缴费收据给用户和向系统管理员提供缴费信息。
(5)用户查看停车位信息,缴费有管理员确定车位信息,修改剩余车位信息。
3.4数据流程图
图3-4数据流程图
3.5数据库设计
数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。
在数据库设计中,先要对系统分析所得的数据字典中的数据存储进行分析,然后得出系统的关系模式,可以采用实体——联系图(简称E——R图)的方法进行数据结构的描述。E——R图由实体、属性、联系三部分组成。E——R图的有关符号说明如下:
图3.5.1住户信息E-R图
图3.5.2投诉信息E-R图
图3.5.3报修信息E-R图
图3.5.4收费信息E-R图
图3.5.5车位信息E-R图
实体间主要联系如下:
图3-5-5实体间联系图
物理结构设计的原则如下:
(1) 尽可能的减少数据冗余和重复。
(2) 结构设计与操作设计相结合。
(3) 数据结构具有相对的稳定性。
基于以上设计原则,本系统设计了一个数据库,包含管理员、住户信息、收费信息、车位使用信息、车位信息、报维信息、维护信息等几个表。为了加快系统访问的速度把这7个表放在一个数据库中。本系统中相关数据库表结构设计举例如下:
表1:admin(管理员)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
ID | 自动编号 | ||
UserName | 文本 | 10 | |
Psw | 文本 | 15 |
表2: BaseInfo(住户信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
住户编号 | 文本 | 10 | |
户主名称 | 文本 | 10 | |
联系电话 | 文本 | 15 | |
楼宇名称 | 文本 | 8 | |
楼层 | 文本 | 6 | |
房屋号 | 文本 | 10 | |
单元 | 文本 | 10 | |
迁入日期 | 日期/时间 | 15 | |
房型 | 文本 | 10 | |
备注 | 备注 | 20 |
表3:DataMoney(收费信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
编号 | 自动编号 | ||
单据编号 | 文本 | 10 | |
住户名称 | 文本 | 10 | |
缴费日期 | 日期/时间 | 15 | |
收费人员 | 文本 | 10 | |
缴费方式 | 文本 | 10 | |
缴费总额 | 数字 | 10 | 2 |
备注 | 备注 | 20 |
表4:Park(车位使用信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
编号 | 自动编号 | ||
车位编号 | 文本 | 10 | |
住户名称 | 文本 | 10 | |
使用日期 | 日期/时间 | 15 | |
备注 | 备注 | 20 |
表5:ParkBase(车位信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
编号 | 自动编号 | ||
车位编号 | 文本 | 10 | |
备注 | 备注 | 20 |
表6:Repair(报修信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
单据编号 | 文本 | 10 | |
住户名称 | 文本 | 10 | |
维修人员 | 文本 | 10 | |
报修日期 | 日期/时间 | 15 | |
服务费用 | 数字 | 10 | 2 |
物料费用 | 数字 | 10 | 2 |
费用合计 | 数字 | 10 | 2 |
报修内容 | 备注 | 20 |
表7:TouShu(投诉信息)表:
字段名称 | 字段类型 | 宽度 | 小数位 |
投诉编号 | 文本 | 10 | |
投诉住户 | 文本 | 10 | |
接待人员 | 文本 | 10 | |
投诉日期 | 日期/时间 | 15 | |
投诉内容 | 备注 | 20 | |
处理人员 | 文本 | 10 | |
处理情况 | 备注 | 20 |
第四章:系统详细设计
4.1管理员登录模块设计
输入:用户名admin,密码admin,随机附加码
处理:判断用户名和密码、附加码是否有效。填入用户名、密码和附加码后点击[确定]按钮,系统将自动从数据库中的管理员信息表中判断是否存在相同的用户名和密码等,如果有则进入系统,如果不存在或密码错误,则提示不是管理员或密码有错误的信息。
输出:登录成功,进入管理员的功能选择页面,若不成功,则显示错误信息页面
图4.1.1系统登录界面
登录模块代码的实现:
<%end sub
sub chk()
dim username,password,code
username=trim(request.form("username"))
password=trim(request.form("password"))
code=trim(request.Form("code"))
if code="" then
ErrMsg="<li> 请返回输入确认码。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
elseif session("getcode")="" then
ErrMsg="<li> 请不要重复提交,如需重新登录请返回登录页面。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
elseif cstr(session("getcode"))<>cstr(trim(code)) then
ErrMsg="<li> 您输入的确认码和系统产生的不一致,请重新输入。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
end if
session("getcode")=""
if username="" or password="" then
ErrMsg="<li> 请输入您的用户名或密码。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
end if
dim rs
password = md5(password)
set rs = Data.Execute("select * from admin where Username='"&username&"'")
if rs.eof and rs.bof then
ErrMsg="<li> 您输入的用户名不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的用户名。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
exit sub
else
Response.Write(Password&" "&rs(1))
if password=rs(2) then
Session("IsAdmin")=1
Session("Admin_name")=username
Session("Belong")=rs(4)
Set TempRs=Data.Execute("Select Name,StId from Shetuan Where StId = "&Session("Belong")&";")
Session("Shetuan")=TempRs("Name")
TempRs.close
Session("Level")=rs(3)
Select Case rs(3)
Case 0
Session("Admin_type")="超级管理员"
Case 1
Session("Admin_type")="协会管理员"
Case "新闻管理员"
Session("Admin_type")="新闻管理员"
Case "下载管理员"
Session("Admin_type")="下载管理员"
Case "图片管理员"
Session("Admin_type")="图片管理员"
Case "音乐管理员"
Session("Admin_type")="音乐管理员"
End Select
response.Redirect("index.asp")
else
ErrMsg="<li> 您输入的密码不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的密码。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
exit sub
end if
end if
rs.close
end sub
%>
4.2管理员功能选择页面
管理员登录后出现功能选择界面,可以选择相应的操作
图4.2系统操作截面图
4.3系统基本模块介绍
每一个模块的右上角都设置有一个返回首页的快捷键,该系统是一个针对于超级用户admin的使用系统,修改密码时用户名不可修改,输入旧密码和新密码以及验证码正确后,点击提交。系统会提示密码修改成功的提示,则下次登录系统将使用新密码进行确认。
图4.3.1管理员密码修改模块
列举基本代码:
<!--#include file="CONN.asp"-->
<!--#include file="inc/Char.asp"-->
<!--#include file="inc/md5.asp" -->
<%
Head()
Data.Admin()
If Data.IsAdmin=false then
ErrMsg="<li> 您没有登陆或不是管理员。请<a href='admin_login.asp' target='_top'>登陆</a>。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
response.End()
end if
if request.QueryString("action")="update_info" then
call update_info()
else
call main()
end if
Footer()
Sub Update_info()
dim Username,Password_org,Password,Password2,code
Username = trim(request.Form("Username"))
Password_org = trim(request.Form("Password_org"))
Password = trim(request.Form("Password_new"))
Password2 = trim(request.Form("Password_new2"))
code=trim(request.Form("code"))
if code="" then
ErrMsg="<li> 请返回输入确认码。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
elseif session("getcode")="" then
ErrMsg="<li> 请不要重复提交,如需重新登录请返回登录页面。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
elseif cstr(session("getcode"))<>cstr(trim(code)) then
ErrMsg="<li> 您输入的确认码和系统产生的不一致,请重新输入。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
end if
session("getcode")=""
if password_org="" or password="" or password2="" then
ErrMsg="<li> 请您完整输入信息。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
end if
if Password<>Password2 then
ErrMsg="<li> 您两次输入的密码不一致,请重新输入。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
Exit Sub
End if
dim rs
password_org = md5 (password_org)
set rs = Data.Execute("select * from admin where Username='"&username&"'")
if rs.eof and rs.bof then
ErrMsg="<li> 用户名不正确。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
exit sub
else
if password_org = rs(2) then
Dim SaveSet,cmd,Md5_code
Md5_code=md5(Password)
cmd = "Update Admin set pwd = '"&Md5_code&"' where username = '"&username&"'"
Data.Execute(cmd)
info="<li> 管理员密码更新成功。"
response.Redirect("showerr.asp?action=AdminSuc&info="&info&"")
else
ErrMsg="<li> 您输入的密码不正确。"
response.Redirect("showerr.asp?action=AdminErr&ErrMsg="&ErrMsg&"")
exit sub
end if
end if
rs.close
end Sub
Sub Main()
dim username,Admin_type
username = Session("Admin_name")
%>
<br>
<table width="97%" border="0" align="center" cellpadding="3" cellspacing="1" class="tableBorder">
<form action="admin_admin.asp?action=update_info" method="post">
<tr>
<td colspan="3" class="title"><div align="center" class="title"> 管理员密码修改</div></td>
</tr>
<tr>
<td colspan="3" class="title2"> 用于添加网站的管理员,管理员可以修改网站的设置。</td>
</tr>
<tr>
<td width="16%" class="table"> 管理员用户名</td>
<td width="84%" colspan="2" class="table"><input name="Username" type="text" id="UserName3">
<font class="alert">不可修改</font></td>
</tr>
<tr>
<td class="table"> 输入旧密码</td>
<td colspan="2" class="table"><input name="Password_org" type="password" id="Password_org"></td>
</tr>
<tr>
<td class="table"> 输入新密码</td>
<td colspan="2" class="table"><input name="Password_new" type="password" id="Password_new"></td>
</tr>
<tr valign="top">
<td class="table"><p align="left"> 重新输入新密码</p></td>
<td colspan="2" class="table"><input name="Password_new2" type="password" id="Password_new2"></td>
</tr>
<tr valign="top">
<td class="table"><p align="left"> 验证码</p></td>
<td colspan="2" class="table"><input name="code" type="text" id="code3" maxlength="4">
请输入:<img src="Code.asp"></td>
</tr>
<tr>
<td colspan="3" class="table"><div align="center">
<input type="submit" name="Submit3" value="提交">
<input type="reset" name="Submit22" value="重置">
</div></td>
</tr>
</form>
</table>
<%End Sub%>
详细代码请参考源程序~~~~~~~~
图4.3.2新建住户信息模块
说明:住户信息包括户主名称、联系电话、楼宇名称、楼层等基本信息,当填写信息完成后,点击页面下方的提交,如果信息格式正确,则系统提示添加成功。通过系统上端的导航条或控制面板上的相应模块管理可查看用户的基本信息。
图4.3.3新建住户投诉信息模块
说明:该模块包括投诉编号、投诉住户、接待人员,投诉内容、处理人员、投诉日期,和处理情况,当信息录入完成,单击提交,系统提示信息已保存。
图4.3.4住户投诉列表修改模块
说明:该模块主要是住户投诉信息查看也删除功能,鼠标选择投诉住户名称时,双击左键或回车可查看基本信息的处理结果。当点击删除时刻删除投诉信息以方便信息的及时更新。
其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者