0 引言
随着市场经济的发展和人们生活水平的提高,住宅小区己经成为人们安家置业的首选,小区业主不但对住宅的本身的美观、质量要求越来越高,同时对小区物业的服务和管理也要求较高。这就要求小区管理者对物业管理进行宏观的和微观的细致管理,其中最好的办法是开发小区物业管理系统,实现对小区物业的管理,如小区中的汽车、小区附带设施、小区的各项维修、投诉等,提高查找、更新和维护的效率。
1 相关技术研究
1.1 .NET 框架
.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境。.NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的各应用程序之间,可以使用Web服务进行沟通[2]。
1.2 C#语言
C#是由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性,它以便捷的面向组件的编程方式成为.NET开发的首选语言[3]。
1.3 ADO.NET 技术
ADO. NET是一种新数据库访问技术,是.NET Framework提供给.NET开发人员的一组类,其功能即全面又灵活,并可在访问各种不同类型数据时,保持操作的一致性。
2 系统设计
2.1 功能模块设计
根据系统需求分析,该系统包括楼栋信息管理、费用信息管理、维修信息管理、清洁信息管理、车位信息管理、业主信息管理、住房信息管理、用户信息管理,系统设置模块等。系统总体设计如图1所示。
(1)楼栋信息管理:包含楼栋管理和楼栋查询两个模块。
(2)费用信息管理:包含费用管理和费用查询两个模块。
(3)维修信息管理:包含维修管理和维修查询两个模块。
(4)清洁信息管理:包含清洁管理和清洁查询两个模块。
(5)车位信息管理:包含车位管理和车位查询两个模块。
(6)业主信息管理:可以对业主信息进行增加、删除、修改、查询操作。
(7)住房信息管理:包含住房信息管理和住房信息查询两个模块。
(8)用户信息管理:是对使用该程序的用户进行管理。用户身份分为两种,一种是管理员,一种是普通用户。管理员可以对普通用户进行增加,删除,修改操作,而普通用户没有权限打开此窗体。
(9)系统设置:是对窗体显示标题、主窗体图片、皮肤以及小区信息的设置。
2.2 数据库设计
2.2.1 系统全局 E-R 图
根据数据库设计的原则,遵循数据设计规范化理论及对系统的需求分析,得到系统的全局概念结构,如图2所示。
2.2.2 数据表设计
本系统共需设计11张表,涵盖楼栋信息、车位信息、费用信息、费用类型、清洁信息、小区信息、业主信息、维修信息、维修类型、房间信息、用户信息等功能模块。下面给出小区物业管理系统的主要表结构。
(1)楼栋信息表(BuildingInfo)
楼栋信息表用来存储楼栋的楼层数、单元数、完工日期、备注等信息。该表的字段及其含义如表1所示。
(2)车位信息表(CarInfo)
车位信息表用来存储车位编号、车位面积、所属业主的编号、车牌号、备注等信息。该表的字段及其含义如表2所示。
3 系统实现
本系统的设计采用了三层架构的设计模式,将系统中的实体抽象出来,通过自定义类进行封装,设置相关属性,并构造出用来实现各种操作的方法。在设计中,DB.cs属于数据访问层,封装了关于数据库的操作,在DB类中,使用了ADO.NET的对象SqlConnection进行数据库的连接,SqlCommand对象执行相关的操作,DataSet对象存储查询结果。
业务逻辑层中包含的类有Building.cs,Car.cs,Charge.cs,Clean.cs,Community.cs,Owner.cs,Repair.cs,Room.cs,User.cs。分别封装了相关楼栋、车位、费用、清洁、小区、业主、维修、住房、用户的信息和操作。
此外,设计中还有两个类:Common类和Golbal类。Common类用来实现一些比较常用的操作,Golbal类为一个全局的类,用来存储全局变量,类似于Web设计中的Session。
3.1 用户身份认证的实现
在一个管理系统中,用户身份认证是必不可少的一部分,它防止了未授权的用户来使用该系统。本系统中,用户身份认证是通过对比登录用户的输入和用户表中的实际用户名和密码字段是否一致来实现的,代码如下:
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
int str = User.IsUser(txtUName.Text.Trim(), tx⁃
tUPwd.Text.Trim());
if (str == -1)
MessageBox.Show("
用户名或密码错误
!",
"
提示信息
");
else
{
Common.WriteToXml(chkSkin.Checked);
Golbal["UserName"] = txtUName.Text.Trim
();
Main fm = new Main(str);
fm.Show();
this.Hide();
}
...
捕获异常
...
}
在此处,调用了自定义User类的IsUser()方法,通过传入用户名和密码两个参数来实现登录功能,用户名和密码通过用户填写 TextBox 控件 txtUName 和 txtUPwd 来取得。Common.WriteToXml()方法实现了将用户对系统皮肤是否启用的设置保存到Xml文件中。使用try,catch语句捕获程序异常,如若有异常,则弹出对话框显示异常信息。
3.2 添加、删除和修改用户的实现
添加和修改用户功能使用了TextBox控件来获取要添加用户的信息,点击了btnAddUser按钮后,弹出添加面板。面板上的btnAdd按钮的文字改成“添加”,txtName保存输入的用户名、txtPwd保存用户的密码,txtComPwd.Text保存二次输入的密码,添加时通过与txtPwd.Text的值进行比较,以判断两次输入的密码是否一致。代码如下:
private void btnAdd_Click(object sender, EventArgs e)
{
...
前期检查数据的有效性
..
...
实例化一个
User
对象,并为其属性赋值
...
if (btnAdd.Text == "
添加
")
user.AddUser();
else if (btnAdd.Text == "
保存
")
{
user.UserID=int.Parse(dataGridView1.Rows[cindex].Cells
["UserID"].Value.ToString());
user.EditUser();
}
BindData();
}
此处,先实例化一个User对象user,并给相应的属性赋值,当进行添加操作时调用user.AddUser()方法,进行修改操作时调用user.EditUser()方法。
删除用户首先选中将要删除的用户,取得该用户的 ID号,然后提示是否删除,当点击确定按钮后,根据用户的ID进行删除。代码如下:
private void btnDel_Click(object sender, EventArgs e)
{
...
确认删除提示框
...
{
User user = new User();
user.UserID= int.Parse(dataGridView1.Rows[cin⁃
dex].Cells[0].Value.ToString());
user.DelUser();
BindData();
}
}
4 结 论
为满足小区物业管理和服务对信息化、网络化的需求,适应物业管理企业规模不断扩大与跨区域发展的要求,本系统采用.NET技术,利用B/S模式构建了三层结构的小区物业管理信息系统。该系统具有良好的可扩展性、易维护性与易操作性,并且可在现有基础上不断增加与完善。从系统整个体系结构来说能够基本满足小区物业管理与服务的当前需求以及未来的发展需求。
参考文献:
[1] 张跃廷,房大伟.ASP.NET 范例完全自学手册[M].人民邮电出版社,2009.
[2] 吴 晨.ASP.NET2.0+SQL Server2005 数据库开发与实例[M].清华大学出版社,2007.
[3] 周栋祥.ASP.NET 案例精编[M].清华大学出版社,2009.
[4] 郝 刚.ASP.NET 2.0 开发指南[M].人民邮电出版社,2007.
[5] 尚俊杰.ASP.NET 程序设计[M].北京:清华大学出版社,北京交通大学出版社,2004.
[6] 丁士锋. 亮剑 ASP.NET 项目开发案例导航[M].电子工业出版社.
[7] 深圳市维科拓为科技有限公司[Z/OL] .
[8] 翼南小区物业管理系统 V1.10[Z/OL] .