公交车管理系统的实现与设计_毕业设计论文(编辑修改稿)内容摘要:

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%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。