特种设备是指涉及生命安全、危险性较大的锅炉、压力容器(含气瓶)、电梯、起重机械、大型游乐设施等八大类设备,高校中特种设备主要包括电梯、起重机、压力容器、安全附件这几类。特种设备在使用过程中需要严格按照安全流程操作并进行规范管理,由于特种设备本身特性和管理流程的复杂性,使得特种设备在使用过程中存在很多安全隐患,事故频繁发生。因此,实现管理的规范化、高效化显得尤为重要,利用计算机对特种设备进行管理,实现数字化信息管理就必然成为一种趋势。在此背景下,本文设计并实现了一套用于管理高校中特种设备的系统。
本文所设计的是一套基于.NET平台的高校特种设备管理系统,该系统采用C/S构架模型,Microsoft Visual Studio 2008中的C#作为开发语言,Microsoft SQL Server 2000作为数据库服务器,采用ADO.NET数据库访问技术,实现了用户管理、特种设备使用管理、维修管理、年检管理等等。
关键词:特种设备,管理系统,ADO.NET,SQL Server 2000,C#
(1)主要内容
本次设计是开发一套用于管理高校中存在的特种设备的管理系统,高校中通常包含电梯、起重机、压力容器、安全附件这几类,根据特种设备管理的需求分析,设计并实现如下所述功能的系统:
1.用户管理功能,包括用户注册和登录功能;
2.新购特种设备注册管理功能;
3.特种设备使用管理功能;
4.特种设备维护保养管理功能;
5.特种设备维修管理功能;
6.特种设备年检管理功能;
7.特种设备报废管理功能。
(2)实现方案
本系统将采用面向对象方法进行分析和设计,考虑到开发成本和安全性问题,本系统设计成一个相对封闭的单用户运行的Winform桌面应用程序。该系统采用C/S构架模型,使用Microsoft Visual Studio 2008平台提供的纯面向对象的C#语言作为开发语言,Microsoft SQL Server 2000作为数据库服务器,采用ADO.NET数据库访问技术,其中,ADO.NET中的.NET Framework采用SQL Server.NET数据库提供程序,Windows XP操作系统作为开发平台。系统基本的流程是:用户登录-主界面-选择各项子系统。
需求分析是系统设计的第一步,也是必不可少的一步。通过对用户进行调查研究,准确了解用户对系统的需求,并对系统要实现的功能做准确的描述。主要任务:充分了解手工系统对高校中特种设备的管理方式、管理模式,收集涉及到的所有数据信息及处理方法。
学校的特种设备主要包括电梯、起重机械、压力容器这几类,特种设备由于在使用过程中需要严格按照安全流程操作,因此需对高校特种设备进行严格管理,管理系统涉及到特种设备管理员(即系统用户)、特种设备详细信息、维护保养信息、维护保养管理、年检单位信息、年检管理、特种设备操作人员等。
管理员负责对高校中所有设备进行统一管理,包括设备日常使用情况、维护保养情况、维修情况、年检情况、报废情况等。特种设备使用必须由取得了特种设备操作人员证的人员才可进行,特种设备人员操作证是由质监局统一培训,有独一的证号,有有效日期,超过有效日期的需再次报名参加复审。
特种设备年检管理:可涉及特种设备自身信息及年检单位信息,特种设备要根据它的特性定期进行年检,像电梯需要一年一检,起重机械需要两年,压力容器分年度检查(一年一检)和全面检查(五年一检)。
特种设备使用管理,主要是特种设备日常使用和维护保养情况,如设备在使用过程中出现故障,需管理员报修并进行维修,一般由负责该设备维保的专业的维护保养单位维修,也可以由其他单位维修。由于特种设备在使用过程中存在非常大的安全隐患,一些设备需定期检查,在故障出现之前,需对部分零件进行更换,也是由专业的维护保养单位负责。
高效特种设备管理系统的业务工作流程,如图2-1
根据需求分析,对数据进行收集和分析,得出高校特种设备管理系统的数据流。
本系统需要实现的功能包括,系统用户注册、登录,对新设备进行信息入库,设备损坏时能够对设备进行报修,设备维修后,对已经维修的报修项删除,对设备日常使用的信息进行管理,定期对设备进行年检,填写年检信息,对设备日常的维护保养进行管理,维护保养情况,对不用的设备进行报废等。系统功能图如图2-2所示。
图2-3是本系统结构图,图中除“”退出系统、“报废设备”、“查询设备”外的每一个矩形框图对应一个模块,也就是对应一个界面,因此本系统有9个界面,其中包含两个下拉菜单,命名为“设备管理”、“信息管理”,“设备管理”包含的子菜单有“注册新购设备”、“维修管理”、“年检管理”,“信息管理”包含“设备操作人员”、“维护保养单位”、“年检部门”。
1、硬件环境
本次开发的为中小型信息管理系统,因此,一般配置的计算机硬件就可以满足系统需求,以下举出一种配置。
2、软件环境
在.NET中数据库访问时通过ADO.NET(Active Data Object.NET)完成的,在ADO.NET中,数据处理被延伸到三层以上的结构,只在有必要的时候对数据库进行连接,当处理完毕后将及时关闭连接,保证了数据库服务器资源的可用性,可以为更多用户服务,特别适合网络应用。
ADO.NET的体系结构如图2-4所示。
ADO.NET具有的核心组件包括两个:.NET DataProvider数据提供程序和DataSet数据集。.NET DataProvider数据提供程序包括Connection对象、Command对象、DataReader对象、DataAdapter对象。在.NET Framework中常用4组数据提供程序,包括SQL Server.NET Data Provider、OLEDB.NET Data Provider、ODBC.NET Data Provider、Oracle.NET Data Provider,这四种数据提供程序分别通过不同的接口来访问各自支持的数据库。
DataSet用来容纳DataProvider传递过来的数据库访问结果,或把应用程序里的业务执行结果更新到数据库中。DataSet是数据内存驻留表示形式,是一个内存驻留的数据库,它与特定的数据库无关。
数据库结构设计的目的:根据需求分析建立系统的概念模型,根据概念模型建立关系模型,对数据进行规范化管理,使数据满足各种范式。
根据高校中特种设备管理的需求分析,得出高校特种设备管理系统的概念模型,实体间的关系E-R图,以及实体属性。
1.E-R图
该系统E-R图如图3-1所示,由于部分实体的属性较多,此关系图中省略了实体属性。
2.实体属性
将E-R图转换成关系模型要解决两个问题:一是如何将实体集合实体间的联系转换为关系模型;二是如何确定这些关系模型的属性和码。
概念模型转化成关系模型如下:其中直下划线的为主码,波浪下划线为外码。
数据库详细设计包括创建数据库,创建单表,对表中字段进行命名,数据类型、长度,主外键以及是否为空等信息进行详细的设计,下面来设计本系统的数据库。
创建名为DBSpecialEquipment数据库。
1、表名:T_SystemUser
意义:系统用户
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
ID |
ID |
int(4) |
主键 |
自增 |
|
用户名 |
UserName |
varchar(16) |
|||
密码 |
Password |
Char(8) |
数字或字母 |
2、表名:T_SpecialEquipment
意义:特种设备信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
设备编号 |
Number |
varchar(10) |
√ |
||
注册代码 |
RegisterCode |
varchar(30) |
主键 |
||
名称 |
EquipmentName |
varchar(50) |
|||
类别 |
Form |
varchar(20) |
电梯、起重机… |
||
型号 |
Model |
varchar(20) |
√ |
||
规格 |
Standard |
varchar(20) |
√ |
||
上次检验日期 |
LastCheckDate |
datetime(8) |
√ |
||
下次检验日期 |
NextCheckDate |
datetime(8) |
|||
操作人员证书编号 |
OperaterCerID |
varchar(20) |
外键 |
||
维护保养单位名称 |
MaintainUnitName |
varchar(30) |
外键 |
维保单位表中存在 |
|
购置单价 |
PurchasePrice |
money(8) |
√ |
||
厂家名 |
ManufacName |
varchar(50) |
√ |
||
出厂号 |
LeaveFacNO |
varchar(20) |
√ |
||
出厂日期 |
LeaveFacDate |
datetime(8) |
√ |
||
购置日期 |
PurchaseDate |
datetime(8) |
√ |
||
领用人 |
ReceivePerson |
varchar(16) |
√ |
||
存放地名称 |
StoredName |
varchar(50) |
√ |
||
领用部门名 |
ReceDepartName |
varchar(30) |
√ |
||
联系电话 |
Phone |
varchar(20) |
√ |
数字 |
|
备注 |
Remarks |
varchar(50) |
√ |
3、表名:T_EquipmentOperater
意义:设备操作人员信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
证书编号 |
OperaterCerID |
varchar(20) |
主键 |
||
姓名 |
OperaterName |
varchar(16) |
|||
作业项目 |
WorkType |
varchar(30) |
电梯、起重机… |
||
身份证号码 |
IDCardNO |
varchar(20) |
√ |
||
所在单位 |
UnitName |
varchar(50) |
√ |
||
办证时间 |
CerHandingDate |
datetime(8) |
|||
办证有效期 |
CerUsefulTime |
datetime(8) |
|||
联系电话 |
Phone |
varchar(20) |
√ |
数字 |
4、表名:T_CheckUnit
意义:年检单位信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
单位名称 |
CheckUnitName |
varchar(100) |
主键 |
||
检验类别 |
checkType |
varchar(40) |
电梯、起重机… |
||
单位地址 |
Address |
varchar(100) |
√ |
||
联系电话 |
Phone |
varchar(20) |
√ |
数字 |
5、表名:T_MaintainUnit
意义:维护保养单位信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
单位名称 |
MaintainUnitName |
varchar(30) |
主键 |
||
维保设备类别 |
MaintainType |
varchar(20) |
电梯、起重机… |
||
资质 |
Aptitude |
char(1) |
A、B、C… |
||
地址 |
Address |
varchar(50) |
√ |
||
联系电话 |
Phone |
varchar(20) |
√ |
数字 |
|
联系人 |
LinkMan |
varchar(16) |
√ |
6、表名:T_Maintain
意义:维修信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
设备注册代码 |
RegisterCode |
varchar(30) |
主键 |
||
维修项目 |
MaintainItems |
varchar(50) |
√ |
||
故障原因 |
BugCause |
varchar(100) |
√ |
||
金额 |
Price |
money(8) |
√ |
||
报修日期 |
PreRepairDate |
datetime(8) |
7、表名:T_Check
意义:年检信息
属性名 |
字段名 |
数据类型 |
允许空 |
主、外键 |
约束条件 |
设备注册代码 |
RegisterCode |
varchar(30) |
主键 |
||
检验单位名称 |
CheckUnitName |
varchar(30) |
外键 |
检验单位表中存在 |
|
检验费 |
CheckPrice |
money(8) |
√ |
||
检验时间 |
CheckDate |
datetime(8) |
√ |
根据主外键、参照表决定了各表之间的联系,表之间关系的建立可以避免由于误操作导致数据库崩溃,可以保证各表之间数据的一致性,满足数据规范中的参照完整性。在数据库中建模后的数据关系图如图3-2所示。
1、存储过程
存储过程是在SQL服务器上存储的已经编译的SQL语句组,存储过程在第一次执行的时候要检查语法和编译,编译好的版本存储在过程高速缓存器中供后续调用。假设某用户没有对指定表或视图的使用权限,但它具有使用存储过程的权限,通过执行存储过程,用户仍可以获得对存储过程中的表或视图的使用权。为了方便本系统并未建立很多存储过程,只创建了2个存储过程:
存储过程名:AddNew_SpecialEquipment 作用:向T_SpecialEquipment表中插入完整字段。
CREATE PROCEDURE AddNew_SpecialEquipment
@Number varchar(10),
@RegisterCode varchar(30),
@EquipmentName varchar(50),
@NextCheckDate datetime,
@OperaterCerID varchar(20),
@MaintainUnitName varchar(30),
@Form varchar(20),
@Standard varchar(20),
@Model varchar(20),
@ManufacName varchar(50),
@PurchaseDate datetime,
@LeaveFacNO varchar(20),
@LeaveFacDate datetime,
@PurchasePrice decimal,
@ReceDepartName varchar(30),
@ReceivePerson varchar(16),
@Phone varchar(20),
@StoredName varchar(50),
@Remarks varchar(50)
AS insert into
T_SpecialEquipment(Number,RegisterCode,EquipmentName,NextCheckDate,
OperaterCerID,MaintainUnitName,Form,Standard,Model,ManufacName,
PurchaseDate,LeaveFacNO,LeaveFacDate,PurchasePrice,ReceDepartName,
ReceivePerson,Phone,StoredName,Remarks)
values (@Number,@RegisterCode,@EquipmentName,@NextCheckDate,
@OperaterCerID,@MaintainUnitName,@Form,@Standard,@Model,@ManufacName,
@PurchaseDate,@LeaveFacNO,@LeaveFacDate,@PurchasePrice,@ReceDepartName,
@ReceivePerson,@Phone,@StoredName,@Remarks)
GO
存储过程名:login_user 作用:根据用户名和密码查询T_SystemUser表中记录,返回记录数。
CREATE PROCEDURE login_user
@UserName varchar(16),
@Password char(8)
AS
select count(*) from T_SystemUser
where UserName = @UserName and Password = @Password
GO
2、视图
视图是根据子模式建立的虚拟表,一个视图可以由一个表构造,也可以由多个表连接构成,视图的作用在于,使用户将注意力集中在所关心的数据上,例如我们可以将多个表连接的查询定义成一个视图,视图将表与表之间的连接操作对用户隐蔽起来了,用户看到的和使用的是多表连接起来的虚表。这样做的优点在于:用户既可以使用和操纵所关系的数据,又可以避免接触复杂的数据内部关系。本系统创建的视图如下:
视图名称 |
说明 |
年检单位 |
表T_CheckUnit的视图 |
特种设备信息 |
表T_SpecialEquipment的视图 |
维护保养单位 |
表T_MaintainUnit的视图 |
设备年检信息 |
T_Check,T_CheckUnit,T_SpecialEquipment三张表连接,查询年检所需的有用信息 |
设备报修信息 |
T_EquipmentOperater,T_MaintainUnit,T_Maintain,T_SpecialEquipment四张表连接,查询设备报修所需的有用信息 |
设备操作人员 |
表T_EquipmentOperater的视图 |
例如“设备报修信息”视图创建如下:
create view 设备报修信息 (设备编号,设备注册代码,设备名称,领用部门名,维修项目,故障原因,维修金额,报修日期,报修人)
as select
Number,T_Maintain.RegisterCode,EquipmentName,ReceDepartName,MaintainItems,BugCause,Price,T_Maintain.PreRepairDate,T_EquipmentOperater.OperaterName from T_EquipmentOperater,T_MaintainUnit,T_Maintain,T_SpecialEquipment
where T_SpecialEquipment.RegisterCode = T_Maintain.RegisterCode and T_EquipmentOperater.OperaterCerID = T_SpecialEquipment.OperaterCerID
1、数据库编程规范:数据库名称以“DB”开头;表名以“T_”开头,如T_SpecialEquipment(特种设备)。字段名称用英文翻译或部分英文缩写,如RegisterCode(注册代码)、LeaveFacNO(出厂号)。
2、代码编程规范:大小写符合C#编程规范,如类、属性等符合Pascal,参数、方法
等符合Camel。控件命名规范如表4-1所示,控件的命名取决该控件的作用,方便调试,不涉及编码的控件取其默认值。
控件类型 |
前缀缩写 |
控件类型 |
前缀缩写 |
TextBox |
txt |
Button |
btn |
Label |
lbl |
Form |
GUI |
ComboBox |
cbo |
ListView |
lsv |
DateTimePicker |
date |
MenuStrip |
mnu |
GroupBox |
gbx |
ToolStripMenuItem |
tsm |
DataGridView |
dgv |
代码连接:http://blog.csdn.net/abc123abc_123/article/details/9153867
创建一个“Windows窗体应用程序”项目,命名为SpecialEquipmentManagement。在项目文件里创建一个类,命名为SQLHelper.cs。
连接SQL Server数据库的方法有多种,在不同场合会用到不同的方法,可以通过SqlConnection配置连接,这种方法可以通过把SqlConnection对象添加到窗体上实现;也可以手动编码连接,这种方法连接数据库更节省时间,尤其是当数据库比较多或者程序的窗体比较多时,使用适配器显得有些浪费时间,因此,本系统数据库连接采用手动编码的方式进行连接。
为了提高代码的复用性、易修改,避免每次访问数据库时都要进行一系列的创建连接对象、Command对象、连接字符串等。本系统封装了一个数据库连接访问类SQlHelper,下面对该类进行简单的介绍:
1、类的构造函数。在构造函数中实例化一个数据库连接对象,创建连接字符串,这样做的目的是,在创建一个SQLHelper对象时就已经建立了与数据库的连接。
2、LastError属性。LastError属性是当数据库连接异常时,最后出现的异常信息。
3、HandleException方法。处理异常的方法,将产生的异常归为四类,SqlException,InvalidOperationException,DBConcurrencyException和除此三类异常之外的其他异常,并根据这四类不同异常分别对LastError属性赋予相应的异常信息。该方法为静态方法,有一个参数类型为Exception的参数。
4、ExecuteNonQuery方法。执行不返回结果集的SQL语句的方法,该方法参数中有一个待执行的SQl语句和与SQL语句相关的可变参数数组,是静态方法,程序不要求有任何返回值,但在定义此方法时返回了数值类型,用来表示执行当前语句后数据库中被影响的行数,但在程序的调用中可以不返回值,直接调用方法,若目标记录不存在返回0,出错返回-1,产生异常时显示异常信息。
5、ExecSQLByDataSet方法。该方法执行SQl语句,返回DataSet数据集合,参数中有一个待执行的SQl语句和与SQL相关的可变参数数组。该方法的优点是:通过直接调用此方法获得所需的DataSet数据集,而不需要每次都创建SqlDataAdapter对象来进行填充数据,提高了代码的复用性。该方法如出错返回null,出现异常时显示异常信息,为静态方法。
在项目文件里添加两个Windows窗体,分别命名为GUISystemUser.cs和GUIRegisterUser.cs。
本系统的用户没有设置权限,如果将用户设置权限的话也可以,管理员、设备操作人员、年检部门等角色,但考虑到本系统只是一个简单的管理系统,再结合任务要求中有用户注册的模块,所以本系统的用户角色就定义为最高权限,即管理员。
在界面上添加相应的控件,按编码规范对控件命名,根据数据库表中字段数据长度,设置TextBox的MaxLength属性,限制可输入到此控件的字符数,编写TextBox的Keypress事件来设置输入的字符类型,TextBox中初始化提示信息可结合该控件的MouseDown、Leave事件和窗体的Load事件来设计。加载图片到窗体的Backgroundimage属性来设置窗体背景,注意为了使界面美观,将所有Label设置背景透明,如lblUserName.BackColor = System.Drawing.Color.Transparent。点击注册用户按钮,弹出注册用户窗体,点击立即登录按钮,注册界面隐藏,显示登录界面,界面如图4-1所示。
在项目文件里添加一个Windows窗体,命名为GUIMain.cs。
用户登录后,会显示主界面,主界面主要是特种设备使用的信息,包括全部设备详细信息,根据设备类别查询设备,菜单选项等。
主界面控件包括三个按钮,分别为按设备类别查询、查询所有设备、报废设备;一个DataGridView,在窗体初始化时显示全部设备详细信息;一个ComboBox,设置DropDownStyle属性为DropDownList,使该控件不允许手动输入值,该控件的下拉列表值是所有设备类别加载进来的,SQL语句为“select distinct(Form) from T_SpecialEquipment”。
添加一个MenuStrip控件,在此基础上,添加三个ToolStripMenuStrip,分别设置Text属性为“设备管理”、“信息管理”、“退出系统”,“设备管理”菜单的子菜单有“注册新购设备”、“维修管理”、“年检管理”;“信息管理”的子菜单有“特种设备操作人员”、“维护保养单位”、“年检部门”。
添加一个StatusStrip控件,用于显示状体信息,在用户登录后,会显示用户输入的用户名,以及当前的日期,代码为this.toolStripStatusLabel1.Text = "您好!管理员:" + userName + " 今天是:" + System.DateTime.Now.ToShortDateString()。
为方便编码实现相关控件的功能,所有控件按规范进行命名,主界面效果如图4-2所示。
添加MenuStrip控件,添加“设备管理”菜单,设备管理菜单下有“注册新购设备”、“维修管理”、“年检管理”;,每个子菜单对应一个界面,单击子菜单会弹出相应的界面,界面上有该菜单对应的功能。
在项目文件里添加一个Windows窗体,命名为GUIAddNew.cs。
购置设备时,需要对新设备进行入库信息填写,此时就需要“注册新购设备”模块,模块中包含的控件有TextBox、Label、ComboBox、DateTimePicker、Button、ListView、GroupBox,该模块需要填写设备所有信息,有必填选项和选填选项,必填选项是数据库中特种设备信息表中不可空的字段,选填信息是可空字段。为了是界面美观,用GroupBox进行分区,将相似的部分放在同一个GroupBox中。DateTimePicker控件默认的日期是当前计算机显示的日期,可以通过下拉选择日期,将“购置单价”TextBox的Text属性设置成0.0,即默认单价,如果不设置的话,将出错。
“操作人员证书编号”下拉选项是动态加载进来的,内容是“信息管理”菜单里“特种设备操作人员”中的“证书编号”,对比可以看出这两个值是一致的,如果“特种设备操作人员”中的“证书编号”值改变,则“操作人员证书编号”下拉选项的值也随之改变。因为操作人员证书编号很难记忆,所以在此模块中加了一个ListView控件,该控件实现的功能是:通过选择设备操作人员姓名和他作业项目,来选择此人的证书编号,单击ListView显示的一行记录,则自动显示操作人员证书编号。
维护保养单位名称下拉列表中的值也是动态加载进来的,它的值和“信息管理”菜单中“维护保养单位”中的“单位名称”一致,原理和前面所述一致。
设置类别下拉列表的Item属性,将类别限制在起重机、电梯、压力容器、安全附件里。
单击“添加”按钮将数据插入到特种设备信息表中,当必填信息有一项为空时,会弹出消息空提示:“第一个为空的字段”+不能为空!,比如注册代码为空,消息框显示“注册代码不能为空!”。
界面效果图如图4-3所示。
在项目文件里添加一个Windows窗体,命名为GUIRepair.cs。
“设备管理”菜单的另一个子菜单是“维修管理”,当设备有损坏时,需要对设备进行报修,此时须填写报修信息。
添加相应的控件,此模块的控件包括TextBox、Label、ComboBox、DateTimePicker、Button、ListView、GroupBox,DataGridView。将故障原因TextBox的MultiLine属性设置为True,也就是支持多行输入。
“维修管理”界面初始化时,在DataGridView控件中会显示已报修设备的信息,相应的SQL语句为“select * from 设备报修信息”,其中“设备报修信息”是已建立的视图。“设备注册代码”下拉列表是动态加载进来的,它的值就是所有设备的注册代码,对比主界面中DataGridView显示的设备信息中的注册代码,可知两项值完全一致。如果知道需要报修的“设备注册代码”,则可以直接选择,如果不知道,则可以通过选择设备名称来选择设备注册代码,方法如下:ListView控件中会显示所有设备的名称,选择其中一项,则相应的注册代码会显示在“设备注册代码”中。
根据数据库表中字段数据长度,设置TextBox的MaxLength属性,限制可输入到此控件的字符数。
填写好报修信息后,单击“添加报修项”按钮,再单击“刷新列表”,可以在右侧的表中看到刚才填写的报修项,说明数据保存成功。选中其中一行报修记录,单击“删除报修项”,则此记录删除。界面如图4-4所示。
在项目文件里添加一个Windows窗体,命名为GUICheck.cs。
对设备的年检信息,在年检管理中实现,添加控件TextBox、Label、ComboBox、DateTimePicker、Button、ListView、GroupBox,DataGridView,根据界面所示设置Text属性,按规范更改控件名称。
年检管理模块和维修管理模块在实现方法上基本一样,只是改变了数据,“年检信息”中显示相关数据的SQL语句为“select * from 设备年检信息”,其中“设备年检信息”是已建立的视图,“添加年检项”和“删除年检项”就是向T_Check表中插入和删除数据。界面效果如图4-5所示。
“信息管理”菜单的作用是管理该系统中包含的一些实体信息,如年检单位的信息,对年检单位进行添加、删除。信息管理子菜单包括“特种设备操作人员”、“维护保养单位”、“年检单位”,每个子菜单对应一个界面,在界面可实现相应功能。
在项目文件里添加一个Windows窗体,命名为GUIOperator.cs。
该模块中控件有TextBox、Label、ComboBox、DateTimePicker、Button、GroupBox,DataGridView,界面初始化时在DataGridView里显示特种设备操作人员的信息,相应的SQL语句为“select * from 设备操作人员”,其中“设备操作人员”为已建立的视图,也就是T_EquipmentOperater表中的信息。
信息包括必填和选填,必填信息为表中不可空字段,选填为可空字段,当必填信息有为空的项时,单击“添加设备操作人员”时有相应的信息提示,添加成功时提示添加成功,选中DataGridView中的一行记录,单击“删除设备操作人员”时该行记录将从表T_EquipmentOperater中删除。根据数据库表中字段数据长度,设置TextBox的MaxLength属性,限制可输入到此控件的字符数。
界面效果图如图4-6所示。
在项目文件里添加一个Windows窗体,命名为GUIMaintainUnit.cs。
根据图4-7所示界面添加相应的控件,按规范进行命名,设置相应的Text属性,其中维护保养设备类别为起重机、压力容器、电梯、安全附件四种,资质为A、B、C,界面初始化时显示维护保养单位的信息,即T_MaintainUnit表中的信息,相应的SQL语句为“select * from 维护保养单位”。
在项目文件里添加一个Windows窗体,命名为GUICheckUnit.cs。
界面初始化时,在DataGridView中显示年检部门信息,也就是T_CheckUnit表中的信息,相应的SQL语句为“select * from 维护保养单位”,在实现方法上与上述“特种设备操作人员模块”和“维护保养单位模块”基本一致,只是相关的数据不同而已,此处不再累赘,界面效果如图4-8所示。
本系统虽然实现了所有功能需求,但由于开发时间以及开发者水平的限制,在具体细节上仍然存在一定的缺陷,现将缺陷阐述如下:
1、管理员的信息不详细,只有用户名和密码,以及自动增长的ID号,如果要将本系统投入使用的话,应增加管理员的详细信息,包括姓名、性别、身份证号码、联系电话等等。
2、管理员和特种设备之间虽然在总E-R图中有“管理”的联系,但在程序设计中并没有表现出来,实际应该在特种设备信息中加上管理员的信息,确定这台设备是哪个管理员负责。
3、本系统按照任务书的要求,只是将角色定义成了管理员,没有将角色拓展。
4、本系统中使用ListView控件实现通过设备名称选择注册代码,由于使用的SQL语句为“select * from T_SpecialEquipment where EquipmentName = '" + selectName + "'”,所以特种设备名称不能相同,设备操作人员和其所操作的设备类型也不能出现两个一样的值。
5、在系统界面上不能查看本次登录的管理员信息,管理员密码也没有设计修改的界面。
6、各界面上都没有设计信息数据的修改,只有插入新数据和删除旧数据。
综合以上所述的缺陷,下一步需要做的工作是:完善本系统,争取将缺陷全部消除,以及扩展新功能,应用到高校特种设备管理的具体工作中,将本系统投入使用。
项目文件下载地址:http://download.csdn.net/detail/abc123abc_123/6035043