一﹑绪论
(一)开发的目的和意义
该系统开发的主要目的在于让消防器材资源管理更规范,流通更加方便,高效为各支队提供服务。该系统为消防器材的管理带来了新的理念,用户在电脑前查询总队仓库库存设备情况的同时可以根据需要申请租借所需设备;经过队领导统一审核后,下达发货命令到库房,方便地到库房管理员那里去领取;使用完毕后交还库房由库管员登记即可,极大提高了工作效率。
(二)系统可行性分析
1、技术可行性
随着计算机的发展,技术的逐步成熟,安全性、保密性都可以做到很好,而且是用ASP+ACCESS良好的操作界面,操作起来简单、方便。
灵活的输入、修改数据,使信息传递更加快捷;通过权限设置,提高数据的安全性;快速查询﹑申请借用和归还入库,提高日常工作效率;对用户输入数据进行严格检验和人工审核,提高系统安全性;ASP 和ACCESS 的技术难度不是很大,在技术上、操作上均可行。
2、运行可行性
该系统功能简洁﹑规模较小,在计算机和操作人员上要求不高,可在当前消防队信息化系统上做继续开发,增加相应模块即可,费用低廉,不需要额外增加设备。
3、应用可行性
据统计,邯郸消防队下属多个支队,由于消防器材专业化程度高﹑价格昂贵,无法保证各支队器材配备齐全,所以特殊设备均由邯郸市消防总队统一管理。面对复杂的消费那个任务,每个支队均需频繁的与总队库房借用消防器材。原有的办公流程手续繁琐,浪费时间,极大的浪费了宝贵的抢险时间。为方便消防器材管理,简化办公流程,提高效率,消防队有开发消防器材管理信息系统的迫切需求。
经综合验证:消防器材管理信息系统可行。
二﹑需求分析
本次设计需求分析在与邯郸市消防支队相关负责人的探讨研究后完成,主要根据市消防队的器材管理的相关规定及领用流程来进行信息系统逻辑设计。
1. 货品入库管理:消防队购进的新设备后需要由库管员在系统上进行采购入库,添加器材的名称﹑规格型号﹑计量单位﹑入库数量﹑单价等其他信息,为后续工作打下基础。
2. 货品日常管理:二级单位,库管员及相关领导可以通过报表查看货品的库存情况,了解设备使用期限,定期保养,及时删除故障设备等,准确及时的把可用库存信息发布在消防器材管理信息系统上,方便二级单位借用。
3. 货品借用管理:二级单位根据工作需要,在向消防队借用器械时,需由相关负责人在消防器材管理信息系统上查阅器材库存情况后进行申请,队领导进行审核后方可在库房领取材料,并更新货品库存情况。
4. 货品还回管理:二级单位使用器械完毕后将设备还回库房,由库房管理员接收后在系统进行货品还回处理,更新货品库存情况。
5. 人员信息管理:系统设置有系统管理员和领导身份﹑库管员身份﹑二级单位身份, 管理员可以对库管员和二级单位信息进行审核﹑修改等操作。
三﹑系统总体设计
(一)开发环境
硬件要求:
CPU: Intel Pentium(Ⅳ) 2.0GHZ HDD:80G RAM:512M
软件要求:
操作系统:Windows XP/ Windows 2000 数据库:ACCESS2003 开发工具:DreamWeaver
辅助开发工具:Photoshop CS5 浏览器:IE6.0,推荐使用IE7.0 Web 服务器:IIS5.1
分辨率:最佳效果1024×768像素
ACCESS 数据库特点
ACCESS 是微软公司开发的一款桌面数据库。其特点在于:
1. 在数据量不是很大的情况下,其效率完全能够满足平时使用的要求;
2. 可移植性强,当数据量增大后,系统的查询和处理速度无法达到要求时, 则可很容易的转向SQL Server等大型数据库,代码部分基本不用改动;
3. 目前办公室里的大多数电脑通常都安装有Office 系列软件,在这样的电脑软件环境下不用再安装额外的数据库引擎,就能进行数据库的管理;
4. 该数据库文件单一,利于数据的导入与导出。
ASP 网页设计语言特点
ASP 是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web 应用程序。ASP 网页可以包含HTML 标记、普通文本、脚本命令以及COM 组件等。利用ASP 可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML 网页作为用户界面的web 应用程序。 与HTML 相比,ASP 网页具有以下特点:
1. 利用ASP 可以实现突破静态网页的一些功能限制,实现动态网页技术; 2.ASP 文件是包含在HTML 代码所组成的文件中的,易于修改和测试;
3. 服务器上的ASP 解释程序会在服务器端执行ASP 程序,并将结果以HTML 格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP 所产生的网页;
4.ASP 提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web 浏览器中获取用户通过HTML 表单提交的信息,并在脚本中对这些信息进行处理,然后向web 浏览器发送信息;
5.ASP 可以使用服务器端ActiveX 组件来执行各种各样的任务,例如存取数据库、发送Email 或访问文件系统等。
6. 由于服务器是将ASP 程序执行的结果以HTML 格式传回客户端浏览器,因此使用者不会看到ASP 所编写的原始程序代码,可防止ASP 程序代码被窃取。
7. 方便连接ACCESS 数据库。
(二)系统工作流程设计
本系统设置了三种不同的访问权限,访问者按照不同的权限进行相应操作。具体如下:
当前用户如果是二级单位,则可以浏览库存信息,申请借用设备,查看设备借用申请单处理进度;
当前用户如果是库管员,则除了可以浏览库存信息外,还可以增删在库设备数量,新设备入库登记,根据申请单进行设备出入库管理工作;
当前用户如果是领导,则可以浏览库存信息,对二级单位申请作出审核,同时可以管理二级单位及库管员信息登记审核等;
所有用户均可以进行修改密码操作。
(三)系统功能与权限分配
(四)系统数据库设计
数据库设计是计算机管理信息系统中很重要的部分,设计质量的好坏、数据结构的优劣之间影响到管理数据库的效益。数据库设计的基本原则是在系统总体信息方案的指导下,各个数据表应当为它所支持的管理目标服务,在设计数据库系统时,应当重点考虑一下几个因素:
(1)数据库必须层次分明,布局合理。
(2)数据库必须高度结构化,保证数据的结构化、规范化和标准化。
(3)在设计数据库时,要尽可能的减少冗余度,减少存储空间的占用,降低数据的一致性问题发生的可能性。
(4)必须维护数据正确的正确性和一致性,在系统中,多个用户共享数据库,由于并行开发操作,可能影响数据的一致性,因此必须用加锁等办法保证数据的一致性。
本系统的数据库包含三张表:用户表、设备表、申请单详情表。 下面将数据库表详细清单列出。
admin (用户表)
goods (设备表)
User_tui(订单详情表)
四﹑系统详细设计(基础功能部分)
(一) 数据库连接(conn.asp )
dim conn dim connstr dim db
db="../DataBase/goods.mdb"'数据库文件位置"' 数据库文件位置 on error resume next
set conn=server.CreateObject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;data source="&Server.MapPath(db) conn.open connstr if err then err.clear Conn.close
Set Conn = Nothing
Response.Write "数据库连接出错,请检查数据库参数设置。" Response.End() end if
' 关闭连接过程, 可以随时调用 sub CloseConn() conn.close
set conn=nothing end Sub %>
(二) 用户登录模块(login.asp )
option explicit
' 强制浏览器重新访问服务器下载页面,而不是从缓存读取页面 Response.Buffer = True Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0
Response.CacheControl = "no-cache" ' 主要是使随机出现的图片数字随机 %>
管理员登录
(三) 用户退出模块(loginout.asp )
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where adminname='"&session("AdminName")&"'" rs.open sql,conn,1,3
rs("LastLogoutTime")=now() rs.update rs.close
set rs=nothing
session("AdminName")="" Call CloseConn()
response.write "" Response.end() %>
(四) 导航栏模块(left.asp )
树型导航
|
(五) 登录信息查验模块(checklogin.asp )
此处主要用来验证用户登录信息是否正确,若正确,则在用户表里读取用户权限,用于其他模块用户权限的判断:session("purview")=rs("purview")
dim admin,password,verifycode
adminname=replace(trim(request("adminname")),"'","")
adminpwd=md5(replace(trim(request("adminpwd")),"'",""))
verifycode=replace(trim(request("verifycode")),"'","")
'..................... 空密码或者空用户..................
if adminname="" then
response.Write""
response.End()
end if
if adminpwd="" then
response.Write""
response.End()
end if
'.................... 用户名和密码验证........................
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where adminname='"&adminname&"'"
rs.open sql,conn,1,3
if rs.eof and rs.bof then
response.Write""
response.End()
end if
'.................... 密码检验......................
if adminpwdrs("adminpwd") then
response.Write""
response.End()
end if
if cstr(session("checkcode"))cstr(trim(request("verifycode"))) then
response.Write ""
response.end
end if
RndPassword=GetRndPassword(16)
rs("RndPassword")=RndPassword
rs.update
session("AdminName")=rs("adminname")
session("AdminPwd")=rs("adminpwd")
session("RndPassword")=RndPassword
session("purview")=rs("purview")
rs.Close
set rs=nothing
call closeconn()
response.Redirect "manage.asp"
response.End()
%>
其余模块详见系统源代码
五﹑系统详细设计(系统功能部分)
(一) 库存信息查看模块(goods_show.asp)
所有用户均可查询库存信息,当用户身份为领导或二级单位时,管理操作处显示“删除”表示当前用户没有删除库存权限。
dim action
action=request.QueryString("action")
if action="del" then
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from goods where id="&id
rs.open sql,conn,2,3
rs.delete
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
end if
%>
set rs=server.createobject("adodb.recordset")
sql="Select * from goods"
rs.open sql,conn,1,1
if err.number 0 then
response.write "数据库操作失败:"&err.description
response.End()
end if
%>
网站后台管理中心
' 分页信息头部
filepath=request.servervariables("path_info")
page=1 '设置变量初始值PAGE=1
page=request.querystring("page") 'page值为接受值
rs.PageSize = 10 '每页显示记录数
if Not IsEmpty(trim(Request("Page"))) then '如果PAGE 已经初始化...
Page = CInt(Request("Page")) '接收PAGE 并化为数字型赋给PAGE 变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page
Page = 1 '设置PAGE 等于第一页
else
rs.AbsolutePage = Page '如果大于零, 显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
for i = 0 to rs.PageSize
%>
RS.movenext
if RS.eof then
i = i + 1
exit for
End If
next
%>
库存管理中心 |
|||||||
---|---|---|---|---|---|---|---|
货品编号 | 货品名称/型号 | 计量单位 | 单价(元) | 实时库存 | 备注信息 | 管理操作 | |
&action=del">删除 | 删除 | ||||||
rs.close
set rs=nothing
Call CloseConn()
%>
(二) 订单处理进度查看管理模块(user_run.asp)
本模块用于显示订单编号,申请设备名称,联系人,申请数量等信息,并可以通过点击订单号,调用User_Modify.Asp查看订单详情。
此处对用户权限及处理流程作出严格限制:
领导只具有审核权限,并可以在订单未审核前删除订单;
库管员在领导审核后可以对设备进行进出库操作,订单执行完毕后进行删除操作,订单执行过程中显示“订单正在执行”,任何人不具有删除权限;
二级单位只具有订单进度查询权限;
订单审核后库存自动更新为store=store-num,
设备还回后库存自动更新为store=store+num.
dim action
action=request.QueryString("action")
if action="del" then
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from User_Tui where id="&id
rs.open sql,conn,2,3
rs.delete
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
end if
%>
set rs=server.createobject("adodb.recordset")
sql="Select * from User_Tui"
if request.Form("Key")"" then
select case request("search")
case "product"
sql=sql&" where product like '%"&trim(request.Form("key"))&"%'" case "email"
sql=sql&" where ordernum like '%"&trim(request.Form("key"))&"%'" case else
sql=sql&" where ordernum like '%"&trim(request.Form("key"))&"%' or product like '%"&trim(request.Form("key"))&"%'"
end select
end if
' 未审核订单
if action="nocheck" then
sql=sql&" where check=false"
end if
if action="check" then
sql=sql&" where check=true"
end if
' 未发货订单
if action="noborrow" then
sql=sql&" where borrow=false"
end if
if action="borrow" then
sql=sql&" where borrow=true"
end if
' 未还回订单
if action="noreturn" then
sql=sql&" where return=false"
end if
if action="return" then
sql=sql&" where return=true"
end if
sql=sql&" order by check"
rs.open sql,conn,1,1
if err.number 0 then
response.write "数据库操作失败:"&err.description
response.End()
end if
%>
网站后台管理中心
' 是否有记录可以查询
if rs.eof and RS.bof then
If request.Form("key")"" then
response.write "没有相关记录!"
else
response.write "没有订单数据!"
end if
call closeconn()
response.End()
end if
%>
' 分页信息头部
filepath=request.servervariables("path_info")
page=1 '设置变量初始值PAGE=1
page=request.querystring("page") 'page值为接受值
rs.PageSize = 10 '每页显示记录数
if Not IsEmpty(trim(Request("Page"))) then '如果PAGE 已经初始化...
Page = CInt(Request("Page")) '接收PAGE 并化为数字型赋给PAGE 变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page
Page = 1 '设置PAGE 等于第一页
else
rs.AbsolutePage = Page '如果大于零, 显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
for i = 0 to rs.PageSize
%>
RS.movenext
if RS.eof then
i = i + 1
exit for
End If
next
%>
提交订单管理 |
|||||||
---|---|---|---|---|---|---|---|
订单号 | 联系人 | 货品名称/型号 | 数量 | 管理操作 | |||
"> |
已审核订单 " title="点击审核">未审核订单 等待领导审核 |
已发货订单 " title="点击发货"> 未发货订单 等待库管员发货 未经审核不得发货 |
已完成订单 " title="点击还回">未还回订单 等待库管员确认入库 尚未出库无法还回 |
&action=del">删除 等待库管员删除 订单正在执行 &action=del">删除 删除 |
|||
rs.close
set rs=nothing
Call CloseConn()
%>
(三) 订单审核模块(user_check.asp)
当领导点击“审核”后自动跳转本页面进行数据处理和处理结果显示。
数据处理包括:1. 变更订单详情表里check 状态为ture ;2. 根据申请数量,变更设备详情表里库存数量store=store-num。
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from user_tui where id="&id
rs.open sql,conn,2,3
rs("Check")=true
uid=rs("parent_id")
rs("product")=product
sql="select * from goods where product="&product
rs1.open sql,conn,2,3
rs1("store")=rs1("store")-rs("num")
uid=rs1("parent_id")
rs1.update
rs1.close
set rs1=nothing
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
%>
(四) 订单录入模块(order.asp )
订单录入模块加入空值验证功能和超库存数量申请警告功能,避免订单信息缺失或申请器材数目大于器材库存数目的情况。
订单模块具有权限限制功能,仅有二级代理可以提交订单。
if session("purview")="3" then
%>
在线订单系统
货品添加模块 |
---|
call closeconn()
%>
对不起,只有二级单位才有提交订单的权限,请您选择其他操作
产品类型自动列举goods 表里的所有器材名称,方便选择
库存不足报警
其他模块详见系统源代码,页面截图如下:
器材申请单详情页面
修改密码模块
六、结论
(一)系统特点
订单自动归类“已完成订单”和“未完成订单”,方便用户日常管理和历史查询;未完成订单的流程用红色字体醒目提示,方便查看管理;
智能判断订单内容,如未选择货品而提交订单时会有相应提醒,领购货品超过库存数量也会有相应的警示!
模块化设计的优点使得系统可以很好的与现有的办公OA 相链接组合,也可以根据实际需要变更部分模块,使软件具有更好的适应性,本系统不仅适合消防队使用,还可以应用于其他器材管理等,也可以根据实际需要开发计费模块,应用于租赁行业等。
(二)系统缺陷分析
经过三周紧张的设计与开发,所选的设计题目已基本完成。通过各项测试表明,系统完成了预期所设想的功能,基本满足了客户需要。
因时间仓促再加上本人知识水平有限,使得本系统还有很多不足的地方,比如:
1. 界面不够人性化,尽量做到简洁大方,方便易用。对于界面处理过程中很少使用样式表,使其不够方便美观。
2. 关于进销存管理系统做得不够完善,应该加入对账目、盘点、结账的管理。
3. 对于信息录入时的条件判断不够严密,还缺少禁止重复添加等功能。
(三)答谢
最后要感谢赵记涛,张贵炜老师的教育,在设计的关键代码上给予的帮助与讲解,否则系统功能完全无法实现。
七:备注
网站文件名称及功能解释:
CheckLogin.asp 登录信息查验模块
Goods_add.asp 新增设备入库模块
Goods_save.asp Goods_add.asp储存模块
Goods_show.asp 库存信息查看模块
Login.asp 登陆页面模块
Loginout.asp 退出模块
Notice.asp 管理页面首页
Order.asp 订单录入模块
Order_save.asp Order.asp 储存模块
PwdChange.asp 修改密码模块
User_Modify.asp 订单详情模块
User_Run.asp 订单进度查看管理模块
Usercheck.asp 审核模块
UserBorrow.asp 器材出库模块
UserReturn.asp 器材还回模块
名词释义:
订单录入:在此页面下由二级单位相关人员登陆提交借用申请订单。
审核:提交订单后,队领导查看相关订单并进行审核,审核通过后变更设备库存,并经由库管员进行发货。
发货:货物发出后,由库管员点击此处,变更设备发出状态,表示设备已发出。 还回:二级单位使用完毕后,将设备还回库管员处,并由库管员点击此处,变更相关设备状态为在库(相应的变更设备库存数量状态)。
一﹑绪论
(一)开发的目的和意义
该系统开发的主要目的在于让消防器材资源管理更规范,流通更加方便,高效为各支队提供服务。该系统为消防器材的管理带来了新的理念,用户在电脑前查询总队仓库库存设备情况的同时可以根据需要申请租借所需设备;经过队领导统一审核后,下达发货命令到库房,方便地到库房管理员那里去领取;使用完毕后交还库房由库管员登记即可,极大提高了工作效率。
(二)系统可行性分析
1、技术可行性
随着计算机的发展,技术的逐步成熟,安全性、保密性都可以做到很好,而且是用ASP+ACCESS良好的操作界面,操作起来简单、方便。
灵活的输入、修改数据,使信息传递更加快捷;通过权限设置,提高数据的安全性;快速查询﹑申请借用和归还入库,提高日常工作效率;对用户输入数据进行严格检验和人工审核,提高系统安全性;ASP 和ACCESS 的技术难度不是很大,在技术上、操作上均可行。
2、运行可行性
该系统功能简洁﹑规模较小,在计算机和操作人员上要求不高,可在当前消防队信息化系统上做继续开发,增加相应模块即可,费用低廉,不需要额外增加设备。
3、应用可行性
据统计,邯郸消防队下属多个支队,由于消防器材专业化程度高﹑价格昂贵,无法保证各支队器材配备齐全,所以特殊设备均由邯郸市消防总队统一管理。面对复杂的消费那个任务,每个支队均需频繁的与总队库房借用消防器材。原有的办公流程手续繁琐,浪费时间,极大的浪费了宝贵的抢险时间。为方便消防器材管理,简化办公流程,提高效率,消防队有开发消防器材管理信息系统的迫切需求。
经综合验证:消防器材管理信息系统可行。
二﹑需求分析
本次设计需求分析在与邯郸市消防支队相关负责人的探讨研究后完成,主要根据市消防队的器材管理的相关规定及领用流程来进行信息系统逻辑设计。
1. 货品入库管理:消防队购进的新设备后需要由库管员在系统上进行采购入库,添加器材的名称﹑规格型号﹑计量单位﹑入库数量﹑单价等其他信息,为后续工作打下基础。
2. 货品日常管理:二级单位,库管员及相关领导可以通过报表查看货品的库存情况,了解设备使用期限,定期保养,及时删除故障设备等,准确及时的把可用库存信息发布在消防器材管理信息系统上,方便二级单位借用。
3. 货品借用管理:二级单位根据工作需要,在向消防队借用器械时,需由相关负责人在消防器材管理信息系统上查阅器材库存情况后进行申请,队领导进行审核后方可在库房领取材料,并更新货品库存情况。
4. 货品还回管理:二级单位使用器械完毕后将设备还回库房,由库房管理员接收后在系统进行货品还回处理,更新货品库存情况。
5. 人员信息管理:系统设置有系统管理员和领导身份﹑库管员身份﹑二级单位身份, 管理员可以对库管员和二级单位信息进行审核﹑修改等操作。
三﹑系统总体设计
(一)开发环境
硬件要求:
CPU: Intel Pentium(Ⅳ) 2.0GHZ HDD:80G RAM:512M
软件要求:
操作系统:Windows XP/ Windows 2000 数据库:ACCESS2003 开发工具:DreamWeaver
辅助开发工具:Photoshop CS5 浏览器:IE6.0,推荐使用IE7.0 Web 服务器:IIS5.1
分辨率:最佳效果1024×768像素
ACCESS 数据库特点
ACCESS 是微软公司开发的一款桌面数据库。其特点在于:
1. 在数据量不是很大的情况下,其效率完全能够满足平时使用的要求;
2. 可移植性强,当数据量增大后,系统的查询和处理速度无法达到要求时, 则可很容易的转向SQL Server等大型数据库,代码部分基本不用改动;
3. 目前办公室里的大多数电脑通常都安装有Office 系列软件,在这样的电脑软件环境下不用再安装额外的数据库引擎,就能进行数据库的管理;
4. 该数据库文件单一,利于数据的导入与导出。
ASP 网页设计语言特点
ASP 是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web 应用程序。ASP 网页可以包含HTML 标记、普通文本、脚本命令以及COM 组件等。利用ASP 可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML 网页作为用户界面的web 应用程序。 与HTML 相比,ASP 网页具有以下特点:
1. 利用ASP 可以实现突破静态网页的一些功能限制,实现动态网页技术; 2.ASP 文件是包含在HTML 代码所组成的文件中的,易于修改和测试;
3. 服务器上的ASP 解释程序会在服务器端执行ASP 程序,并将结果以HTML 格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP 所产生的网页;
4.ASP 提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web 浏览器中获取用户通过HTML 表单提交的信息,并在脚本中对这些信息进行处理,然后向web 浏览器发送信息;
5.ASP 可以使用服务器端ActiveX 组件来执行各种各样的任务,例如存取数据库、发送Email 或访问文件系统等。
6. 由于服务器是将ASP 程序执行的结果以HTML 格式传回客户端浏览器,因此使用者不会看到ASP 所编写的原始程序代码,可防止ASP 程序代码被窃取。
7. 方便连接ACCESS 数据库。
(二)系统工作流程设计
本系统设置了三种不同的访问权限,访问者按照不同的权限进行相应操作。具体如下:
当前用户如果是二级单位,则可以浏览库存信息,申请借用设备,查看设备借用申请单处理进度;
当前用户如果是库管员,则除了可以浏览库存信息外,还可以增删在库设备数量,新设备入库登记,根据申请单进行设备出入库管理工作;
当前用户如果是领导,则可以浏览库存信息,对二级单位申请作出审核,同时可以管理二级单位及库管员信息登记审核等;
所有用户均可以进行修改密码操作。
(三)系统功能与权限分配
(四)系统数据库设计
数据库设计是计算机管理信息系统中很重要的部分,设计质量的好坏、数据结构的优劣之间影响到管理数据库的效益。数据库设计的基本原则是在系统总体信息方案的指导下,各个数据表应当为它所支持的管理目标服务,在设计数据库系统时,应当重点考虑一下几个因素:
(1)数据库必须层次分明,布局合理。
(2)数据库必须高度结构化,保证数据的结构化、规范化和标准化。
(3)在设计数据库时,要尽可能的减少冗余度,减少存储空间的占用,降低数据的一致性问题发生的可能性。
(4)必须维护数据正确的正确性和一致性,在系统中,多个用户共享数据库,由于并行开发操作,可能影响数据的一致性,因此必须用加锁等办法保证数据的一致性。
本系统的数据库包含三张表:用户表、设备表、申请单详情表。 下面将数据库表详细清单列出。
admin (用户表)
goods (设备表)
User_tui(订单详情表)
四﹑系统详细设计(基础功能部分)
(一) 数据库连接(conn.asp )
dim conn dim connstr dim db
db="../DataBase/goods.mdb"'数据库文件位置"' 数据库文件位置 on error resume next
set conn=server.CreateObject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;data source="&Server.MapPath(db) conn.open connstr if err then err.clear Conn.close
Set Conn = Nothing
Response.Write "数据库连接出错,请检查数据库参数设置。" Response.End() end if
' 关闭连接过程, 可以随时调用 sub CloseConn() conn.close
set conn=nothing end Sub %>
(二) 用户登录模块(login.asp )
option explicit
' 强制浏览器重新访问服务器下载页面,而不是从缓存读取页面 Response.Buffer = True Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0
Response.CacheControl = "no-cache" ' 主要是使随机出现的图片数字随机 %>
管理员登录
(三) 用户退出模块(loginout.asp )
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where adminname='"&session("AdminName")&"'" rs.open sql,conn,1,3
rs("LastLogoutTime")=now() rs.update rs.close
set rs=nothing
session("AdminName")="" Call CloseConn()
response.write "" Response.end() %>
(四) 导航栏模块(left.asp )
树型导航
|
(五) 登录信息查验模块(checklogin.asp )
此处主要用来验证用户登录信息是否正确,若正确,则在用户表里读取用户权限,用于其他模块用户权限的判断:session("purview")=rs("purview")
dim admin,password,verifycode
adminname=replace(trim(request("adminname")),"'","")
adminpwd=md5(replace(trim(request("adminpwd")),"'",""))
verifycode=replace(trim(request("verifycode")),"'","")
'..................... 空密码或者空用户..................
if adminname="" then
response.Write""
response.End()
end if
if adminpwd="" then
response.Write""
response.End()
end if
'.................... 用户名和密码验证........................
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where adminname='"&adminname&"'"
rs.open sql,conn,1,3
if rs.eof and rs.bof then
response.Write""
response.End()
end if
'.................... 密码检验......................
if adminpwdrs("adminpwd") then
response.Write""
response.End()
end if
if cstr(session("checkcode"))cstr(trim(request("verifycode"))) then
response.Write ""
response.end
end if
RndPassword=GetRndPassword(16)
rs("RndPassword")=RndPassword
rs.update
session("AdminName")=rs("adminname")
session("AdminPwd")=rs("adminpwd")
session("RndPassword")=RndPassword
session("purview")=rs("purview")
rs.Close
set rs=nothing
call closeconn()
response.Redirect "manage.asp"
response.End()
%>
其余模块详见系统源代码
五﹑系统详细设计(系统功能部分)
(一) 库存信息查看模块(goods_show.asp)
所有用户均可查询库存信息,当用户身份为领导或二级单位时,管理操作处显示“删除”表示当前用户没有删除库存权限。
dim action
action=request.QueryString("action")
if action="del" then
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from goods where id="&id
rs.open sql,conn,2,3
rs.delete
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
end if
%>
set rs=server.createobject("adodb.recordset")
sql="Select * from goods"
rs.open sql,conn,1,1
if err.number 0 then
response.write "数据库操作失败:"&err.description
response.End()
end if
%>
网站后台管理中心
' 分页信息头部
filepath=request.servervariables("path_info")
page=1 '设置变量初始值PAGE=1
page=request.querystring("page") 'page值为接受值
rs.PageSize = 10 '每页显示记录数
if Not IsEmpty(trim(Request("Page"))) then '如果PAGE 已经初始化...
Page = CInt(Request("Page")) '接收PAGE 并化为数字型赋给PAGE 变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page
Page = 1 '设置PAGE 等于第一页
else
rs.AbsolutePage = Page '如果大于零, 显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
for i = 0 to rs.PageSize
%>
RS.movenext
if RS.eof then
i = i + 1
exit for
End If
next
%>
库存管理中心 |
|||||||
---|---|---|---|---|---|---|---|
货品编号 | 货品名称/型号 | 计量单位 | 单价(元) | 实时库存 | 备注信息 | 管理操作 | |
&action=del">删除 | 删除 | ||||||
rs.close
set rs=nothing
Call CloseConn()
%>
(二) 订单处理进度查看管理模块(user_run.asp)
本模块用于显示订单编号,申请设备名称,联系人,申请数量等信息,并可以通过点击订单号,调用User_Modify.Asp查看订单详情。
此处对用户权限及处理流程作出严格限制:
领导只具有审核权限,并可以在订单未审核前删除订单;
库管员在领导审核后可以对设备进行进出库操作,订单执行完毕后进行删除操作,订单执行过程中显示“订单正在执行”,任何人不具有删除权限;
二级单位只具有订单进度查询权限;
订单审核后库存自动更新为store=store-num,
设备还回后库存自动更新为store=store+num.
dim action
action=request.QueryString("action")
if action="del" then
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from User_Tui where id="&id
rs.open sql,conn,2,3
rs.delete
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
end if
%>
set rs=server.createobject("adodb.recordset")
sql="Select * from User_Tui"
if request.Form("Key")"" then
select case request("search")
case "product"
sql=sql&" where product like '%"&trim(request.Form("key"))&"%'" case "email"
sql=sql&" where ordernum like '%"&trim(request.Form("key"))&"%'" case else
sql=sql&" where ordernum like '%"&trim(request.Form("key"))&"%' or product like '%"&trim(request.Form("key"))&"%'"
end select
end if
' 未审核订单
if action="nocheck" then
sql=sql&" where check=false"
end if
if action="check" then
sql=sql&" where check=true"
end if
' 未发货订单
if action="noborrow" then
sql=sql&" where borrow=false"
end if
if action="borrow" then
sql=sql&" where borrow=true"
end if
' 未还回订单
if action="noreturn" then
sql=sql&" where return=false"
end if
if action="return" then
sql=sql&" where return=true"
end if
sql=sql&" order by check"
rs.open sql,conn,1,1
if err.number 0 then
response.write "数据库操作失败:"&err.description
response.End()
end if
%>
网站后台管理中心
' 是否有记录可以查询
if rs.eof and RS.bof then
If request.Form("key")"" then
response.write "没有相关记录!"
else
response.write "没有订单数据!"
end if
call closeconn()
response.End()
end if
%>
' 分页信息头部
filepath=request.servervariables("path_info")
page=1 '设置变量初始值PAGE=1
page=request.querystring("page") 'page值为接受值
rs.PageSize = 10 '每页显示记录数
if Not IsEmpty(trim(Request("Page"))) then '如果PAGE 已经初始化...
Page = CInt(Request("Page")) '接收PAGE 并化为数字型赋给PAGE 变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page
Page = 1 '设置PAGE 等于第一页
else
rs.AbsolutePage = Page '如果大于零, 显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
for i = 0 to rs.PageSize
%>
RS.movenext
if RS.eof then
i = i + 1
exit for
End If
next
%>
提交订单管理 |
|||||||
---|---|---|---|---|---|---|---|
订单号 | 联系人 | 货品名称/型号 | 数量 | 管理操作 | |||
"> |
已审核订单 " title="点击审核">未审核订单 等待领导审核 |
已发货订单 " title="点击发货"> 未发货订单 等待库管员发货 未经审核不得发货 |
已完成订单 " title="点击还回">未还回订单 等待库管员确认入库 尚未出库无法还回 |
&action=del">删除 等待库管员删除 订单正在执行 &action=del">删除 删除 |
|||
rs.close
set rs=nothing
Call CloseConn()
%>
(三) 订单审核模块(user_check.asp)
当领导点击“审核”后自动跳转本页面进行数据处理和处理结果显示。
数据处理包括:1. 变更订单详情表里check 状态为ture ;2. 根据申请数量,变更设备详情表里库存数量store=store-num。
id=Request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from user_tui where id="&id
rs.open sql,conn,2,3
rs("Check")=true
uid=rs("parent_id")
rs("product")=product
sql="select * from goods where product="&product
rs1.open sql,conn,2,3
rs1("store")=rs1("store")-rs("num")
uid=rs1("parent_id")
rs1.update
rs1.close
set rs1=nothing
rs.update
rs.close
set rs=nothing
call closeconn()
response.write ""
Response.end()
%>
(四) 订单录入模块(order.asp )
订单录入模块加入空值验证功能和超库存数量申请警告功能,避免订单信息缺失或申请器材数目大于器材库存数目的情况。
订单模块具有权限限制功能,仅有二级代理可以提交订单。
if session("purview")="3" then
%>
在线订单系统
货品添加模块 |
---|
call closeconn()
%>
对不起,只有二级单位才有提交订单的权限,请您选择其他操作
产品类型自动列举goods 表里的所有器材名称,方便选择
库存不足报警
其他模块详见系统源代码,页面截图如下:
器材申请单详情页面
修改密码模块
六、结论
(一)系统特点
订单自动归类“已完成订单”和“未完成订单”,方便用户日常管理和历史查询;未完成订单的流程用红色字体醒目提示,方便查看管理;
智能判断订单内容,如未选择货品而提交订单时会有相应提醒,领购货品超过库存数量也会有相应的警示!
模块化设计的优点使得系统可以很好的与现有的办公OA 相链接组合,也可以根据实际需要变更部分模块,使软件具有更好的适应性,本系统不仅适合消防队使用,还可以应用于其他器材管理等,也可以根据实际需要开发计费模块,应用于租赁行业等。
(二)系统缺陷分析
经过三周紧张的设计与开发,所选的设计题目已基本完成。通过各项测试表明,系统完成了预期所设想的功能,基本满足了客户需要。
因时间仓促再加上本人知识水平有限,使得本系统还有很多不足的地方,比如:
1. 界面不够人性化,尽量做到简洁大方,方便易用。对于界面处理过程中很少使用样式表,使其不够方便美观。
2. 关于进销存管理系统做得不够完善,应该加入对账目、盘点、结账的管理。
3. 对于信息录入时的条件判断不够严密,还缺少禁止重复添加等功能。
(三)答谢
最后要感谢赵记涛,张贵炜老师的教育,在设计的关键代码上给予的帮助与讲解,否则系统功能完全无法实现。
七:备注
网站文件名称及功能解释:
CheckLogin.asp 登录信息查验模块
Goods_add.asp 新增设备入库模块
Goods_save.asp Goods_add.asp储存模块
Goods_show.asp 库存信息查看模块
Login.asp 登陆页面模块
Loginout.asp 退出模块
Notice.asp 管理页面首页
Order.asp 订单录入模块
Order_save.asp Order.asp 储存模块
PwdChange.asp 修改密码模块
User_Modify.asp 订单详情模块
User_Run.asp 订单进度查看管理模块
Usercheck.asp 审核模块
UserBorrow.asp 器材出库模块
UserReturn.asp 器材还回模块
名词释义:
订单录入:在此页面下由二级单位相关人员登陆提交借用申请订单。
审核:提交订单后,队领导查看相关订单并进行审核,审核通过后变更设备库存,并经由库管员进行发货。
发货:货物发出后,由库管员点击此处,变更设备发出状态,表示设备已发出。 还回:二级单位使用完毕后,将设备还回库管员处,并由库管员点击此处,变更相关设备状态为在库(相应的变更设备库存数量状态)。