![C#课程设计高速公路收费系统_第1页](http://file4.renrendoc.com/view/ad676d6b58ee86db24041e298b2aa201/ad676d6b58ee86db24041e298b2aa2011.gif)
![C#课程设计高速公路收费系统_第2页](http://file4.renrendoc.com/view/ad676d6b58ee86db24041e298b2aa201/ad676d6b58ee86db24041e298b2aa2012.gif)
![C#课程设计高速公路收费系统_第3页](http://file4.renrendoc.com/view/ad676d6b58ee86db24041e298b2aa201/ad676d6b58ee86db24041e298b2aa2013.gif)
![C#课程设计高速公路收费系统_第4页](http://file4.renrendoc.com/view/ad676d6b58ee86db24041e298b2aa201/ad676d6b58ee86db24041e298b2aa2014.gif)
![C#课程设计高速公路收费系统_第5页](http://file4.renrendoc.com/view/ad676d6b58ee86db24041e298b2aa201/ad676d6b58ee86db24041e298b2aa2015.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告书专业:信息管理与信息系统课程设计名称:《可视化编程技术课程设计》题目:高速公路收费系统班级:学号:设计者:指导老师:完成时间:摘要在现代交通越来越便利的同时,高速公路也发挥着越来越重要的作用。中国已经有4万多公里的高速公路,在未来还将翻倍。修建高速公路被各地官员拉入地方经济工作日常首要位置,与1950年后的美国相似,越来越密集的高速网正在促使着中国发生巨大的变化。高速公路收费系统是高速公路管理的重要组成部分。建立智能化的收费系统是加强高速公路管理的一个重要环节。高速公路收费系统解决了高速公路收费业务中由于采取传统方法和手段出现的难以处理的问题,并把管理对象转向信息对象的信息管理系统,把高速公路收费系统推向另一个高度。利用计算机进行高速公路收费系统设计,本文是采用C#乍为前台开发工具,SQLServer2008R2作为后台数据库平台的基于C/S的三层模式的高速公路收费系统。关键词:C枪数据库表;TOC\o"1-5"\h\z目录1第一章开发环境和开发工具1C#语言简介1开发背景1开发环境2第二章人事管理信息系统的分析与设计3系统需求分析3系统总体设计3系统设计目标3开发设计思想4系统功能模块设计4第三章数据库设计6弓I入背景6数据库需求分析6数据流图7.数据字典7数据库概念结构设计10数据库逻辑结构设计14数据库物理结构设计15索引的建立(主键、外键)15触发器16第四章系统详细设计与实现17实体类库设计与实现17数据访问层类库设计与实现22业务逻辑层类库设计与实现32界面设计及实现37登陆界面及代码37主界面及代码38结论50心得体会51参考文献52第一章开发环境和开发工具C#语言简介C呢微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C呢微软公司研究员AndersHejlsberg的最新成果。C#H■起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#fJava有着明显的不同,它借鉴了Delphi的一个特点,与COM;组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。C呢一种安全的、稳定的、简单的、优雅的,由C和C++为生出来的面向对象的编程语言。它在继承C和C++虽大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C球合了VB简单的可视化操作和C++勺高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#是一种面向对象的语言,它使得程序员可以快速地编写各种基于MICROSOFT.NE平台的应用程序,MICROSOFT.NET供了一系歹用勺工具和服务来最大程度地开发利用计算与通讯领域。开发背景二十年来,收费公路在中国从无到有,弥补了传统公共交通的不足,满足了人们快捷、安全、舒适的交通需要,为中国经济的蓬勃发展做出了巨大贡献。正确揭示收费公路在公共服务方面的标准和限度,处理费用的各种数据,对中国公路建设事业健康发展有重要意义。如今,高速公路的飞速发展,高速公路的行路畅通,正因为这样,高速公路在各种交通运输渠道中占据了主要的地位,这就造成了高速公路收费管理出现了一些问题,不但增加了运营的强度,也增加了高速公路收费工作人员的工作压力。所以,这对现有的收费管理和收费人员提出更多的要求:提高收费效率、降低收费差错,提高收费站管理服务水平。而以手工为主的传统收费方式已经不能满足当前收费的实际需要。在当今信息化的社会里,作为高新技术之一的CM视化编程技术和数据库应用技术已成为高速公路信息资源利用和高速公路建设及其现代化管理不可缺少的重要工具,高速公路收费系统便是基于C杯口数据库所产生的,相较于传统手工的收费方式它的效率高、差错少,能使管理人员随时查阅数据信息。并能对各种违规行为进行一定的制止,对于各种各样的逃票行为提供证据。高速公路收费系统能够满足我国对于高速公路所提出的大多数要求。开发环境本文所采用的开发环境主要是基于数据库系统的SQLServer2008R2和基于面向对象程序设计的C#SQLServer2008R2在Microsoft的数据平台上发布,可以组织管理任何数据,可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。它可以对数据进行查询、搜索、同步、报告和分析之类的操作引进了一系列新功能帮助各种规模的业务从信息中获取更多价值。经过改进的SQLServer2008R2增强了开发能力,提高了可管理性,强化了商业智能及数据仓库。本系统是利用SQLServer2008R2创建高速收费站上的收费站信息表、职工信息表、收费查询表、道路表、进出站信息表、车辆信息表、车辆流动表、收费卡信息表、收费标准表以及用C#1接数据库用的登录系统表。利用C杯口数据库建立连接之后,利用C鼾的控件按钮以及一些程序代码实现一些特定的功能,例如员工信息查询、员工信息编辑、车辆信息查询、收费标准查询、收费情况查询等,极大地提高了高速公路收费管理的效率。第二章人事管理信息系统的分析与设计随着计算机技术的飞速发展,计算机在各种收费和管理应用的普及,利用计算机实现高速公路收费的管理势在必行。当前高速公路收费系统正在从C/S结构向B/S结构转移,但是由于安全性等方面的因素,C/S结构的高速公路收费系统仍然占据收费系统的主流。本文所论述的系统也是C/S结构的高速公路收费系统。高速公路收费系统是适应现代化制度要求,推动高速公路收费走向科学化、规范化的必要条件。系统需求分析在现代运输的铁路、公路、水运、航运和管理五种方式中,目前我国公路运输约占全国客、货运输总量的一半以上。近年来,我国高速公路的发展很快,高速公路总里程跃居世界第二位,从而大大改善了公路路网结构,缓解了交通旅游业的发展,推动沿线产业结构调整,加快了中小城镇的发。随着高速公路的建设,收费站数目的不断增加,对现有的收费管理和收费人员提出了新的要求:提高收费效率、降低收费差错,提高收费站管理服务水平。高速公路收费系统提供了一种理想的解决上述问题的方案,能适应新的收费管理要求。在当今信息化的社会里,如何运用计算机技术、运用好有限的资金,加快速度、高质量地建设高等级公路收费系统,是摆在广大科技工作者面前一个有待解决的课题。今为解决这一些问题特别写了高速公路收费系统,利用计算机的存取功能及其计算机数据库的功能来实现对数据的有效、高速管理。系统总体设计系统设计目标本文研究开发的高速公路收费系统用于支持高速公路的收费管理工作,有如下三个方面的目标:•支持收费站实现规范化的管理。•支持收费人员高效率完成车辆收费和信息查询的日常业务,包括车辆的道路信息、车辆信息、增加收费的具体信息和收费详情查看等。•支持收费站进行劳动人事管理及其相关方面的科学决策,如领导根据现有的员工情况增加或减少员工人数、修改员工信息等。开发设计思想基于以上系统设计目标,本文在开发高速公路收费系统时遵循了以下开发设计思想:采用现有的软硬件环境及先进的系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用C/S体系结构,Clinet(客户端)负责提供表达逻辑、显示用户界面信息、访问数据库服务器;Server(服务器端)则用于提供数据服务。系统采用三层架构的设计思想,即界面层(UserInterfacelayer)、业务逻辑层(BusinessLogicLayer)、数据访问层(Dataaccesslayer)。界面层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。业务逻辑层:是系统架构中体现核心价值的部分,主要负责对数据层的操作。数据访问层:主要是对数据的操作,具体为业务逻辑层或表示层提供数据服务。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。系统功能模块设计本系统分为四个模块:系统模块、职工信息管理、收费站信息管理、车辆信息管本系统的具体功能模块图如图3-1所示:高速公路收费系统图3-1系统功能模块图第三章数据库设计引入背景高速公路收费系统是一个数据库应用系统,有关车辆和收费的所有信息都保存在数据库中。数据库结构设计是高速公路收费系统数据库应用系统开发过程中一个非常重要的环节,设计的好坏将直接对所开发的高速公路收费系统的效率以及实现的效果产生影响。好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。数据库结构设计主要就是要设计好数据库中各个表的结构,包括信息保存在哪些表格中、各个表的结构如何以及各个表之间的关系。数据库的存在能够完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能;可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性较好。由于数据库设计的重要性,人们提出了许多数据库结构设计的技术。数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,也是非常重要的一个阶段。在这个阶段主要工作是收集基本数据以及数据处理的流程,为以后进一步设计一打下基础。需求分析主要解决两个问题::.•内容要求。调查应用系统用户所需要操作的数据,决定在数据库中存储什么数据。•处理要求。调查应用系统用户要求对数据库进行什么样的处理,理清数据库中各种数据之间的关系。3.2.1数据流图顶层图:提供信息J高速公路
收费系统3.2.1数据流图顶层图:提供信息J高速公路
收费系统领导进入收费标准一层图:收费卡提供信息得到一层图:收费卡提供信息得到交还、读卡上提供信息进站处理出站处理员工1员工提供权限距离情况权限信息各站距离情况进入登录■读取信息查询、修改查看收费信息改动数据员工信息.2.数据字典数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。它与数据流图互为注释。包括五个部分:数据项、数据结构、数据流、数据存储和处理过程。O数据项:车辆信息:属性别名长度取值范围含义说明车辆类别车型号char6主键用于识别车辆的类型,用于收notnull费计算车牌号车牌编号char8唯一标识一辆汽车的关键域
职工信息:属性别名长度取值范围含义说明职工编号工作号char8主键用于唯一标识一位职工信息的关键域职工姓名姓名char10notnull用于识别/、同的员,性别char2男或女标识职工的性别年龄nchar218-50表示每位职工生存的年限职位char4领导或员工用于标识职,的/、同分,系统登录:属性别名长度取值范围含义说明职位角色类别char4领导或员丁用于标识登录后的/、同权限职工编号用户名char8主键唯一唯一标识一位职工的关键域密码登录密码char6notnull用户登录所需要的通行证收费站信息:属性别名长度取值范围含义说明收费站号进出站编char6主键唯一唯一标识一座收费站的关键域号收费站名varchar30notnull标识收费站的存在信息地址varchar50notnull标识收费站的位置信息联系方式电话号码char8notnull收费站的联系信息车辆收费标准:属性别名长度取值范围含义说明车辆类别[车型号char6notnull用于标识车辆的类别收费单价realnotnull标识每类车每公里所收单价备注varchar50notnull对于所填内容进行解释收费卡信息:属性别名长度取值范围含义说明收费卡号char10主键唯一标识唯一收费卡的号码进站编号收费站号char6notnull登上高速公路的起始收费站进站时间Date8notnull标识车辆进入起始收费站的time时间车辆类别车型号char6notnull车辆的类型,用于收费计算
收费查询:属性别名长度取值范围含义说明收费ID进出站IDchar12进入收费站的通道位置及收费次序车辆类别车型号char6notnull标识车辆的类型,用于收费计算道路编号道路IDchar201-99表示两个收费站间的道路应收费用收费数目float6notnull应收费用=收费单价*行驶路程收费人职工编号char8用于唯一标识一位职工信息的关键域各站距离情况:属性别名个长度取值范围含义说明道路编号道路IDchar201~~99标识两个收费站间的/、同道路进站编号收费站号char6取值唯一唯一标识进入高速的收费站出站编号收费站号char6取值唯一唯一标识出高速公路的收费站距离real8notnull两个收费站间不同道路的长度道路通行RJ含通行char2是或否该路是否可以通行②数据结构:数据结构名含义说明车辆信息职工信息系统登录收费站信息车辆收费标准收费卡信息车辆收费信息各站距离情况定义了一辆车的相关信息定义了一位职工的相关信息定义了登录高速公路收费系统的用户和密码介绍了一座收费站的相关信息介绍了我国及我省规定的高速公路收费标准定义了进站所获通行卡的相关信息定义了一辆车的具体收费情况/、同收费站间的/、同道路及跑离(3数据流:数据流名称输入输出员工信息查询员工信息更新收费卡信息更新收费标准信息查询各站距离情况查询收费信息查询职工编号、密码员工信息更新的员工信息员工信息车辆提供收费卡收费卡信息收费标准信息进站处理各站距离信息提供进站处理进站处理收费信息
⑤处理过程:处理过程名处理过程输入数据流输出数据流基本信息查询输入关键属性信息查询基本信息基本信息修改根据所需进行修改信息修改基本信息基本信息添加输入新的信息信息添加基本信息基本信息删除根据所需进行删减信息删除基本信息数据存储名输入数据流输出数据流存取方式员工信息数据存储名输入数据流输出数据流存取方式员工信息]更新的员工信息员工信息存到指定位置收机更新的收费卡信息收费卡信息存到指定位置收费标准收费标准信息存到指定位置各站距离各站距离信息存到指定位置收费信息收费信息存到指定位置③数据存储数据库概念结构设计概念结构是对现实世界的一种抽象,就是对实际的人、物、事和概念进行进行人为处理,它抽取人民关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。概念结构设计就是根据需求分析得到的结果对现实世界进行抽象,设计各个局部E-R模型。局部E-R图1)车辆的E-R图辆类别二)—2)职工的E-R图V—C性别(车厂嬴)年龄^)年」工姓名一职3)收费站的E-R图6)各站距离情况E-R图8)收费站与职工的实体联系图员工9)收费站功能的实体联系图全局E-R图车辆类别二)员工收费时间收费查询应收费用收费站各站距离情况车辆类别车辆
类别收费标准数据库逻辑结构设计概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计。也就是要将概念上的结构转化为BP数据库系统所支持的实际数据库。数据库逻辑结构管设计的任务是将概念模型转换成特定DBMS所支持的数据模型的过程。一般的逻辑结构分为三步:初始关系模式设计;关系模式规范化;模式的评价与改进;本系统所对应的关系模式:车辆信息(车牌号,车辆类别)职工信息(职工编号,职工姓名,性别,年龄,职位)登录系统(职工编号,职工姓名,职位)收费查询(收费ID,车辆类别,道路编号,应收费用,收费人)收费站信息(收费站号,收费站名,地址,联系方式)收费卡信息(收费卡号,进站编号,进站时间,车辆类别)各站间距(道路编号,进站编号,出站编号,距离,道路通行)收费标准(车辆类别,收费单价,备注)(阴影加粗部分为主键)根据范式定义,对各关系模式进行判断,均符合第三范式。物理结构设计是对于给定的逻辑数据模型,选取了一个最适合应用环境的物理结构的过程。它的任务是为了有效地实现逻辑模式,确定所采取的存储策略。分为确定物理结构和评价物理结构两部分。确定物理结构的步骤:a)存储记录结构的设计;b)访问方法的设计;c)数据存放位置的设计;d)系统配置的设计;3.5.1索引的建立(主键、外键)索引是一种可以加快检索的数据库结构,它包含从表或视图的一列或多列生成的键,以及映射到指定数据存储位置的指针。通过创建设计良好的索引,可以显著提高数据库查询和应用程序的性能。虽然索引有大量优点,但一个表中的大量索引会影响插入、删除、更新数据的性能,增加索引调整的成本,降低系统的响应速度。索引主要分为:聚集索引、非聚集索引、唯一索引、视图索引、全文索引和XML索引。其中唯一索引中,创建PRIMARYKEY或UNIQUE约束时,自动生产唯一索引。表名主键外键车辆信息车牌号车辆类别职工信息职工编号无登录系统职工编号无收费查询收费ID车辆类别、道路编号、收费人收费站信息收费站号无收费卡信息收费卡号车辆类别各站间距道路编号无收费标准车辆类别无3.5.2触发器触发器属于一种特殊的存储过程,可以在其中包含复杂的SQL语句。触发器与存储过程的区别在于触发器能够自动执行并且不含参数。通常在触发器中编写一段自动执行的程序,用于保证数据操作的完整性,从而扩展了对默认值、约束和规则的完整性检查。具有a)自动执行b)实现比约束更为复杂的完整性要求c)根据表数据修改前后的状态,根据差异采取相应措施d)防止恶意的或错误的INSERT、UPDATE和DELETE操作等等优点。本系统使用了如下触发器:.实现在收费标准表中更新车辆类别的信息,收费卡信息表、车辆信息表、收费查询表中的相对应的信息会自动更新;.保证向车辆信息表中插入信息时,若车辆类别不符合收费标准中的要求,拒绝插入;.实现在职工信息表中删除某一职工时,在登录系统表中的相关信息也被删除;.保证在登录系统中添加新记录时,新职工的信息必须存在于职工信息表中;.实现在各站间距表中修改道路编号时,收费查询表中相对应的信息会自动修改;第四章系统详细设计与实现4.1实体类库设计与实现实体类库是是辅助数据库的映射,可以理解为传递数据的载体,主要用于数据的存储。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责本系统一共建立了8个类库,分别为Login>Staffinformation>Tollgate>Space、ShoufeibiaozhunCarinformation、Cardinformation>Shoufeiquery。Login类:用于提供职工的登录信息,包括职工编号、密码和用户类别。用户类别的不同使不同的职工拥有不同的权限,主要分为领导和员工。publicclassTollgate{privatestring_gateID;publicstringGateID{get{return_gateID;}set{_gateID=value;}}……//对属性进行定义publicTollgate()//定义无参的构造函数{}publicTollgate(stringgateID,stringgatename,stringaddress,stringphone){_gateID=gateID;_gatename=gatename;_address=address;_phone=phone;}}Staffinformation类:提供职工的具体信息,用于增加、删除、和查询,其中包括职工编号、职工姓名、性别、年龄和职位。领导拥有增加、删除职工信息的权限,员工拥有查询职工信息的权限。publicclassStaffinformationprivatestring_staffID;publicstringStaffID(get{return_staffID;}set{_staffID=value;}}publicStaffinformation()//定义无参的构造函数{}publicStaffinformation(stringstaffID,stringname,stringsex,stringage,stringpost){_staffID=staffID;_name=name;_sex=sex;_age=age;_post=post;}}Tollgate类:提供各个收费站的信息,用于增加和查询,其中包括收费站编号、收费站名、收费站的地址和联系方式。领导拥有增加收费站信息的权限,员工拥有查询的权限。publicclassTollgate{privatestring_gateID;publicstringGateID{get{return_gateID;}set{_gateID=value;}}publicTollgate()//定义无参的构造函数{}publicTollgate(stringgateID,stringgatename,stringaddress,stringphone){_gateID=gateID;_gatename=gatename;_address=address;_phone=phone;)Space类:提供各个收费站之间的道路、距离信息,用于增加、修改和查询。其中包括道路编号、起始收费站的编号、终止收费站的编号、两车站间的距离和道路通行情况。领导拥有增加和修改的权限,员工拥有查询的权限。publicclassSpace(privatestring_roadID;publicstringRoadID(get{return_roadID;}set{_roadID=value;}}……publicSpace()//定义无参的构造函数{}publicSpace(stringroadID,stringjinzhanID,stringchuzhanID,Singledistance,stringwayleave){_roadID=roadID;_jinzhanID=jinzhanID;_chuzhanID=chuzhanID;_distance=distance;_wayleave=wayleave;}}Shoufeibiaozhun类:提供该车站的收费标准,一般为国家标准收费标准。其中包括车辆类型、单价和被子。领导具有查询和根据国家收费标准进行修改的权限,员工具有查询的权限。publicclassShoufeibiaozhun{privatestring_cartype;publicstringCartype{get{return_cartype;}set{_cartype=value;}publicShoufeibiaozhun()//定义无参的构造函数()publicShoufeibiaozhun(stringcartype,Singleunitprice,stringremark)(_cartype=cartype;_unitprice=unitprice;_remark=remark;))Carinformation类:提供过路车辆的信息,用于增加和查询。其中包括车牌号和车辆类别。领导对于该表没有权限,员工具有增加和查询的权限。publicclassCarinformation(privatestring_carID;publicstringCarID(get{return_carID;}set{_carID=value;}}……publicCarinformation()//定义无参的构造函数{}publicCarinformation(stringcarID,stringcartype){_carID=carID;_cartype=cartype;}}Cardinformation类:提供车辆所拿收费卡的信息,用于增加和查询。其中包括收费卡编号、所进高速公路的收费站编号、进高速公路的时间和车辆类型。领导对于该表没有权限,员工拥有增加和查询的权限。publicclassCardinformation{privatestring_cardID;publicstringCardIDget{return_cardID;}set{_cardID=value;}}publicCardinformation()//定义无参的构造函数{}publicCardinformation(stringcardID,stringjinzhanID,DateTimejinzhantime,stringcartype){_cardID=cardID;_jinzhanID=jinzhanID;_jinzhantime=jinzhantime;_cartype=cartype;}}Shoufeiquery类:提供车辆的具体收费信息,用于增加和查询。其中包括收费编号、车辆类型、所走高速的道路编号、应收费用和收费的员工。领导对于该表没有权限,员工拥有增加和查询的权限。publicclassShoufeiquery{privatestring_shoufeiID;publicstringShoufeiID{get{return_shoufeiID;}set{_shoufeiID=value;}}……publicShoufeiquery。//定义无参的构造函数{}publicShoufeiquery(stringshoufeiID,stringcartype,stringroadID,stringcost,stringname){_shoufeiID=shoufeiID;_cartype=cartype;_roadID=roadID;_cost=cost;_name=name;}}4.2数据访问层类库设计与实现数据访问层有时候也称为是持久层,是所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,是对数据的操作,具体为业务逻辑层或表示层提供数据服务。本系统中一共建立了9个数据访问层的类库,分别为:DabassLoginServer、StaffinformationServer>TollgateServer>SpaceServer>ShoufeibiaozhunServer>CarinformationServer、CardinformationServer、ShoufeiqueryServeia鉴于大部分类库实现的功能与代码都类似,在这里只贴部分类库的代码。Dabase类:主要是提供数据库的链接以及在数据库中执行增、删、改、查的代码。publicclassDabase(privatestaticstringconnStr="DataSource=.;InitialCatalog=Road;IntegratedSecurity=True";privatestaticSqlConnectionsqlcon=null;|privatestaticvoidCreateConnection()(if(sqlcon==null)(sqlcon=newSqlConnection(_connStr);|sqlcon.Open();)elseif(sqlcon.State==ConnectionState.Closed||sqlcon.State==ConnectionState.Broken)(sqlcon.Close();sqlcon.Open();))//执行Insert/update/delete,不带参数publicstaticintExecuteNoQuery(stringstrsql)(Iinti;try(CreateConnection();SqlCommancSqlcmd=newSqlCommandstrsql,sqlcon);Ii=sqlcmd.ExecuteNonQuery();sqlcon.Close();returni;)catch(return-1;))//执行Insert/update/delete,带参数publicstaticintExecuteNoQuery(stringstrsql,paramsSqlParameter[]param)(|inti;try(CreateConnection();SqlCommandsqlcmd=newSqlCommandstrsql,sqlcon);//sqlcmd.Parameters.Add(param);foreach(SqlParameterparinparam)//遍历数组将参数对象添加到操作命令中(sqlcmd.Parameters.Add(par);)|i=sqlcmd.ExecuteNonQuery();returni;)|catch(|return-1;)|}//执行SELEC命令,得到数据表publicstaticDataTableGetTable(stringstrsql){I|tryICreateConnection();SqlDataAdaptersda=newSqlDataAdapter(strsql,sqlcon);DataSetds=newDataSet();sda.Fill(ds,"temp");sqlcon.Close();returnds.Tables["temp"];publicstaticDataTableGetTable(stringstrsql,paramsSqlParameter[]param)(try(CreateConnection();SqlDataAdaptersda=newSqlDataAdapter(strsql,sqlcon);foreach(SqlParameterparinparam)//遍历数组将参数对象添加到操作命令中(sda.SelectCommand.Parameters.Add(param);}DataSetds=newDataSet();sda.Fill(ds,"temp");sqlcon.Close();returnds.Tables["temp"];publicstaticSqlDataReaderGetReader(stringstrsql)(try(CreateConnection();SqlCommancsqlcmd=newSqlCommandstrsql,sqlcon);SqlDataReadersdr=sqlcmd.ExecuteReader(CommandBehaviorCloseConnection);publicstaticSqlDataReaderGetReader(stringstrsql,paramsSqlParameter[]param)(CreateConnection();SqlCommancSqlcmd=newSqlCommandstrsql,sqlcon);foreach(SqlParameterparinparam)//遍历数组将参数对象添加到操作命令中(sqlcmd.Parameters.Add(par);)SqlDataReadersdr=sqlcmd.ExecuteReader();returnsdr;)catch(returnnull;))//执行统计等命令publicstaticintnum(stringstrsql)(|inti;try(CreateConnection();|SqlCommandsqlcmd=newSqlCommandstrsql,sqlcon);|i=(int)sqlcmd.ExecuteScalar();|returni;)|catch(nreturn0;))//执行统计等命令publicstaticintnum(stringstrsql,paramsSqlParameter[]param)!{|inti;try{I|CreateConnection();SqlCommandsqlcmd=newSqlCommandstrsql,sqlcon);foreach(SqlParameterparinparam)//遍历数组将参数对象添加到操作命令中{sqlcmd.Parameters.Add(par);)i=(int)sqlcmd.ExecuteScalar();returni;LoginServer类:实现对于数据库中Login表的信息查找、信息增加、信息删除和信息的更改部分更新数据的代码:〃/更新一条数据publicstaticintUpdate(Loginu)(try(SqlParameter口param=newSqlParameter[]{newSqlParameter("@StaffID",u.StaffID),newSqlParameter("@Password",u.Password)};//stringstr="insertinto[user](userName,userPwd)values('"+u.UserName+"','"+u.UserPwd+"')";stringstr="update[Login]setpassword=@PasswordwherestaffID=@StaffID|inti=DabaseExecuteNoQuery(str,param);returni;}StaffinformationServer类:实现对于数据库中Staffinformation表的查找、添加和删部分删除数据的代码:///删除一条数据|publicstaticintDelete(Staffinformationu){trystringstr="deletefrom[Staffinformation]wherestaffID=@StaffIDinti=DabaseExecuteNoQuery(str,param);returni;TollgateServer类:实现对于数据库中Tollgate表的信息增加和信息查询。部分数据增加的代码:publicstaticintAddTollgate(Tollgateu){try{SqlParameter[]param=newSqlParameter[]{newSqlParameter("@gateID",u.GateID),newSqlParameter("@gatename"u.Gatename),newSqlParameter("@address",u.Address),newSqlParameter("@phone",u.Phone)};|stringstr="insertinto[Tollgate](gateID,gatename,address,phone)values(@gateID,@gatename,@address,@phone)";inti=DabaseExecuteNoQuery(str,param);SpaceServe啖:实现对于数据库中Space表的信息的查找、增加、删除和更新部分数据查找的代码:|publicstaticSpaceGetRoadID(stringroadID)|{JSpaceu=null;try{71SqlParameter[]param=newSqlParameter[]{newSqlParameter("@RoadID"u.RoadID)};DataTabledt=DabaseGetTable("select*from[Space]whereroadID=@RoadID"param);if(dt.Rows.Count>0){u=newSpace();u.RoadID=dt.Rows[0]["RoadID"].ToString();|u.JinzhanID=dt.Rows[0]["JinzhanID"].ToString();|u.ChuzhanID=dt.Rows[0]["ChuzhanID"].ToString();u.Distance=Single.Parse(dt.Rows[0]["Distance"].ToString());|u.Wayleave=dt.Rows[0]["Wayleave"].ToString();returnnull}}//执行SELEC命令,得到数据表publicstaticDataTableGetSpaceTable(){stringstr="select*from[Space]"DataTabledt;dt=DabaseGetTable(str);DataTabledt;dt=DabaseGetTable(str);returndt;ShoufeibiaozhunServe或:实现对于数据库中Shoufeibiaozhun表的信息查询和信息更新。部分数据更新的代码:///更新一条数据publicstaticintUpdate(Shoufeibiaozhunu)(try(SqlParameter口param=newSqlParameter[]{newSqlParameter("@Cartype",u.Cartype),newSqlParameter("@Unitprice",u.Unitprice),newSqlParameter("@Remark"u.Remark)};stringstr="update[Shoufeibiaozhun]setunitprice=@Unitprice,remark=@Remarkwherecartype=@Cartype";inti=DabaseExecuteNoQuery(str,param);|returni;CarinformationServer类:实现对于数据库中Carinformation表的信息查询和信息增加。部分数据添加的代码://向数据库添加用户publicstaticintAddCar(Carinformationu){try{|SqlParameter口param=newSqlParameter[]{newSqlParameter("@CarID",u.CarID),|newSqlParameter("@Cartype",u.Cartype)};stringstr="insertinto[Carinformation](carID,cartype)values(@CarID,@Cartype)";}CardinformationServer类:实现对于数据库中Cardinformation表的信息查询和信息增加。部分数据查询的代码://在数据库里根据用户名,查找符合条件的用户的信息publicstaticCardinformationGetCardID(stringCardID)(Cardinformationu=null;try(SqlParameter口param=newSqlParameter[]{newSqlParameter("@CarID",u.CardID)};DataTabledt=DabaseGetTable("select*from[Cardinformation]wherecardID=@CardID",param);if(dt.Rows.Count>0){u=newCardinformation();u.CardID=dt.Rows[0]["carID"].ToString();|u.JinzhanID=dt.Rows[0]["jinzhanID"].ToString();u.Jinzhantime=DateTime.Parse(dt.Rows[0]["jinzhantime"].ToString());returnnull}}//执行SELEC命令,得到数据表publicstaticDataTableGetCardinformationTable(){}//执行SELEC命令,得到数据表publicstaticDataTableGetCardinformatinTable(stringcardID){stringstr="select*from[Cardinformation]wherecardID='"+cardID+DataTabledt;dt=DabaseGetTable(str);returndt;ShoufeiqueryServer类:实现对于数据库中ShoufeiqueryServer表的信息添力口和信息查询。部分数据添加的代码://向数据库添加用户publicstaticintAddShoufeiquery(Shoufeiqueryu)(try(SqlParameter口param=newSqlParameter[]{newSqlParameter("@shoufeiID",u.ShoufeiID),newSqlParameter("@cartype",u.Cartype),|newSqlParameter("@roadID",u.RoadID),newSqlParameter("@cost",u.Cost),newSqlParameter("@name;u.Name)};|stringstr="insertinto[Shoufeiquery](shoufeiID,cartype,roadID,cost,name)values(@shoufeiID,@cartype,@roadID,@cost,@name)";|inti=DabaseExecuteNoQuery(str,param);returni;}catch{return0;}}4.3业务逻辑层类库设计与实现业务逻辑层是针对具体问题的操作,也可以说是对数据层的操作,就是说把一些数据层的操作进行组合,,对数据业务进行逻辑处理。有时候也将业务逻辑层称为领域层。是系统架构中体现核心价值的部分它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用,它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,这对于一个支持可扩展的架构尤为关键。本系统中一共建立了8个业务逻辑层的类库,分别为:LoginManager、StaffinformationManager、TollgateManagerSpaceManagerShoufeibiaozhunManagerCarinformationManager、CardinformationManager、ShoufeiqueryManager)鉴于大部分类库实现的功能与代码都类似,在这里只贴部分类库的代码。LoginManager类:调用数据访问层中LoginServer类库的内容,实现数据的增加、更新和删除,给登录界面提供用户及密码的身份验证。部分验证用户信息代码://提供用户名和密码,实现验证publicstaticboolLogin(stringstaffID,stringpassword,stringpost){|Loginu=newLogin();u.StaffID=staffID;|u.Password=password;|u.Post=post;boolb=LoginServer.FindUser(u);|returnb;)StaffinformationManager类:调用数据访问层中StaffinformationServer类库的内容,实现员工的信息增加、删除和查询。部分删除数据的代码:///删除一条数据
publicstaticboolDelete(Staffinformationstaff)(inti;i=StaffinformationServer.Delete(staff);if(i>0)TollgateManager类:调用数据访问层中TollgateServer类库的内容,实现收费站信息的增加和查询部分数据增加的代码:|publicstaticboolRegister(stringgateID,stringgatename,stringaddress,stringphone)(|inti=-1;//封装用户信息|Tollgateu=newTollgate();u.GateID=gateID;|u.Gatename=gatename;|u.Address=address;|u.Phone=phone;|try{」|i=TollgateServer.AddTollgate(u);if(i>0)})SpaceManager类:调用数据访问层中SpaceServer类库的内容,实现各站间距信息的增加、删除、更新和查询。部分数据查找的代码:publicstaticDataTableGetAllSpace()(|DataTabledt;dt=SpaceServer.GetSpaceTable();returndt;}publicstaticDataTableGetAllSpace(stringroadID)(DataTabledt;|dt=SpaceServer.GetSpaceTable(roadlD);|returndt;}ShoufeibiaozhunManager类:调用数据访问层中ShoufeibiaozhunServer类库的内容。,实现对于收费标准信息表的查询和更新数据的功能。部分数据更新的代码:///更新一条数据publicstaticboolUpdate(Shoufeibiaozhuncartype)(|inti;i=ShoufeibiaozhunServer.Update(cartype);if(i>0)(returntrue;}|else(|returnfalse;}}CarinformationManager类:调用数据访问层中CarinformationServer类库的内容,实现对于汽车信息表的信息添加和查询。部分数据添加的代码:publicstaticboolRegister(stringcarlD,stringcartype)
(inti=-1;//封装用户信息Carinformationu=newCarinformation();u.CarlD=carlD;u.Cartype=cartype;try(i=CarinformationServer.AddCar(u);if(i>0)returnfalseif(i>0)returnfalseCardinformationManager类:调用数据访问层中CardinformationServer类库的内容,实现对于收费卡信息表的信息添加和查询部分数据查询的代码:publicstaticDataTableGetAllCard()DataTabledt;dt=CardinformationServer.GetCardinformationTable();returndt;DataTableGetAllCard(stringcardID)}DataTableGetAllCard(stringcardID)publicstatic(DataTabledt;dt=CardinformationServerdt=CardinformationServerreturndt;.GetCardinformatinTable(cardID);ShoufeiqueryManager类:调用数据访问层中ShoufeiqueryServer类库的内容,实现对于收费查询的信息添加和查询。部分数据添加的代码:publicstaticboolRegister(stringshoufeilD,stringcartype,stringroadID,stringcost,stringname){inti=-1;//封装用户信息Shoufeiqueryu=newShoufeiquery();u.ShoufeiID=shoufeiID;u.Cartype=cartype;|u.RoadID=roadID;u.Cost=cost;u.Name=name;|try{|i=ShoufeiqueryServer.AddShoufeiquery(u);if(i>0){|returntrue;)else{returnfalse)4,4界面设计及实现登陆界面及代码此界面为登陆界面,用于进入高速公路收费系统主页面:程序代码如下:“登录”事件:privatevoidbutton1_Click(objectsender,EventArgse)(|boolb=LoginManager.Login(this.textBox1.Text.Trim(),this.textBox2.Text.Trim(),boBox1.Text.ToString().Trim());if(b)(MessageBoxShow("登录成功!","提示");switch(boBox1.Text.ToString().Trim())case"领导":zhucaidana=a.Show();this.Hide();break;case"员工":newzhucaidan();zhucaidanly=newzhucaidanl();else(MessageBoxShow("登录失败!","提示");“重置”事件:|privatevoidbutton2Click(objectsender,EventArgse)(this.textBox1.Text="";this.textBox2.Text="";主界面及代码主界面可以根据用户权限不一样,显示不一样的窗体,在本系统中主要体现为领导和职工两种身份,在窗体下方得到体现。鉴于领导和员工的主菜单大部分功能类似,这里只贴部分代码。此界面针对于领导用户,为领导登录后的主界面,在窗体下方会显示为“欢迎领导使用高速公路收费系统”,,可以实现领导对员工和登录信息的更改和删除,也可以实现领导对收费站信息的添加和查看,各站间距信息的查询、增加和删除,国家收费标准的更新和查看。如图所示:,也主禁单-□X系统管理职工管理收费站窗口I欢迎武导使用商送公路收提案统I欢迎武导使用商送公路收提案统!2口1碎6月2?日皇酯四17:aa「”主菜单।系统管理i职工管理收费站窗口修改密I”主菜单।系统管理i职工管理收费站窗口修改密IW重新登录I退出I职工管理I收费站窗口['……MKISWH员工信息删除员工信息查询登录信息增加收费站职工管理I收费站I窗口收费站信息管理各站间距信息管理国家收费标准管理wm层叠横向帮营
纵向平铺关闭所有窗口主菜单部分代码:privatevoid员工增加ToolStripMenuItemClick(objectsender,EventArgse)(Addyuangonguser=newAddyuangongQ;user.MdiParent=thisuser.Show();}privatevoid员工删除ToolStripMenuItem_Click(objectsender,EventArgse)deleteStaffd=newdeleteStaff();d.MdiParent=privatevoid员工删除ToolStripMenuItem_Click(objectsender,EventArgse)deleteStaffd=newdeleteStaff();d.MdiParent=this此界面针对于员工用户,为员工登录后方的主界面,在窗体下方会显示为“欢迎员工使用高速公路收费系统”,此界面可以实现员工的信息查询,汽车信息的查询和增加,收费查询信息的查询和增加,收费卡信息的查询和增加,收费站信息、各站间距信息和收费标准信息的查询。如图所示:口主菜单一□X欢迎员工使用高速公路收药系蜕!201详6月23日星期四17:37:.:吧上3志里I系统管理:职工管理汽车信息-主菜第,重新登录系统管理I职工管理II汽车信导|退出|信息查询
汽车怎息段8站圆且二二上1攵错站J窗口:汽车信息管理,汽车信息查询收费站信息1L—收费信息管理——上J汽车信息添加各站间距信息收费卡信息管理►|国家收费标准|收费信息查询收费信息添加请在^收费卡信息查询
收费卡信息添加TOC\o"1-5"\h\z“汽车信息I收费站窗口汽车信息管理卜收费信息查询收费信息添加请在^收费卡信息查询
收费卡信息添加I收费信息管理-I收费卡信息管理•汽车信息「收费站窗口汽车信息管理♦收费信息管理•收费卡信息管理一「II.在此处建不部分主菜单代码:privatevoidzhucaidanLoad(objectsender,EventArgse)(string口wdstr=newstring[]{"日","一","二","三","四","五","六"};intwd=(int)DateTime.Now.DayOfWeek;toolStripStatusLabel2.Text=DateTime.Now.ToLongDateString()+"星期"+wdstr[wd]+DateTime.Now.ToShortTimeString();}privatevoid收费卡信息查询ToolStripMe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国链条式燃煤气化锅炉行业投资前景及策略咨询研究报告
- 平顶山2024年河南平顶山市农业科学院招聘7人笔试历年参考题库附带答案详解
- 2025年盐渍裙带叶项目可行性研究报告
- 2025年桑拿服项目可行性研究报告
- 2025至2031年中国异型轧辊行业投资前景及策略咨询研究报告
- 2025至2031年中国套装风炮行业投资前景及策略咨询研究报告
- 广西2025年广西生态工程职业技术学院招聘笔试历年参考题库附带答案详解
- 2025年剑杆综框项目可行性研究报告
- 2025年中央供氧系统项目可行性研究报告
- 2025至2030年高锰铁项目投资价值分析报告
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读 课件
- 三年级上册竖式计算练习300题及答案
- NY∕T 4001-2021 高效氯氟氰菊酯微囊悬浮剂
- 《社会主义市场经济理论(第三版)》第七章社会主义市场经济规则论
- 汉声数学图画电子版4册含妈妈手册文本不加密可版本-29.统计2500g早教
- 企业组织架构表
- 中国监察制度史
- 搬家公司简介(15个范本)
- 典范英语-2备课材料2a课件
- 抽水蓄能辅助洞室施工方案
- 数据结构英文教学课件:chapter7 Searching
评论
0/150
提交评论