公交车管理系统的实现与设计_毕业设计论文(编辑修改稿)内容摘要:
StratPlace nvarchar 50 是 否 起点 Remark nvarchar 50 是 否 备注 CostTime nvarchar 50 是 否 用时 InputTime datetime 8 是 否 输入时间 存储过程 在该公交车管理系统 的在数据的查询、添加和删除等操作上主要采用了存储过 程。 存储过程是编译好了的 SQL 语句。 它类似于函数的使用,可以直接 通过参数调用存储过程 ,所以效率 比较 高。 存储过程是由一组为了完成特定功能的 SQL 语句集,经过编译和优化后存储在数据库服务器中,用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数 )来执行它 [2]。 存储过程的 能力大大增强了 SQL 语言的功能和灵活性。 (1)允许标准组件式编程。 在存储过程被创建以后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。 (2)实现较快的执行速度。 因为存储过程是预编译的,在首次运行前, 查询优化器 对其进行分析 、优化 ,并给出了 最终被存在系统中的执行计划 [2]。 (3)减少网络流量。 在调用存储过程时,网络中传送的只是该调用语句,而不是多条 SQL 语句,从而大大减少了网络流量。 第 8 页 共 20 页 (4)作为一种安全机制来 充分 利用。 系统管理员通过对执行某一存储过程的权限进行限制,从而 能够实现对相应的数据访问权限制,避免非授权用户对数据的访问,保证数据安全 [2]。 在创建存储过程时,需要确定存储过程的三个组成部分:。 ,包括调用其他存储过程的语句。 ,以指明调用是成功还是失败。 下面给出在 该 系统中使用到的部分存储过程: 实现对满足 ID 号是 CarLineID 的汽车线路数据的删除操作。 create proc prc_deleteCarLine @CarLineID int as delete T_Car_Line where ID=@CarLineID if @@rowcount0 return 0 else return 1 GO 实现查询所有汽车信息的存储过程。 create proc spr_carall as select ID ,CarNum as 车牌号 ,CarColor as 颜色 ,SitNum as 座位数 ,CarType as 类型,AirCondi as 是否空调车 ,Company as 车品牌 ,Remark as 备 注 from t_car GO 6 详细设计 根据已有的需求分析和总体设计,在此基础上进行系统的详细设计和实现。 为此,建立了一个 C.NET 项目。 登录模块 输入:用户名和密码。 处理: (1)用户登录窗体启动。 (2)输入用户名和密码。 第 9 页 共 20 页 (3)检索数据库中数据,是否有相应的用户名和密码。 (4)如果用户名和密码为空,或者错误,进行提示。 (5)如果输入的用户名和密码正确,则允许该用户进入系统。 (6)进入主控制台。 输出:主控制台。 用户登录模块的窗体设计,如图 4 所示。 private void button1_Click(object sender, e) { DataAccess myAcc=new DataAccess()。 if(((), ())==1) { =false。 Main newMain=new Main(())。 ()。 } else if(((),) == 0) (没有该用户 !)。 else { (登 录 失败 )。 } } 图 4 用户登录窗 体 第 10 页 共 20 页 private void button1_Click()鼠标事件用于 实现在输入用户名和密码后,进入系统主控制界面的方法。 DataAccess 类 是自定义的用于实现数据库访问的类。 该方法中判断语句里调用了该类所声明的对象 myAcc 的方法 userlogin(),该方法的具体实现代码如下所示: public int userlogin(string username,string userpass) { Database myDB=new Database()。 SqlParameter[] para={ (@username,50,username), (@userPass,50,userpass) }。 return (spr_uerlogin,para)。 } 该段代码展示了上文中所提到的存储过程的具体使用。 主操作界面模块 主控制平台的窗体设计,如图 5 所示。 从界面上直观的向用户表明了在该系统下可以进行的一系列操作,包括新用户的注册,车辆信息的管理,司机信息的管理,线路信息的管理和车辆线路分配图 5 主控制台界面 第 11 页 共 20 页 的管理。 当用户选择相应的功能进行操作时,触发该按钮事件,则可以进入相应的功能界面进行相应的操作。 系统用户注册模块 添加用户子模块负责系统的安全性,在该模块种只能增加新用户而不能修改、删除用户,这样是为了加强系统的安全性,保证了系统的恶意操作或误删除等情况出现。 (1)添加新用户功能的实现,并且设置用户的初始密码。 (2)功能模块实现的界面效果如图 6 所示。 //用户名检测机制,保证用户名的唯一性。 private void button2_Click(object sender, e) { if(()==) { (用户名不能为空 )。 } else if(checkuser()==1) (该用户名不存在,可以注册。 )。 else { (该用户名存在,请重新录入新的用户名。 )。 } 图 6 添加用户子模块窗体效果 第 12 页 共 20 页 } 将新用户的信息写入数据库。 通过自定义对象 myAccc 访问数据库,主要是由该对象调用存储过程来实现。 private void button1_Click(object sender, e) { //checkuser()是自定义的方法,实现对用户名的检查判断。 if(checkuser()==0) { (该用户名存在,请重新录入新的用户名。 )。 return。 } 自定义的 regcheck()方法,根据该方法返回的值对不同的情况进行处理。 if(regcheck()==1) { DataAccess myAcc=new DataAccess()。 int li_check=((), (), (), (), () )。 if(li_check==1) { (注册成功 )。 } } } 车辆信息管理模块 该模块实现对车辆信息如、车牌号、颜色、座位数、是否无人售票和车辆品牌信息的录入和删除操作。 该界面窗体效果如图 7 所示。 第 13 页 共 20 页 该段代码在用户点击“所有”按时,触发一个事件,通过调用 allcarinfo()方法来返回数据库中的数据, 然后使用 dataGrid 控件将数据显示出来。 private void button2_Click(object sender, e) { DataAccess myAcc = new DataAccess()。 DataSet mySet = new DataSet()。 mySet=()。 = [0]。 } 该 段代码实现用户增加车辆信息后完成保存功能的实现。 其中针对某些可能出错的地方做出了人性化的处理,以便用户更正和做出相应的处理。 司机信息管理模块 通过该窗体,输入司机姓名、身份证、 编号和驾驶编号等等司机的个人资料,实现添加司机信息的功能 ,该功能模块窗体的效果如图 8 所示。 图 7 车辆信息管理窗体效果 第 14 页 共 20 页 该事件实现将合法的司机信息写入数据库。 同样通过自定义类的对象来访问数据库,并通过调用存储过程实现完成操作。 private void button1_Click(object sender, e) { if(AddDirverscheck()==1) { DataAccess myAcc=new DataAccess()。 int li_check= ((), (), (), (), (), (), () )。 if(li_check==1) { string ls_D=。 (操作成功 )。 int li_counts=。 for(int i=0。 ili_counts。 i++) { if([i].GetType().ToString()==) [i].Text=。 } } } } 图 8 司机信息添加模块 第 15 页 共 20 页 线路信息管理 模块 ,主要输入的信息包 括线路编号、线路名称、发车时间和收车时间等 ,具体的窗体效果见下页图 9 所示。 CheckReg()是一个用于实现检查用户注册信息的私有方法,该方法通过嵌入SQL 语句来检索数据库信息,以核对用户信息的有效性。 private int CheckReg() { DataSet mySet=new DataSet()。 string ls_query= select * from t_lineInfo where LineName=39。 + ()+39。 or LineCode=39。 + ()+39。 Database myDB=new Database()。 mySet=(ls_query)。 if([0].==0) return 0。 else return 1。 } 车辆分配线路管理模块 图 9 线路维护界面 第 16 页 共 20 页 公交车最终 要与固定的某条线路相匹配,把具体的每一辆车分配到设 置好的线路上。 这样,汽车,司机,线路才能完成有机的联系,形成一个整体。 对于管理者来说,能够通过该系统所提供的功能从宏观上把握车辆的运行情况 , 如图10 所示。 鼠标单击“确定”事件时,将进行的操作。 首先根据整型变量 li_LineID 和li_CarID 的值来判断是否选择了车辆或者某条线路;若没有,则弹出一消息窗口,给出提示信息。 private void button1_Click(object sender, e) { if(li_LineID==0 || li_CarID==0 ){ (车辆或者线路没有选择,请选择。 )。 return。 } DataAccess myAcc=new DataAccess()。 if((li_CarID)==0){ (该汽车已经分配线路 )。 } else{ int li_flag=0。 图 10 车辆分配线路管理窗体效果 第 17 页 共 20 页 if(==true) li_flag=1。 else li_flag=0。 if((li_CarID,li_LineID,li_flag)0) (保存成功 !)。 } } 7 系统维护和改进 运行维护 经过测试,该系统运行稳定,在使用和维护中应该注意以下几个问题: (1)定期备份数据库,以免丢失数据。 (2)定期清理数据库中的无效数据,以提高运行效率。 (3)对软件及运行环境进行日常维护。 系统改进和提高 本系统在信息表描述上,以及其 它各个地方还有不完备的地方,通用性不强,另外对于用户权限上的设置没有实现更具体的功能实施,没有实现查询资料导出的处理。 下一部的工作将完善本系统,在各个界面上进一步添加所需要的字段。 在熟悉系统模块的设计后,可以根据实际需求的变化,扩充系统的功能。 结 论 本文主要研究了公交车管理系统的设计与实现。 实现公交车公司在对车辆和人员以及线路的统一管理的应用型 设计。 通过几个月的努。公交车管理系统的实现与设计_毕业设计论文(编辑修改稿)
相关推荐
0%以上, 总 增加产品附加值; 体 改善农民的生产生活环境, 为新的经济增长提供良好的发展空间; 目 改善环境质量监测、残留农药检测和市场住处流通等服务体系的 标 建设。 实施阶段 目标内容 时间(月) 阶 第一阶段 完成各项审批手续 2020年 5月 段 第二阶段 完成销售市场建设工作 2020年 5月 性 第三阶段 完成残株集中处理 2020年 6月 目 工程 标 第四阶段
拟建地点在 ******主城区的交通干道上,通过开州路与鹤濮高速引线相连,外部交通方便快捷,铁路有汤 — 濮 — 台铁路与京九、京广两大动脉相连,交通便利,与外界沟通方便快捷,可满足项目建设的需求。 通讯 ******10 万门程控交换机已安全运营多年,微波通讯、互联网均实现国际、国内互联,可以满足项目建设设置直拨电话、微机网络系统的需要。 供电 ******城区供电网络完善
信报箱分包负责 信报箱供应及安装。 其他 与外窗、电梯等单位交界面精装修收口处理;为可视对讲、门禁、电梯按钮等预留孔洞并处理收口;装饰吊灯供应及安装。 特别说明: 8B 的大堂区域和 3F 标准层走道区域 已经完成样板,不在此范围。 可视对讲、门禁及电梯单位提供预留洞口尺寸。 消防楼梯间 不在装修范围 总承包负责 序号 工程内容 备注 1 所有图纸中固定家具的安装,灯具,洁具、五金的安装。 2
nvarchar 50 是 否 起点 Remark nvarchar 50 是 否 备注 CostTime nvarchar 50 是 否 用时 InputTime datetime 8 是 否 输入时间 存储过程 在该公交车管理系统 的在数据的查询、添加和删除等操作上主要采用了存储过 程。 存储过程是编译好了的 SQL 语句。 它类似于函数的使用,可以直接 通过参数调用存储过程 ,所以效率
............................................................................. 16 综合分析 .............................................................................................................. 16
动态显示概念 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。 通常,各位数码管的 段选线相应并联在一起,由一个 8位的 I/O口控制;各位的位选线(公共阴极或阳极)由另外的 I/O 口线控制。 动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码