2.3-3 车辆安检情况
安全检查-车检是直接对班次信息的车辆检查当通过时会自动新增车检信息,不通过也可以快速报废其也会记录状态,功能如图图2.3-3
从界面上可以看到我们这里用到工具箱的控件有:
控件名称 | 说明 |
容器控件(框)GroupBox | 每个控件都可以根据需要的功能更改其属性,右键查看.也可以进行编辑事件-->找到一个闪电图标点击查看需要的事件,例如:查询按钮(btnSrean)是修改过按钮文本Text属性的重命名! btnSrean_Click这是单击查询事件,还有很多的事件根据项目需求找到来编辑.
|
公共控件(单选框)CheckBox | |
公共控件(文字描写)Label | |
公共控件(按钮)Button | |
公共控件(日期)DateTimePicker | |
公共控件(文本框)TextBox | |
所有Windows窗体(dgv)DataGridView | |
公共控件(下拉框)ComboBox |
车辆安检情况功能实现:
第一步:数据库
1、 表与表关系(图2.3-4)
从上面可以知道用到的表有:
表1:车辆安检表(VehicleInspectList)
主要包含如下字段信息:(说明)
列名 | 数据类型 | 主键/外键 | 说明 |
VehicleInspectID | int - Identity | 主键 | 车辆安检ID |
InspectDate | datetime |
| 安检日期 |
InspectResult | char (100) |
| 检查结果 |
StaffID | int | 外键 | 员工ID |
UserID | int | 外键 | 用户ID |
VehicleID | int | 外键 | 车辆ID |
NousertNo | bit |
|
|
表2:车辆表(VehicleList)
主要包含如下字段信息:(说明)
列名 | 数据类型 | 主键/外键 | 说明 |
VehicleID | int - Identity | 主键 | 车辆ID |
VehicleNumber | char (100) |
| 车辆编号 |
VehicleBlockNumber | char (100) |
| 车牌号 |
VehicleStateID | int | 外键 | 车辆状态ID |
MotorcadeID | int | 外键 | 车队ID |
VehicleClearID | int | 外键 | 车辆明细ID |
VehicleTypeID | int | 外键 | 车型ID |
DriverID | int | 外键 | 司机ID |
DeputyDriverOneID | int | 外键 | 副司机1ID |
DeputyDriverTwoID | int | 外键 | 副司机2ID |
StationID | int | 外键 | 站点ID |
LineID | int | 外键 | 线路ID |
OpenVehicleTime | datetime |
| 发车时间 |
ASeatNumberID | int | 外键 | 座号ID |
EntireTicketNumber | char (100) |
| 全票数 |
HalfTicketNumber | char (100) |
| 半票数 |
DiscountTicketNumber | char (100) |
| 打折票数 |
FreeTicketNumber | char (100) |
| 免票数 |
FeeRateID | int | 外键 | 费率ID |
SeatNumber | char (100) |
| 座位数 |
AddSeatNumber | char (100) |
| 加座数 |
TotalSum | decimal (18, 2) |
| 总金额 |
Remarks | char (100) |
| 备注 |
ClassesLongStopID | int | 外键 | 班次长停ID |
ClassesRepeatID | int | 外键 | 班次循环ID |
ClassesNewsID | int | 外键 | 班次信息ID |
Classes | char (100) |
| 班次 |
OpenVehicleSiteID | int | 外键 | 发车站ID |
EndVehicleSiteID | int | 外键 | 终点站ID |
DeductFeeNo | bit |
| 扣费否 |
MotorTypeNumber | char (100) |
| 发动机型号 |
MotorNumber | char (100) |
| 发动机号 |
VehicleAlterTypeCase | char (100) |
| 车辆改型情况 |
WhetherCheck | char (100) |
| 是否安检 |
SafeCheckNo | bit |
| 安检否 |
表3:站点表 (StationList)
主要包含如下字段信息:(说明)
列名 | 数据类型 | 主键/外键 | 说明 |
StationID | int - Identity | 主键 | 站点ID |
StationNumber | char (100) |
| 站点编号 |
StationName | char (100) |
| 站点名称 |
WindowID | int | 外键 | 窗口ID |
StopNo | bit |
| 调用否 |
表4:员工表 (StaffList)
主要包含如下字段信息:(说明)
列名 | 数据类型 | 主键/外键 | 说明 |
StaffID | int - Identity | 主键 | 员工ID |
StaffNumber | char (100) |
| 员工编号 |
StaffName | char (100) |
| 员工姓名 |
Sex | char (100) |
| 性别 |
IdentityCardNumber | char (100) |
| 身份证号 |
HomeLocation | char (100) |
| 家庭地址 |
Phone | char (100) |
| 电话 |
StaffTypeID | int | 外键 | 员工类型ID |
OrganizationID | int | 外键 | 机构ID |
StationID | int | 外键 | 站点ID |
Remarks | char (100) |
| 备注 |
LeaveOfficeNo | bit |
| 离职否 |
InvokingNo | bit |
| 调用否 |
Date | datetime |
| 日期 |
Photo | nvarchar (3000) |
| 相片 |
下面开始编写数据库储存过程:
数据库对应逻辑层(BLL)和界面层(UIL)文件夹:SafetyCheck_frmSafeCheckDemand(车辆信息窗体和对应的类的存储过程)
USE [客运综合管理系统2015]
GO
/****** Object: StoredProcedure [dbo].[SafetyCheck_frmSafeCheckDemand] Script Date: 05/31/2015 20:23:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SafetyCheck_frmSafeCheckDemand]--[安全检查_车辆安检情况查询]
@Type CHAR(200)='',
@InspectDate DATETIME='',
@InspectResult CHAR(100)='',
@StaffID INT=0,
@UserID INT=0,
@VehicleID INT=0,
@NousertNo BIT=0,
@VehicleInspectID INT=0
AS
BEGIN
IF @Type='frmSafeCheckDemand_Load_dgvSafeCheckDemand'--dgv查询
BEGIN
SELECT VehicleList.VehicleID, VehicleInspectList.VehicleInspectID, VehicleInspectList.InspectDate, LTRIM(RTRIM(VehicleInspectList.InspectResult))AS InspectResult,
LTRIM(RTRIM(StationList.StationName))AS StationName, LTRIM(RTRIM(VehicleList.VehicleBlockNumber)) AS VehicleBlockNumber, LTRIM(RTRIM(VehicleList.Classes))AS Classes,
LTRIM(RTRIM(VehicleList.WhetherCheck))AS WhetherCheck, LTRIM(RTRIM(StaffList.StaffName))AS StaffName, LTRIM(RTRIM(StaffList_1.StaffName)) AS StaffNameOne,
VehicleInspectList.NousertNo, VehicleInspectList.StaffID, VehicleInspectList.UserID, StationList.StationID
FROM StationList INNER JOIN
VehicleList ON StationList.StationID = VehicleList.StationID INNER JOIN
VehicleInspectList INNER JOIN
StaffList ON VehicleInspectList.StaffID = StaffList.StaffID INNER JOIN
StaffList AS StaffList_1 ON VehicleInspectList.UserID = StaffList_1.StaffID ON VehicleList.VehicleID = VehicleInspectList.VehicleID
WHERE VehicleList.DeductFeeNo=0
ORDER BY VehicleInspectList.InspectDate DESC--数据按日期最新排序
END
IF @Type='frmSafeCheckDemand_SelectStaff'--下拉框绑定员工
BEGIN
SELECT StaffID, LTRIM(RTRIM(StaffNumber))AS StaffNumber, LTRIM(RTRIM(StaffName))AS StaffName
FROM StaffList
END
IF @Type='frmSafeCheckDemand_SelectStaffOne'--选择员工编号跳出员工姓名
BEGIN
SELECT StaffID, LTRIM(RTRIM(StaffNumber))AS StaffNumber, LTRIM(RTRIM(StaffName))AS StaffName
FROM StaffList
WHERE StaffList.StaffID=@StaffID
END
IF @Type='frmSafeCheckDemand_InsertVehicleInspectList'--新增车检
BEGIN
INSERT INTO VehicleInspectList(InspectDate, InspectResult, StaffID, UserID, VehicleID, NousertNo)
VALUES (@InspectDate, @InspectResult, @StaffID, @UserID, @VehicleID, @NousertNo)
END
IF @Type='frmSafeCheckDemand_UpdateNousertNo'--修改报废否
BEGIN
UPDATE VehicleInspectList
SET VehicleInspectList.NousertNo=1
WHERE VehicleInspectList.VehicleInspectID=@VehicleInspectID
END
IF @Type='frmSafeCheckDemand_Load_SafeCheckDemand'--获取车牌号
BEGIN
SELECT VehicleList.VehicleID, VehicleInspectList.VehicleInspectID, VehicleInspectList.InspectDate, VehicleInspectList.InspectResult, StationList.StationName, ltrim(rtrim(VehicleList.VehicleBlockNumber))AS VehicleBlockNumber,
VehicleList.Classes, VehicleList.WhetherCheck, StaffList.StaffName, StaffList_1.StaffName AS StaffNameOne, VehicleInspectList.NousertNo, VehicleInspectList.StaffID, VehicleInspectList.UserID,
StationList.StationID
FROM StationList INNER JOIN
VehicleList ON StationList.StationID = VehicleList.StationID INNER JOIN
VehicleInspectList INNER JOIN
StaffList ON VehicleInspectList.StaffID = StaffList.StaffID INNER JOIN
StaffList AS StaffList_1 ON VehicleInspectList.UserID = StaffList_1.StaffID ON VehicleList.VehicleID = VehicleInspectList.VehicleID
WHERE VehicleInspectList.VehicleInspectID=@VehicleInspectID AND VehicleList.DeductFeeNo=0
END
第二步:服务端BLL(逻辑层)写方法<---调用数据库代码:
对应文件夹: SafetyCheck_frmSafeCheckDemand.cs(车辆安检情况类)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel; //添加命名空间
using System.Data; //添加命名空间
using System.Data.SqlClient;//添加命名空间
namespace BLL客运综合管理系统.SafeCheck
{
[ServiceContract]//添加服务标签
public class frmSafeCheckDemand
{
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();//实例化调用数据库方法
#region 绑定下拉框班次方法
[OperationContract]//添加行为标签
public DataSet frmSafeCheckDemand_Load_dgvSafeCheckDemand()//自定义方法名称
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
};
mySqlParameters[0].Value = "frmSafeCheckDemand_Load_dgvSafeCheckDemand";//对应数据库方法名字
DataTable dt = myDALMethod.QueryDataTable("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;//返回类型
}
#endregion
#region 下拉框绑定员工方法
[OperationContract]
public DataSet frmSafeCheckDemand_SelectStaff()
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
};
mySqlParameters[0].Value = "frmSafeCheckDemand_SelectStaff";
DataTable dt = myDALMethod.QueryDataTable("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
#region 选择员工编号跳出员工姓名方法
[OperationContract]
public DataSet frmSafeCheckDemand_SelectStaffOne(int intStaffID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@StaffID", SqlDbType.Int)
};
mySqlParameters[0].Value = "frmSafeCheckDemand_SelectStaffOne";
mySqlParameters[1].Value = intStaffID;
DataTable dt = myDALMethod.QueryDataTable("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
#region 新增车检方法
[OperationContract]
public int frmSafeCheckDemand_InsertVehicleInspectList(DateTime InspectDate, string strInspectResult, int intStaffID, int intUserID, int intVehicleID, Boolean boolNousertNo)
{//InspectDate, InspectResult, StaffID, UserID, VehicleID, NousertNo
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@InspectDate", SqlDbType.DateTime),
new SqlParameter("@InspectResult", SqlDbType.Char),
new SqlParameter("@StaffID", SqlDbType.Int),
new SqlParameter("@UserID", SqlDbType.Int),
new SqlParameter("@VehicleID", SqlDbType.Int),
new SqlParameter("@NousertNo", SqlDbType.Bit),
};
mySqlParameters[0].Value = "frmSafeCheckDemand_InsertVehicleInspectList";
mySqlParameters[1].Value = InspectDate;
mySqlParameters[2].Value = strInspectResult;
mySqlParameters[3].Value = intStaffID;
mySqlParameters[4].Value = intUserID;
mySqlParameters[5].Value = intVehicleID;
mySqlParameters[6].Value = boolNousertNo;
return myDALMethod.UpdateData("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
}
#endregion
#region 修改报废否方法
[OperationContract]
public int frmSafeCheckDemand_UpdateNousertNo(int intVehicleInspectID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@VehicleInspectID", SqlDbType.Int)
};
mySqlParameters[0].Value = "frmSafeCheckDemand_UpdateNousertNo";
mySqlParameters[1].Value = intVehicleInspectID;
return myDALMethod.UpdateData("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
}
#endregion
#region 修改报废否方法
[OperationContract]
public DataSet frmSafeCheckDemand_Load_SafeCheckDemand(int intVehicleInspectID)
{
SqlParameter[] mySqlParameters = {
new SqlParameter("@Type", SqlDbType.Char),
new SqlParameter("@VehicleInspectID", SqlDbType.Int)
};
mySqlParameters[0].Value = "frmSafeCheckDemand_Load_SafeCheckDemand";
mySqlParameters[1].Value = intVehicleInspectID;
DataTable dt = myDALMethod.QueryDataTable("SafetyCheck_frmSafeCheckDemand", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
#endregion
}
}
第三步:客户端UIL(界面层)写调用方法<---调用BLL(逻辑层)代码:
对应文件夹: SafetyCheck_frmSafeCheckDemand.cs(车辆安检查询窗体)对应各种功能详解:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text; //添加命名空间
using System.Windows.Forms;//添加命名空间
namespace XX集团客运综合管理系统client.SafeCheck
{
public partial class frmSafeCheckDemand : Form
{
public frmSafeCheckDemand()
{
InitializeComponent();
}
BLL客运综合管理系统.SafeCheck.frmSafeCheckDemand.frmSafeCheckDemandClient myfrmSafeCheckDemandClient =
new BLL客运综合管理系统.SafeCheck.frmSafeCheckDemand.frmSafeCheckDemandClient();//实例化调用BLL方法使用
public delegate void ChangeFormColor(bool topmost); //自定义方法使用
public delegate void ChangeFormColor1(bool topmost1); //自定义方法使用
public event ChangeFormColor ChangeColor; //自定义方法使用
public event ChangeFormColor1 ChangeColor1;//自定义方法使用
private void frmAnJianQinKuanChaXun_FormClosing(object sender, FormClosingEventArgs e)
{
ChangeColor1(true);
ChangeColor(true);
}
#region frmSafeCheckDemand_Load事件功能
DataTable dtdgvSafeCheckDemand;//声明一个全局变量
private void frmSafeCheckDemand_Load(object sender, EventArgs e)
{
DataTable dtStationName = myfrmSafeCheckDemandClient.frmSafeCheckDemand_Load_dgvSafeCheckDemand().Tables[0]; //车牌号下拉框绑定
cboVehicleBlockNumberOne.DataSource = dtStationName; //绑定数据源
cboVehicleBlockNumberOne.DisplayMember = "VehicleBlockNumber";
cboVehicleBlockNumberOne.ValueMember = "VehicleID";
cboVehicleBlockNumberOne.SelectedIndex = -1;
DataTable dtStaff = myfrmSafeCheckDemandClient.frmSafeCheckDemand_SelectStaff().Tables[0];
cboNumber.DataSource = dtStaff; //绑定数据源
cboNumber.DisplayMember = "StaffNumber";
cboNumber.ValueMember = "StaffID";
cboNumber.SelectedIndex = -1;
if (cboNumber.Text.ToString().Trim() == "")
{
txtName.Text = "";//清空文本
}
dtdgvSafeCheckDemand=myfrmSafeCheckDemandClient.frmSafeCheckDemand_Load_dgvSafeCheckDemand().Tables[0];
dgvSafeCheckDemand.DataSource = dtdgvSafeCheckDemand;//绑定dgv信息
this.dgvSafeCheckDemand = SYS_PublicStaticClass.SetDgv(dgvSafeCheckDemand);//序号
this.dgvSafeCheckDemand.CellBorderStyle = DataGridViewCellBorderStyle.Sunken;//设置dgv三维凹陷边框
this.dgvSafeCheckDemand.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv列标题居中
this.dgvSafeCheckDemand.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置dgv单元格内容居中
string[] strVehicleBlockNumber = new string[dtdgvSafeCheckDemand.Rows.Count];
for (int i = 0; i < dtdgvSafeCheckDemand.Rows.Count; i++)
{
strVehicleBlockNumber[i] = dtdgvSafeCheckDemand.Rows[i]["VehicleBlockNumber"].ToString().Trim();
}
txtVehicleBlockNumber.AutoCompleteSource = AutoCompleteSource.CustomSource;//设置车牌号自动完成源
txtVehicleBlockNumber.AutoCompleteCustomSource.AddRange(strVehicleBlockNumber);
txtVehicleBlockNumber.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
dtpDate.Format = DateTimePickerFormat.Custom;//设置时间格式2015-04-21 16:09:00
dtpDate.CustomFormat = "yyyy-MM-dd HH:mm:ss";
dtpDateOne.Format = DateTimePickerFormat.Custom;
dtpDateOne.CustomFormat = "yyyy-MM-dd HH:mm:ss";
}
#endregion
#region 多条件查询功能:btnSearch_Click单击事件
private void btnSearch_Click(object sender, EventArgs e)
{
DataView dvSafeCheckDemand = new DataView(dtdgvSafeCheckDemand);//实例化
DateTime dtDate = dtpDate.MinDate; //获取日期控件日期最小值
DateTime dtDateOne = dtpDateOne.MaxDate; //获取日期控件日期最大值
string strVehicleBlockNumber = ""; //声明变量并赋值
if (chkSafeCheckDemand.Checked == true)//判断单选框
{
dtDate = dtpDate.Value; //获取日期控件日期的值
dtDateOne = dtpDateOne.Value;
}
if (txtVehicleBlockNumber.Text != null)
{
strVehicleBlockNumber = txtVehicleBlockNumber.Text.ToString().Trim();
}
dvSafeCheckDemand.RowFilter = "InspectDate>='" + dtDate + "'AND InspectDate<='" +
dtDateOne + "'AND VehicleBlockNumber LIKE'%" + strVehicleBlockNumber + "%'";
dgvSafeCheckDemand.DataSource = dvSafeCheckDemand.ToTable();//返回数据查询
}
#endregion
private void cboNumber_DropDownClosed(object sender, EventArgs e)
{
try
{
PublicStaticObject.intCareID = (int)(cboNumber.SelectedValue);
DataTable dtStaff = myfrmSafeCheckDemandClient.frmSafeCheckDemand_SelectStaffOne(PublicStaticObject.intCareID).Tables[0];
txtName.Text = dtStaff.Rows[0]["StaffName"].ToString().Trim();//下拉框选择对应绑定数据
}
catch { }
}
#region 车检功能:btnCheak_Click单击事件
private void btnCheak_Click(object sender, EventArgs e)
{
try
{
if (cboVehicleBlockNumberOne.Text == "" || cboInspectResult.Text == "" || cboNumber.Text == "") //判断条件是否同时满足
{
MessageBox.Show("注意!车牌号/是否通过/车检员编号都不能为空!!!");
return;
}
if (MessageBox.Show("您确定对车牌号为(" + cboVehicleBlockNumberOne.Text.ToString().Trim() + ")的车辆进行车检?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
DateTime InspectDate = DateTime.Now;
string strInspectResult = cboInspectResult.Text.ToString().Trim();
int intStaffID = PublicStaticObject.intCareID;
int intUserID = PublicStaticObject.intSatffTwo;
int intVehicleID = (int)(cboVehicleBlockNumberOne.SelectedValue);
Boolean boolNousertNo = false;
int i = myfrmSafeCheckDemandClient.frmSafeCheckDemand_InsertVehicleInspectList(InspectDate, strInspectResult, intStaffID, intUserID, intVehicleID, boolNousertNo);
if (i > 0)
{
MessageBox.Show("车检成功!");
frmSafeCheckDemand_Load(null, null);
}
else
{
MessageBox.Show("车检失败!");
frmSafeCheckDemand_Load(null, null);
}
}
}
catch { }
}
#endregion
#region 报废功能:btnNoUser_Click单击单击事件
private void btnNoUser_Click(object sender, EventArgs e)
{
try
{
if (Convert.ToBoolean(dgvSafeCheckDemand.CurrentRow.Cells["报废否"].FormattedValue) == true) //判断
{
MessageBox.Show("已经报废无须重复!");
return;
}
if (PublicStaticObject.intVehicleInspectID > 0)
{
if (MessageBox.Show("您确定报废车牌号为(" + PublicStaticObject.VehicleBlockNumber + ")的车辆的车检?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
int i = myfrmSafeCheckDemandClient.frmSafeCheckDemand_UpdateNousertNo(PublicStaticObject.intVehicleInspectID); //执行报废方法
if (i > 0)
{
MessageBox.Show("报废成功!");
frmSafeCheckDemand_Load(null, null);
}
else
{
MessageBox.Show("报废失败!");
frmSafeCheckDemand_Load(null, null);
}
}
}
else
{
MessageBox.Show("请选择一项!");
}
}
catch { }
}
#endregion
#region dgv单击获取ID功能:dgvSafeCheckDemand_CellClick单击事件
private void dgvSafeCheckDemand_CellClick(object sender, DataGridViewCellEventArgs e)
{
PublicStaticObject.intVehicleInspectID = Convert.ToInt32(dgvSafeCheckDemand.CurrentRow.Cells["车辆安检ID"].Value); //获取公共ID
PublicStaticObject.VehicleBlockNumber = Convert.ToString(dgvSafeCheckDemand.CurrentRow.Cells["车牌号"].Value);
}
#endregion
#region 右键功能,可以调用报废方法
private void 报废ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (PublicStaticObject.intVehicleInspectID > 0)
{
if (MessageBox.Show("您确定报废车牌号为(" + PublicStaticObject.VehicleBlockNumber + ")的车辆的车检?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
int i = myfrmSafeCheckDemandClient.frmSafeCheckDemand_UpdateNousertNo(PublicStaticObject.intVehicleInspectID); //执行报废方法
if (i > 0)
{
MessageBox.Show("报废成功!");
frmSafeCheckDemand_Load(null, null);
}
else
{
MessageBox.Show("报废失败!");
frmSafeCheckDemand_Load(null, null);
}
}
}
else
{
MessageBox.Show("请选择一项!");
}
}
#endregion
}
}
以上是安全检查-车辆安检查询功能实现步骤:数据库-->BLL-->UIL
----实现功能待续!!!