DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1289|回复: 0
打印 上一主题 下一主题

[待整理] 基于ASP.NET2.0的车辆管理系统设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 20:52:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
随着公司的不断发展和壮大,车辆使用频率的增加,传统的纸质派车单暴露出越来越多的问题,因此,利用信息化的手段,开发一个适用于公司内部的车辆管理系统十分必要。

 本文介绍的车辆管理系统就是针对当前本公司使用和管理车辆的流程而量身定做的一个系统。其设计方案是以B/S结构为基础,运用ASP.NET2.0和Access数据库,充分利用VS2005提供的数据控件。采用这种方案可以花最少的人力、物力、财力,在最短的时间、以最优的方式来实现最终的功能。


1 ASP.NET2.0介绍

 ASP.NET2.0是建立在微软新一代.NET平台架构上,利用普通语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架。ASP.NET2.0主要包括WebForm和WebService两种编程模型。前者为用户提供建立功能强大、外观丰富的基于表单的可编程Web页面。后者通过对HTTP、HTML、SOAP、WSDL等Internet标准的支持,提供在异构网络环境下获取远程服务、连接远程设备和交互远程应用的编程界面。

 ASP.NET2.0应用程序由界面和程序代码两大部分构成:

 (1)界面部分,也可称为“可视化组件”(Visual Component),主要由HTML标记和控件标记构成,从<html>标记开始,至</html>结束。这部分主要用于定义页面的外观显示特性和应用程序所包含的控件标识。它与Visual Basic或Delphi应用程序的Windows窗体部分相当。在“可视化组件”部分中也可以包含客户端脚本程序(JavaScript或VBScript脚本程序)。与以前HTML语言不同的是,由于ASP.NET2.0使用了Web服务器控件进行界面设计,所以ASP.NET2.0应用程序的界面部分包含了控件标记,例如<ASP:TextBox id=”username”runat=”server”/>,即为一个文本框控件标记。控件标记看起来很像HTML语法,但与HTML语法又不完全相同。

 (2)程序代码部分,也可称为“用户接口逻辑”(User Interface Logic),由高级语言程序代码组成,由脚本程序标记<Script Language=“高级语言名称” runat=“Server”>和</Script>将程序包含起来。程序代码的作用主要是进行窗体和控件事件的处理。ASP.NET2.0支持多种高级语言程序代码,包括Visual Basic.NET和C#等,所使用的高级语言名称在<Script>标记中指出。

 ASP.NET2.0程序的后缀名是.ASPX。当一个浏览器第一次请求一个ASPX文件时,ASP.NET2.0页面将被CLR编译器编译。此后,当再有用户访问此页面时,由于ASPX页面已经被编译过,所以CLR会直接执行编译过的代码。这与ASP的情况完全不同。ASP只支持VBScript和JavaScript这样的解释性脚本语言,所以ASP页面是解释执行的:当用户发出请求后,无论是第几次执行,ASP页面都将被动态解释执行。而ASP.NET2.0支持可编译的语言,包括VB.NET、C#、Jscript、.NET等。所以,ASP.NET2.0是一次编译、多次执行。

 为了简化程序员的工作,ASPX页面不需要手工编译,而是在页面被调用时,由CLR自行决定是否编译。一般来说,下面两种情况下,ASPX会被重新编译:

(1)ASP.NET2.0页面第一次被浏览器请求;

(2)ASP.NET2.0程序被改写。

 由于ASPX页面可以被编译,所以ASPX页面具有组件一样的性能。这就使得ASPX页面至少比同样功能的ASP页面快2倍以上。


2 系统角色的划分

 根据需求分析中各个不同角色的不同权限,该系统分为6种角色,每种角色分别享有不同的权限。这6种角色按照权限的大小从低到高依次为:

(1)普通用户(普通员工)

 权限:近途、长途用车申请;补单;转单;查看历史记录。

(2)司机(专、兼职司机)

 权限:车辆信息、驾驶员信息录入;车辆日常保养、故障维修、车辆保险、年审和重大事故录入;用车申请、补单、转单。

(3)中级用户(各部门主任)

 权限:部门员工近途、长途用车审批;部门用车查看;部门车辆保养;用车申请、补单、转单。
(4)特殊用户(总经理、副总经理)

 权限:公司派车单查看;车辆状态、驾驶员状态查看;车辆运行按月统计、年度统计;车辆日常保养信息查看等。

(5)高级用户(总经部主任)

 权限:公司派车单审批、查看、查询、取消派车;车辆状态、驾驶员状态查看;车辆运行按月统计、年度统计;车辆日常保养信息查看等。

(6)管理员

 权限:管理数据库中的全部表信息;备份数据库;添加用户。

 不同级别的用户拥有不同的权限,所以不同角色用户登陆后进入的主页面也不同,除了管理员之外,高级用户拥有相对较多的权利,图1展示了高级用户的主页面。


  
3 数据库设计

 根据系统的需要。数据库中共设计了14个表。它们分别是:用户表、近途车辆使用表、长途车辆使用表、驾驶员档案表、车辆档案表、车辆类型表、车辆保险档案表、车辆保险类型表、车辆故障维修表、车辆故障维修明细表、车辆日常保养表、车辆日常保养明细表、车辆年审信息表、车辆重大事件表。图2展示了这些表的关系。表1和表2是其中的两个表的设计结构。





  
  
  

4 系统设计思路


4.1 系统的功能模块

 如果说从纵向分析这个系统可以分为6种角色的话,从横向来看,系统又可以划分为多个功能模块,如用车管理、车辆养护、车辆信息、统计报表、系统管理。这几个功能模块针对不同的角色分发不同的权限,如车辆养护,中级用户只能填写和查看本部门的车辆,而高级用户可以查看整个公司的车辆养护信息。图3展示了系统主要涉及的几个功能模块。

  
4.2 用车管理

 用车管理指的是申请人填写派车单,然后部门审核、总经部审核,最后申请人还车填写公里数和各种费用完成单子的流转。用车管理难点就是派车单的流转,派车单审批的流程如图4所示。

  
为了实现派车单的流转,本系统采取对数据库表中关键字判断的方式实现流程的控制,如一个长途派车单;申请人填写的内容只是长途车辆使用表中的部分字段;如果表中该记录“部门审核结果”字段为空就说明部门领导还没有审核,这时如部门主任登陆就可以看到该派车单,然后需要对该派车单审批。审批完后,“部门审批人”和“部门审批结果”字段就不为空,但是因为总经部还未审核,所以“总经部审核结果”字段为空。根据这个判断条件,可以显示出总经部要审核的派车单,总经部主任登陆后可以看到该派车单,然后进行审批,当“部门审核结果”和“总经部审核结果”都不为空时,就说明派车单审核流程已完成,接下来就需要申请人在用车后填写公里数和费用,这个派车单才算结束。

 派车单流转的过程中,还涉及车辆的状态问题,在该系统中,部门派车是用车者自己选择部门的车辆出车;而总经部派车是总经部主任选择公司的车辆出车。派车单的派车类型如果是部门派车,在申请人选择本部门车辆的同时,该车辆的状态就由“空闲”变为“出车”,而总经部派车是在总经部主任分配了公司的某个车辆出车后该车辆的状态才变为“出车”。车辆的状态一旦变为“出车”就不能再被派遣,只有在申请人还车时填写了公里数和费用后车辆的状态才变为“空闲”。

4.3 车辆养护和车辆信息

 这两个模块在逻辑功能上相对较简单,通过司机用户进入相应的界面可以实现信息的录入,特殊用户、高级用户可以对车辆信息和车辆养护情况了解和查看。

4.4 统计报表

 统计报表分为按月统计和年度统计两部分,它们的实现主要采用分为SQL语句中的SUM函数通过限定一定的时间范围从而得出想要的结果。以下就是年度统计页面中用到的SQL语句。

string YearSum="SELECT 车辆, 月份, sum(汽油费合计) AS 总汽油费, sum(公里合计) AS 总公里数"
+ " FROM (SELECT 车辆, month(出车时间) AS 月份, sum(汽油费) AS 汽油费合计, sum(止公里数-起公里数) AS 公里合计"
+ " FROM CTCLSYB"
+ " WHERE 车辆=&prime;" + DropDownList1.SelectedValue + "&prime;and year(出车时间)=&prime;"+DropDownList2.SelectedValue+"&prime;"
+ "GROUP BY month(出车时间), 车辆"
+ "UNION select 车辆,month(出车时间) as 月份,sum(汽油费) AS 汽油费合计, sum(止公里数-起公里数) AS 公里合计"
+ "FROM JTCLSYB"
+ "WHERE 车辆=&prime;"+DropDownList1.SelectedValue+"&prime;and year(出车时间)=&prime;"+DropDownList2.SelectedValue+"&prime;"
+ "group BY month(出车时间), 车辆) AS A"
+ "GROUP BY 月份, 车辆"); DataTable dt = DataLayer.Select("SELECT 车辆, 月份, sum(汽油费合计) AS 总汽油费, sum(公里合计) AS 总公里数"
+ " FROM (SELECT 车辆, month(出车时间) AS 月份, sum(汽油费) AS 汽油费合计, sum(止公里数-起公里数) AS 公里合计"
+ " FROM CTCLSYB"
+ " WHERE 车辆=&prime;" + DropDownList1.SelectedValue + "&prime;and year(出车时间)=&prime;" + DropDownList2.SelectedValue + "&prime;"
+ " GROUP BY month(出车时间), 车辆"
+ " UNION select 车辆, month(出车时间) as月份,sum(汽油费) AS 汽油费合计, sum(止公里数-起公里数) AS 公里合计"
+ " FROM JTCLSYB"
+ " WHERE 车辆=&prime;"+DropDownList1.SelectedValue + "&prime;and year(出车时间)=&prime;"+DropDownList2.SelectedValue+"'"
+ " group BY month(出车时间), 车辆) AS A"
 + " GROUP BY 月份, 车辆");
4.5 系统管理

 系统管理主要负责对数据库中所有表的管理,包括修改和删除、增加用户、备份和恢复数据库等。
 车辆管理系统目前已经在公司使用,取得了良好的效果。B/S模式下,客户端较简单,便于应用程序的维护;集中式的数据管理,使数据库的维护更加方便,而且使得信息统计更为全面准确。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 12:17 , 耗时 0.090806 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表