3.1 系统需求分析
该过程是个不断认识不断细化的过程。这里所要完成的工作是深入描述软件的功能和性能,确定软件的设计限制和软件同其他系统元素的接口细节,从而奠定软件的开发基础。
- 性能需求:该系统中,管理员模块只有管理人员才能对其进行操作,一般的登陆用户无权操作,系统管理人员要进行身分验证才能进入界面操作。登陆驾驶员也要进行身份验证方可进行操作操作。
- 功能需求:我们设计的系统要完成的功能模块如下:
一: 车辆管理(车辆维修管理,车辆报废管理等)
二: 车辆管理(车辆建立,车辆查询,车辆删除,车辆变更查询等.)
三: 车辆运营管理(车辆运营表,车辆运营查询,清空车辆运营表)
四:驾驶员管理(驾驶员管理,驾驶员查询等)
五:耗材管理(对于油,车的耗材类管理)
六:计划管理(训练,保养,维修等预定的计划)
七:系统维护(系统备份,系统还原,系统检查)
- 环境需求:客户端应有IE或其它浏览器,服务器端应有Windows2000,WindowsNT,或Windows98 ,服务器软件应有pws或IIS,硬件要求386以上的计算机。
- 界面需求:本软件是面向大众,界面友好,操作简单灵活,根据界面上的提示便可完成一系列动作。
3.3 系统结构
该系统的整个结构图如下所示:
各功能模块是相互独立的,一个模块的内部与另一个模块的内部是不相关的,每个模块留出一个接口供其他模块调用。或者使用POST方式进行表单提交,用?后面带函数和参数的方式,进行模块与模块间的信息传递。有部分模块是通用的,比如连接数据库模块,它需要经常用到,所以独立出来是最好的选择。
4.1 登陆模块
本模块所要实现在功能是重要的,对于用户来说,登陆前后的区别在于:登陆之前不是本的成员,无权操作,无权浏览;之后有权查询也有权操作。
用户提交信息用HTML表单完成,需文件Index.asp。系统自动登陆用ASP操作数据库完成,需要连接文件User_Login.asp。
用户在Index.asp文件中输入个人信息,提交到user_login.asp文件。并由这个ASP文件进行数据库动作,根据不同的动作结果,系统将作出不同的信息反馈给用户。
这是登陆处理模块的中心,user_login.asp文件很简单:直接调用其中的登陆函数action进行动作,结构如图所示。
登陆程序被调用后,先检查该用户是否已经登陆过,按是否登陆进行分枝选择:对已经是登陆的用户显示相应信息,或将新用户加入的数据库中,即为该用户登陆。
判断条件是通过action函数实现的,该函数利用提取的表单字段值对数据库进行查询。如果查询到结果。则表明该用户经在数据库中,即该用户是登陆了。如果记录集为空则表明该用户是非法登陆。
编辑修改管理员是通过user_login.asp来实现的,这个方法是模块的中心,也比较复杂,其结构如图所示。
车辆查询登记:
代码分析:
<%
If request("action") = "save" Then
Call save()
ElseIf request("action") = "edit" Then
Call edit()
ElseIf request("action") = "del" Then
Call del()
ElseIf request("action") = "outlist" Then
Call outlist()
ElseIf request("action") = "saveoutlist" Then
Call saveoutlist()
Else
Call list()
End If
End Sub
Sub list()%>
<script language="javascript">
function browse(id){location.href='<%=filename%>?action=edit&mode=browse&id='+id;}
function del(id){if(confirm("删除车辆信息,将会删除与其相关的所有信息\n确实要删除吗?")){location.href='<%=filename%>?action=del&id='+id;}}
function edit(id){location.href='<%=filename%>?action=edit&mode=update&id='+id;}
</script>
<%
sql="select * from [车辆基本特征] where Id >0"
If Request("zd")<>"" then
sql = sql & " and " & Request("zd") & " = '" & Request("keyword") & "'"
End if
If Request("order") = "" Then
sql = sql & " order by id desc"
Else
If split(Request("order"),"|")(1) = "1" Then
sql = sql & " order by "&split(Request("order"),"|")(0)&" asc"
Else
sql = sql & " order by "&split(Request("order"),"|")(0)&" desc"
End If
End If
'================================
'新建一个类
'================================
Set jumbotpage=new ShowMorePage
jumbotpage.getconn=conn
jumbotpage.getsql = sql
jumbotpage.pagesize=pagesize
set rs=jumbotpage.getrs()
%>
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">
<tr>
<td><%jumbotpage.showpage()%></td>
</tr>
</table>
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">
<tr class="bg_tabletop" align=center>
<td width=* align="center"><b><%Call OrderBy("车号","车号")%></b></td>
<td width=* align="center"><b><%Call OrderBy("厂牌型号","厂牌型号")%></b></td>
<td width=* align="center"><b><%Call OrderBy("车辆类型","车辆类型")%></b></td>
<td width=* align="center"><b><%Call OrderBy("车辆颜色","车辆颜色")%></b></td>
<td width=* align="center"><b><%Call OrderBy("所属单位","所属单位")%></b></td>
<td width=* align="center"><b>操作</b></td>
</tr>
<%
If rs.recordcount > 0 Then
for i=1 to jumbotpage.GetCurPageNum '当前页的记录数目
%>
<tr class="bg_tablebody" align=center>
<td><a href=Menu_Vehicle_Circumstance_Introduction.asp?action=edit&mode=browse&id=<%=rs("Id")%>><% =rs("车号")%></a></td>
<td><% =rs("厂牌型号")%></td>
<td><% =rs("车辆类型")%></td>
<td align="center"><% =rs("车辆颜色")%></td>
<td><% =rs("所属单位")%></td>
<!--#include file="Inc/Menu_Operate.asp"-->
</tr>
<%
rs.movenext
Next
End If
%>
</table>
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">
<tr>
<td><%jumbotpage.showpage()%></td>
</tr>
</table>
<form action="<%=filename%>?action=list" method=get name="thisform" onSubmit="return Validator.Validate(this,2)">
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain" id='searchpage'>
<tr class="bg_tabletop" align=center>
<td colspan="2"><b>查询记录</b></td>
</tr>
<tr class="bg_tablebody">
<td width="150" align=right>字段:<select size="1" name="zd">
<option value="" selected>==全部==</option>
<option value="车号" <%If Request("zd") = "车号" Then%>selected<%End If%>>车号</option>
<option value="车辆类型" <%If Request("zd") = "车辆类型" Then%>selected<%End If%>>车辆类型</option>
<option value="所属单位" <%If Request("zd") = "所属单位" Then%>selected<%End If%>>所属单位</option>
</select></td>
<td>= <input type=text name="keyword" size=25 value='<% =Request("keyword")%>'></td>
</tr>
</table>
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">
<tr class="bg_tablebottom">
<td align=center><input title='搜索' type="image" src="Images/btn/Search1.gif" class='picbutton'></td>
</tr>
</table>
</form>
<%End Sub%>
<%
Sub del()
Set rs = conn.execute("select * from [车辆基本特征] where id=" & Request("id"))
ch = rs("车号")
Set rs = Nothing
'conn.execute("delete from [技术检查状态记录] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆保险] where [车号]='" & ch & "'")
'conn.execute("delete from [事故记录] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆变更登记] where [车号]='" & ch & "'")
'conn.execute("delete from [油料登记] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆保险] where [车号]='" & ch & "'")
'conn.execute("delete from [派车登记] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆使用成本] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆使用杂费] where [车号]='" & ch & "'")
'conn.execute("delete from [车辆年审情况] where [车号]='" & ch & "'")
conn.execute("delete from [车辆基本特征] where id=" & Request("id"))
Response.write "<script>history.go(-1);</script>"
End Sub
%>
<%Sub edit()
Dim readonly,mode,id
mode=Request("mode")
id=Request("id")
Set rs = server.CreateObject ("Adodb.recordset")
sql="select * from [车辆基本特征]"
If mode="update" Then
sql = sql & " where id=" & id
readonly=""
ElseIf mode="insert" Then
readonly=""
Else
sql = sql & " where id=" & id
readonly="readonly"
End If
rs.open sql,conn,3,3
%>
<form action='<%=filename%>?action=save&mode=<%=mode%>&id=<%=id%>' method=post name='thisform' onSubmit='return Validator.Validate(this,2)'>
<div id='printpage'>
<table width='100%' cellspacing='1' cellpadding='5' align=center class='bg_tablemain'>
<tr class="bg_tablebody">
<td width="19%" align=right>车号:</td>
<td width="31%"><input type=text name=ch size=12 value="<%=FormatValue1(mode,rs("车号"))%>" <%=readonly%> dataType="CarNumber" msg="车号不正确"> <%If mode <>"browse" Then%><font color="#FF0000">*</font>(格式:军A-00000)<%End If%></td>
<td width="19%" align=right>编配日期:</td>
<td width="31%"><input type=text name="bprq" size=12 value="<%=FormatValue1(mode,rs("编配日期"))%>" <%=readonly%> dataType="Date" msg="日期格式为“<%=Date()%>”">
<%If mode<>"browse" Then%>
<input type="button" onClick="SelectDate('bprq')" value="选择">
<input type="button" onClick="CancelDate('bprq')" value="取消">
<%End If%>
</td>
</tr>
<tr class="bg_tablebody">
<td align=right>厂牌型号:</td>
<td><div style="position:absolute;width:0px;height:0px;overflow:visible;">
<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=cpxhdiv>
<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=厂牌型号&idname=cpxh" frameBorder=0 width=180 scrolling=yes height=60></iframe>
</div>
</div>
<div style="visibility:visible;"><input name="cpxh" type="text" id="cpxh" value="<%=FormatValue1(mode,rs("厂牌型号"))%>" size=25 <%=readonly%> onClick="ShowOrHidden('cpxhdiv')"></div>
</td>
<td align=right>车辆类型:</td>
<td><div style="position:absolute;width:0px;height:0px;overflow:visible;">
<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=cllxdiv>
<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=车辆类型&idname=cllx" frameBorder=0 width=120 scrolling=yes height=60></iframe>
</div>
</div>
<div style="visibility:visible;"><input name="cllx" type="text" id="cllx" value="<%=FormatValue1(mode,rs("车辆类型"))%>" size=12 <%=readonly%> onClick="ShowOrHidden('cllxdiv')"></div>
</td>
</tr>
<tr class="bg_tablebody">
<td align=right>总金额:</td>
<td><input type=text name=zje size=10 value="<%=FormatValue1(mode,rs("总金额"))%>" <%=readonly%>>
(万元)</td>
<td align=right>车架号:</td>
<td><input type=text name=cjh size=25 value="<%=FormatValue1(mode,rs("车架号"))%>" <%=readonly%>></td>
</tr>
<tr class="bg_tablebody">
<td align=right>发动机号:</td>
<td><input type=text name=fdjh size=25 value="<%=FormatValue1(mode,rs("发动机号"))%>" <%=readonly%>></td>
<td align=right>总质量:</td>
<td><input type=text name=zzl size=8 value="<%=FormatValue1(mode,rs("总质量"))%>" <%=readonly%>>
(吨)</td>
</tr>
<tr class="bg_tablebody">
<td align=right>核定载质量:</td>
<td><input type=text name=hdzzl size=6 value="<%=FormatValue1(mode,rs("核定吨位"))%>" <%=readonly%>>
(吨)</td>
<td align=right>核定座位:</td>
<td><input type=text name=hdzw size=6 value="<%=FormatValue1(mode,rs("核定座位"))%>" <%=readonly%>>
(人)</td>
</tr>
<tr class="bg_tablebody">
<td align=right>车辆颜色:</td>
<td colspan="3"><div style="position:absolute;width:0px;height:0px;overflow:visible;">
<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=csysdiv>
<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=车辆颜色&idname=csys" frameBorder=0 width=60 scrolling=yes height=60></iframe>
</div>
</div>
<div style="visibility:visible;"><input name="csys" type="text" id="csys" value="<%=FormatValue1(mode,rs("车辆颜色"))%>" size=8 <%=readonly%> onClick="ShowOrHidden('csysdiv')"></div>
</td>
</tr>
<tr class="bg_tablebody">
<td align=right>所属单位:</td>
<td colspan="3"><div style="position:absolute;width:0px;height:0px;overflow:visible;">
<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=ssdwdiv>
<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=所属单位&idname=ssdw" frameBorder=0 width=100 scrolling=yes height=60></iframe>
</div>
</div>
<div style="visibility:visible;"><input name="ssdw" type="text" id="ssdw" value="<%=FormatValue1(mode,rs("所属单位"))%>" size=12 <%=readonly%> onClick="ShowOrHidden('ssdwdiv')"> <%If mode <>"browse" Then%><font color="#FF0000">*</font>(如:业务科...)<%End If%></div>
</td>
</tr>
<tr class="bg_tablebody">
<td align=right>备注:</td>
<td colspan="3"><input type=text name=bz size=40 value="<%=FormatValue1(mode,rs("备注"))%>" <%=readonly%>></td>
</tr>
<%If mode <>"insert" Then%>
<tr class="bg_tablebody">
<td align=right>车辆照片:</td>
<td colspan=5><%If mode<>"insert" Then%><img id='crzp' src="<%=rs("车辆照片")%>" border="1" width="320" height="240"><%Else%><img src="picture/blank.gif" border="1" width="300" height="180"><%End If%></td>
</tr>
<%End If%>
<%If mode="update" Then%>
<tr class="bg_tablebody" id=adv1 style="display:">
<td align=right>车辆照片:</td>
<td colspan=5><iframe marginWidth=0 marginHeight=0 src="Pic_upload.asp?path1=Vehicle&path2=crzp&fileid=<%=rs("id")%>" frameBorder=0 width=400 scrolling=no height=20></iframe></td>
</tr>
<%End If%>
</table>
</div>
<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">
<tr class="bg_tablebottom">
<td align=center><!--#include file="Inc/Btn_Bttm.asp"-->
<%If mode="update" Then%>
<input id=advcheck name="showit" type=checkbox value=1 οnclick=showpic() checked>
<span id=advance1>相关图片上传</span>
<%End If%>
3.车辆统计查询:
代码分析:
<%
dim total(100,2)
Set rs = server.CreateObject ("Adodb.recordset")
sql="select [所属单位] from [车辆基本特征] group by [所属单位]"
rs.open sql,conn,3,3
j = 0
hj = 0
If rs.eof Then
Response.write "单位无车辆"
Else
do while not rs.eof
j = j + 1
sybm = rs("所属单位")
total(j,2) = sybm
number = 0
sql ="select * from [车辆基本特征] where [所属单位]='"&sybm&"'"
Set rss = server.CreateObject ("Adodb.recordset")
rss.open sql,conn,3,3
If not rss.eof Then
number = rss.recordcount
End If
total(j,1)=number
hj = hj + number
Rs.movenext
Loop
CountMy = hj
total_no=j
all_width = total_no * 100 + 30
total_width = total_no * 100
Call table1(total,20,34,all_width,300,total_width)
Set rs = nothing
Set rs = server.CreateObject ("Adodb.recordset")
sql="select [车辆类型],count(车辆类型) from [车辆基本特征] group by [车辆类型]"
rs.open sql,conn,3,3
str = ""
n = 0
do while not rs.eof
If n > 0 Then str = str & ","
str = str & rs(0) & ":" & rs(1) & "辆"
n = n + 1
Rs.movenext
Loop
Set rs = nothing