1、 目录目录1前沿2系统分析22、1 需求分析22.1.1 功能需求分析22.1.2 性能需求分析32.2 可行性分析32.3 系统开发的目标分析42.4业务流程分析52.5数据流程分析62.6系统功能分析7系统设计83.1、数据字典83.1.1、数据项83.1.2、数据结构83.1.3、数据流93.1.4、数据存储93.1.5、处理过程93.2、逻辑设计93.2.1 关系模型93.2.2 数据库结构设计93.2.3 数据库设计103.3 系统设计结构113.3.1 系统功能设计11程序模块设计124.1 登录系统设计124.1.1登录页面截图124.1.2 登录页面后台程序124.2 信息录入
2、的设计134.1.1信息录入截图134.1.2 信息录入后台程序134.3 系统删除信息的后代程序154.4 信息的修改程序164.1.1信息修改截图164.1.2 信息修改后台程序164.5 系统的统计功能程序194.1.1信息统计截图194.1.2 信息统计后台程序20总结26参考文献26前沿开发背景 当今社会,交通事故的高发已经成为全世界所关注的社会问题,惨重的交通事故后果是人们不得不对交通安全状况郁郁高度重视,并将不断进步的科学技术应用于交通安全研究工作中,是先进的交通工具更好地造福于人类。历年来,公安交通管理部门的事故的办案采用的都是完全依靠优质化办案过程,一个交通事故的处理时常会遇
3、到信息不全的情况,往往需要从大量的案卷中调查搜集信息,办案效率低,因此需要开发一个交通事故记录与统计系统,提高质量高效率的信息,鬼法公安机关交通管理部门依法公正处理交通事故和交通事故办案程序,实现高效率办案目标,保护当事人的合法权益,减轻交通事故民警的劳动强度,确实发挥科技的力量。系统介绍本系统是非常实用的交通事故记录与统计信息系统,能满足绝大多数交通管理部门的需求。该系统前台界面采用ASP.NET和HTML制作,后台数据库采用SQL server 2008开发。该系统模块清楚并易于操作,除了必要的数据录入、修改、删除、查询外,还能根据各项指标(如某段时间发生的交通事故起数,交通事故多发地点,
4、交通事故多发的肇事者等)对交通事故进行统计和分析,便于交警掌握事故的详细状况,大大提高了其工作的效率。同时,交警还能以记录的信息为依据,对已经发生的交通事故进行分析,找出事故发生的原因或者规律,从而采取有效的措施,减少交通事故发生的频率。系统分析2、1 需求分析2.1.1 功能需求分析(1)、建立一个完善的道路交通事故信息数据库。该数据库中的信息主要包括肇事者信息和事故详细信息。其中肇事者信息包括:肇事者姓名,肇事者身份证件号、肇事者驾驶证号、车牌号等信息;事故信息包括事故时间、事故地点、事故等级、事故造成的死亡人数、对事故的具体描述等。(2)、具有事故的基本信息的录入、修改、查询和删除功能。
5、(3)、具有事故信息的统计功能,主要功能包括:某段时间发生的交通事故起数,交通事故多发地点,交通事故多发的肇事者等。(4)、具有安全措施。用户登录系统需要输入用户名和密码,防止事故数据的篡改和删除等。并设置不同的访问权限,对于管理者的权限为:不仅可以对数据库进行查询及统计操作,还可以对数据库的数据信息进行增加、删除、更改等操作;而对于一般的用户,如交警,只能对数据库进行查询及统计的操作权限。从而保证事故数据的安全性和保密性。(5)、操作简单。系统设计页面简单大方,便于操作。用户打开系统界面后,可以直接进行数据的录入、修改、删除、查询及统计等操作。2.1.2 性能需求分析从实用、好用的目标出发开
6、发交通事故记录与统计系统,在设计过程中主要考虑以下原则:1 可操作性 原始信息皆由数据录入员录入,系统应尽量减少录入员的数据录入量。录入数据尽量通过设计下拉列表框来选择录入,这样的处理同时也避免了许多录入异常现象的发生。数据输入的格式应符合业务习惯,并且直观、方便。要求系统处理的数据能准确无误,同时输出信息要求直观、简洁。2 可靠性 系统运行具有较高的可靠性,提供严格的并发控制,确保数据的一致性和正确性。3 实用性 从用户的实际需要出发进行系统开发,不盲目追求高新技术的应用。4. 安全性 系统安全措施可靠、高效、可维护性好,有权限控制、口令控制,其中口令录入界面便于系统识别登录用户。5 可维护
7、性 为了保证系统的可维护性,要求具有详细的文档资料,同时,要求系统在功能设计上考虑可扩展性,以满足业务变动的需求。6 可移植性 系统开发完成后,要能运行于各种Windows系统环境中。2.2 可行性分析2.2.1目标可行性分析 根据调查,交通事故发生后,基层交警都需要及时赶赴现场,调查事故情况,记录已处理的事故警情并完好地保存,以方便日后查询、整理、统计使用。另外交警也需要事故清晰的分析结果,从而掌握事故的起因,并制定相应的策略来减少事故的发生。因此,从系统开发方法和具体调查情况来看,该系统在目标方面是可行的。 2.2.2技术可行性分析 交通事故记录与统计分析系统主要是记录与统计事故信息,包括
8、基本数据的录入,删除,修改,查询及统计,主要用到的技术就是数据库和一门可视化开发的编程语言。作为后台数据库开发工具可运行于各种Windows系统环境中,不仅易于使用,而且界面友好。它并不需要数据库管理者具有专业的程序设计水平,任何非专业的用户都可以用它来创建功能强大的数据库管理系统。而中文版完全中文化的环境使我们能够很快地熟悉的开发环境,更易操作;其语句生成器和快速提示帮助我们不必记忆成千上万的属性和方法,在较短的时间就能开发出功能强大的应用程序;其较强的数据库处理功能,能对多种数据库进行读写操作。这两种成熟技术,我们已基本掌握,所以该系统在技术上是可行的。2.2.3经济可行性分析拥有开发该系
9、统的硬件和软件以及免费人力和技术,所以开发该系统的经济成本很低,但是该系统的实施却能很好地处理交通事故的各种相关信息,大大提高交警的工作效率,产生很好的社会效益。因此,该系统的开发满足其经济可行性。2.2.4社会可行性分析 现在的交通部门都有电脑,绝大部分交警也都懂得电脑的基本操作。虽然他们的技术不够专业,而且他们现代化的管理思想和管理素质也不是很强,但是经过培训,这个问题还是可以轻松解决的,所以在社会可行性方面,该系统是可行的。2.3 系统开发的目标分析(1)界面设计友好、美观。(2)数据录入、修改、删除方便和快捷。(3)数据存储安全、可靠。(4)信息分类清晰、准确。(5)强大的查询功能,保
10、证资料查询的灵活性。(6)强大的统计功能,方便用户提高工作效率和质量。(7)交通事故档案管理工作规范化、系统化、程序化。(8)提供灵活、方便的权限设置功能,使整个系统的管理分工明确。(9)系统运行稳定、安全可靠,具有易维护性和易操作性。2.4业务流程分析现场勘察取证,扣证,扣车,确定事故当事人以及事故等级等交警交通事故发生后,保护事故现场,抢救伤者和财产记录事故相关信息,包括事故发生的时间、地点、肇事者、驾驶证号、机动车牌照、受害者、事故等级等。数据录入员录入事故信息修改事故信息核对事故信息删除事故信息查询事故信息保存事故信息有错正确统计事故信息系统管理员交警登录系统登录系 统系统流程图2.5
11、数据流程分析事故发生时间事故发生地点当事人姓名和驾驶证号机动车牌号事故等级等事故高发地点等登陆系统记录查询修改删除统计查询已经记录的事故信息修改已经输入的错误信息删除无用记录年份事故起数死亡人数及死亡率输入用户和密码 数据流程图2.6系统功能分析修改密码修改用户信息交通事故记录与统计信息系统信息查 询基础信息管 理事故统计与分析系统管 理交通事故查询案件调阅查询添加删改修改查询事故发生的时间、地点、天气状况、当事人姓名、驾驶证号、机动车牌照、车型、投保公司、碰撞部位、事故责任方、事故等级、伤员情况等事故总数、死亡人数、直接财产损失、事故高发地、“马路杀手”驾驶员、相应对策和措施等用户登录系统功
12、能结构图系统设计3.1、数据字典3.1.1、数据项 用户名、密码、肇事者姓名、肇事者身份证件号、肇事者驾驶证号、车牌号等信息、事故时间、事故地点、事故等级、事故造成的死亡人数、对事故的具体描述、发生事故起数、死亡人数等3.1.2、数据结构用户数据流 用户信息DS01-01:用户信息I1:用户名I2:密码I3:用户身份 交通事故信息的数据结构 DS01-04:交通事故信息DS01-02:肇事者信息DS01-03:交通事故信息I4:肇事者姓名I8:事故时间I5:肇事者身份证件号I9:事故地点I6:肇事者驾驶证号I10:事故等级I7:车牌号I11:事故造成的死亡人数I12:对事故的具体描述3.1.3
13、、数据流 数据流编号:DS01-04数据流名称:交通事故信息简述:交通事故有关信息数据流来源:管理者录入数据数据流去向:数据库文件数据流组成:肇事者信息+交通事故信息3.1.4、数据存储 用户记录:用户名,密码,用户身份 肇事者记录:肇事者姓名、肇事者身份证件号、肇事者驾驶证号、车牌号 交通事故记录:事故时间、事故地点、事故等级、事故造成的死亡人数、对事故的具体描述3.1.5、处理过程 录入:管理员将从事故中获取的事故信息与肇事者信息录入到系统中 查询:选择查询的条件,使用系统进行数据库查询 删除:对查询的数据进行删除操作 修改:对查询的数据,如果有错误的信息,对其进行修改3.2、逻辑设计3.
14、2.1 关系模型交通事故信息与肇事者的关系:N:1肇事者记录:(肇事者编号、肇事者姓名、肇事者身份证件号、肇事者驾驶证号、车牌号)交通事故记录:(事故编号、肇事者编号、事故时间、事故地点、事故等级、事故造成的死亡人数、对事故的具体描述)3.2.2 数据库结构设计 表3.1 用户详细设计字段名数据类型是否主键是否必要字段说明userID数字是是用户编号UserName文本否是用户名称Pwd文本否是用户密码identity文本否是用户身份 表3.2 事故详细设计字段名数据类型是否主键是否必要字段说明accidentID数字是是事故编号wreckerID数字否是肇事者编号time文本否是事故发生时间
15、address文本否是事故发生地点grade文本否是事故等级deathToll数字否是事故死亡人数describe文本否是事故描述 表3.3 肇事者详细设计字段名数据类型是否主键是否必要字段说明wreckerID数字是是肇事者编号name文本否是肇事者名字identityCard文本否是肇事者身份号drivingLicence文本否是驾驶证号plateNumber文本否是车牌号3.2.3 数据库设计本车站售票系统有三个实体,分别是用户、肇事者信息、事故信息,利用SQL建表如下:用户:肇事者:事故信息:3.3 系统设计结构3.3.1 系统功能设计交通事故记录与统计信息系统主要有五个功能模块:分别
16、是:用户登录模块、信息录入模块、信息修改模块、信息删除模块、信息统计模块。1、 用户登录模块该模块主要实现系统的安全性,防止系统数据被恶意的改变。本模块对应Sql Server数据库中的user表。在此模块下,有两种登录身份:一个是管理员登录,一个是一般用户登录。对于管理者的权限为:不仅可以对数据库进行查询及统计操作,还可以对数据库的数据信息进行增加、删除、更改等操作;而对于一般的用户,如交警,只能对数据库进行查询及统计的操作权限。2、 信息录入模块本模块是建立在管理员登录的基础上产生的。在此模块中管理员可以通过本系统对事故信息做出录入。并通过本系统把数据录入到数据库中。3、 信息修改模块本模
17、块是对录入有误的事故信息作出修改,并通过本系统将数据加入到数据库中记录。4、 信息删除模块本模块是对数据库中的无用的信息作出删除。5、 信息的统计模块本模块式对数据库中的事故信息作出统计功能,方便用户的使用信息。统计功能包括:某段时间发生的交通事故起数,交通事故多发地点,交通事故多发的肇事者等。程序模块设计4.1 登录系统设计4.1.1登录页面截图4.1.2 登录页面后台程序/ / 查询数据库中是非存在所填的登录信息 / / 用户名 / 密码 / 身份 / public static bool selectUser(User user) / 创建参数对象 SqlParameter paras
18、= new SqlParameter3 new SqlParameter(userName,SqlDbType.VarChar) Value=user.UserName , new SqlParameter(pwd,SqlDbType.VarChar) Value=user.Pwd , new SqlParameter(identity,SqlDbType.VarChar) Value=user.Identity ; / 执行查询操作 SqlDataReader sdr = SqlHelper.ExecuteReader(ConstStr.conStr, CommandType.Text, C
19、onstStr.userStr, paras); / 判断登录信息是否存在 while (sdr.Read() return true; return false; 4.2 信息录入的设计4.1.1信息录入截图4.1.2 信息录入后台程序/ / 向数据库中添加肇事者信息 / / 肇事者信息 / 插入是否成功 public static bool InsertWrecker(Wrecker wrecker) /查询肇事者编号的最大值 int wreckerID = Select.SelectMaxWrecker(); / 创建参数 SqlParameter paras = new SqlPara
20、meter new SqlParameter(wreckerID,SqlDbType.Int) Value = wreckerID+1 , new SqlParameter(name,SqlDbType.VarChar) Value = wrecker.Name , new SqlParameter(identityCard,SqlDbType.VarChar) Value = wrecker.IdentityCard , new SqlParameter(drivingLicence,SqlDbType.VarChar) Value = wrecker.DrivingLicence , ne
21、w SqlParameter(plateNumber,SqlDbType.VarChar) Value = wrecker.plateNumber ; / 插入数据并返回插入是否成功的标志 return SqlHelper.ExecuteNonQuery(ConstStr.conStr, CommandType.Text, ConstStr.InsertWrecker, paras) 0; public static bool InsertAccident(Accident accident) / 查询事故编号的最大值 int accidentID = Select.SelectMaxAcci
22、dent(); /查询肇事者编号的最大值 int wreckerID = Select.SelectMaxWrecker(); / 创建参数 SqlParameter paras = new SqlParameter new SqlParameter(accidentID,SqlDbType.Int) Value = accidentID+1 , new SqlParameter(wreckerID,SqlDbType.VarChar) Value = wreckerID , new SqlParameter(time,SqlDbType.VarChar) Value = accident.T
23、ime , new SqlParameter(address,SqlDbType.VarChar) Value = accident.Address , new SqlParameter(grade,SqlDbType.VarChar) Value = accident.Grade , new SqlParameter(deathToll,SqlDbType.VarChar) Value = accident.Death_Toll , new SqlParameter(describe,SqlDbType.VarChar) Value = accident.Describe ; / 插入数据并
24、返回插入是否成功的标志 return SqlHelper.ExecuteNonQuery(ConstStr.conStr, CommandType.Text, ConstStr.InsertAccident, paras) 0; 4.3 系统删除信息的后代程序/ / 删除事故记录信息 / / / public static bool DeleteAccident(int accidentID) SqlParameter paras = new SqlParameter new SqlParameter(accidentID,SqlDbType.Int) Value= accidentID ;
25、return SqlHelper.ExecuteNonQuery(ConstStr.conStr,CommandType.Text,ConstStr.DeleteAccident,paras) 0; 4.4 信息的修改程序4.1.1信息修改截图4.1.2 信息修改后台程序/ / 更新事故信息 / / 事故信息 / public static bool UpDataAccident(Accident accident) / 创建参数 SqlParameter paras = new SqlParameter new SqlParameter(accidentID,SqlDbType.Int) V
26、alue = accident.AccidentID , new SqlParameter(time,SqlDbType.VarChar) Value = accident.Time , new SqlParameter(address,SqlDbType.VarChar) Value = accident.Address , new SqlParameter(grade,SqlDbType.VarChar) Value = accident.Grade , new SqlParameter(deathToll,SqlDbType.VarChar) Value = accident.Death
27、_Toll , new SqlParameter(describe,SqlDbType.VarChar) Value = accident.Describe ; / 执行更新操作,并返回是否更新成功 return SqlHelper.ExecuteNonQuery(ConstStr.conStr, CommandType.Text, ConstStr.UpDataAccident, paras)0; / / 更新肇事者参数 / / / public static bool UpDataWrecker(Wrecker wrecker) / 创建参数 SqlParameter paras = ne
28、w SqlParameter new SqlParameter(wreckerID,SqlDbType.Int) Value = wrecker.WreckerID , new SqlParameter(name,SqlDbType.VarChar) Value = wrecker.Name , new SqlParameter(identityCard,SqlDbType.VarChar) Value = wrecker.IdentityCard , new SqlParameter(drivingLicence,SqlDbType.VarChar) Value = wrecker.Driv
29、ingLicence , new SqlParameter(plateNumber,SqlDbType.VarChar) Value = wrecker.plateNumber ; / 执行更新操作,并返回是否更新成功 return SqlHelper.ExecuteNonQuery(ConstStr.conStr, CommandType.Text, ConstStr.UpDataWrecker, paras) 0; 4.5 系统的统计功能程序4.1.1信息统计截图 4.1.2 信息统计后台程序 / / 查询肇事者编号的最大值 / / public static int SelectMaxW
30、recker() SqlDataReader dr = SqlHelper.ExecuteReader(ConstStr.conStr, CommandType.Text, ConstStr.MaxWreckerID); while (dr.Read() return dr.GetInt32(0); return -1; / / 查询事故编号的最大值 / / public static int SelectMaxAccident() SqlDataReader dr = SqlHelper.ExecuteReader(ConstStr.conStr, CommandType.Text, Con
31、stStr.MaxAccidentID); while (dr.Read() return dr.GetInt32(0); return -1; / / 查询事故和肇事者信息集合 / / public static List SelectAccidentRel() SqlDataReader dr = SqlHelper.ExecuteReader(ConstStr.conStr, CommandType.Text, ConstStr.ManagerInfo); / 事故和肇事者信息集合 List accidentRels = new List(); while (dr.Read() AccidentRel accidentRel = new AccidentRel(); accidentRel.AccidentID = dr.GetInt32(0); accidentRel.WreckerID = dr.GetInt32(1); accidentRel.Time = dr.GetDateTime(2); accidentRel.Address = dr.GetString(3);