第一篇:公交车管理系统
燕山大学课程设计说明书
名称:操作系统OS
题目:公交车上司机与售货员协调工作模拟
班级:07级计算机 开发小组:三剑客 课题负责人:张浩
课题组成员:张浩 李康 张晓玉
姓名
学号
班级
自评成绩 张
浩
070104010121 07应用2班
A 李
康
070104010113 07软件3班
B 张晓玉
070104010131 07软件3班
B
开发日期:2010年1月11日-15日
1概述
计算机操作系统是计算机系统中最不可缺少的,最常用的软件,也是核心的,最接近于计算机硬件的软件。其特点是内容繁多,概念抽象,因此造成理解困难,掌握不易。本软件的主要目的是通过直观的演示,使学生能够感性的明白掌握多道程序及其进程同步和互斥的程序设计的基本方法。
1.1基本功能
利用多线程同步技术模拟公交车系统,实现司机与售票员的同步与互斥关系,即开车时不允许开门,开门时不允许开车,实现每个乘客一个线程同步互斥的上下车。每站随即生成上下车人数,上下车线程实行,先下后上原则。到终点站后,可以统计本次出车的载客人数。
1.2开发计划
第一步,进行问题分析,确定需要解决的问题; 第二步,进行整体构思与框架设计;
第三步,查阅资料,分析所需要设计的程序算法; 第四步,进行各种算法及各个细节编码的详细设计; 第五步,进行代码调试,修改程序中的错误; 第六步,整理总结书写报告,进行答辩。
1.3人员分工
张浩:分析构架,核心代码编写;
李康:用户界面设计,辅助代码编写,调试; 张晓玉:功能测试、书写实验报告。
1.4 开发环境及开发工具
本程序是以在windows XP下用Netbeans和 jdk搭建的平台上,以Java作为开发语言进行编写的。
使用的开发工具:netbeans.NetBeans平台直接提供了应用程序的常见需求,如菜单、文档管理和设置。“NetBeans”构建应用程序是指,仅提供 NetBeans平台尚不包含的应用程序部分,而不是从头开始编写应用程序。在开发周期结束时,可以将应用程序与 NetBeans平台捆绑在一起,从而节省了很多时间和精力,并且构建的应用程序稳定可靠。
使用的开发语言:java.Java是一种简单的、面向对象的、分布式的、解释的、键壮的、安全的、结构的中立的、可移植的、性能很优异的多线程的、动态的语言。其特点主要有:平台无关性、健壮性、面向对象、安全性、分布式。
1.5使用的基本概念和原理
多道程序:用户所提交的作业都先存放在外存中并排成一个队列,成为“后备队列”;然后,由作业调度程序按一定的算法由后被队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
线程:操作系统用来调度、分派的最小单位。同步和互斥:
临界段:临界段对象通过提供所有线程必须共享的对象来控制线程。只有拥有临界段对象的线程才可以访问保护资源(进行临界区操作)。在另一个线程可以获取对象的访问权。用户应用程序可能会使用临界对象来阻止两个线程同时访问共享的资源发文件等。
互斥量:互斥量的工作方式和临界段非常相似,其区别在于互斥量不
公保护一个进程内的资源共享,而且还保护系统中进程之间的共享资源。它是通过为互斥量提供一个“互斥量名”来进行进程间资源共享协调的。
事件:事件对象用于给线程传递信号,指示线程中特定的操作可以开始或结束。除非线程已经收到了这个事件信号,否则它将一直处于挂起状态。当事件对象进入其信号状态时,正在等待该事件的线程就可以开始执行。例如,一个应用程序可以通过事件来通知线程它需要的数据已经准备好。经常利用事件进行线程之间的通信。
信号量:信号量与互斥相似,但是互斥只允许在同一时刻一个线程访问它的数据,而信号量允许多个线程在同一时刻访问它的数据。WIN32 不知道哪一个线程拥有信号量,它只保证信号量使用的资源计数正确的设置。
2需求分析
协调司机和售票员以及乘客在运行与开关门以及上下车时的关系,实现同步互斥,避免发生不必要的冲突,节省了时间空间资源。本程序显示上下车人数,并显示车上总人数,使车内人数不超过总座位数。最终,利用统计功能,显示此次公交车运行的各种参数:车次、总站数、总载客数。
3总体设计
基本的技术路线:面向对象;
软件的总体结构:分为可视化界面以及后台数据执行;
内部模块关系:司机类与售票员类同步互斥,上车类与下车类同步互斥;
总体流程:停车-开门-下车-上车-关门-开车;
需要创建的进程线程:主窗口线程、司机线程、售票员线程、上车乘客线程、下车乘客线程。
流程图如下:
4详细设计
Wait(),notify(),实现进程的等待和唤醒。
BusJFrame()创建主窗口,Driver()和Conductor()分别创建司机和售票
员线程,PassengerOn()创建上车线程,PassengerOff()创建下称线程。
确定要设计的过程、构件、类、对象、函数和它们的参数,要给出具体的名称和参数及其解释。
由Driver类调用BusState类的stopCar()和runCar()方法,由Conductor类调用BusState类的openDoor()和closeDoor()方法,实现同步互斥。
由PassengerOn类调用Seat类的takeOn()和hasOn()方法,由PassengerOff类调用Seat类的takeOff()和hasOff()方法,实现上下车线程的同步和互斥
5编码设计
5.1开发环境的设置和建立
首先安装JDK,如下图:
然后安装Netbeans,并关联JDK:
5.2程序设计过程只需要注意的事项
实现同步互斥的方法应成对出现,防止出现死锁状态;互斥信号应定义清晰,以用于互斥方法的实现;线程的创建和指针传递清晰明确,用于线程之间的交互。
5.3关键构件和插件的使用
Netbeans的使用与一般编程软件接近,但是它包含了很多强大的插件,利用其中的插件我们可以简单的实现很多复杂的功能,例如在本次试验中
恶我们程序的可视化窗口的建立就是利用如下组建实现的。
5.4主要程序的代码设计及注释
BusState类主要源代码: public class BusState {
public static boolean doorClosed=false;
public static boolean busStopped=true;
//获取输出框指针
private static JTextArea bSay;
public static void getBusSay(JTextArea b)
{
bSay=b;
}//获取输出框指针
public synchronized void stopBus()
{
busStopped=true;
bSay.setText(“车已停”);
this.notify();
}
public synchronized void runBus()throws InterruptedException
{
while(!doorClosed)
{
this.wait();
busStopped=false;
}
}
public synchronized void closeDoor()
{
doorClosed=true;
bSay.setText(“门已关”);
this.notify();
}
public synchronized void openDoor()throws InterruptedException
{
while(!busStopped)
{
this.wait();
doorClosed=false;
}
}
} package ysu;
import java.util.logging.Level;import java.util.logging.Logger;
Conductor类的主要源代码: public class Conductor extends Thread{
//获取主窗口指针
private static BusJFrame bj;
public static void getBusJFrame(BusJFrame b)
{
bj=b;
}
//获取BusState类的指针
private static BusState bState;
public static void getBusState(BusState b)
{
bState=b;
}
//获得一个Driver进程类的指针
private static Driver dr;
public static void getDriver(Driver d)
{
dr=d;
}
//用于创建On和Off类
private void createOn()
{
Thread a=new PassengerOn();
a.start();
}
private void createOff()
{
Thread b=new PassengerOff();
b.start();
}
private boolean timeToQuit=false;
private int station=0;
public static boolean finish=false;
public void run()
{
while(!timeToQuit)
{
try {
bState.openDoor();
bj.busSay.setText(“门已开”);
Thread.sleep(1000);
bj.busSay.setText(null);
bj.conductorSay.setText(“请抓紧时间上下车”);
Thread.sleep(2000);
bj.conductorSay.setText(null);
bj.busSay.setText(“开始上下车”);
Thread.sleep(2000);
bj.busSay.setText(null);
Seat.doorAvailable=true;
if(Seat.willOn>(Seat.seatRemain+Seat.willOff))
{
Seat.canOn=Seat.seatRemain+Seat.willOff;
}else
{
Seat.canOn=Seat.willOn;
}
//统计本次出车载客人次数
Seat.totalPassenger=Seat.totalPassenger+Seat.canOn;
//创建上下车乘客的进程
for(int i=0;i { 坐下班客车“); createOff();} for(int i=0;i createOn();} if(Seat.canOn==0&&Seat.willOff==0){ finish=true;}else { finish=false;//等待上下车完成 } while(!finish){Thread.sleep(100);} if(Seat.canOn bj.busSay.setText(”很抱歉n本车已满n欢迎乘 Thread.sleep(2000);} Seat.doorAvailable=false;Seat.hasOn=0;//清零,防止出现累加 Seat.hasOff=0; bj.busSay.setText(“上下车完毕”); bj.seatRemain.setText(“"+Seat.seatRemain); bj.seatUsed.setText(”“+Seat.seatUsed); station++; if(station>Seat.totalStation) { timeToQuit=true; Driver.timeToQuit=true; break; } Thread.sleep(2000); bj.busSay.setText(null); bj.conductorSay.setText(”关门了“); Thread.sleep(2000); bj.conductorSay.setText(null); bState.closeDoor(); Thread.sleep(1000); } catch(InterruptedException ex){ Logger.getLogger(Conductor.class.getName()).log(Level.SEVERE, null, ex); } try { Thread.sleep(200); } catch(InterruptedException ex){ Logger.getLogger(Conductor.class.getName()).log(Level.SEVERE, null, ex); } } bj.conductorSay.setText(”终点站到了n谢谢乘坐本车n再见“); bj.willOff.setText(”“+0); bj.willOn.setText(”“+0); BusJFrame.sumrizeAvailable=true; dr.stop(); } } /* * To change this template, choose Tools | Templates * and open the template in the editor.*/ package ysu;import java.util.logging.Level;import java.util.logging.Logger;Driver类主要源代码: public class Driver extends Thread{ //获取主窗口指针 private static BusJFrame bj; public static void getBusJFrame(BusJFrame b) { bj=b; } //获取BusState类的指针 private static BusState bState; public static void getBusState(BusState b) { bState=b; }//获取BusState类的指针 public static boolean timeToQuit=false; public void run() { while(!timeToQuit) { try { bState.runBus(); Thread.sleep(1000); bj.driverSay.setText(”出发“); 已有的人 人数 bj.nowNextSation.setText(”下一站“);bj.nextStation.setText(”第“+(++Seat.nextStation)+”站“);int a=(int)(Math.random()*10);//下车人数不能多于车上if(Seat.seatUsed Seat.willOff=Seat.seatUsed;}else { Seat.willOff=a;} //提前创建下一站要下车的人数 if(Seat.nextStation==Seat.totalStation){ Seat.willOn=0; Seat.willOff=Seat.seatUsed;}else { Seat.willOn=(int)(Math.random()*10);//生成上车的} bj.willOff.setText(”“+Seat.willOff);bj.willOn.setText(”“+Seat.willOn);bj.busSay.setText(null);Thread.sleep(2000);bj.driverSay.setText(null); bj.busSay.setText(”客车行驶中“); Thread.sleep(3000); bj.busSay.setText(null); bj.driverSay.setText(”到站了“); bj.nowNextSation.setText(”本站“); Thread.sleep(1000); bj.driverSay.setText(null); bj.busSay.setText(”车已停“); Thread.sleep(1000); bState.stopBus(); Thread.sleep(1000); } catch(InterruptedException ex){ Logger.getLogger(Driver.class.getName()).log(Level.SEVERE, null, ex); } } } } Seat类的主要源代码: /* * To change this template, choose Tools | Templates * and open the template in the editor.*/ package ysu;/** * * @author Administrator */ public class Seat { public static int totalStation=4; public static int totalPassenger=0; public static int totalSeat=30; public static int stationName=10; public static int busName=30; public static int seatTotal=30; public static int seatRemain=30; public static int seatUsed=0; public static int willOff=0; public static int willOn=0; public static int canOn=0; public static int hasOn=0; public static int hasOff=0; public static int nextStation=0; public static boolean doorAvailable=true; public static void reset() { totalStation=12; totalPassenger=0; totalSeat=30; stationName=0; busName=30; seatTotal=30; seatRemain=30; seatUsed=0; willOff=0; willOn=0; canOn=0; hasOn=0; hasOff=0; nextStation=0; doorAvailable=true; } public synchronized void takeOn()throws InterruptedException { while(!doorAvailable||hasOff { this.wait(); } doorAvailable=false; hasOn++; seatUsed++; seatRemain--; } public synchronized void takeOff()throws InterruptedException { while(!doorAvailable) { this.wait(); } doorAvailable=false; hasOff++; seatUsed--; seatRemain++; } public synchronized void hasOff() { doorAvailable=true; this.notifyAll(); if(Seat.hasOff==Seat.willOff&&Seat.canOn==0) { Conductor.finish=true; } } public synchronized void hasOn() { doorAvailable=true; this.notifyAll(); if(Seat.hasOn==Seat.canOn) { Conductor.finish=true; } } } PassengerOn类的主要源代码如下: /* * To change this template, choose Tools | Templates * and open the template in the editor.*/ package ysu;import java.util.logging.Level;import java.util.logging.Logger;/** * * @author Administrator */ public class PassengerOn extends Thread{ //获得Seat类的指针 private static Seat seat; public static void getSeat(Seat s) { seat=s; } //获取主窗口指针 private static BusJFrame bj; public static void getBusJFrame(BusJFrame b) { bj=b; } @Override public void run() { try { Thread.sleep(100); } catch(InterruptedException ex){ Logger.getLogger(PassengerOn.class.getName()).log(Level.SEVERE, ex); } try { seat.takeOn(); } catch(InterruptedException ex){ Logger.getLogger(PassengerOn.class.getName()).log(Level.SEVERE, ex); } bj.busSay.append(”第“+Seat.hasOn+”人已经上车n“); bj.seatUsed.setText(”“+Seat.seatUsed); bj.seatRemain.setText(”“+Seat.seatRemain); bj.willOn.setText(”“+(Seat.canOn-Seat.hasOn)); bj.willOff.setText(”“+(Seat.willOff-Seat.hasOff)); try { Thread.sleep(2000); } catch(InterruptedException ex){ Logger.getLogger(PassengerOn.class.getName()).log(Level.SEVERE, ex); null,null, null,} seat.hasOn(); } } PassengerOff类的主要源代码如下: /* * To change this template, choose Tools | Templates * and open the template in the editor.*/ package ysu;import java.util.logging.Level;import java.util.logging.Logger;/** * * @author Administrator */ public class PassengerOff extends Thread{ //获得Seat类的指针 private static Seat seat; public static void getSeat(Seat s) { seat=s; } //获取主窗口指针 private static BusJFrame bj; public static void getBusJFrame(BusJFrame b) { bj=b; } @Override public void run() { try { Thread.sleep(100); } catch(InterruptedException ex){ Logger.getLogger(PassengerOff.class.getName()).log(Level.SEVERE, ex); } try { seat.takeOff(); } catch(InterruptedException ex){ Logger.getLogger(PassengerOff.class.getName()).log(Level.SEVERE, ex); } bj.busSay.append(”第“+Seat.hasOff+”人已经下车n“); bj.seatUsed.setText(”“+Seat.seatUsed); bj.seatRemain.setText(”“+Seat.seatRemain); bj.willOn.setText(”“+(Seat.canOn-Seat.hasOn)); bj.willOff.setText(”"+(Seat.willOff-Seat.hasOff)); try { Thread.sleep(2000); } catch(InterruptedException ex){ Logger.getLogger(PassengerOff.class.getName()).log(Level.SEVERE, ex); } seat.hasOff(); } } null,null, null,5.5解决的技术难点、经常犯的错误 理清司机与售票员之间的同步互斥关系和用于实现互斥的变量和放法,理清上下车乘客的同步互斥关系的变量与方法,确定司机、售票员、上下车乘客同步互斥变量; 出现的错误有:互斥变量的使用,设计的位置不当,实现同步互斥的方法位置不当,最初的逻辑构架关系不对,以上错误经认真斟酌、校验,均已解决。 6测试 在已经安装JDK的操作系统中双击可执行文件,进入公交车模拟系统,可以根据菜单或者快捷键进行操作。 点击开始,系统中显示客车次、总站台数等等,如图: 上下车人员按先下后上进行上下车,如图: 当到达终点站时,车上乘客必须全部下车,不允许上车操作,如图: 当到达终点站,进行下车完毕后,点击统计,可以查看本次出车载客人次,如图: 点击退出即可退出公交车模拟系统。 7.总结 突出特地:简单、易操作。完整地表示了行车与开门的同步互斥,下车与上车的同步互斥。 经验、教训和感受: 总体说来,这次OS课程设计是一次很有趣味的历程。实验期间安装了Netbeans并参考了一些基础书籍,对Netbeans的基本操作和特性有了必须的了解,为课设的开展打下了一个最简陋的基础。实验题目涵盖面较广,需要广泛的查阅资料,以及开动脑筋独立解决种种问题。Netbeans并不是易于使用的系统,因此在实验过程中也自然的遇到了许许多多“稀奇古怪”的问题,同时又在解决与理解问题中对这个系统一个个精妙的强大的设计感叹不已。 与其他同学的交流也是这次课设中有意思的地方。本班解决生产者消 费者问题和公交车模拟问题的同学几乎各占一半,于是在讨论的过程中也对不同的设计风发之间的差异有了更深的认识。从同学那里获得帮助,帮助别人解决问题,自己都受益匪浅,也在这样的氛围中越来越感觉到应用编程与开发的乐趣。 在完成的源代码中还存在相当多的不足,例如图形显示的Bug,忽略文件属性控制等等。需要在以后的学习与工作中更加努力的改进。这次的OS课程设计,也为我们提供了一个锻炼与审视自身能力的机会,意义匪浅。 8.参考文献 Netbeans-JAVA桌面、WEB与企业级程序开发详解 吴亚峰 王鑫磊著 人民邮电出版社 JAVA语言程序设计 郎波 著 清华大学出版社 公交车管理系统整体解决方案 公交车管理系统能够时刻监测公交出行路线和运行状态,公交行驶路径轨迹一目了然,车辆业务管理系统帮您快速解决车辆难题。智百盛公交车管理系统界面设计简洁、美观、其人性化的管理可以使用户轻易上手,是协助各公交公司合理和优化管理的好帮手。 公交车管理系统是一款适用于公交公司的管理软件,它包括档案管理(车辆档案、驾驶员档案、供商信息)、维修管理(车辆维修、车辆维修费用)、配件管理(配件信息、配件入库、配件库存)、事故管理(交通事故登记、期间事故数统计、期间赔偿金额统计)、提醒功能(强险提醒、年检提醒、一级保养提醒、二级保养提醒、驾驶员证件有效提醒、从业资格证有效提醒、驾驶员年审提醒、从业资格证年审提醒)。 一、公交车管理系统之车辆管理 1、车辆登记:对车辆信息进行登记,包括登记编号、车牌、车属单位、所属路线、年审上牌时间、保险信息等资料的登记。 2、轮胎管理:对轮胎的使用情况进行登记。此模块为单独模块,与配件采购、配件库存、维修没有任何关联。 3、规费登记:比如行驶证年审、二级维护、营运证年审、GPS费等,费用项目支持自定义,用户可要求实际情况进行自定义设置。 4、保险处理:对车辆保险到期进行处理。选择车牌号后会自动带入原保单号、投保时间以及保险到期时间。 5、维修登记:对车辆维修进行登记。维修可以分为内部维修与外部维修,外部维修需指定维修地点(维修厂),以便进行应付已付计算,内部维修会从配件库存中减掉。 6、配件采购:对配件采购进行入库登记。保存后,配件库存会自动更新。 7、配件库存:对配件即时库存进行查询。 二、公交车管理系统之业务管理 1、线路管理:对运营线路资料进行设置,包括线路的名称,单程耗油量、公里数、提成等。 2、排班管理:对车辆、司机、乘务员、出场时间、站点等进行排班。 3、回车登记:车辆每天回来后进行的登记,包括收入、用油量、公里数等情况。 4、排班情况表:检查排班情况。 6、车辆状况:车辆的状态分为三种,分别是“可用”、“出车”、“维修”。车辆的状态会根据出车登记、维修登记、回车报账自动跳转,也可以由操作人员手工改变其状态。 三、公交车管理系统之油卡管理 1、加油登记:对车辆加油进行登记。 2、加油卡管理:对加油卡进行管理。包括办理加油卡、设置预警金额、记录当前余额等。 3、加油卡充值:对加油卡进行充值登记,可以到其他支出里进行登记。 四、公交车管理系统之安全管理 1、安全教育登记:对驾驶员安全教育管理。此模块连接到智百盛驾驶员安全培训平台,公交车公司可通过此平台对驾驶员进行安全教育培训。 2、车辆违章登记:对车辆违章进行登记管理。用于记录车辆违章信息,包括车牌号码、驾驶员、罚款金额、违章扣分、违章地点等。 3、车辆事故登记:对车辆事故进行登记管理。用于记录车辆事故信息,包括车牌号码、驾驶员、事故责任、事故伤亡、报案编号、保险理赔等。 五、公交车管理系统之费用管理 1、其他支出:企业日常经营中的除了出车费用、固定费用、工资以外的其它费用支出。系统支持用户自定义费用项目,例如:房租、办公费用等。 2、其他收入:企业日常经营中的经营外收入。系统支持用户自定义费用项目,例如:租车、废旧品变卖等。 3、公交车管理系统之工资管理: 1)请假登记:用于驾驶员请假登记。包括请假项目、天数、扣款金额等。2)加班登记:用于驾驶员加班登记。包括加班天数、加班金额等。3)驾驶员工资设置:用于设置驾驶员的工资构成表,比如出车提成比例、基本工资、补助、奖励等。 4)驾驶员工资结算:生成员工工资结算表。 六、公交车管理系统之应收应付管理 1、应付配件采购结算:对应付配件采购费用进行结算登记。 2、应付加油结算:对应付加油费用进行结算登记。 3、应付维修结算:对应付维修费用进行结算登记。 4、应付结算单:对应付结算单据进行统计查询。 系统功能设计 1.1 GIS功能 GIS功能模块包括地图服务、地图管理、检索、车辆实时显示、车辆跟踪功能、轨迹绘制、距离计算功能。 GIS模块数据流序列图gis服务器客户端GPS数据接口线路数据接口地物数据接口车辆信息接口地图数据请求GPS数据请求单一或多个GPS数据地图数据线路数据请求线路数据地物数据请求地物数据车辆数据请求车辆数据 1.1.1 地图服务子功能 支持shpfile和BingMap两种地图格式,shpfile地图实现放大、缩小、移动、距离测量、面积测量、矩形查询、点选取、全视图、鹰眼地图。BingMap实现放大、缩小、移动功能。如图3.3。 GIS服务器获取地图数据地图shpfile和BingMap两种地图格式控件加载地图数据放大、缩小、移动、距离测量、面积测量、矩形查询、点选取、全视图、鹰眼地图地图类型shpfile地图功能BingMap功能放大、缩小、移动功能 图3.3 1.1.2 地图管理子功能 地图控制管理分为图层控制、注记设置、符号设置三方面功能,以便用户对于地图数据进行个性化配置.3.1.2.1 图层控制 图层控制功能又可细化为三方面功能: (1)图层位置控制:包括图层上移、图层下移、图层置顶、图层置底。(2)图层显示控制:图层图例、图层比例尺、图层显示、鹰眼显示。(3)图层配置:加载图层、删除图层。 3.1.2.2 注记设置 注记设置功能,用户可设置注记显示、注记比例尺、注记字段、注记颜色和注记字体,并可预览注记样式。 3.1.2.3 符号设置 车辆显示设置,包括符号设置、名称属性设置两部分。可以根据车辆运行方向设定不同车辆符号。车辆名称可设置名称显示位置、显示字号、一般车辆、激活车辆等设置。 1.1.3 检索子功能 实现车辆检索、线路检索、地名检索。 (1)车辆检索:关键字模糊匹配线路列表中所有车辆,地图上闪烁显示所选择的在线车辆,掉线车辆显示最近有效位置。 (2)线路检索:画出线路,并通过线路关键字模糊匹配该线路中所有车辆,显示在列表中;地图上闪烁显示所选择的在线车辆,掉线车辆显示最近有效位置。 (3)地名检索:关键字模糊匹配所有地物,在地图上闪烁显示所选择的地物。 GIS地图所有检索功能支持关键字模糊查询。车辆检索线路检索地名检索车辆信息线路信息地物信息车辆信息接口线路信息接口地物信息接口 1.1.4 车辆实时监控子功能 根据 GPS 车载设备实时上传的数据包,结合电子地图,即可让用户快速、直观的确认车辆的地理位置,并可以根据业务需求,设置不同的监控类型。 车辆实时监控类型分为以下几类: (1)实时监控:打开地图窗口,系统默认显示所有车辆;(2)单车监控:在地图窗口,只显示指定车辆; (3)单线路监控:在地图窗口,显示指定线路所有车辆;(4)单分公司监控:在地图窗口,显示指定分公司所有车辆; (5)自定义组监控:用户自定义指定车辆分组(可以跨线路、跨分公司),在地图窗口监控指定分组车辆; GIS地图车辆实时监控车辆信息线路信息分公司信息自定义分组信息车辆信息接口线路信息接口分公司信息接口自定义分组信息接口 图3.4 1.1.5 车辆跟踪子功能 用户根据业务需要可以指定车辆为跟踪模式,则车辆始终在地图视野范围 内运营; 支持定时跟踪、定距跟踪、锁定车辆等跟踪方式。1.1.6 轨迹绘制子功能 在轨迹绘制的输出列表中显示历史轨迹数据,包括线路,车辆,时间,经纬度,速度,方位角,高度,方向,下一站,工号,是否超速。在 shpfile地图中,显示轨迹点(绿色),及轨迹点连线(蓝色);在 BingMap地图中,只显示轨迹点(红色)。绘制子功能包括:(1)实时绘制:绘制选择车辆的最近运行轨迹点,默认50(可修改)。(2)轨迹回放:设置时间范围,回放速度进行车辆轨迹回放。 其中轨迹回放支持支持跨天查询,回放时间段任意设置;系统支持一个车或多个车辆组合回放;轨迹回放速度可以设置。 1.1.7 距离计算子功能 计算车辆轨迹中任意两点间的轨迹距离。 1.2 监控功能 监控功能包括车辆监控列表,视频监控,语音监控三个子功能。 1.2.1 车辆监控列表子功能 车辆监控列表通过分组列表的形式展示所有车辆。 (1)集团、营运公司、分公司、线路分级显示车辆列表。(2)车辆列表包括车辆自编号和在线、离线状态。 (3)支持对单车辆调度和监控功能的调用。包括:车辆信息查询、视频监控、语音控制、历史视频获取、单车监控、显示轨迹、车辆跟踪、GPS公里、历史数据回放、自定义组监控、取消车辆监控、清除车辆轨迹。1.2.2 视频监控子功能 视频监控子功能分为视频实时监控和历史视频提取。其中视频实时监控数据不实时上传,只在发送指令时实时调取。 (1)视频实时监控: 多画面视频监控:最多支持 16 画面,并支持浮动窗口,视频画面可分为 1、4、8、9、12、16,画面布局可任意切换。 通道位置切换:多画面视频监控时,鼠标左键选中指定视频通道,可拖拽到其他视频通道上,实现通道位置切换。 单通道最大化显示:多画面视频监控时,鼠标双击左键,视频通道最大化显示,再双击鼠标左键,返回多画面布局。 图像抓拍:即指定视频通道截屏功能,可将视频截图保存到指定位置。 关闭:单个关闭指定视频通道。 全部关闭:关闭全部视频通道。 在视频中,可显示线路号、自编号和车牌号等信息。(2)历史视频提取:按照筛选条件提取。 1.2.3 音频监控子功能 音频监控子功能包括语音广播,语音通话和语音监听三个子模块。(1)语音广播:下发指令车载终端进行语音播报。如图所示。 (2)语音通话:调度可主动发起语音通话请求,实现调度和驾驶员双向语音通话。或输入请求的电话号码和拨号等待间隔,下发给 GPS 车载设备,GPS 车载设备自动回拨。实现集团、营运公司指挥中心与车辆进行通话。 (3)语音监听:分为主动监听和被动监听。 主动监听,即车上有紧急/危险情况,驾驶员上传请求监听指令,客户 端收到短信提醒,调度员可发送语音监听请求,监听车辆语音,及时了解车上情况。 被动监听,调度用户发送语音监听请求,监听车辆语音,及时了解车上情况。 图 语音广播 1.3 排班功能 排班功能模块主要包括运营计划管理、推班规则设置、系统自动排班。实现对某一线路公交车发车计划,车与司机、乘务员对应关系的确定。 1.3.1 运营计划管理子功能 制定某一线路公交车的发车计划(发车时间点和发车间隔等)。 (1)可通过excel模板导入线路运营计划,满足不同节假日类型营运计划管理。如图所示。(2)可通过软件设置时间区间及发车间隔,从而确定发车时间点。 1.3.2 推班功能设置子功能 1.3.3 自动排班子功能 (1)初始化人车配备表,即确定车辆和司机、乘务员的对应关系。人车配备表包括班次、车号、早班司机和乘务员、晚班司机和乘务员。 (2)设置排班日期和节假日标识,根据推班规则,自动生成排班计划。 1.4 车辆调度功能 车辆调度功能包括线路模拟调度,调度参数管理,实时调度三个子功能。 1.4.1 线路模拟调度子功能 通过直线和实际走向线路,实时显示车辆信息。该模块应包括以下信息:汽车位置、当前时间、配车台数、运营车辆数量、去行数、回行数、起始站车辆数、终点站车辆数;单个车辆的信息包括运行方向、车辆自编号、前一站、后一站、额定人数、车上人数、速度、驾驶员、终到时间、发车时间、GPS时间。 (1)直线模拟调度图 (2)实际走向模拟调度图 1.4.2 调度规则管理子功能 该功能实现对车辆调度参数的设置。支持多种调度规则的选择,包括刚性规则(是否匹配计划车)及灵活规则(进站出站、先进先出)。 (1)进站出站 例如:如果“停站时间”设置为“2分钟”,例如车辆“906615”于15:00到达本站,则该车辆进站后的调度发车时间为“15:00加上2分钟”,也就是“15:02”。 (2)先进先出 可以分时段进行先进先出的设置,表示在该时段范围内,先进站的车辆先出站。发车时间列表可手动修改。 1.4.3 实时调度子功能 实时调度子功能即实时调整发车业务,包括新增发车计划、修改运行方案、修改司乘、智能计算、调度计划下发。在实时调度界面上调用该子功能。 (1)新增发车计划和修改运行方案 在实时调度界面上可操作修改车辆的运营状态,修改发车时间点,下达空放、越站、车辆换向调度、手动发车终到指令,该调度指令通过短信下发到指定车载终端。 短信下发支持自定义短信功能: 空放和车辆换向的区别:根据线路实际调度情况,正确操作【空放】,该操作会产生相应的车次及公里信息;车辆从主站空放到副站,同时将该车的调度时间留给其它到站的车辆使用。根据车辆实际位置,正确操作【车辆换向】,该操作不会产生车次及公里信息,仅是车辆位置从主站调整到副站。 (2)修改司乘 司机换班操作可通过司机刷卡确认后系统自动处理,也可由调度人员手动更换,下发短信到指定车辆的车载终端。 (3)智能计算 根据配车数量智能计算发车间隔;大间隔告警时智能调度;车辆进入主副站时,智能计算越站站数,并发送短信至车载机。 (4)调度计划下发 调度员实时调整了发车时间后,服务器自动下发车辆发车计划到车载终端上,同时下发到线路调度屏上显示。 1.5 报警功能 报警功能主要包括安全报警,报警联动,异常信息记录三个子功能。 根据报警类型预设报警机制,实现车载设备自动提示功能,同时报警信息上传。当车辆报警时,可以在客户端以弹出窗口和声音的形式告警,同时可以通过一次点击观察到报警车辆的实时视频。 同时支持告警类型的灵活扩充与配置,平台端提供存储、统计查询、声光提醒(弹出窗口或固定滚动条,支持提示音的自定义配置)、告警联动等事件的灵活关联与绑定。 1.5.1 安全报警子功能 安全报警子功能为实时报警,包括违章报警、车机报警、司机紧急报警、网管报警。 (1)违章报警 当车辆运行违反规章标准时立即产生报警,包括超速、滞站、偏离线路、未按时发车、出现大间隔,并提供明细统计表。 (2)车机报警 包括车辆抛锚、投币机故障报警。 (3)司机紧急报警 当司机遇到危险情况时,按动紧急报警按钮,通过一键报警。(4)网管报警 监控中心发现车上有异常情况的时候,可以远程启动车辆的报警系统。 1.5.2 报警联动子功能 可以设置多个报警输入和输出端口,当报警产生时,根据报警种类的不同和预先设定的通知机制,同时或者分别通知监控中心和司机等相关人员和部门。 1.5.3 异常信息记录子功能 安全报警信息,以及票箱开关门信息、车辆离线信息需要记录,以供查询。 1.6 统计查询功能 统计查询功能主要包括营运报表查询、基础信息查询、运行信息查询、安全告警信息查询四个子功能。统计查询内容均能导出至文件和进行打印。 1.6.1 营运报表查询子功能 营运报表包括但不限于电子路单管理、行车调度日报明细表、线路营运月报表。 3.6.1.1 电子路单管理 电子路单管理包括路单查询、路单确认、路单补录、路单修改、路单删除操作。其中路单查询可以查询历史记录,路单补录、路单修改、路单删除只能对当天记录进行操作。 电子路单的信息包括车辆名称、司机名称、乘务名称、载客公里、加油公里、回场公里、包车公里、公里合计、GPS公里、快慢点次数、快慢点时间、机障名称、机障次数、起始时间、持续时间。可根据司机名称和车号名称进行筛选查询。 3.6.1.2 行车调度日报明细表 格式待定。 3.6.1.3 线路营运月报表 格式待定。 1.6.2 基础信息查询子功能 包括线路信息浏览、车辆信息浏览、站点信息浏览。 1.6.3 运行信息查询子功能 包括所有车辆的定位信息、到站信息、离站信息、上传短信、下发调度信息、车载机连接信息。 1.6.4 安全告警信息查询子功能 报警模块中的报警类型及异常信息均可查询。 1.7 运维管理功能 运维管理模块包括基础信息管理、报站文件管理、日志管理、时钟服务等子功能。 1.7.1 基础信息管理子功能 包括公司、线路、车辆、站点、设备、监控点、司机、乘务员信息的新增、修改、删除。 上图为车辆信息。公司、线路、设备等信息待定。 1.7.2 报站文件管理子功能 包括报站文件制作和远程升级。 3.7.2.1 报站文件制作 报站文件制作工具可以实现 GPS 车载设备报站文件制作功能。主要功能包括站点信息配置、服务用语配置、公共信息配置等功能。 3.7.2.2 远程报站文件升级 (1)支持远程站点信息配置、服务用语配置、限速设置、修改 IP 地址等功能。(2)支持升级车载终端软件、升级报站文件等功能。 (3)支持除配置文件(不包括注册车号等)从辆车中导出后,通过系统远程升级直接下发给其他车辆。 1.7.3 日志管理子功能 包括系统操作日志、报警日志、设备状态日志。 (1)操作日志:按照时间、操作人员、操作类型进行查询。 (2)报警日志:可按报警时间、车牌号码、报警区域、报警类型、处置人员等条件进行查询。 (3)设备状态日志:前端采集设备、服务器状态。 1.7.4 时钟管理子功能 在平台建立统一 NTP 时钟服务,各服务器或前端设备应以统一平台的时钟源为基准。统一 NTP 时钟服务以省厅的时钟服务为时钟源。各级系统校时周期应以实际要求为准,但至少每 24 小时校时一次,并有容错功能以避免设备或网络问题造成的局部校时错误。 1.7.5 数据字典管理子功能 为维护系统提供所需要的数据字典,使用户可以方便地对诸如车身颜色、号牌类型、号牌颜色、监控方向等交通参数进行定义。要能够根据数据字典类型和字典项目进行新增、修改、删除、查询等操作。 1.7.6 其他信息模块 系统配置、监控客户端软件的自动升级操作、监控点信息下载。 1.8 用户管理功能 用户管理功能包括用户组分级管理,角色管理,权限管理。其中用户应分组为集团、营运公司、分公司、线路四级,每个用户对应不同的角色,角色对应相应的权限。提供人机界面,完成用户的注册、注销、编辑、删除、密码修改、密码重置,角色和权限配置等操作。根据用户角色分配操作权限,确保用户只能在授权的计算机上使用。 1.8.1 用户组管理子功能 用户组分为集团、营运公司、分公司、线路四级。该模块完成用户操作的基本功能。(1)注册 输入:所属单位、账户名称、账户姓名、账户级别、帐户类别、账户组别。检查:校验账户名称是否已注册,若已注册提示相应信息。输出:注册成功。说明: a)注册成功后,随机生成的账户密码和操作密码均为六位随机密码(数字+字母)。b)操作密码为使用监控目标控制功能的密码。(2)注销 输入:选择查询回显结果信息项后的“注销”。检查:提示是否确定注销。 输出:注销成功,并回到原来的账户查询回显界面。(3)修改密码 输入:账户原密码、新密码(两次);操作原密码、新密码(两次)。检查:校验输入的原密码是否正确;校验两次输入的新密码是否一致。输出:密码修改成功,并回到原来的账户查询回显界面。说明:账户使用者可修改自己的账户密码和操作密码。(4)密码重置 输入:选择查询回显结果信息项后的“密码重置”。 输出:密码重置成功,并回到原来的账户查询回显界面。说明: a)只有系统管理员和机构管理员具备该功能权限。 b)重置后的账户密码和操作密码均为六位随机密码(数字+字母)。 1.8.2 角色管理子功能 根据具体管理需要,自定义系统角色,为不同的角色分配不同权限,对于同一用户可以有不同角色。通过人机界面,方便新增角色、修改角色权限等操作。 1.8.3 权限管理子功能 系统支持数字证书权限认证的集成。可进行系统用户的添加、删除、修改、查询。通过角色和资源的授权对用户进行图像浏览、下载、操作区域等(不同角色对应的权限需要再确定)进行权限控制。系统通过管理角色和定义角色的权限来给具体用户分配权限。相同的角色拥有相同的权限,可以给系统用户分配不同角色来给定义其权限。 [公交车调度系统解决方案] 联系电话:*** 联系QQ:100816410 一、需求分析 随着我国国民经济的飞速发展,城市建设日新月异,城市交通问题日益严重,已成为严重影响许多大中城市发展的重点问题之一。由公共交通客运量大、相对投资少、占有资源少、效率高、污染相对较少、人均占用道路少等优点。近年来,各地政府领导及交通管理部门都大国发展公共交通,改善城市交通。然而要想使得城市公交发展步入快车道,就迫切需要建设一个符合公交系统实际应用的智能化调度管理系统,通过技术集成,形成新的系统概念和系统功能,提高交通和管理部门的管理水平,向管理要效益,要资源。针对行业管理难题,制定了一套完整的公交车的GPS解决方案,可以实时记录车辆状态信息,包含车辆的具体位置,行驶方向,行驶速度,停车时间,停车地点,历史信息回放,里程统计等功能。GPS系统已经率先为汽车租赁行业的科学化管理进行实践,实现了与多种现代化技术手段的有机结合,很好地解决了制约我国汽车租赁业发展的难题。公交车辆管理调度的特点是: 高精度定位车辆的具体位置、行驶方向、行驶速度——规避租车风险 轨迹回放:可调阅被控车辆历史行程、轨迹记录——有效分析行车路线远程控制车辆:特殊情况下通过监控中心对被控车辆远程进行断油断电、锁车——保障汽车安全 对系统响应要求灵活、及时 车辆信息统一管理:车辆资料有序存档、方便查询 我们提出既满足GPS监控系统的需求,又无必要建设和维护一个大型的系统,而且对功能的要求相对简单、实用的方案。 二、系统概念 GPS车辆监控调度系统是集全球卫星定位系统(GPS)、地理信息系统(GIS)以及无线通信技术于一体的软、硬件综合系统。主要由三部分组成:监控中心软件系统、无线数据链路和GPS车载终端。可对移动车辆进行统一集中管理和实时监控调度指挥。GPS车辆监控调度系统利用电脑通过INTERNET,监控范围可以随着目标移动、放大、缩小,使目标始终保持在屏幕上,实现多窗口、多车辆、多屏幕同时追踪;GPS满足了车辆的安全、快捷、准确的需求,提高了车辆服务能力、人员利用率、规范科学化管理水平及降低车辆的油耗、人员成本。 三、方案特点 系统利用GPS导航定位技术、GSM移动通信技术、GIS地理信息技术和计算机及网络技术,成功地为构造了一个可以覆盖全国的多层次的GPS车辆监控服务的系统,利用电脑通过INTERNET,监控范围可以随着目标移动、放大、缩小,使目标始终保持在屏幕上,实现多窗口、多车辆、多屏幕同时追踪;GPS满足了车辆的安全、快捷、准确的需求,提高了车辆服务能力、人员利用率、规范科学化管理水平及降低人员成本。 四、系统功能简介 车辆定位查询 GPS卫星定位管理系统建立起了租赁公司与移动资产之间迅速、准确、有效的信息传递通道。租赁公司可以随时掌握移动资产状态。同时,可以根据需要对车辆进行远程控制。隐秘跟踪式GPS卫星监控车载终端,安装此终端的车辆或设备将连续发送工作信号和位置信息到管理中心。 越界报警 租赁公司可以设定租赁车辆或设备的运行界限,当车辆或设备超出界限时,将自动向监控中心发出 车辆越界报警,中心将自动对车辆进行实时跟踪。紧急报警 当油罐车辆遇劫时,可触发隐蔽式的报警按钮向中心报警,总控中心在地图上将对该移动目标进行相应的色彩及图标的突出显示并以声、光报警提醒值班员注意,同时在屏幕上显示出该移动目标的用户资料,包括车辆信息(车辆编号、车牌号、车型、颜色、发动机号)、驾驶员信息(司机名、驾驶证号、行驶证号、联系电话)、联系方式(所属单位、负责人、电话)、车辆状态(车辆位置、方向、速度、时间)等信息,帮助值班员进行警情处理。能提供警情受理记录窗,供值班员记录受理情况。 超速报警 为确保行车安全,监控中心可以提示司机注意行车安全,控制行车速度,从而降低事故风险。 轨迹记录/回放 系统可将被监控车辆或设备的运行轨迹自动记录下来,选定某车某时间段的位置记录进行轨迹回放,为事后的分析或处理纠纷提供可靠的证据。 车辆信息统一管理 建立各类数据系统,包括:用户数据管理系统、车载终端管理系统、协助单位管理系统、值班员管理系统、警情管理系统、录音管理系统等,并进行存储,可提供查询、回放、打印等功能。 五、系统效应 统一调度:提高车辆管理效率 超速报警:确保行车安全 定位跟踪、实时监控,有效规避风险 消除隐患,降低风险系数 远程遥控,断油断电,保证行车安全 轨迹记录/回放,协助事后追车,降低公司损失 关于加强公交车营运管理的建议 几年来,随着我市经济社会的发展,公交事业也得到了长足的发展,在推进城市建设的进程中发挥了重要作用。但是,在公交方便出行的同时,也出现了较多的问题,主要表现在:一是公交车占道行驶现象较为严重,看到公交车在市区大部分路口都经常不按导向车道行驶,随意加塞。二是公交车形象欠佳。公交车内卫生状况较差,车内垃圾未能及时打扫,座椅上经常有水;车身绣迹斑斑,尘迹点点;部分公交车排黑烟很严重。三是公交司乘人员的服务态度较差。较多公交车司乘人员不主动报站名。四是公交车站台不规范。有的公交车站台没有站牌,有的站牌被“牛皮癣”占领,有些站名看不清,给不常乘车人以及外地来钦者带来了不少麻烦。 建议: 一、进一步加大公交督查力度。专门成立公交督查组,不定时、不定地地进行督查。对各线路营运车辆营运秩序、安全工作、服务质量等方面进行专项检查。对发现的违章人员一律按照规定予以处罚,并要求基层单位反馈违章处理情况,对处理情况进行监督检查,对没有按规定执行的单位要求予以整改。 建立公交文明监督队、设立公交文明举报热线,及时掌握信息,进行表彰和批评,努力形成人人参与交通管理的氛围,共同维护交通秩序。聘请社会各界人士担任社会监督员,对公交服务进行监督。交警等有关执法部门应该加大对公交违法行车行为的惩治力度。对公交车不按规定鸣喇叭、斑马线不避让行人、随意变更车道、压线行驶、停靠站不规范等行为进行重治重罚,并进行集中专项整治。 二、强化司乘人员队伍建设。要求司乘人员应当统一佩戴服务标志、文明用语,推广普通话,及时播报线路名称、车辆行驶方向和站点名称。加强对公交驾驶员的教育,提高驾驶员的文明行车、优质服务等岗位素质,教育他们进一步增强服务意识,争做城市窗口的文明使者。 三、要进一步增加投入。增加公交车辆,及时对新居民区增设公交线路,淘汰破旧公交车;要统一公交车站台的形式,站牌上要有明确的站点、始发时间、末班时间、两车间隔时间等,并且对于站牌要定期管理,防止“牛皮癣”等对站牌的非法占用;加快公交车辆的更新改造,全部更新或升级为符合现阶段排放水平的公交车,消除公交车冒黑烟现象;为公交车净身改善卫生状况,公交车至少要做到一天清洁两次,在起终点 等候发车时,司乘人员要及时对车内垃圾进行清扫,随时保持车内清洁卫生;加强公交车的广告管理。对车身及车厢内商业广告进行清理,并予以规范,在车内配备电子显示屏、移动电视、线路标志图、公益广告,介绍钦州地理环境、风土人情、旅游资源,让外地人一踏入钦州就有一个好印象。第二篇:公交车管理系统整体解决方案
第三篇:智能公交车管理系统功能需求
第四篇:公交车调度系统解决方案
第五篇:关于加强公交车营运管理的建议