车辆调度管理系统.doc_第1页
车辆调度管理系统.doc_第2页
车辆调度管理系统.doc_第3页
车辆调度管理系统.doc_第4页
车辆调度管理系统.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

车辆调度管理系统摘 要 科技随着人类不断的发展而日新月异,信息化、网络化、高效化的脚步已经越来越近。对于一个完整的交通网络来说,一个合理统筹的调度必然是不可或缺的组成部分。但从实际情况来,目前大多数的交通网络的调度系统还没有达到一个完善的局面,不断出现这样那样的错误。目前最为先进的调度方式是全球定位系统GPS,但对于普通小规模的调度来说,这样利用卫星定位的方式显然不够科学。而我所设计的程序就是为了这个目的,利用最少的资源达到最理想的效果,能够仅仅利用一个小型的无限网络就能安全,合理调度一条公交线路。系统采用HTML语言编写,利用的ASP.NET与后台的Access数据库相连接来基本实现主要模块的功能。关键词:车辆调度,车辆管理,管理系统,HTML语言,ASP程序AbstractScience and technology develops but alters from day to day ceaselessly with human being, informationization, network-rization, high-effect-rization step are already more and more close. As for a company, the 1inside is administrative informationize already becoming enterprise developing, participate in first market competition condition. Only comply with at present condition comes to take a look on that , inside local area network used by great majority enterprise plays be shared to a document role , the system costing large amount of the inside network that manpower , financial resources build will do can not by really effective making use of. Therefore, realize the effective administration passing to inside local area network and make use of, to reach the optimization job stream , to strengthen the project administrative decision, first problem holding out and forecasting must need to solve as being. To a company who has developing a potential, a set of simple reliable inside management system is very important beyond doubt. To system, need to realize the following few concrete fundamental functions then: Employee information administration; Financial affairs information administration; Bill information administration; Buddy information administration working together; Cancel Shan information administration after verification.System adopt the HTML language write finally, ASP.NET making use of and the backstage Access data base link the function coming to realize the main module basically each other.Keywords: Informatization; internal network; management system; science and technology development; HTML language; ASP procedure目 录II 引 言随着时代的进步,互联网的发展,世界几乎角落都能通过网络进行实时的交流,交通得飞速发展也使人们更频繁得往来于各个地方。为了人们出行的方便和安全,就需要对各种交通工具进行严格的管理与调度。从大的方面来说,一个大型的商业港口就需要对每一艘进出和停留港口的货轮进行严格的调度与管理,要依据货轮的吨位来安排进出港的路线及停留时间,要安排足够的货车来有效得装卸重达万吨得货物。从小得方面来讲,就算是一条普通得公交线路,也要有健全得管理体系,才能真正做到方便于民。用最少得人力,物力获得最大得成效才是体现电子信息时代得最有力方法。一名调度员,相应数量得驾驶员,再加上本系统,就可以完成对一条公交线路得有效管理。通过本系统,调度员通过一张页面可以时刻监控每一量车得运行情况,并给出相应得指示。而驾驶员同样通过网页了解到自己得状况。达到了方便,有效得管理。 对于本次的课题,我首先想到的目前上海交通最为重要的一个战力,就是轨道交通。上海的轨道交通几乎覆盖了上海的整个市区,象征了上海是一个科技先进的城市。如此巨大的轨道交通网当然离不开一个合理,有效的调度措施,来使这张大网能最好地为人们做出服务。所以一个交通设施的完善和其调度系统的优劣是密不可分的。第1章 需求分析1.1 功能需求分析目前上海得交通设施已经处以一个比较先进得水平,多种多样得交通方式已经出现在我们得日常生活中。其中最值得一提的就是上海的地铁网络,其几乎覆盖了整个上海的市区,大大方便了人们的出行,也缓解了地面交通的拥堵。不可忽视的一点就是地铁采用了本系统是一个车辆调度管理系统,为方便调度员对驾驶员进行直观而有效得调度,本系统需要完成以下得功能:1.调度员与驾驶员登陆页面:调度员一名通过登陆调度页面来调度车辆。驾驶员多名登陆驾驶员页面来进入待发车辆列队,接受发车信号以及向调度员发送车辆行驶状况。2.调度页面显示车辆所处状态:在计算机屏幕调度框内可显示本线路车辆当前所处的状况,包括待发车辆编号及数量,己启动车辆编号及数量,上路运行车辆编号及数量,未受到监控的车辆编号及数量。3.驾驶员与调度员进行互动:登陆后既进入了调度员的待发车队列表,并准备接受发车信号,将行驶状况反馈给调度员发送行驶状况信息。4.发送调度发车指令:线路调度只需根据排班表,在发车指令框内键入车辆编号并按回车键,待发车辆车载终端即发出“发车”提示,通知驾乘人员发车离站,自动报站器开始自动报站。1.2 环境需求分析我设计程序时主要用到的是ASP(全称Active Server Pages)系统。ASP是1996年由Microsoft推出的运行于服务器端的WEB应用程序开发技术.只能运行于WINDOWNT(WINDOWS)/IIS平台。ASP服务器,ASP全称为Active Server Pages,是一种由Microsoft公司开发的服务器端的脚本语言运行环境,它可以结合HTML语言和ActiveX组件建立动态、交互、高效的WEB服务器端应用程序,该环境中可以混合使用VBScript 和JScript脚本语言。ASP提供了一些内部对象和内部组件,利用它们可以很方便地实现表单上传、存取数据库功能。除此之外,由于ASP在服务器端解释执行,开发者可以不必考虑浏览器是否支持ASP;同时由于它在服务器端执行,在客户端的浏览器上看到的仅仅是执行后的结果,开发者也不用担心别人下载程序代码,增加了资料的安全性。目前ASP可运行在以下几种服务器内:IIS(Internet Information Serer30或更高版本),该服务由Windows NT Server 4.0或更高版本支持;PWS(Peer Web Services 30或更高版本),该服务由Windows NT Workstation 4.0或更高版本支持;另外,借助第三方服务器扩展组件,ASP是可以运行在UNIX或Linux上的,也就是说,无论任何一个Web服务器,只要安装有ASP的解释程序,就可支持ASP程序。因为上述原因,本程序的编写将采用ASP程序,这样可以提高程序的稳定性和泛用性,充分发挥了其优点。ASP主要具有以下几个特点:1. 可以混用ASP用HTML,DHTML,ActiveX,VBScript,JavaScript,并且可以相互嵌套。2. ASP是纯文本格式,不需编译就可以直接在服务器上运行.3. 安全性好。ASP是一种在WEB服务器端运行的脚本语言,源代码不会传到客户的浏览器上,可保护源程序不外漏。4. 面向对象。ASP正是通过其自身包含的对象来实现服务器与客户端交互的5. 可扩充服务器端功能。利用ASP提供的一组ActiveX服务器组件(ActiveX Server Components)可继续扩充ASP的功能。如用ASP内置ADO组件可以轻松的存取各种数据库。此外,还可以用VB,Java等语言开发自己的组件以进一步扩充其功能6. 与浏览器无关。ASP可以将运行结果一HTML的格式传送到客户端浏览器,因而可以使用于各种浏览器.1.2.1 ASP的工作原理以下是对ASP动态网页处理过程的概述:1. 用户向Web服务器传送一个.asp页面请求。2. 服务器接到请求后根据.asp扩展名判断用户要浏览的是一个ASP文件。3. 服务器从内存或硬盘中读取相应的ASP文件。4. ASP程序被传送给服务器上的asp.dll并编译运行,产生标准的HTML文件。5. 产生的HTML文件作为用户请求的响应传回给用户端浏览器,用户端浏览器进行解释运行。根据以上步骤不难看出,Web父亲处理ASP页面比处理静态HTML页面多了一个程序编译步骤,而对于用户端来说,浏览HTML页面和浏览ASP页面几乎没有任何区别。因为传回客户端的程序都是标准的HTML文件,因而完全没有必要担心用户的浏览器是否支持所编写的ASP程序,并且ASP适用于任何浏览器。 值得一提的,以上的ASP处理流程也是经过简化的,实际应用中可能还会涉及到诸如FORM消息提交、ASP页面的动态产生、数据库操作等一系列复杂的问题。此外Web服务器并不是在接到每一个ASP页面请求后都会重新编译,如果某个页面再次接收到和前面完全相同的请求是,服务器会直接去缓冲区中读取编译的结果,而不会重新运行。1.2.2 ASP的使用环境操作系统对使用ASP开发本系统的影响不是很大,Windows NT、Windows2000、Windows 9X、Linux 、Windows XP都可以,但性能好的操作系统可以使ASP服务器运行得更流畅,减少系统崩溃的可能性。因此,这里选用了稳定性较好的Windows XP SP2操作系统。本系统是在Windows XP系统上开发的,使用的是Micorosoft IIS IIS的简介IIS是Internet Information Server的缩写,它是微软公司主推的服务器,最新的版本是Windows2003里面包含的IIS 6,IIS与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。IIS支持HTTP(Hypertext Transfer Protocol,超文本传输协议),FTP(Fele Transfer Protocol,文件传输协议)以及SMTP协议,通过使用CGI和ISAPI,IIS可以得到高度的扩展。IIS支持与语言无关的脚本编写和组件,通过IIS,开发人员就可以开发新一代动态的,富有魅力的Web站点。IIS不需要开发人员学习新的脚本语言或者编译应用程序,IIS完全支持VBscript,Jscript开发软件以及Java,它也支持CGI和WinCGI,以及ISAPI扩展和过滤器 。IIS支持服务器应用的Microsoft BackOffice系列,Microsoft BackOffice系列包括以下内容:1,Microsoft Exchange Server 客户/服务器通讯和群组软件;2,Mirrosoft Proxy Server 代理服务器;3,用于连接IBM企业网络的Microsoft SNA Server;4,用于集中管理分布式系统的Microsoft Systems Management Server;5,Microsoft Commercial Internet System(MCIS)。IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器。IIS相应性极高,同时系统资源的消耗也是最少,IIS的安装,管理和配置都相当简单,这是因为IIS与Windows NT Server网络操作系统紧密的集成在一起,另外,IIS还使用与Windows NT Server相同的SAM(Security Accounts Manager,安全性账号管理器),对于管理员来说,IIS使用诸如Performance Monitor和SNMP(Simple Nerwork Management Protocol,简单网络管理协议)之类的NT已有管理工具。IIS支持ISAPI,使用ISAPI可以扩展服务器功能,而使用ISAPI过滤器可以预先处理和事后处理储存在IIS上的数据。用于32位Windows应用程序的Internet扩展可以把FTP,SMTP和HTTP协议置于容易使用且任务集中的界面中,这些界面将Internet应用程序的使用大大简化,IIS也支持MIME(Multipurpose Internet Mail Extensions,多用于Internet邮件扩展),它可以为Internet应用程序的访问提供一个简单的注册项。IIS的一个重要特性是支持ASP。IIS 3.0版本以后引入了ASP,可以很容易的张贴动态内容和开发基于Web的应用程序。对于诸如VBscript,Jscript开发软件,或者由Visual Basic,Java,Visual C+开发系统,以及现有的CGI和WinCGI脚本开发的应用程序,IIS都提供强大的本地支持。1.2.4 IIS的添加和运行 1IIS的添加:请进入“控制面板”,依次选“添加/删除程序添加/删除Windows组件”,将“Internet信息服务(IIS)”前的小钩去掉(如有),重新勾选中后按提示操作即可完成IIS组件的添加。用这种方法添加的IIS组件中将包括Web、FTP、NNTP和SMTP等全部四项服务。 2IIS的运行:当IIS添加成功之后,再进入“开始程序管理工具Internet服务管理器”以打开IIS管理器,对于有“已停止”字样的服务,均在其上单击右键,选“启动”来开启。 3建立第一个Web站点:比如本机的IP地址为,自己的网页放在D:Wy目录下,网页的首页文件名为Index.htm,现在想根据这些建立好自己的Web服务器。 对于此Web站点,我们可以用现有的“默认Web站点”来做相应的修改后,就可以轻松实现。请先在“默认Web站点”上单击右键,选“属性”,以进入名为“默认Web站点属性”设置界面。 (1)修改绑定的IP地址:转到“Web站点”窗口,再在“IP地址”后的下拉菜单中选择所需用到的本机IP地址“”。 (2)修改主目录:转到“主目录”窗口,再在“本地路径”输入(或用“浏览”按钮选择)好自己网页所在的“D:Wy”目录。 (2)添加首页文件名:转到“文档”窗口,再按“添加”按钮,根据提示在“默认文档名”后输入自己网页的首页文件名“Index.htm”。 (4)添加虚拟目录:比如你的主目录在“D:Wy”下,而你想输入“/test”的格式就可调出“E:All”中的网页文件,这里面的“test”就是虚拟目录。请在“默认Web站点”上单击右键,选“新建虚拟目录”,依次在“别名”处输入“test”,在“目录”处输入“E:All”后再按提示操作即可添加成功。 (5)效果的测试:打开IE浏览器,在地址栏输入“”之后再按回车键,此时就能够调出你自己网页的首页,则说明设置成功! 4添加更多的Web站点:多个IP对应多个Web站点如果本机已绑定了多个IP地址,想利用不同的IP地址得出不同的Web页面,则只需在“默认Web站点”处单击右键,选“新建站点”,然后根据提示在“说明”处输入任意用于说明它的内容(比如为“我的第二个Web站点”)、在“输入Web站点使用的IP地址”的下拉菜单处选中需给它绑定的IP地址即可;当建立好此Web站点之后,再按上步的方法进行相应设置。 一个IP地址对应多个Web站点当按上步的方法建立好所有的Web站点后,对于做虚拟主机,可以通过给各Web站点设不同的端口号来实现,比如给一个Web站点设为80,一个设为81,一个设为82,则对于端口号是80的Web站点,访问格式仍然直接是IP地址就可以了,而对于绑定其他端口号的Web站点,访问时必须在IP地址后面加上相应的端口号,也即使用如“:81”的格式。 很显然,改了端口号之后使用起来就麻烦些。如果你已在DNS服务器中将所有你需要的域名都已经映射到了此惟一的IP地址,则用设不同“主机头名”的方法,可以让你直接用域名来完成对不同Web站点的访问。 5多个域名对应同个Web站点:你只需先将某个IP地址绑定到Web站点上,再在DNS服务器中,将所需域名全部映射向你的这个IP地址上,则你在浏览器中输入任何一个域名,都会直接得到所设置好的那个网站的内容。 6对IIS服务的远程管理:在“管理Web站点”上单击右键,选“属性”,再进入“Web站点”窗口,选择好“IP地址”。 转到“目录安全性”窗口,单击“IP地址及域名限制”下的“编辑”按钮,点选中“授权访问”以能接受客户端从本机之外的地方对IIS进行管理;最后单击“确定”按钮。 则在任意计算机的浏览器中输入如“:3598”(3598为其端口号)的格式后,将会出现一个密码询问窗口,输入管理员帐号名(Administrator)和相应密码之后就可登录成功,现在就可以在浏览器中对IIS进行远程管理了!在这里可以管理的范围主要包括对Web站点和FTP站点进行的新建、修改、启动、停止和删除等操作。 1.2.5 Dreamweaver MX 2004简介Dreamweaver MX 2004是Dreamweaver MX 2004的最新的一个版本,它采用了许多先进的技术,可以快速高效的创建极具表现力的和动感效果不错的网页。只值得一提的是,Dreamweaver MX 2004提供了了更加完善的站点管理机制,可以说,改软件是集网页和站点管理两大法宝与一身的超重量级创作工具。Dreamweaver 具有简单、易学等特点,只要具备初步的网页制作知识,即使是初学者也可以制作出精致的网页,它并不需要学习大量的专业知识。Dreamweaver MX 2004提供有更多功能强劲的可视化设计工具、应用开发环境和代码编辑支持,它可以使开发人员和设计师能够快捷的创建代码规范的应用程序,集成度非常高,开发环境精简并且高效。开发人员可以运用Dreamweaver 和服务器技术来构建功能强大的网络应用程序,以衔接到用户的数据、网路服务体系。Dreamweaver MX 2004提供了强大的规范管理,以确保高质量的设计。设计环境提供了CSS,可以迅速高效的开发代码。Dreamweaver MX 2004新特点简介如下:1. 可支持自动检测标签和CSS规则来适应所有主流浏览器2. 提供了更强大的CSS支持。3. 内建的图形编辑引擎。4. 增强的FTP安全性。5. 增大了对主流后台环境的支持。6. 可直接讲Word和Excel文件复制和粘贴到Dreamweaver 中。7. 跟Macromedia的其他产品的结合更加紧密。1.2.6 Access2000简介 数据库。由于本系统没有海量数据的存储问题,其数据一般不会很多,所以没有必要选用像Oracle这样的数据库,Access足可以胜任。这里选用了Microsoft Access 2000,具体原因如下: Access最重要的特征是不必编写程序。对于大多数关系型数据库管理系统,如Paradox,ForPox等而言,其管理者需要具有程序设计能力,才能建立和管理一个有效的应用程序,而Access数据库系统把数据库应用程序的建立移进用户环境中,除非要执行复杂的操作,数据库的管理者不在必须具有设计能力。Access中数据库文件不是简单的存储数据的表,这是Access与其他桌面数据库的一个重要区别。Access数据库文件不仅包含传统意义上的表,还包括操作或控制数据的其他对象(如查询,窗体和报表等)。 对拟开发系统选用Access2000作为后台数据库。数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。数据库设计的好坏,直接影响到这个系统的运行效率。良好的数据库设计,可以提高数据信息的存储效率保证数据信息的完整性和一致性。 Access2000是Office2000中文版的组件之一。与以前的Access版本相比,Access2000不仅界面更加友好,而且功能也有了加强,尤其是网络功能有明显的提高,使Access2000与互联网的结合更加紧密。Access2000是一个中、小型数据库管理系统,使用方便、功能强大,与其它数据库有良好的接口。通过Access2000功能强大的工具,用户可以方便的使用和管理数据库,如创建和编辑数据表、设计和使用各种查询工具进行查询操作、设计和使用窗体、制作和打印报表、设计和使用宏、设计和使用Web页等。还可使用VBA(Visual Basic for Application)开发高级应用程序。Access2000具有完整的数据库应用开发工具,用户可以方便的设计、修改、浏览一个记录数据的基本表;可以在表数据中进行各种筛选和查询操作;可以设计和使用各种窗体以实现数据显示和操作;可以根据表数据设计打印各种报表;可以设计和使用宏,对表进行一系列特定的操作。Access2000内有强大的操作向导,为用户提供了丰富的数据库基本表模板。用户只需简单的操作就可建立数据库中所使用的各种基本表、窗体和报表。在Access2000中,可以设定、修改基本表之间的关联,从而实现在多个相关表之间的关系查询。 Access2000中的宏可以实现操作的自动化,使操作更加简单、快捷。 Access2000增强了网络功能,用户可以轻松自如地完成网页发布等。Access2000不仅可以处理自身的数据库文件,还可以处理其它一些数据库系统管理软件所建立的数据库文件,能识别dBase、FoxBase、FoxPro、Paradox、Btrieve等数据库格式文件,并且支持开放式数据库互连性标准(ODBC)的SQL。Access2000能与工作站、数据库服务器或主机上的各种数据库互相连接,并可用于建立客户/服务器应用程序中的工作站部分。 与其它的关系型数据库管理系统相比,Access2000具有以下优点:1、存储文件单一。2、支持长文件名,并可以在文件名内加空格,使文件便于理解、查找。具有强大的网络功能,可通过网络传送数据。3、使用简便,用户无需了解编程语言,便可轻松地设计和开发数据库应用程序。4、可以处理多种数据信息,如文本文件和其它数据库文件。第2章 总体设计2.1 系统层次概况图本系统的结构比较简单,首先是登入页面index.htm,由此登入调度员操作界面和驾驶员操作界面。Index.htm驾驶员登陆框调度员登陆框驾驶员界面调度员界面到达剩余时间提 示上路回应本车辆状态发车指示框架待命车辆启动车辆上路车辆未受监控车辆图2.1 系统结构图2.2 系统模块设计 针对本系统所要满足的各个要求和对于系统安全稳定的考虑,模块的设计如下调度员登陆模块:检验调度员的身份。驾驶员登陆模块:检查驾驶员的身份。调度员模块:本身包含4和5两个子模块。车辆列表显示模块:包括待命车辆,已启动车辆,上路车辆和未受监控车辆列表的显示。发车指令模块:以输入框和按钮的形式由调度员对驾驶员发出发车指令,并显示在驾驶员的界面上。驾驶员模块:其中包括2个子功能:车辆状态显示,预计到达终点的时间。上路指令模块:由驾驶员向调度员发送的指令,提示调度员当前车辆已经由启动状态变为上路状态。调度员离开模块:此模块用来当调度员主动或意外和服务器断开连接时对数据库和一些变量进行操作,以保证系统正常的运行。驾驶员员离开模块:此模块用来当驾驶员主动或意外和服务器断开连接时自动将驾驶员所驾驶的车辆状态设定为未受监控状态。(注意:由于使用的是session_onend事件,所以当调度员和驾驶员在同一太机器上进行登陆时,无法起到效果。考虑到实际情况,调度员和驾驶员不会在同一IP地址下工作,所以未进行改动。)2.3 数据库模块设计数据库中包含以下一些表:ddy:用来存放调度员名单,id表示调度员编号,pass表示调度员密码,那么表示调度员姓名,具体如图图2.2 ddy表结构jsy:用来存放驾驶员名单,jsy_id表示驾驶员编号,car_id表示驾驶员所驾驶车辆的编号。图2.3 jdy表结构jsy_dm:暂时用来存放待命车辆的表,因为是展示存储,表的内容比较简单,只需要记录驾驶员编号和车辆编号即可,下同。图2.4 待命驾驶员表结构jsy_qd:暂时用来存放待命车辆的表图2.5 启动驾驶员表结构jsy_sl:暂时用来存放待命车辆的表。图2.6 上路驾驶员表结构jsy_wsjk:暂时用来存放待命车辆的表(当调度员登陆时生成)。图2.7 未受监控驾驶员表结构loginlist_jsy:用来记录当前已经登陆的驾驶员名单,jsy_id 是用户登陆所使用的驾驶员编号,sessionID是用户此次登陆时服务器自动生成的一个值,由sessionID记录。图2.8 已登陆驾驶员表结构第3章 系统详细设计3.1调度员登陆模块的设计与实现3.1.1 调度员登陆模块的设计首先用户从浏览器中浏览主页面index.htm,然后在调度员一栏里填入调度员的编号和密码,这里我使用的是编号是d001,密码是001。然后提交表单信息,由login_ddy.asp进行处理。我对login_ddy.asp的设想有以下几点:1能够判断输入的调度员编号和密码是否正确,如果正确则页面跳转进入调度员的操作页面,如果错误则提示用户调度员编号或密码错误,并链接回主页面重新输入。2由于本系统只设计由一名调度员进行调度,所以在有第一名调度员登陆的时候需要进行一定的设定,用来限制和提示想从其他计算机上以调度员登陆本系统的用户,防止造成系统的错误。3由于登陆调度员的用户是第一名登陆本系统的用户,在登陆后系统需要显示所有未受到监控的车辆,所以在login_ddy.asp中需要对数据库进行一些操作以满足接下来调度员能正常调度车辆,换句话说就是对数据库进行一系列的操作。3.1.2 调度员登陆模块的实现对于初期设想的的各种功能,我使用以下方法:1我采用的是最方便和常用的方法来进行判断。具体步骤为:(1)从有index.htm提交的表单中获取用户输入的调度员编号和密码,分别放入变量id 和pass中。(2)判断变量id 和pass是否为空,如果为空则提示“ 调度员编号,密码等数据未填写”,给出返回主页面的链接。(3)连接info.mdb数据库,从ddy表中符合变量id和pass中的值的项。如果未找到(rs指针指向最后项之后)则提示“调度员编号及密码错误,请重新填写!”,给出返回主页面的链接;否则(rs指正未指向最后项之后)页面重定向进入调度员页面ddy.htm。2只能由一名调度员进行调度最初其实包含有两层意思,一是同时只能由一名调度员调度,二是同一个调度员编号只能在一台机器上登陆。我使用的方法能同时满足这两个要求,所以就把他们归并在一条里。具体方法是定义一个application变量ddyonwork。首先我编辑global.asa的application_onstart事件,当第一次有访问者时在服务器端定义变量ddyonwork并附值为0,表示当前还没有调度员在进行调度。当有一名调度员试图登陆到系统中时判断变量ddyonwork值是否为0,若为0则表示没有调度员在进行调度,可以继续登陆。若为1则说明已经有调度员在进行调度,弹出提示并返回首页。相应的当这名调度员离开的时候要将变量ddyonwork的值设为0,以保证以后的调度员能正常登陆。相应的当驾驶员进行登陆时也会进行这个判断,来确认是否有调度员在进行调度,这会在驾驶员的模块中予以说明。3由于数据库语句的限制,我只能采用当调度员正确登陆时将驾驶员表中的名单复制到新表jsy_wsjk中,用以显示未受监控车辆的编号。具体语句可见程序。id=request(ddyid)pass=request(ddypass)if id=or pass= then response.write登录错误 show(调度员编号,密码等数据未填写)end ifset conn=server.createobject(adodb.connection)dbpath=server.mappath(info.mdb)conn.opendriver=Microsoft Access Driver (*.mdb);DBQ=&dbpathsqlcmd=select * from ddy where id=&id&and pass=&pass&set rs=conn.execute(sqlcmd)if rs.eof then response.write登录错误 show调度员编号及密码错误,请重新填写!else 查看是否已有调度员登录进行调度,只允许一名 if application(ddyonwork)=0 then application.lock application(ddyonwork)=1 application.unlock session(ddy)=id将驾驶员名单放入未受监控人员名单 conn.execute (select jsy_id,car_id into jsy_wsjk from jsy) set rs=nothingconn.closeresponse.redirect ddy.htm else response.write登录错误 show(已有调度员在进行调度) end ifend if图3.1 主登陆界面3.2驾驶员登陆模块的设计与实现3.2.1 驾驶员登陆模块的设计用户从浏览器中浏览主页面index.htm,然后在驾驶员一栏里填入驾驶员的编号和密码,这里我使用的是编号是j001,密码是001。(还有2个预制的驾驶员编号和密码分别是j002,002和j003,003)然后提交表单信息,由login_jsy.asp进行处理。我对login_jsy.asp的设想有以下几点:和调度员登陆一样,要先判断输入的驾驶员编号和密码是否正确,如果正确则页面跳转进入驾驶员的操作页面,如果错误则提示用户驾驶员编号或密码错误,并链接回主页面重新输入。如果输入的驾驶员编号和密码无误,则检查在当前是否已经有调度员登陆进行调度,若没有则提示驾驶员稍后尝试。这样设计是因为只有在调度员成功登陆后才会创建未受监控车辆的列表,若驾驶员在调度员之前登陆则会因对不存在的表进行操作而造成错误。使车辆状态由未受监控车辆改变为待命车辆。判断当前登陆的驾驶员是否已经在其他地方登陆,若未登陆则记录当前登陆的驾驶员编号,若已经登陆则提示用户被给出返回链接。初始化一些session 变量,用来为以后的操作做准备。3.2.2 驾驶员登陆模块的实现1和调度员使用的方法一样。2使用的是判断在调度员登陆模块中提到的变量ddyonwork,值为1时表示有调度员进行调度,继续登陆,值为0则返回首页。3这里使用的方式是对表进行操作,删除未受监控车辆表中的本车信息,然后在待命车辆表中插入本车的信息,这样就完成了状态的转换。4这个功能是为了防止同一个驾驶员编号同时在两个地方登陆,从而导致系统错误和维护用户安全。我采用的方式是同时记录驾驶员编号和sessionID。对于服务器来说,当有一个访问者访问服务器时,服务器都回给予一个sessionID,而这个变量在同一时刻内对于不同访问者来说是唯一的,一个sessionID对应了一个IP地址,所以说同时记录驾驶员编号和sessionID能够很好的判断驾驶员编号是在不同地方重复登陆。5具体的session变量为:application(session(id),车辆状态变量(只是用来在驾驶员界面显示车辆状态),id表示的是车辆编号,1表示车辆为待命状态,2表示车辆为启动状态,3表示车辆为上路状态,具体的作用会在后面具体说明;session(lefttime),用来记录的车辆到达终点所需要花费的时间,为0的时候表示车辆处于待命状态。3.3调度员模块的设计与实现 调度员模块分成上下两个部分,上半部分用来显示车辆的运行情况,下半部分用来对驾驶员进行发车指令。这样设计考虑到两个因素:第一,由于车辆状态列表是即时的,必须不断刷新才能正确反映出当前车辆所处的状态。而当刷新页面时,用户输入在输入框中的内容也将被同时刷新,这样会对用户造成不便。第二,我使用的java的一段代码,用来当页面关闭时执行另一段程序。而当车辆列表刷新时和发车指令提交时都会触发这段代码。所以我将这段代码放在框架语句中,这样无论是车辆列表的刷新和发车指令的提交都不会影响到代码功能的正常运做。在调度员的页面中,我处于系统的完整和完全性考虑,加入了一段代码来限制用户跳过登陆页面,通过直接在地址栏中输入调度员页面从而直接进入系统,当然这样也会造成系统的错误。代码的具体内容是:if application(ddyonwork)=0 or session(ddy)=,application(ddyonwork)=0判断的是是否有调度员进行调度,session(ddy)=判断在短时间内在这台电脑上是否有调度员通过正常途径登陆调度员页面(变量ddy是在login_ddy.asp中被附值),只有当两个条件同时成立才能打开调度员页面,否则窗口关闭。3.4车辆列表显示模块的设计与实现3.4.1 车辆列表显示模块的设计车辆列表显示模块显示在调度员页面的上半部分,用来显示所有注册车辆的运行状态。运行状态包括4个部分:未受监控车辆,待命车辆,启动车辆和上路车辆。未受监控车辆:在当前调度员调度下的未登陆驾驶员的车辆。待命车辆:在当前调度员调度下的已登陆驾驶员的车辆,等待调度员给于发车指令。启动车辆:接受到调度员的发车指令,驶离车库的车辆。上路车辆:给予调度员上路信号,在行使途中的车辆。3.4.2 车辆列表显示模块的实现这4种状态的车辆分别由4个表记录信息,分别是jsy_wsjk,jsy_dm,jsy_qd和jsy_sl。我用4个asp文件分别显示4个表的car_id项,也就是车辆编号,这4个asp文件是以表格的形式列出表中的数据。然后在调度员页面的上半个框体中用调用语句“include file”来分别调用这4个asp文件,以达到监控所有车辆运行状态的目的。一下是效果图:图3.2 车辆状态列表3.5发车指令模块的设计与实现3.5.1 发车指令模块的设计发车指令是由调度员发出信息,让在待命状态中的驾驶员得知自己可以上路。具体流程是调度员在输入框中输入能够启动的车辆编号,按发车按钮,并且返回此次操作是否成功。此时驾驶员接受到信号,并进入到待命状态。3.5.2 发车指令模块的实现首先考虑到调度员和驾驶员是在两个不同的IP进行信息交换,所以需要用到服务器的公共变量application,正如在驾驶员登陆模块中提到的只要将application(session(“id”)的值由1改为2,并且将数据库中待命车辆表的相应车辆信息删除,再在启动车辆表中添加相应车辆的信息,就能够实现“发车”的过程。图3.3 发车指令模块3.6驾驶员模块的设计与实现3.6.1 驾驶员模块的设计驾驶员页面的显示界面需要使驾驶员了解到以下信息:自己车辆所处状态,分别是待命,启动和上路。当前时间以及自己应该何时到达终点。3.6.2 驾驶员模块的实现 首先和调度员界面一样,先确定当前驾驶员是否是通过正常途径进入驾驶员页面。然后我通过代码来说明如何显示车辆状态的:判断application变量中以自己车辆编号命名的变量的值,也就是application(session(id)的值。为1表示车辆处于待命状态,赋值变量state=”待命中”, session(starttime)=0,starttime这个变量是用来记录车辆上路的初试时间;为2表示车辆处于启动状态,赋值state=”启动”;为3表示车辆处于上路形式状态,赋值state=”启动”,同时计算车辆到的终点所需要的时间,具体公式为session(lefttime)= (hour(session(starttime)*60*60+minute(session(starttime)*60+second(session(starttime)+15)-(hour( now()*60*60+minute( now()*60+second( now()(剩余时间=预计到达时间-现在时间,默认路程花费时间为15秒)。最后当车辆到达终点,也就是session(“lefttime”)的值为0时,则需要将车辆状态application(session(id)重新设为1,同时删除上路车辆表中当前车辆的数据,添加当前车辆数据到待命车辆表中。实现这一过程我是通过判断session(“lefttime”)的值来实现,当其值小于0时我就会进行上面的操作。图3.4 驾驶员模块3.7上路指令模块的设计与实现3.7.1 上路指令模块的设计当驾驶员接到调度员发来的发车指令时,驾驶员的车辆处于启动状态,然后由驾驶员决定上路的时间。当驾驶员按下发车按钮后汽车转为上路状态,计时器开始计时。3.7.2 上路指令模块的实现首先判断application(session(id)的值是否等于2,等于2说明车辆处于启动状态,可以接受上路指令。将application(session(id)的值改为3,设定变量starttime的值为现在的时间now(),然后对数据库进行操作,若不等于2说明车辆状态不符合要求,提示错误并返回,具体代码如下:%sub show(message) response.write&message& response.write返回上一页 response.endend subif application(session(id)=2 then application(session(id)=3 session(starttime)=now() set conn=server.createobject(adodb.connection) dbpath=server.mappath(info.mdb) conn.opendriver=Microsoft Access Driver (*.mdb);DBQ=&dbpath cmd=delete * from jsy_qd where jsy_id=&session(id)& conn.execute cmd cmd1=insert into jsy_sl (jsy_id,car_id) values (&session(id)&,&session(car_i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论