您的当前位置:首页正文

桥梁养护管理系统

2021-06-25 来源:步旅网


XXXXXXX大学

题 目 桥梁养护管理系统 学生姓名: XX 院 (系): XXXX 专业班级: XXXX 指导教师: 完成时间: XXXX 年 XX月XX日

桥梁养护管理系统

摘 要:

随着我国国民经济的迅猛发展,对交通运输提出了更高的要求,公路运输车辆大型化、重型化发展的趋势给道路特别是桥梁等道路构造物造成严重损害。文章分析了我国公路桥梁养护与管理中存在的问题,对如何进一步提高公路桥梁的养护与管理水平进行了探讨,提出了相应措施。

关键词:公路桥梁;养护与管理;维修加固;危桥改造

Along with the fast fierce development of our country national economy, make higher request to the transportation, the highway transports vehicle large turn, weigh a type of the trend that turns a development to road especially bridge etc. road structure the thing result in serious damage.The article analyzed bridge in the our country highway to protect and the existent problem in the

management, to how raised protecting of bridge in the highway to carry on a study with management level further, put forward to correspond measure.

Keyword: Bridge in the highway;Protect and manage;Maintain to

reinforce;The shaky bridge reforms

目 录

1 绪论.........................................................................................................................................4

1.1 桥梁养护系统形成和发展...............................................................................................4 2 开发工具及环境简介 ................................................................................................................6

2.1 ASP.NET .........................................................................................................................6 2.2 Visual Studio 2005......................................................................................................7

2.6.2 .NET Framework 类库 .........................................................................................8 2.7 C#语言...........................................................................................................................9

2.7.1 效率与安全性.................................................................................................... 10 2.7.2 扩展交互性 ....................................................................................................... 11 2.7.3 小结.................................................................................................................. 12

3 桥梁养护系统简介.................................................................................................................. 12

3.1 用户需求简介 ....................................................................................................... 12 3.1.1 功能需求........................................................................................................... 13 3.1.2 性能需求........................................................................................................... 13 3.2 工作过程 .............................................................................................................. 14 3.3 系统特点 .............................................................................................................. 14

4 详细设计与实现 ..................................................................................................................... 15

4.1 代码设计 ................................................................................................................ 15 4.1.1 主要算法 ............................................................................................................ 15 4.1.2 数据库操作 ......................................................................................................... 41 4.2 页面设计与实现 ..................................................................................................... 42 4.2.1编程关联(环境配置) ........................................................................................ 43

4.2.2 编程页面 ............................................................................................................ 44

结论 ............................................................................................................................................ 45 参考文献 ..................................................................................................................................... 46 致谢 ............................................................................................................................................ 47

1 绪论

1.1 桥梁养护系统形成和发展

桥梁是确保公路安全畅通的咽喉。随着我国公路网基本形成,桥梁的数量和种类日显增多,桥梁养护工作越来越显得重要。由于历史的原因,桥梁养护工作在规范化、集约化和系统化方面还很多工作要做,从管理层面对桥梁养护的资源问题和质量问题作出研究,是提高公路桥梁运营服务水平的必要步骤。随着我国经济发展,材料、机械、设备工业相应发展,再加上广大桥梁建设者的精心设计和施工,使我国建桥水平已跃身于世界先进行列。但是长期以来,“重建设、轻养护”这个问题在我国公路桥梁管理中一直表现得比较突出,桥梁存在的问题也就比较多。因此,公路管养部门必须重视强化公路桥梁的养护与管理,提高桥梁的养护水平。

一、公路桥梁养护现状 (一)体制问题

缺乏养护骨干队伍:某些管养部门业务庞杂,人员超编,却未能建立起自己的专业化养护队伍,如一支精干的机动化桥梁巡检小分队。计划体制在某些方面使桥梁养护流于形式:引自苏联的计划养护模式过去起到了积极的作用,但在市场经济中已丧失了一定的活力。少数部门为了经济利益,不再按时按量的进行桥梁检查。养护管理大环境不顺:我国公路养护管理体制自解放以来,经历了几次下放和收回,公路养护段时分时合,历经沧桑。但目前,各省市间养护管理体制不统一,某些省、市、区内的管理体制亦不统一;某些地区机构重叠、各自为政、权责不明,有省公路管理局,有省高等级公路管理局,厅、局下的分支机构有公司,有处,有中心,有站;地域化养护管理阻碍了养护工程市场化;“条块结合”之弊,即某些养护部门人事、财政权不够统一;政、事、企不分。

(二)制度问题

无章或有章不依:某些桥梁养护机构没有全面的管理规章制度,或有却不能按其执行。片面地理解技术规范:现行公路养护技术规范缺乏相应的指南与工法说明,且个别规定不一定适合某些特别地区或特殊工程;某些管养部门片面夸大了规范的指导作用,将其神圣化、强制化;在规范问题上应摆脱传统计划体制下对统一的过分强调,各省市可根据自己的经济实力、养护能力,及时搜集、更新养护信息,编制灵活的地方性规范与指南,以适应不同地区气候、地质、经济、技术上的差异并鼓励桥梁养护技术创新。

(三)资源问题

桥梁养护行业人力资源的整体素质亟待提高:一些养护者理论水平与实践能力不成比例,或是理论缺乏,或是动手能力较差,有时甚至从其它行业里拉人凑数;很多养护工人未经或缺乏正规培训,技能单一;管理人才的数量更是微乎其微。桥梁养护人员价值

取向发生变化:由于收入不高,养护行业往往留不住人才,特别是那些优秀的养护技术人才和复合型管理人才。养护资金问题:桥梁养护资金严重缺乏,远不足以完成所有桥梁的维修加固需要;待养任务和到位资金不成比例,往往造成了某些养护任务的一拖再拖;特别要指出:养护资金有限,却不时会遭到挪用。某项工程资金链出现缺口时,通常首先想到的就是截留养护经费;某些历史条件下,因管理手段落后、决策不合理做出的一些主观判断,致使好钢未能用于刀刃之上,部分桥梁养护资金未能发挥救火作用。

二、加强公路桥梁养护与管理应采取的措施 (一)建设桥梁养护工程师队伍和养护队伍

公路交通的迅猛发展,必然要求强化组织管理。在桥梁管养方面,应根据养护里程、辖区内桥梁数量设立若干名专职桥梁养护工程师,并保证其工作性质的相对稳定,不能随意换动。在其职责上,桥梁养护工程师负责制定、安排桥梁年度定期检查计划,组织实施辖区内桥梁养护的定期检查,提出检查报告,通报三、四类及危险桥梁的病害状况。从目前的养护队伍现状来看,养护工人素质参差不齐,很难做到真正的专业养护。这就要求各级公路部门高度重视,针对桥梁养护工作的需要,要逐步培养骨干,成立专业养护队。桥梁专职养护,要突出的是一个“专”字,努力做到专业人员、专门程序、专用方法,以保证桥梁工程师的工作部署落实到位,随时掌握桥梁的使用状况,处治各种危急突发事件,并使队伍逐渐从日常养护过渡到具备进行桥梁中、小修甚至大修的能力。

(二)建立健全完善的桥梁档案

桥梁档案是桥梁的历史足迹。公路竣工验收后,管理单位应及时要求建设单位提交完整的竣工资料,还要与建设单位技术人员一起,按照相关资料,对所有桥梁进行一次全面详细的检查。需要提供的竣工资料包括:每座桥的原设计、变更设计、竣工图纸、隐蔽工程图片和检测资料以及桥下河流的水文计算等。对桥梁的检查,应按照桥梁定期检查的要求进行,检查结果交管理单位留存。管理单位要按照桥梁管理系统的要求采集桥梁的静态数据和动态数据,建立数据库,输入计算机立档保存,这可为以后桥梁的维护提供资料支持。

(三)加大桥梁维修加固费的投入

为保证桥梁的正常运营,延长桥梁使用寿命,各级交通主管部门在每年的年度养护工作计划中,应该安排一定经费保证桥梁检查、维修及加固工作,保证桥梁养护与维修加固资金的合理与充足使用。同时,根据各地的实际情况,提出切实可行的公路桥梁养护管理的目标与措施,从而促进桥梁改建、维修与加固工作。国家投资重点倾斜以及集资渠道的多元化,将为我国公路桥梁发展提供资金保证。

(四)加强措施,严格检查

严格的检查措施是保证桥梁维护工作质量的有效方法。养护队应对桥梁以及各种防护设施坚持日常养护巡查,注意观察桥梁的使用状况,尽量做到1次/天养护巡查,并做好巡查记录,同时各级桥梁养护工程师应分别组织经常性检查、定期检查和专业检查。一

是经常性检查。要由县级桥梁工程师组织实施,以目测为主,配合简单工具,至少每年度一次,填写“经常性检查记录表”上报。检查应拍摄总体照片,填写“桥梁定期检查数据表”,并提交检查报告。二是专业检查。凡遭受意外损害、定期检查中难以判明损坏程度以及决定改造之前均需进行专业检查。

(五)全面落实危桥改造的措施

在检查后,发现的存在符合《公路养护技术规范》桥梁技术评定标准中四类危桥状态的桥梁均系危桥。主要包括桥梁重要部件出现严重的功能性病害,且有继续扩展现象,关键部位的部分材料强度达到极限,出现部分钢筋断裂,砼压碎或压杆失稳变形的破损现象,变形大于规范值,结构的强度、刚度、稳定性不能达到平时交通安全通行的要求,以及承载能力比设计降低25%以上的类型。这些桥梁必须尽快实施加固、维修和改造,以提高其承载能力。对于桥梁改造工程,各级公路管理机构应引入竞争机制,应当实行招投标制度,工程监理制度和合同管理制度。严格质量管理,把好材料质量关,加大工程建设中的监理力度,严格按照设计图纸进行施工,从而保证桥梁建设质量,减少使用期间的后顾之忧。

2 开发工具及环境简介

2.1 ASP.NET

ASP.NET(Active Server Page.NET)是Microsoft.net的一部分,作为战略产品,不仅仅是 ASP((Active Server Page) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。

ASP.NET 是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和 JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。

微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

ASP.ne提供了稳定的性能、优秀的升级性、更快速的开发、更简便的管理、全新的

语言以及网络服务。贯穿整个ASP.net的主题就是系统帮用户做了大部分不重要的琐碎的工作。

新的ASP.net引入受管代码(Managed Code)这样一个全新概念,横贯整个视窗开发平台。受管代码在NGWS Runtime下运行,而NGWS Runtime是一个时间运行环境,它管理代码的执行,使程序设计更为简便。

对于一个程序,速度是一件非常令人渴望的东西。一旦代码开始工作,接下来你就得尽可能地让它运作得快些快些再快些。在ASP中你只有尽可能精简你的代码,以至于不得不将它们移植到一个仅有很少一点性能的部件中。而现在,ASP.net会妥善地解决这一问题。

在ASP.net里,你将会拥有一个“Data-Bounds” (数据约束),这意味着它会与数据源连接,并会自动装入数据,使控制工作简单易行。

ASP.net支持多种语言,支持编译类语言,支持比如VB、C#、C#等,它比这些编译类语言运行速度快,更适合编写大型应用。

快速发展的分布式应用也需要更快速、更模块化、更易操作、更多平台支持和重复利用性更强的开发,需要一种新的技术来适应不同的系统,网络应用和网站需要提供一种更加强大的可升级的服务。ASP.net能够适应上面的要求。对于今天的Web程序员来说,最大的挑战就是不断变化的浏览器兼容性以及它们不断升级的复杂性。在保证页面能在所有浏览器下工作的同时,又得尽量使用每个浏览器的最新属性来建立更具交互性的页面,这简直就是一场恶梦。更加可怕的是,需要对不同的用户设备建立不同的网页。最简单的解决办法就是动态地对不同的用户生成不同的输出,或者就是对不同的用户写多个页面。大多数开发者都会选择第一种方法。但是,这就意味着用户的每次点击都会让服务器判断应该向用户显示什么。而通过ASP.net,我们可以看到一个新的服务控制的概念,它封装了一些普通的任务,提供了一种清晰的编程模块,有助于管理和处理不同的用户类型。

2.2 Visual Studio 2005

首先,什么是Visual Studio.NET?我们说Visual Studio .NET是一个IDE,那么IDE又是什么?IDE是英文单词Integrated Development Environment的缩写,是集成开发环境的意思,是指把代码的编写、程序的调试、编译、运行以及其他的相关操作都集成在一起的编程工具。我们所说的Visual Studio .NET IDE,现在的版本是Visual Studio .NET 2005,它是一套完整的开发工具,可以用于创建高性能的桌面应用程序、XML Web服务、移动应用程序和ASP Web应用程序。

可能现在的人很难想到20世纪80年代的现在Windows操作系统的始祖MS-DOS竟然是Basic语言编写的,当然这个奇迹是由微软帝国的国王比尔盖茨亲手创造的,那时的语言开发工具和我们现在所要说的IDE相距甚远。到了1990年,Visual Basic的产生给编

程界带来了不小的震撼,因为当时用其他编程语言做一个漂亮的界面(GUI)是很奢侈的一件事情,从Visual Basic的风靡,也可以看出另一件事情,就是人们越来越关注应用程序界面等非功能方面。到1995年,Visual Studio IDE似乎开始变得成熟,这套集成开发环境不仅包括经典的Visual Basic 6.0和Visual C++ 6.0,还包括可以进行数据库开发的Visual FoxPro,可以进行网页开发的Visual InteDev等。有了这个IDE人们不仅可以创建基于Windows的桌面应用程序,也可以创建基于IE浏览器的Web程序,可以说这套IDE是非常强大的。但问题是,在此开发环境中似乎每做一件事都有一个工具与其对应,各个开发工具之间也彼此独立,比如我们要开发网页程序,就只能使用Visual InteDev,我们用VB开发的东西,在VC中很难调用,而且针对不同的应用比如移动应用还需要另外一套与桌面应用相似的开发IDE。

以往Visual Studio这些不足之处,在Visual Studio .NET中被弥补。Visual Studio .NET IDE以.NET Framework为基础,整合了VB.NET、C#.NET、VC#.NET、VJ#.NET等开发环境,提供极其强大的开发能力。注意整合的意思不仅仅指你打开一个Visual Studio .NET IDE工具即可进行上面四种语言的开发,更重要的是指不同语言的开发环境和开发技巧基本相同。值得一提的是,人们还是按照惯性思维来称呼VB.NET、VC#.NET等为开发工具,事实上我们现在只有一个开发工具,就是Visual Studio .NET IDE,VB和C#等只是这个开发工具面向不同语言的开发环境而已。比如Visual C#.NET就是Visual Studio .NET IDE面向C#的开发环境,这个开发环境同其他开发环境一样可以创建传统的桌面应用、Web应用、移动应用、工业应用等任何设备的应用程序。

Visual Studio2005是一套完整的开发工具集,它向开发的各个过程提供辅助工具。举个例子,你学习英语,你当然可以照着书本学,你也可以买一个学英语的数字助理(PDA或电子词典),现在很多数字助理提供背单词、朗读课文、短句练习等功能,这里的数字助理就好比我们的Visual Studio,数字助理提供了一套学习英语的工具集,而我们的Visual Studio提供了开发应用程序的工具集。编写.NET程序最简单的环境其实有一个记事本和一个编译器就足够了,之所以需要工具集或者IDE是因为现在企业需要你快速、高效地开发出稳定、实用的计算机应用程序,而工具集的作用也在于帮助你快速、高效地开发。

Visual Studio提供了在设计、开发、调试和部署应用程序时所需的工具,Visual C#集成开发环境(IDE)是Visual Studio IDE中的一种。打开Visual Studio选择C#即可进入Visual C#集成开发环境,它里面有些工具是与其他 Visual Studio 语言共享的,还有一些工具(如C#编译器)是Visual C#特有的。 2.6.2 .NET Framework 类库

.NET Framework 类库是一个与公共语言运行库紧密集成的可重用的类型集合。该

类库是面向对象的,并提供您自己的托管代码可从中导出功能的类型。这不但使 .NET Framework 类型易于使用,而且还减少了学习 .NET Framework 的新功能所需要的时间。此外,第三方组件可与 .NET Framework 中的类无缝集成。

例如,.NET Framework 集合类实现一组可用于开发您自己的集合类的接口。您的集合类将与 .NET Framework 中的类无缝地混合。

.NET Framework 类型使您能够完成一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用 .NET Framework 开发下列类型的应用程序和服务:

( 1 ) 控制台应用程序;

( 2 ) Windows GUI 应用程序(Windows 窗体); ( 3 ) ASP.NET 应用程序; ( 4 ) XML Web services; ( 5 ) Windows 服务。

例如,Windows 窗体类是一组综合性的可重用的类型,它们大大简化了 Windows GUI 的开发。如果要编写 ASP.NET Web 窗体应用程序,可使用 Web 窗体类。 2.7 C#语言

在过去的二十年里,C和C++已经成为在商业软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的效率。与诸如Microsoft Visual Basic 等语言相比,同等级别的C/C++应用程序往往需要更长时间来开发。由于C/C++语言的复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。

目前有些语言,以牺牲灵活性的代价来提高效率。可是这些灵活性正是C/C++程序员所需要的。这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),其所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。

对于C/C++用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外,一些C/C++开发人员还需要在必要的时候进行一些底层的编程。 微软推出C#

C# (C sharp) 是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选--无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为

XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。 最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。 2.7.1 效率与安全性

新兴的网络经济迫使商务企业必须更加迅速的应对竞争的威胁。开发者必须不断缩短开发周期,不断推出应用程序的新版本,而不仅仅是开发一个\"标志性\"的版本。 C#在设计时就考虑了这些问题。它使开发者用更少的代码做更多的事,同时也不易出错。 2.7.1.1 支持现有的网络编程新标准

新的应用程序开发模型意味着越来越多地解决方案依赖于新出现的网络标准,例如HTML,XML,SOAP等。现存的开发工具往往都是早于Internet出现的,或者是在我们所熟知的网络还处于孕育期时出现的。所以,它们一般无法很好地支持最新的网络技术。 C#程序员可以在Microsoft .NET平台上事半功倍的构建应用程序的扩展框架。C#包含了内置的特性,使任何组件可以轻松转化为XML网络服务,通过Internet被任何操作系统上运行的任何程序调用。更突出的是,XML网络服务框架可以使现有的XML网络服务对程序员来说就和C#对象一样。这样,程序员就可以方便地使用他们已有的面向对象的编程技巧来开发利用现有的XML网络服务。还有一些精细的特性,使得C#成为一流的网络编程工具。例如,XML正逐渐成为在网络上传输结构化数据的标准。这种数据集合往往非常小。为提高性能,C#允许把XML数据直接映射到struct数据类型,而不是class。这样对处理少量的数据非常有效。 2.7.1.2 消除大量程序错误

即使是专家级的C++程序员也常会犯一些最简单的小错误--比如忘了初始化变量,但往往就是这些小错误带来了难以预料的问题,有些甚至需要很长时间来寻找和解决。一旦一个程序作为产品来使用,就算最简单的错误纠正起来也可能要付出极其昂贵的代价。

C#的现代化设计能够消除很多常见的C++编程错误。 例如:

( 1 ) 资源回收减轻了程序员内存管理的负担。 ( 2 ) C#中变量由环境自动初始化。 ( 3 ) 变量是类型安全的。

这样,程序员编写与维护那些解决复杂商业问题的程序就更方便了。对版本的更新提供内在的支持降低了开发成本更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变原有程序的语义。为协助开发者进行这项工作,C#为版本的更新提供内在的支持。例如,方法重载必须显式声明。这样可以防止编码错误,保证版本更新的

灵活性。还有一个相关的特性就是对接口和接口继承的内在支持。这些特性使得C#可以开发复杂的框架并且随着时间不断发展更新它。

总体来说,这些特性使得开发程序项目的后续版本的过程更加健壮,从而减少后续版本的开发成本。

2.7.1.3 商业过程和软件实现的更好对应

企业的商业计划要付诸现实,必须在抽象的商业过程和实际的软件实现之间建立紧密地对应。不过大多数语言都很难做到这点。例如,如今的程序员们一般使用代码注释来注明哪个类对应于某个抽象的商业对象。

C#语言允许类型定义的,扩展的元数据。这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把他们应用于任何语言元素-类,接口等等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现的之间的对应关系。 2.7.2 扩展交互性

作为一种自动管理的,类型安全的环境,C#适合于大多数企业应用程序。但实际的经验表明有些应用程序仍然需要一些底层的代码,要么是因为基于性能的考虑,要么是因为要与现有的应用程序接口兼容。这些情况可能会迫使开发者使用C++, 即使他们本身宁愿使用更高效的开发环境。C# 采用以下对策来解决这一问题:

( 1 ) 内置对组建对象模型(COM)和基于Windows 的API的支持; ( 2 ) 允许有限制地使用纯指针(Native Pointer)。

在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口.这些功能都是内置的.类似的,C#可以调用现有的COM对象,无论它是由什么语言编写的。

C#包含了一个特殊的功能,使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C++特性,如手工的内存管理和指针运算。这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C++代码的基础上编写程序,而不是彻底放弃那些代码。

无论是支持COM还是纯API的调用,都是为了使开发者在C#环境中直接拥有必要的强大功能。

2.7.3 小结

C#是一种现代的面向对象语言。它使程序员快速便捷地创建基于Microsoft .NET平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。

C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C++程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。

3 桥梁养护系统简介

3.1 用户需求简介

建立桥梁养护管理系统(桥梁养护管理系统),满足管理者需要有效的桥梁。 经理最希望的桥梁桥梁养护管理系统,以帮助他们管理桥梁维修的数据,来评估桥梁的状态,使维护决策,管理和共享信息的桥梁。 随着全球网络,传统的桥梁养护管理系统,基于C / S(客户机/服务器)基地的普及和快速发展结构不能满足现代桥梁养护管理的发展。 和桥梁养护管理的基于B / S(浏览器/服务器)模式,主要是为了研究发展direction.In的桥梁养护管理和利用,能够满足需要的桥梁管理,首先本文介绍的概念,主要功能和发展态势基地对桥梁养护管理系统等,然后本论文主要研究Web的地理信息系统及桥梁evaluation.For Web的地理信息系统研究,本文分析了Web的地理信息系统的概念,特征,构成,其特殊的桥梁和信息查询制图中的应用BMMS.For桥评价研究,通过分析现状和桥梁评估趋势,本论文详细研究了桥梁状态评估,桥梁承载能力评价,能力退化评估桥梁及桥梁维修费用预算。 这座桥状况评估的基础上,桥梁状态指数模型,经过详细分析了模型和桥梁的检查,本文在模型中修改组件的事实,并提出了综

合检查和评价标准,这些组件,以满足桥梁状态评估的需要。 在分析了桥梁承载能力评估方法,本论文提出了桥梁模型进行着模糊理论基础能力的评估。

3.1.1 功能需求

该模型研究了最大裂缝宽度,钢筋锈蚀程度和承载压力等级的桥梁承载能力评价,并在所有的因素权重隶属度。 因此,以运载能力计算能力退化evaluation.The桥梁等级评价是基于马尔可夫链model.By的转换概率和事实的桥梁数据矩阵的研究检查,本文计算的参数值在转换矩阵probability.And提出了桥梁功能退化evaluation.After参考模型中的“的原则,公路养护工程预算”的维修费用和维修费用budget.this桥梁论文提出的事实弥补桥梁维修费用,其方法calculate.Finally,在方法和系统的开发流程和Web - GIS和桥梁评价的研究,设计了网络和配置模块本论文的结果的基础。 桥梁养护管理和发展能够满足桥梁维护管理工作的需要,哪些是可行的。

3.1.2 性能需求

桥梁检验是对桥梁结构物进行包括桥梁检查和必要的理论验算以及结构试验等内容的一系列工作,并据此对桥梁结构物进行综合分析,做出符合实际的技术结论[5]。桥梁结构检测试验是桥梁结构专业的一门基础技术科学,它是对桥梁的结构物进行直接测试的一项科学试验工作。其主要任务是通过有计划的对结构物加载后的性能进行观测和对测量参数(如位移、应力、振幅、频率„„等)进行分析,以便了解桥梁实际工作状态,对结构物的工作性能作出评价以及对桥梁结构的承载能力和使用条件作出正确估计,并为发展桥梁结构的计算、评定理论提供可靠依据[2]。

进行结构试验,必须首先掌握结构组成材料的力学性能,只有这样才能正确评估和

判断试验结构的实际工作状况和承载能力。测定材性的方法有直接法和间接法两种。直接测定法是结构试验中最常用的方法,它把材料按有关规定做成标准试件,然后在试验机上用标准试验方法进行测定,这就是所谓的“试件试验”。间接测定法分为破损试验和半破损试验法以及两者综合使用。间接测定法是利用有关仪器测定与材料力学有关的参数,如硬度、密度等,间接判断材料的力学性能。钢筋力学性能测定的项目有屈服强度(包括η0.2)、抗拉极限强度、伸长率和弹性模量等。混凝土力学性能测定的项目有轴心抗压强度、静力受压弹性模量、静力受压泊松比和辟裂抗拉强度等[6]。

桥梁结构检测方法总体上可以分为两类,即静态检测方法和动态检测方法。

3.2 工作过程

动态检测方法的基本思想在机械工程中早有应用。例如:振动测试和故障诊断就是机械工程中比较成熟的技术,应用改技术可测试机器的动力参数,并依据机器振动的特征和变异,推断机器故障的部位[9]。然而,桥梁结构动态检测与机器动力故障诊断两类问题并不完全一致,归纳起来主要有三个方面的差别:①激振源不一样。桥梁结构一般体量较大,难以像机械结构那样在预想的位置有效施加人为的激振,以获取最能反映结构性态的动力响应;②响应信息不一样。由于激振源的原因,桥梁结构动态检测所利用的动力响应的信噪比一般较机械动力小;③识别的问题不一样。机械故障诊断主要识别故障位置,而桥梁结构损伤识别除需识别结构损伤的位置外,更重要的是还需识别损伤的程度。此外,桥梁结构动态检测时经常只能测得结构的部分动力信息,因此如何利用结构的部分信息来识别整体结构的性态,也是目前结构动态检测需解决的问题[1]。 结构损伤实际上是结构性态的改变,因此结构损伤检测实质上是结构物理参数变化的检测,在检测方法上,结构损伤检测与结构性态检测并无差别,但后者求解的目标是结构当前的性态,而前者求解的目标是结构当前的性态与某一已知参考性态间的变化。 结构损伤检测的基本问题有三个:①判别结构是否有损伤;②判别结构的损伤位置;③判别结构的损伤程度。其中问题①最简单,而问题③最困难。如果同时求解上述三个问题,难度还有加大。在工程实用中,如果能将上述三个问题分解,则可降低问题的求解难度。

尽管动态检测方法的应用条件限制少,效率高,但由于受到结构动力量测信号质量和数量的限制,结构动力检测结果的可靠性有时无法保障。因此,综合利用静态检测和动力检测的优点,构建结构综合检测技术,可望是能够提高桥梁结构检测的有效性与可靠性的最终途径。

3.3 系统特点

可以根据C#的类库,对程序进行很好的诠释,程序的特点主要是可以记录、修改、删除桥梁的

一些参数,并且可以把这些桥梁的健康状况进行检测。并生成报告。

4 详细设计与实现

4.1 代码设计

因为本系统的程序模块比较多,以下就不一一贴代码了,举几个比较象征性的代码如

下:

4.1.1 主要算法

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;

using System.Windows.Forms; using Tester.Login; using Tester.CommonClass; using Tester.GradePaper; using Tester.OtherForm; using System.IO; using Microsoft.Win32;

namespace Tester {

public partial class frmMain : Form {

private GradeWord helpWord = new GradeWord();

private GradeWindows helpWindows = new GradeWindows();

private GradePowerPoint helpPowerPoint = new GradePowerPoint(); private GradeExcel helpExcel = new GradeExcel();

private bool IsFinished = false;

private CommonClass.Help help = null; private int time = 0; private int min = 0; private int sec = 0;

private string[] ChiTypeContent;

private string[] EngTypeContent; private int curChiRow = 0; private int curEngRow = 0;

private int selstart; private int totalword;

private int totalshow=1;//显示的字符数

private int chiTime = 300; private int chiUsedTime = 0; private int chiMin = 0; private int chiSec = 0; private float chiRate; private float chiSpeed; private int i = 0; private int j = 0; private int k = 0;

private int engTime = 300; private int engUsedTime = 0; private int engMin = 0; private int engSec = 0; private float engRate = 0; private float engSpeed = 0;

private static int CurChooseRow=0; private static int CurJudgementRow = 0; private int MaxAmountJudgement = 0; private int MaxAmountChoose = 0;

public frmMain() {

InitializeComponent(); }

private void Init()

private int []curpos=new int[2000];//当前输入位置

private string []strinput=new string[2000];//用户所输入的字符 private int []curlong=new int[2000];//当前行的当前长度 private int delcount;//前后两次输入相差的字符数

private int totalshow2=1;//显示的字符数

{

string tipstr = \"\";

tipstr = \"注意:本次考试时长为\" + CommonClass.Tester.TestTime.ToString() + \"分钟。\\n\"; tipstr += \"(1)选择题共\" + CommonClass.Tester.SelectAmount.ToString() + \"题,\" + \"每题\" + CommonClass.Tester.SelectValue.ToString() + \"分;\\n\";

tipstr += \"(2)判断题共\" + CommonClass.Tester.JudgementAmount.ToString() + \"题,\" + \"每题\" + CommonClass.Tester.JudgementValue.ToString() + \"分;\\n\";

//tipstr += \"(3)英文打字题共题,每题\" + CommonClass.Tester.EngTypeValue.ToString() + \"分;\\n\";

//tipstr += \"(4)中文打字题共题,每题\" + CommonClass.Tester.ChiTypeValue.ToString() + \"分;\\n\";

//tipstr += \"(5)Word试题共题,每题\" + CommonClass.Tester.WordValue.ToString() + \"分;\\n\"; //tipstr += \"(6)Excel试题共题,每题\" + CommonClass.Tester.ExcelValue.ToString() + \"分;\\n\"; //tipstr += \"(7)PowerPoint试题共题,每题\" + CommonClass.Tester.PowerPointValue.ToString() + \"分;\\n\";

//加分程序

tipstr += \"(8)编程共题,每题\" + CommonClass.Tester.WindowsValue.ToString() + \"分。\"; tbSno.Text = CommonClass.Tester.Sno.ToString() ; tbName.Text = CommonClass.Tester.Name.ToString(); tbClass.Text = CommonClass.Tester.Class.ToString(); lTip.Text = tipstr;

time = Int32.Parse(CommonClass.Tester.TestTime) * 60; //Form1 aaaaaa = new WindowsApplication1.Form1(); }

public void ShowChoose(int i) {

tbChooseContent.Text = help.Choose_Content[i].ToString(); rbKeyA.Text = help.Choose_KeyA[i].ToString(); rbKeyB.Text = help.Choose_KeyB[i].ToString(); rbKeyC.Text = help.Choose_KeyC[i].ToString(); rbKeyD.Text = help.Choose_KeyD[i].ToString(); }

private void ShowJudgement(int i) {

tbJudgementContent.Text = help.Judgement_Content[i]; }

private void ShowWord() {

StringBuilder Content = new StringBuilder(); Content.AppendLine(help.Word_Content); Content.AppendLine();

Content.AppendLine(help.Word_Request1); Content.AppendLine();

Content.AppendLine(help.Word_Request2); Content.AppendLine();

Content.AppendLine(help.Word_Request3); Content.AppendLine();

Content.AppendLine(help.Word_Request4);

//tbWord.Text = Content.ToString() ; }

private void ShowExcel() {

StringBuilder Content = new StringBuilder(); Content.AppendLine(help.Excel_Request1); Content.AppendLine();

Content.AppendLine(help.Excel_Request2); Content.AppendLine();

Content.AppendLine(help.Excel_Request3); Content.AppendLine();

Content.AppendLine(help.Excel_Request4);

//tbExcel.Text = Content.ToString(); }

private void ShowPowerPoint() {

StringBuilder Content = new StringBuilder(); Content.AppendLine(help.PowerPoint_Request1); Content.AppendLine();

Content.AppendLine(help.PowerPoint_Request2); Content.AppendLine();

Content.AppendLine(help.PowerPoint_Request3); Content.AppendLine();

Content.AppendLine(help.PowerPoint_Request4);

//tbPowerPoint.Text = Content.ToString(); }

private void ShowWindows() {

StringBuilder Content = new StringBuilder(); Content.AppendLine(help.Windows_Request1); Content.AppendLine();

Content.AppendLine(help.Windows_Request2); Content.AppendLine();

Content.AppendLine(help.Windows_Request3); Content.AppendLine();

Content.AppendLine(help.Windows_Request4);

tbWindows.Text = Content.ToString(); }

private void frmMain_Load(object sender, EventArgs e) {

help = new Tester.CommonClass.Help(); frmLogin frm = new frmLogin(); frm.ShowDialog(); help.Query(); this.Init(); }

private void ShowNo(Label lNo,int no) {

no += 1;

lNo.Text = no.ToString(); }

private void bChooseFir_Click(object sender, EventArgs e) {

this.ShowChoose(0); this.ShowNo(lChooseNo, 0); }

private void lvAnswers(int MaxAmount,ListView lv) {

int i=0;

ListViewItem []lvi=new ListViewItem [MaxAmount]; while (i < MaxAmount) {

lvi[i] = new ListViewItem();

lvi[i].Text = (i + 1).ToString() + \": ?\"; lvi[i].ForeColor = Color.Blue; lv.Items.Add(lvi[i]); i++; } }

private void tTime_Tick(object sender, EventArgs e) {

time -= 1; if (time >= 0) {

min = time / 60; sec = time % 60;

lTime.Text = min.ToString() + \":\" + sec.ToString();

} else {

tTime.Enabled = false; IsFinished = true; if (IsFinished) {

MessageBox.Show(\"考试结束了,下面是你的成绩!\"); this.ShowScore(); Application.Exit(); }

//this.bSubmit_Click(sender, e); } }

private void bStartChoose_Click(object sender, EventArgs e) {

if (help.Choose()) {

CurChooseRow = 0;

MaxAmountChoose = Int32.Parse(CommonClass.Tester.SelectAmount); this.ShowChoose(CurChooseRow); this.ShowNo(lChooseNo, CurChooseRow); this.lvAnswers(MaxAmountChoose, lvChoose); bSaveChoose.Enabled = true; tlpChoose.Enabled = true; tlpChooseKeys.Enabled = true; }

bStartChoose.Enabled = false; }

private void bChoosePre_Click(object sender, EventArgs e) {

CurChooseRow --; if (CurChooseRow < 0) {

CurChooseRow = 0; }

ShowChoose(CurChooseRow);

this.ShowNo(lChooseNo, CurChooseRow); }

private void bChooseNext_Click(object sender, EventArgs e) {

CurChooseRow ++;

if (CurChooseRow >= MaxAmountChoose) {

CurChooseRow = MaxAmountChoose - 1; }

ShowChoose(CurChooseRow);

this.ShowNo(lChooseNo, CurChooseRow); }

private void bChooseLast_Click(object sender, EventArgs e) {

CurChooseRow = MaxAmountChoose - 1; ShowChoose(CurChooseRow);

this.ShowNo(lChooseNo, CurChooseRow); }

private void bStartTest_Click(object sender, EventArgs e) {

help.ShowMessage(\"考试已进入倒计时,请抓紧时间答题!\", 2); help.CreateExamScore(); bStartTest.Enabled = false; this.tcSubjects.Enabled = true; tTime.Enabled = true; bSubmit.Enabled = true; }

private void rbKeyA_Click(object sender, EventArgs e) {

if (rbKeyA.Checked) {

help.Choose_StuKey[CurChooseRow] = \"A\";

lvChoose.Items[CurChooseRow].Text = (CurChooseRow + 1).ToString() + \": A\"; lvChoose.Items[CurChooseRow].ForeColor = Color.Red; } }

private void rbKeyB_Click(object sender, EventArgs e) {

if (rbKeyB.Checked) {

help.Choose_StuKey[CurChooseRow] = \"B\";

lvChoose.Items[CurChooseRow].Text = (CurChooseRow+1).ToString() + \": B\"; lvChoose.Items[CurChooseRow].ForeColor = Color.Red; }

}

private void rbKeyC_Click(object sender, EventArgs e) {

if (rbKeyC.Checked) {

help.Choose_StuKey[CurChooseRow] = \"C\";

lvChoose.Items[CurChooseRow].Text = (CurChooseRow + 1).ToString() + \": C\"; lvChoose.Items[CurChooseRow].ForeColor = Color.Red; } }

private void rbKeyD_Click(object sender, EventArgs e) {

if (rbKeyD.Checked) {

help.Choose_StuKey[CurChooseRow] = \"D\";

lvChoose.Items[CurChooseRow].Text = (CurChooseRow + 1).ToString() + \": D\"; lvChoose.Items[CurChooseRow].ForeColor = Color.Red; } }

private void bStartJudgement_Click(object sender, EventArgs e) {

if (help.Judgement()) {

MaxAmountJudgement = Int32.Parse(CommonClass.Tester.JudgementAmount); tlpJudgement.Enabled = true;

this.lvAnswers(MaxAmountJudgement, lvJudegment); CurJudgementRow = 0;

this.ShowJudgement(CurJudgementRow); this.ShowNo(lJudgementNo, CurJudgementRow); bSaveJudgement.Enabled = true; tlpJudgementAnswer.Enabled = true; }

bStartJudgement.Enabled = false; }

private void rbTrue_Click(object sender, EventArgs e) {

if (rbTrue.Checked) {

lvJudegment.Items[CurJudgementRow].Text =(CurJudgementRow + 1).ToString()+ \": 对\"; lvJudegment.Items[CurJudgementRow].ForeColor = Color.Red;

help.Judgement_StuKey[CurJudgementRow] = \"对\"; } }

private void rbFalse_Click(object sender, EventArgs e) {

if (rbFalse.Checked) {

lvJudegment.Items[CurJudgementRow].Text = (CurJudgementRow + 1).ToString() + \": 错\"; lvJudegment.Items[CurJudgementRow].ForeColor = Color.Red; help.Judgement_StuKey[CurJudgementRow] = \"错\"; } }

private void bSaveChoose_Click(object sender, EventArgs e) { try {

help.SavePaperChoose();

help.ShowMessage(\"选择题试卷保存成功!\", 2); } catch {

help.ShowMessage(\"选择题试卷保存失败!\", 1); } }

private void bSaveJudgement_Click(object sender, EventArgs e) { try {

help.SavePaperJudgement();

help.ShowMessage(\"判断题试卷保存成功!\", 2); } catch {

help.ShowMessage(\"判断题试卷保存失败!\", 1); } }

private void bJudgementFir_Click(object sender, EventArgs e) {

CurJudgementRow = 0;

this.ShowJudgement(CurJudgementRow);

this.ShowNo(lJudgementNo,CurJudgementRow); }

private void bJudgementLast_Click(object sender, EventArgs e) {

CurJudgementRow = Int32.Parse(CommonClass.Tester.JudgementAmount) - 1; this.ShowJudgement(CurJudgementRow); this.ShowNo(lJudgementNo, CurJudgementRow); }

private void bJudgementPre_Click(object sender, EventArgs e) {

CurJudgementRow--; if (CurJudgementRow < 0) {

CurJudgementRow = 0; }

this.ShowJudgement(CurJudgementRow); this.ShowNo(lJudgementNo, CurJudgementRow); }

private void bJudgementNext_Click(object sender, EventArgs e) {

CurJudgementRow++;

if (CurJudgementRow >= MaxAmountJudgement) {

CurJudgementRow = MaxAmountJudgement - 1; }

this.ShowJudgement(CurJudgementRow); this.ShowNo(lJudgementNo, CurJudgementRow); }

private void bStartWord_Click(object sender, EventArgs e) {

if (help.Word()) { this.ShowWord(); } }

private void bStartWindows_Click(object sender, EventArgs e) {

System.Diagnostics.Process.Start(\"编程环境.vbp\"); }

///

/// 关联文件 ///

/// 应用程序路径 /// 文件类型

public static void SaveReg(string _FilePathString, string p_FileTypeName) {

RegistryKey _RegKey = Registry.ClassesRoot.OpenSubKey(\"\", true); //打开注册表

RegistryKey _VRPkey = _RegKey.OpenSubKey(p_FileTypeName, true); if (_VRPkey != null) {

_RegKey.DeleteSubKey(p_FileTypeName, true); }

_RegKey.CreateSubKey(p_FileTypeName);

_VRPkey = _RegKey.OpenSubKey(p_FileTypeName, true); _VRPkey.SetValue(\"\", \"Exec\");

_VRPkey = _RegKey.OpenSubKey(\"Exec\", true);

if (_VRPkey != null) _RegKey.DeleteSubKeyTree(\"Exec\"); //如果等于空就删除注册表DSKJIVR

_RegKey.CreateSubKey(\"Exec\");

_VRPkey = _RegKey.OpenSubKey(\"Exec\", true); _VRPkey.CreateSubKey(\"shell\");

_VRPkey = _VRPkey.OpenSubKey(\"shell\", true); //写入必须路径 _VRPkey.CreateSubKey(\"open\");

_VRPkey = _VRPkey.OpenSubKey(\"open\", true); _VRPkey.CreateSubKey(\"command\");

_VRPkey = _VRPkey.OpenSubKey(\"command\", true);

string _PathString = \"\\\"\" + _FilePathString + \"\\\" \\\"%1\\\"\";

_VRPkey.SetValue(\"\", _PathString); //写入数据 }

///

/// 取消文件关联 ///

/// 文件类型 public static void DelReg(string p_FileTypeName)

{

RegistryKey _Regkey = Registry.ClassesRoot.OpenSubKey(\"\", true); RegistryKey _VRPkey = _Regkey.OpenSubKey(p_FileTypeName); if (_VRPkey != null) {

_Regkey.DeleteSubKey(p_FileTypeName, true); }

if (_VRPkey != null) {

_Regkey.DeleteSubKeyTree(\"Exec\"); } }

private void bStartPowerPoint_Click(object sender, EventArgs e) {

//bStartPowerPoint.Enabled = false; if (help.PowerPoint()) {

//bCreatePowerPointPaper.Enabled = true; this.ShowPowerPoint(); } }

private void bStartExcel_Click(object sender, EventArgs e) {

//bStartExcel.Enabled = false;

if (help.Excel()) {

//bCreateExcelPaper.Enabled = true; this.ShowExcel(); } }

private void bCreatWordPaper_Click(object sender, EventArgs e) { try {

string path = Application.StartupPath + \"\\\\\" + CommonClass.Tester.Sno; string fn = path + \"\\\\WordPaper.doc\"; Directory.CreateDirectory(path); helpWord.FileName = fn; }

catch(Exception ex) {

help.ShowMessage(\"生成试卷时出错!原因是:\"+ex.Message,1); } }

private void bWordScore_Click(object sender, EventArgs e) {

string Cno = help.Word_Cno; try {

helpWord.GetMark(Cno);

help.ShowMessage(\"评分成功!\", 2); } catch {

help.ShowMessage(\"评分失败!\", 1); } }

private void bWindowsScore_Click(object sender, EventArgs e) {

if (File.Exists(@\"C:\\Program Files\\VB精简版\\Vb6.exe\")) {

SaveReg(@\"C:\\Program Files\\VB精简版\\Vb6.exe\", \".vbp\");

} else {

System.Diagnostics.Process.Start(\"vb6.exe\");

SaveReg(@\"C:\\Program Files\\VB精简版\\Vb6.exe\", \".vbp\"); }

}

private void bCreatePowerPointPaper_Click(object sender, EventArgs e) { try {

string path = Application.StartupPath + \"\\\\\" + CommonClass.Tester.Sno; string fn = path + \"\\\\PowerPointPaper.ppt\";

Directory.CreateDirectory(path); helpPowerPoint.FileName = fn; helpPowerPoint.CreatePaper(); }

catch(Exception ex) {

help.ShowMessage(\"生成试卷时出错!原因是:\"+ex.Message,1); } }

private void bPowerPointScore_Click(object sender, EventArgs e) {

string Cno = help.PowerPoint_Cno; try {

helpPowerPoint.GetMart(Cno); /

help.ShowMessage(\"评分成功!\", 2); } catch {

help.ShowMessage(\"评分失败!\", 1); } }

private void bExcelScore_Click(object sender, EventArgs e) {

string Cno = help.Excel_Cno; try {

helpExcel.GetMark(Cno);

help.ShowMessage(\"评分成功!\", 2); } catch {

help.ShowMessage(\"评分失败!\", 1); } }

private void bCreateExcelPaper_Click(object sender, EventArgs e) { try

{

string path = Application.StartupPath + \"\\\\\" + CommonClass.Tester.Sno; string fn = path + \"\\\\ExcelPaper.xls\"; Directory.CreateDirectory(path); helpExcel.FileName = fn; helpExcel.CreatePaper(); }

catch (Exception ex) {

help.ShowMessage(\"生成试卷时出错!原因是:\" + ex.Message, 1); } }

private void LoadChiTypeRows() {

this.curChiRow +=5; }

private void LoadEngTypeRows() {

this.curEngRow += 5; }

private void bCreateChiTypePaper_Click(object sender, EventArgs e) {

if (help.ChiType()) {

i = 0;j = 0;k = 0;

int max = Int32.Parse(CommonClass.Tester.MaxChiTypeWords) * 5; int rows = (help.ChiType_Content.Length / 35)-1; ChiTypeContent = new string[rows]; for (int n = 0; n < rows; n++) {

ChiTypeContent[n] = help.ChiType_Content.Substring(n*35, 35); }

this.LoadChiTypeRows(); } }

private void bCreateEngTypePaper_Click(object sender, EventArgs e) {

if (help.EngType())

{

i = 0; j = 0; k = 0;

int max = Int32.Parse(CommonClass.Tester.MaxEngTypeWords) * 5; int rows = (help.EngType_Content.Length / 70) - 1; EngTypeContent = new string[rows]; for (int n = 0; n < rows; n++) {

EngTypeContent[n] = help.EngType_Content.Substring(n * 70, 70); }

this.LoadEngTypeRows(); } }

private void bStuReadme_Click(object sender, EventArgs e) {

OtherForm.StudentReadme frm = new Tester.OtherForm.StudentReadme(); frm.Show(); }

private void bHelp_Click(object sender, EventArgs e) {

System.Diagnostics.Process.Start(\"help.chm\"); }

private void rtbChi1_Enter(object sender, EventArgs e) { }

private void CheckError(RichTextBox rtb1, RichTextBox rtb2) {

selstart = rtb2.SelectionStart; if (selstart > 1) {

rtb1.SelectionStart = selstart - 1; rtb1.SelectionLength = 1;

rtb2.SelectionStart = selstart - 1; rtb2.SelectionLength = 1; } else {

rtb1.SelectionStart = 0; rtb1.SelectionLength = 1;

rtb2.SelectionStart = 0; rtb2.SelectionLength = 1; }

if (rtb2.SelectedText == \" \") {

totalword--; }

else if(rtb2.SelectedText!=rtb1.SelectedText) {

rtb2.SelectionColor = Color.Red; totalword--; }

rtb2.SelectionStart = selstart; rtb2.SelectionColor = Color.Blue; rtb2.SelectionLength = 0; }

private void CheckBackError(RichTextBox rtb1, RichTextBox rtb2,int m) {

selstart = rtb2.Text.Length; for (int p = 1; p <= m + 1; p++) {

if (selstart-p> 0) {

rtb1.SelectionStart = selstart - p; rtb1.SelectionLength = 1;

rtb2.SelectionStart = selstart - p; rtb2.SelectionLength = 1; }

if (rtb2.SelectedText != \" \"&&rtb2.SelectedText!=rtb1.SelectedText) {

rtb2.SelectionColor = Color.Red; totalword--; }

else if (rtb2.SelectedText == rtb1.SelectedText&rtb2.SelectedText!=\" \") {

rtb2.SelectionColor = Color.Blue; totalword++; }

rtb2.SelectionStart = selstart; rtb2.SelectionColor = Color.Blue; rtb2.SelectionLength = 0; }

rtb2.SelectionStart = selstart; }

private void CheckDelError(RichTextBox rtb1, RichTextBox rtb2, int m) {

selstart = rtb2.Text.Length; for (int p = 1; p <= m + 1; p++) {

if (selstart - p > 0) {

rtb1.SelectionStart = selstart - p; rtb1.SelectionLength = 1;

rtb2.SelectionStart = selstart - p; rtb2.SelectionLength = 1; }

if (rtb2.SelectedText != \" \" && rtb2.SelectedText != rtb1.SelectedText) {

rtb2.SelectionColor = Color.Red; }

else if (rtb2.SelectedText == rtb1.SelectedText & rtb2.SelectedText != \" \") {

rtb2.SelectionColor = Color.Blue; }

rtb2.SelectionStart = selstart; rtb2.SelectionColor = Color.Blue; rtb2.SelectionLength = 0; }

rtb2.SelectionStart = selstart; }

private void Back(RichTextBox rtb1, RichTextBox rtb2) {

curpos[i++] = rtb2.SelectionStart; curlong[k++] = rtb2.Text.Length; strinput[j++] = rtb2.Text; if (i > 1) {

if (curpos[i - 1] > curpos[i - 2]) {

totalword++;

if (rtb1.Text.Substring(curpos[i - 2], 1) != \" \") {

if (totalshow == totalshow2) {

totalshow++; totalshow2++; }

else if (totalshow > totalshow2)

{

totalshow = totalshow2; totalshow++; totalshow2++; } }

CheckError(rtb1, rtb2); }

else if (curpos[i - 1] < curpos[i - 2] && strinput[i - 1].Length < strinput[i - 2].Length) {

delcount = curpos[i - 2] - curpos[i - 1]; if (delcount > 1) {

if (strinput[i - 2].Substring(curpos[i - 1], 1) == rtb1.Text.Substring(curpos[i - 1], 1) && strinput[i - 2].Substring(curpos[i - 1], 1) != \" \") {

totalword--; }

if (rtb1.Text.Substring(curpos[i - 1], 1) != \" \") {

totalshow2--; }

int scount = curlong[i - 1] - curpos[i - 1]; CheckBackError(rtb1, rtb2, scount); }

else if (delcount == 1) {

if (strinput[i - 2].Substring(curpos[i - 1], 1) == rtb1.Text.Substring(curpos[i - 1], 1) && strinput[i - 2].Substring(curpos[i - 1], 1) != \" \") {

totalword--; }

if (rtb1.Text.Substring(curpos[i - 1], 1) != \" \") {

totalshow2--; }

int scount = curlong[i - 1] - curpos[i - 1]; CheckDelError(rtb1, rtb2, scount); } }

else if (curpos[i - 1] < curpos[i - 2] && strinput[i - 1].Length > strinput[i - 2].Length) {

totalshow++; totalshow2++;

int bcount = curlong[i - 1] - curpos[i - 1]; CheckBackError(rtb1, rtb2, bcount); }

else if (i <= 1) {

totalword++; totalshow++; totalshow2++;

CheckError(rtb1, rtb2); } } }

private void ChangRow(RichTextBox rtb1,RichTextBox rtb2,RichTextBox rtbNext) {

if (rtb2.Text.Length < rtb1.Text.Length) {

Back(rtb1, rtb2); } else {

rtbNext.Focus(); } }

private void rtbChi2_TextChanged(object sender, EventArgs e) { }

private void rtbChi4_TextChanged(object sender, EventArgs e) { }

private void rtbChi6_TextChanged(object sender, EventArgs e) { }

private void rtbChi8_TextChanged(object sender, EventArgs e) { }

private void rtbChi10_TextChanged(object sender, EventArgs e) { }

private void rtbChi3_Enter(object sender, EventArgs e) { }

private void rtbChi5_Enter(object sender, EventArgs e) { }

private void rtbChi7_Enter(object sender, EventArgs e) { }

private void rtbChi9_Enter(object sender, EventArgs e) { }

private void bStartChiType_Click(object sender, EventArgs e) {

tChiType.Enabled = true; }

private void tChiType_Tick(object sender, EventArgs e) {

chiTime--; chiUsedTime++;

chiMin = chiTime / 60; chiSec = chiTime % 60; if (chiTime >= 0) {

chiSpeed = totalword * 60 / chiUsedTime; chiRate = totalword * 100 / totalshow; if (chiRate > 100) {

chiRate = 100;

}

if (chiSpeed > float.Parse(CommonClass.Tester.MaxChiTypeWords)) {

chiSpeed = float.Parse(CommonClass.Tester.MaxChiTypeWords); if (chiSpeed < 0) chiSpeed = 0; }

float score= float.Parse(CommonClass.Tester.ChiTypeValue)*(chiSpeed / Int32.Parse(CommonClass.Tester.MaxChiTypeWords)) * chiRate / 100;

CommonClass.Tester.ChiTypeScore=float.Parse(Math.Round(score, 1).ToString()); } else {

help.ShowMessage(\"时间已到,你的成绩已保存!\", 2);

tChiType.Enabled = false;

HelpGrade ChiType = new HelpGrade();

ChiType.SaveTypeScore(\"update_ExamScore_ChiType\", CommonClass.Tester.Sno, \"@ChiTypeScore\", CommonClass.Tester.ChiTypeScore, chiSpeed, \"@ChiTypeSpeed\"); } }

private void tEngType_Tick(object sender, EventArgs e) {

engTime--; engUsedTime++;

engMin = engTime / 60; engSec = engTime % 60; if (engTime >= 0) {

engSpeed = totalword * 60 / engUsedTime; engRate = totalword * 100 / totalshow; if (engRate > 100) {

engRate = 100; }

if (engSpeed > float.Parse(CommonClass.Tester.MaxEngTypeWords)) {

engSpeed = float.Parse(CommonClass.Tester.MaxEngTypeWords); if (engSpeed < 0) engSpeed = 0; }

float score = float.Parse(CommonClass.Tester.EngTypeValue) * (engSpeed /

Int32.Parse(CommonClass.Tester.MaxEngTypeWords)) * engRate / 100;

CommonClass.Tester.EngTypeScore = float.Parse(Math.Round(score, 1).ToString()); } else {

help.ShowMessage(\"时间已到,你的成绩已保存!\", 2);

tEngType.Enabled = false;

HelpGrade EngType = new HelpGrade();

EngType.SaveTypeScore(\"update_ExamScore_EngType\", CommonClass.Tester.Sno, \"@EngTypeScore\", CommonClass.Tester.EngTypeScore, engSpeed, \"@EngTypeSpeed\"); } }

private void bStartEngType_Click(object sender, EventArgs e) {

tEngType.Enabled = true; }

private void rtbEng3_Enter(object sender, EventArgs e) { }

private void rtbEng1_Enter(object sender, EventArgs e) {

private void rtbEng5_Enter(object sender, EventArgs e) { }

private void rtbEng7_Enter(object sender, EventArgs e) { }

private void rtbEng9_Enter(object sender, EventArgs e) {

}

private void rtbEng2_TextChanged(object sender, EventArgs e) { }

private void rtbEng4_TextChanged(object sender, EventArgs e) { }

private void rtbEng6_TextChanged(object sender, EventArgs e) { }

private void rtbEng8_TextChanged(object sender, EventArgs e) { }

private void rtbEng10_TextChanged(object sender, EventArgs e) { }

private void ShowScore() {

float score = CommonClass.Tester.ChiTypeScore + CommonClass.Tester.EngTypeScore + CommonClass.Tester.ChooseScore;

score += CommonClass.Tester.JudgementScore + CommonClass.Tester.WordScore + CommonClass.Tester.ExcelScore;

score += CommonClass.Tester.PowerPointScore + CommonClass.Tester.WindowsScore; string msg = \"本次考试已结束,你的考试成绩如下:\\n\"; msg += \"总成绩:\" + score.ToString() + \"分\\n\";

msg += \"选择题成绩:\" + CommonClass.Tester.ChooseScore.ToString() + \"分\\n\"; msg += \"判断题成绩:\" + CommonClass.Tester.JudgementScore.ToString() + \"分\\n\"; msg += \"编程题:\" + fen().ToString() + \"分\\n\";

msg += i;

help.ShowMessage(msg, 2); }

TXTClass.txtclass TXT = new TXTClass.txtclass(); public int fen() {

string files = Application.StartupPath + \"\\\\编程环境.frm\"; string vb = TXT.txtRead(files);

string txt = vb.Replace(\"\\n\", \":\"); string txter = txt.Replace(\" \", \":\"); string txtsan = txter.Replace(\"E\", \":\"); string txtshi = txtsan.Replace(\")\", \":\"); string txtwu = txtshi.Replace(\".\", \":\"); string[] str = txtwu.Split(':');

int a = 0; int fen = 0; string widths = \"\"; string heights = \"\";

for (int i = 0; i < str.Length; i++) {

if (str[i] == \"Btn2\") {

fen = 2;

}

if (str[i] == \"Btn1_Click(\") {

for (int j = 0; j < str.Length; j++) {

if (str[j] == \"Width\") {

a = j + 2;

if (str[a].ToString() == \"1000\\nBtn2\") {

widths = \"1000\"; } else {

widths = str[a].ToString().Trim(); }

}

if (str[j] == \"Height\")

{

a = j + 2;

if (str[a].ToString() == \"400Btn2\") {

heights = \"400\"; } else {

heights = str[a].ToString().Trim(); }

} }

} }

if (widths == \"1000\" && heights == \"400\") {

fen = fen + 2; }

return fen; }

private void bSubmit_Click(object sender, EventArgs e) {

if (MessageBox.Show(\"你真的准备交卷吗?\", \"提示\", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {

HelpGrade UpdateState = new HelpGrade(); UpdateState.TestingFinished(); this.ShowScore(); IsFinished = true; Application.Exit(); }

}

private void frmMain_FormClosing(object sender, FormClosingEventArgs e) {

if (!IsFinished) {

if (MessageBox.Show(\"你真的要退出本次考试吗?\", \"提示\", MessageBoxButtons.YesNo,

MessageBoxIcon.Question) == DialogResult.Yes) {

HelpGrade UpdateState = new HelpGrade(); UpdateState.TestingFinished(); this.ShowScore(); } else {

e.Cancel = true; } } else {

Application.Exit(); } } } }

4.1.2 数据库操作

本系统采用sql数据库主要表如下

管理员表;administrator 字段名 数据类型 长度 UserID PWD name Int Varchar Varchar 4 16 16 16 16 16 16 介绍 用户ID(主键) 用户密码 用户名 所属系 查看权限 管理权限 特殊权限 department Varchar power1 power2 power3 Varchar Varchar Varchar 考试成绩表ExamScore 字段名 SNO Class 数据类型 Int Int 长度 10 10 介绍 主键 学号 Total_Score Float 10 ChiTypeScore Int 10 ChooseScore Int 10 WindowsScore Int 10 考试准备表:ExamSetting 字段名 数据类型 长度 SchemeName Int 10 TestTime Int 10 JudgementAmount Int 10 JudgementValue Int 100 SelectAmount Int 10 SelectValue Int 100 WindowsValue Int 100 选择题页:Paper_Choose 字段名 数据类型 长度 SNO Int 10 CNO Int 10 Answer Int 50 Score Int 10

编程题页:Paper_Windows 字段名 数据类型 长度 SNO Int 10 CNO Int 10 Score Int 10

编程问题表:Question_Windows 字段名 数据类型 长度 CNO Varchar 500 Request1 Varchar 500 Request2 Varchar 500 Request3 Varchar 500 Request4 Varchar 500 4.2 页面设计与实现

分数 判断题分数 选择题分数 编程题分数 介绍 方案名字(主键) 考试时间 判断题数量 判断题分值 选择题数量 选择题分值 编程题分值 介绍 学生编号 题编号 答案 分数 介绍 学生编号 题编号 分数 介绍 题号 提交1 提交2 提交3 提交4 4.2.1编程关联(环境配置)

4.2.2 编程页面

结论

通过最后两个多月的毕业设计,我对ASP..NET、数据库软件SQL server2005、Visual Studio2008等系列知识都有了一定的了解。使用ASP.NET开发页面的能力也有了很大提高。

由于在此之前对于ASP.NET和SQL2005知识的了解几乎是一片空白,所以从一开始就碰到许多困难。例如一开始我将ASP.NET和ASP没有分清楚,致使我走了不少弯路,新亏及时得到老师指正才没有浪费太多精力和时间。再有,一开始由于装载的access数据库性能上与我使用的操作系统Windows XP有很多地方不相容,使得我在很长一段时间内找不到问题的症结,导致了大量时间在检查代码甚至是对硬件的检查中,后来在看了有关access方面的资料后更换了重装了系统才将问题解决。

通过这近三个月时间的工作,该系统已经基本上实现了自动阅卷系统的,以及其它辅助功能等任务书上要求的功能。

在整个设计阶段感受最为深刻的是掌握学习的方式和解决问题的方法。首先是解决问题的方式,虽然面临的信息很多,但是如何从大量的信息中筛选出所需的信息,有用的信息,才是解决问题的关键,另外一个就是解决问题的方法,就像我在解决设计中的很多问题一样,一开始总是在看书,和书上的进行比对,虽然书本上的只是大部分都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在整个毕业设计的过程中,我深刻的体会到了这一点的重要性,也牢记主了这一点,在今后的学习和研究中我也会继续将这种方法延续下去。

本系统是基于.NET实现的C/S 模式自动阅卷系统, 系统开发简单,共享性强。基于.NET的C/S 模式主观编程题在线考试系统可使学生考试更规范、更科学,同时也可减轻教师的工作量,节约时间,提高工作效率增加了改卷得公平公正。如果系统需要更大范围的应用,只需要下载安装即可。比如,系统扩展为可让学生平时练习的环境,或者对外开放的测试环境。

参考文献

[1]陈永强,谢维成,李茜. ASP数据库开发经典实例精解[M]. 北京:机械工业出版社,2007

[2]盖江南 王勇 阎文丽.ASP.NET+SQL Server动态网站设计宝典[M] .北京:电子工业出版社,2006

[3] 萨师煊,王珊 编著. 数据库系统概论(第三版), 高等教育出版社

[4] 吕伟臣,霍言,吕宝臣 编著.Visual C# 2005 入门与提高,北京:清华大学出版社 [5]吴晨,陈建孝 编著.C#网络与通信程序设计案例精讲,北京:清华大学出版社 [6] 何鹏飞,王征 等编著. C#使用编程百例,北京:清华大学出版社

[7] 李旗编著.C#.net 程序设计.

[8]M. BELLARE AND P. ROGAWAY. THE EXACT SECURITY OF DIGITAL SIGNATURES – HOW TO SIGN WITH RSA AND RABIN. IN U. MAURER, EDITOR, ADVANCES IN CRYPTOLOGY – EUROCRYPT ’96, VOLUME 1070 OF LECTURE NOTES IN COMPUTER SCIENCE, PP. 399 – 416. SPRINGER VERLAG, 1996.

致谢

四年的大学生活即将结束,在我们面临毕业之前十分感谢学校给予我们这次宝贵的时间机会。通过这段时间的学习,我基本上掌握了ASP.NET基本原理,同时也学习了一些制作网页的基本软件工具。

在毕业设计的整个过程中,有很多老师和同学给予我热心的帮助和支持,在这里,我感谢他们。特别是我的毕业设计指导老师秦金祥老师和杨萌老师,他们给予我很多指导和帮助,让我从一个只知道点击网页的浏览者变成了一个网页的开发者。他们还为我提出了许多建设性的意见,帮助我解决了许多实际问题,使我有很大的收获。同时我还要感谢许许多多同学,他们在数据库连接、服务器配置、ASP.NET编程等问题上给我的帮助使我能够顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们。

毕业设计时间不是很长,但是在这段时间里面,我收获颇丰。它必将会成为我日后工作和生活中的一笔宝贵财富。

因篇幅问题不能全部显示,请点此查看更多更全内容