演示视频:
第四章 系统实现
4.1 公共类的设计
在一个管理系统中,很多方法、数据都是可以共享的,为了尽量减少重复劳动,可以通过建立一些公共的类的方法,提供统一的数据读写方法。在需要使用这些方法操作时,仅需要构建这些类的对象,调用类的方法,完成相应的功能操作。这样就可以减轻一些劳动量,提高开发效率。
在本系统中,CCUtility.cs实现了对这些公共操作方法的封装。包括:执行无返回值的SQL语句;执行数据查询;完成身份验证;绑定用户控件;读取session变量值等。
下面这两个函数的功能都为将字符串转换为sql语句中的格式,但具体的参数不同。第一个函数要转换的字符串为传入的参数Param,要转换的类型为传入的类型Type。第二个则是单一的字符串str:
在公共类的构造函数中,实现参数的附值和数据库的打开操作。其中数据库的打开操作为调用函数DBOpen():
在上面的函数中,调用了配置文件(web.config)中的参数。在配置文件(web.config)中配置了数据库的连接字段:<add
key=“DBConnectionString” value=“Provider=SQLOLEDB;Data
Source=XIEZHONGWEI;Initial Catalog=SmallHouse;User
ID=sa;Pwd=222222;Trusted_Connection=;”
/>。连接字段中的value值是可以更改的,这样在程序进行移植时,只要将数据库附加进去,再稍微对value值进行修改就可以在新的环境下运行。这样就保证了程序的灵活性。后面第五章会对具体的配置方法进行说明,在此不再重复。函数打开数据库的同时要求对数据库进行关闭操作,避免长时间连接数据库而浪费资源,这就用到了关闭操作函数DBClose(),这个函数很简单,就一个语句:Connection.Close()。
在数据库的查询工作中,各项查询要求的返回值不同就要求在公共类中对各项查询进行枚举,由于篇幅原因,在此只将各个查询函数的核心进行介绍。
查询语句声明:在本部分中,参数为field、table、sWhere,其中,field表示要查询的字段,table表示具体数据库中的表,而sWhere
表示查询条件。如下定义查询语句:
string sSQL = "SELECT " + field + " FROM " + table + " WHERE " +
sWhere;
定义Connection和查询语句的连接,具体的操作语句为:
OleDbCommand command = new OleDbCommand(sSQL, Connection);
定义数据读取对象reader,并逐条读取数据(可用while循环,方式很多,在此略):
OleDbDataReader reader =
command.ExecuteReader(CommandBehavior.SingleRow);
网页操作中,各个页面有很多的参数要进行传递,如何对页面中传递的参数进行读取是一大难题,为了保证参数的整洁性,减少程序在参数传递上的出错率,在公共类中就定义了专门的参数读取函数,其中要读取的参数名称为ParamName:
在本系统的安全设计中,将用户分为几类:有超级管理员功能的用户有权限进行权力的分配,具体操作时为用户分配权限值。对于权限值比2小的用户,在系统中只具有浏览的权限,没有编辑的权限。对一些特定区域也不具有访问权。
但在一个系统中,如何以最短的代码以及最方便的形式来判断用户的权限呢?这也用到了公共类。在公共类中,定义每一页面可能进行权限判断的操作函数,也就是说,当其他页面要用到权限判断时,只要定义了公共类的对象,由对象来调用类中的公共函数就完成了操作。具体的函数如下,其中要求的权限值为传入的整型参数iLevel。如果住户没有登录,函数设定为将页面直接转向登录界面Default.aspx,同时传入到登录页面的参数还有用户的请求操作,该参数的作用就是在用户登录之后,如果用户有权限的话,将页面转向用户当前请求的页面。如果没有权限,就将页面转向noright.htm,noright.htm的界面在后面会有演示。
图4.2 登录界面
4.3 设备查询维护
4.4 新闻管理
代码同住户信息类似,但数据库操作时用到的是视图,将数据库中用到的语句拷贝如下:登录
数据库操作时用到视图,对应的语句为:
添加新闻信息
停车信息
添加新闻信息
设备维护管理
投诉管理
注册管理