• 3.11 MB
  • 2022-04-22 13:44:57 发布

安工大信息资源的开发和利用毕业论文.doc

  • 37页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'安工大信息资源的开发和利用毕业论文目录1绪论11.1引言11.2课题的意义11.3相关说明12系统需求分析32.1功能需求32.2性能需求32.3可行性分析42.4开发工具简介52.4.1.NET开发框架52.4.2VS200852.4.3winform技术62.4.4SQLServer200572.4.5C#语言72.4.6串口数据读取73系统设计93.1系统结构93.2数据库设计103.2.1数据库需求分析103.2.2E-R图163.2.3数据表设计193.3业务流程图224系统功能实现234.1功能模块234.1.1管理模块254.1.2输入数据模块254.1.3查询数据模块264.1.4报表模块264.1.5曲线模块274.2模块的实现274.2.1登录界面274.2.2管理界面274.2.3数据输入界面294.2.4查询数据界面314.2.5报表界面32II 4.2.6曲线界面335测试与性能分析375.1测试的基本原则375.2系统测试的计划和要点385.3软件部分测试38总结41致谢42参考文献43附录A部分源代码44源代码1从串口读数据44源代码2生成数据顺序46原代码3绘制单排曲线图48附录B英语翻译52II 1绪论1.1引言信息在社会和经济的发展中所起的作用越来越为人们所重视。信息资源的开发和利用,已成为衡量一个国家综合国力的重要标志之一。在计算机的三大主要领域(科学计算、数据处理与过程控制)中,数据处理的比重约占70%左右。计算机作为处理的工具,为适应数据处理需求迅速提高,满足各类信息系统对数据管理的要求,在文件系统的基础上发展起了数据库系统。计算机数据库管理随着计算机硬件(尤其是外存储器)、软件技术和计算机应用范围的发展而不断发展。  在计算机高速发展的今天,它已经应用到了各个行业,当然,钢铁企业也不例外。以前钢铁企业对焦炉温度的管理工作都是人工管理,而作为计算机应用的一部分,使用计算机对焦炉的温度进行管理,有着手工管理所无法比拟的优点,如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高企业对焦炉温度管理的效率。因此,开发一套用于钢铁企业的焦炉温度管理系统是有必要的。1.2课题的意义  焦炉温度的管理工作在整个焦化企业的生产环节中占有举足轻重的地位。准确掌握焦炉的温度是焦化厂生产正常进行的前提。随着计算机网络技术的发展,各钢铁企业的信息化发展迅速。红外线测温系统是现代化焦炉温度管理的重要组成部分。在这套系统中,红外线测温仪是保证系统实现的必要物质条件,其稳定性和准确性是先决条件,是使用温度输入及管理软件使系统得以实现的最终手段,是提高炉温控制管理质量和现代化管理水平的重要保证。有了好的炉温管理系统,才能真正实现炉温的宏观调控,制定合理优化的加热控制方案。1.3相关说明  在开始毕业设计介绍的时候需要先介绍一下关于焦炉的相关说明。这样方便在下文中的叙述。图1.1展示的即使一个焦炉的示意图,横轴表示燃烧室号,纵轴表示立火道号,在下文中,每个焦炉有61个燃烧室,每个燃烧室32个立火道。下面是一些特别说明:1直行温度中机/焦侧是指每个燃烧室的第7火道,第26火道;2横排火道指机侧第1火道,第2火道……第7火道……第16火道;焦侧第17火道,第18火道……第26火道……第32火道;共52页第35页 1报表中的机侧,是对某个燃烧室1~16火道的数据统计(横向),焦侧是对17~32火道的数据统计(横向);2直行温度和炉头温度每天测两班,每班三次,横排温度每月最多测一次。图1.1焦炉示意图共52页第35页 1系统需求分析1.1功能需求通过前期的调研,以及联系实际的需要。可以将温度管理的过程抽象的描述如下:1.在温度管理系统,管理员通过后台进行添加员工的信息,并进行系统的基本设置,并且可以输入温度,查看温度记录,并打印数据。2.普通员工通过自己的工号和密码登陆系统,除了不能修改系统的基本设置和管理员工之外,其他和管理员功能一样。3.温度的管理分为直行温度,炉头温度,横排温度。直行和炉头温度每天都要测六次,早晚班各三次,横排温度每月测一次。测得的实际温度数据经过处理后保存,以方便以后查询,查询分为报表和曲线,并且要求报表数据和曲线都能够打印到Excel中。1.2性能需求  为了保证系统能够长期、安全、稳定、可靠、高效的运行,选题系统应该满足以下的性能需求:1、系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。2、系统的开放性和系统的可扩充性选题系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。3、系统的易用性和易维护性选题系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。4、系统的标准性共52页第35页 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。5、系统的先进性目前计算系统的技术发展相当快,作为选题系统工程,在系统的生命周期尽量做到系统的先进,充分完成信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流平且先进有良好发展前途的产品。6、系统的响应速度选题系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。1.1可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受项目之前必须根据客户可能提供的时间和资源条件进行可行性研究。它可以避免人力、物力和才力上的浪费。以下从四个方面对焦炉温度管理系统进行可行性分析:技术可行性、经济可行性、操作可行性和法律可行性。1.技术可行性为了确定现有技术能否实现目标系统。VS2008自带的工具和控件、.NET3.5开发框架、winform技术支持、SQLserver2005拥有的表操作(建立、修改、删除等)可以实现本系统要求达到的各种功能。本系统把管理员、员工、温度数据信息贮存在数据库里,然后经过数据的抽取和分类,显示在需要的窗口内。2.经济可行性为了确定待开发的系统的经济效益能否超过开发成本。本系统是一个不会直接产生经济效益的投资,但是能够节省人员资源的消耗和浪费,从而节约成本,提高效率。从成本效益角度来观察,这个系统的开发成本不是很高,在使用后,能够起到的作用也是十分可观的。3.操作可行性共52页第35页 本系统是基于VS2008平台开发的,VS系列是被广泛应用于数据库开发和操作的一套成熟的软件平台,而且它对于一个小型的数据库处理具有不可比拟的优点和简单方便。所以从操作可行性方面是可行的。开发出来的界面也是十分容易使用,具有简单,容易上手的特点。4.法律可行性本系统完全是本人在指导老师的指导下独立完成的,故不存在侵权行为或者由于本系统带来的法律纠纷等问题,所以在法律上是可行的。所以从上面四点出发,可以确定系统分析是可行的。1.1开发工具简介1.1.1.NET开发框架.NETFramework是用于Windows的新托管代码编程模型。它强大功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。.NETFramework又称.NET框架,是由微软开发,一个致力于敏捷软件开发(Agilesoftwaredevelopment)、快速应用开发(Rapidapplicationdevelopment)、平台无关性和网络透明化的软件开发平台。.NET是微软为下一个十年对服务器和桌面型软件工程迈出的第一步。.NET包含许多有助于互联网和内部网应用迅捷开发的技术。  .NET框架是微软公司继WindowsDNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(CommonLanguageRuntime)为基础,支持多种语言(C#、VB、C++、Python等)的开发。  .NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的且面向对象程序设计编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集。1.1.2VS2008VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。VisualStudio2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。  VisualStudio2008包括各种增强功能,例如可视化设计器(使用.NETFramework3.5加速开发)、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。VisualStudio2008共52页第35页 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的Web应用程序。  开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并且安全访问ASP.NET应用程序服务和Microsoft平台。.NETFramework提供了用于解决常见编程任务的构建基块(预制的软件),从而能够快速构造具有出色的最终用户体验的紧密联系的应用程序。在.NETFramework模型业务流程上有效构建的紧密联系的应用程序有利于在异类环境中实现系统集成。VisualStudio和.NETFramework的结合使用减少了对公用管道代码的需要,从而缩短了开发时间并使开发人员能够集中精力解决业务问题。1.1.1winform技术Windows窗体也称为WinForm,可以创建应用程序的用户界面,并使用任何一种.NET支持的语言编写应用程序的功能。WinForm应用程序一般都有一个或者多个窗体提供用户与应用程序交互。窗体可包含文本框、标签、按钮等控件。大型WinForm应用程序有许多窗体,一些用于获取用户输入的数据,一些用于向用户显示数据,一些窗体会有变形、透明等其他效果甚至让你看不出他的真实面目。Windows窗体的一些重要特点如下。  1简单强大:Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。2新的数据提供程序管理:数据提供程序管理提供易于连接OLEDB和ODBC数据源的数据控件,包括MicrosoftSQLServer、MicrosoftAccess、Jet、DB2以及Oracle等。3安全:Windows窗体充分利用公共语言运行库的安全特性。这就意味着,一切都可以通过Windows窗体来实现,包括在浏览器中运行的不可信控件和用户硬盘上安装的完全可信的应用程序。4灵活的控件:Windows窗体提供了一套丰富的控件,并且开发人员可以定义自己有特色的新的控件。方便的数据显示和操作:应用程序开发中最常见的情形之一是在窗体上显示数据。Windows窗体对数据库处理提供全面支持。可以访问数据库中的数据,并在窗体上显示和操作数据。1.1.2SQLServer2005SQL(StructuredQuery共52页第35页 Language),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQLServer2005是Microsoft公司推出的SQLServer数据库管理系统,该版本继承了之前版本的优点,同时又增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点。1.1.1C#语言C#是一个语言,.NET是一个平台,上面支持任何一种托管语言写代码。C#(读做C-sharp)编程语言是由微软公司的AndersHejlsberg和ScottWillamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。这种移植对于广大的程序员来说是比较容易的,因为C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。使用IDE迅速建立一个应用程序的过程称为快速反映开发。正因为C#采用了C,C++和Java的优秀特点,并加入了它自己的特性。所以,在VS2008开发平台上使用C#语言将有一定的优越性。1.1.2串口数据读取在焦炉温度管理系统中,因为温度是从红外设备中读取的,所以要使用串口,因此在此处先对串口进行简单的介绍。串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口SerialInterface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem共52页第35页 以及老式摄像头和写字板等设备。串口也可以应用于由于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。在这个系统中使用的是9针的RS232接口,所以重点介绍一下RS232接口。RS232也称标准串口,最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。在程序中VS2008自带的控件SerialPort进行串口的操作,串口操作的核心是进行属性的设置,分别是端口号,波特率,数据位,停止位,是否校验,以及握手协议,在程序中这些参数一定要和设备中的设置相同,否无法通信,另外针对本程序所用的设备,需要在读数据前向设备里写入一个特定的字符串,这样设备才会将数据写入程序中。输入数据时所有工作的开始,因此很关键,串口设置如图2.1所示。图2.1串口设置界面共52页第35页 1系统设计1.1系统结构本系统采用C/S架构。在采用的客户端-服务器架构中,客户端通过统一的接口向服务器发送请求;中间的数据库访问接口将请求按照一定的逻辑规则处理后进入数据库操作,然后将从数据库返回数据集合封装成对象的形式返回到客户端。通过这样的数据处理流程,客户端甚至可以不知道数据库的结构,只要维护与数据库之间的接口即可。结构如图3.1所示:图3.1系统结构图系统各层的功能:1.客户端:系统最外层,向用户展示各种界面,用户通过页面对系统进行操作,查询修改数据。2.数据库访问接口:接收客户端的请求,访问数据库,在讲文件返回给客户端。3.服务器端:即SQLServer2005,存放员工数据和温度数据。1.2数据库设计1.2.1数据库需求分析数据库的需求分析,使用数据流图和数据字典来说明:共52页第35页 数据流图:图3.2管理系统顶层图图3.3管理系统0层图共52页第35页 图3.4加工2“输入数据”分解图3.5加工3“数据查询”分解数据字典:数据项数据项名称:单号别名:无含义:表示直行,横排,炉头在哪一年,哪一月,哪一天,第几次测得的数据类型:字符串长度:14取值及含义:前两位直行是ZH,横排是HP,炉头是LT,后面12位:12{0..9}12,第3~6表示年,第7~8表示月,第9~10表示日,第11~12表示当日第几次测得数据流数据流名称:员工信息别名:无共52页第35页 简述:表示员工的基本信息来源:员工去向:加工1“登录”组成:姓名+工号+密码+科室数据流名称:焦炉温度别名:无简述:表示学要处理的温度数据来源:红外设别去向:加工2“输入数据”组成:焦炉号+燃烧室+立火道+实际温度+温度数据流名称:合格的员工信息别名:无简述:表示拥有相应权限的员工来源:加工1“登录”去向:加工2“输入数据”组成:姓名+工号+密码+科室数据流名称:数据参数别名:无简述:可以描述具体数据的参数来源:加工1“登录”去向:加工3“数据查询”组成:日期+焦炉号+燃烧室+立火道数据流名称:温度曲线别名:无简述:表示查询数据的曲线显示来源:加工3“数据查询”去向:曲线文档组成:温度数据+日期数据流名称:温度表格别名:无简述:表示查询数据的报表显示来源:加工3数据查询去向:表格文档组成:温度数据+日期共52页第35页 数据流名称:原始数据别名:无简述:表示直接从设备里读出的数据来源:加工2.1“读取原始数据”去向:加工2.2“处理数据顺序”组成:温度数据数据流名称:正确顺序的数据别名:无简述:表示经过处理的,拥有争取顺序的温度数据来源:加工2.2“处理数据顺序”去向:加工2.3“修改数据”组成:温度数据加工加工1登录IF用户名或密码为空THEN提示并清空输入数据ELSEIF数据库里无用户名或密码错误THEN提示并清空数据ELSE登录成功,显示主界面ENDIFENDIF加工2.1读取原始数据IF数据参数为空THEN提示并继续输入ELSEIF数据不存在THEN提示数据不存在ELSE输入数据到控件ENDIFENDIF加工2.2处理数据顺序共52页第35页 IF数据顺序的个数!=数据的个数THEN提示错误并清空数据和数据顺序ELSE进行下一步操作ENDIF加工2.3修改数据IF数据需要修改THEN修改数据ELSE保存ENDIF加工3.1数据查询IF查询表格数据THEN进入表格数据的加工ELSEIF查询曲线数据THEN进入曲线数据的加工ENDIF加工3.2表格数据IF数据存在THEN显示表格数据ELSE提示数据不存在ENDIF加工3.3曲线数据IF数据存在THEN显示曲线数据ELSE提示数据不存在ENDIF数据存储数据存储名称:员工文件别名:无简述:存放员工的信息组成:序号+姓名+工号+科室共52页第35页 组织方式:以序号为关键字查询要求:能立即查询数据存储名称:标准温度表别名:无简述:存放焦炉机侧和焦侧的标准温度组成:焦炉号+标准温度查询要求:能立即查询数据存储名称:焦炉表别名:无简述:记录焦炉的基本信息组成:焦炉号+燃烧室号+立火道号查询要求:能立即查询数据存储名称:横排温度表别名:无简述:记录焦炉的各燃烧室的立火道的温度组成:焦炉号+燃烧室号+立火道号+温度查询要求:能立即查询数据存储名称:横排温度修改表别名:无简述:记录焦炉横排温度的修改记录组成:焦炉号+燃烧室号+立火道号+修改前温度+修改后温度+修改日期查询要求:能立即查询共52页第35页 1.1.1E-R图图3.6员工属性图3.7焦炉属性共52页第35页 图3.8横排温度主表属性图3.9横排温度修改表属性共52页第35页 图3.10横排温度属性图3.11标准温度属性图3.12各实体之间的关系共52页第35页 1.1.1数据表设计数据表应该具有一个主键。在设计表的时候我使用了一个表的递增ID作为主键(即将列ID属性设置为intidentity),这样就减少了数据的错误。数据表的设计很简洁,基本没有冗余字段,这样也避免了后期调用表时的错误发生。数据库的设计时应该谨慎些,尽可能把所有可能的情况都考虑进去了,不然当程序开始编码时,如果再修改数据库,就会因为数据库结构改变,导致所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。选题系统是数据表设计如下所示。每一个表格代表一个数据库中的表。表3.1员工表段名称数据类型是否主键说明IDInt是泽东增加1工号Varchar(20)否员工工号密码Varchar(50)否登录密码姓名Varchar(20)否员工姓名身份证Varchar(18)否身份证号单位Varchar(30)否单位名称联系电话Varchar(50)否联系电话权限Smallint否权限表3.2焦炉表名称数据类型是否主键说明I_idInt是自动增加1焦炉号Nvarchar(10)否焦炉编号燃烧室数量Nchar(10)否相应焦炉号的燃烧室数量立火道数量Nvarchar(10)否相应焦炉和燃烧室的立火道数量机侧火道号Nvarchar(10)否测直行温度时,代表机侧的立火道号焦侧火道号Nvarchar(10)否测直行温度时,代表焦侧的立火道号横排测量起始火道Nchar(10)否测直行横排时,每个燃烧室开始的火道号横排测量结束火道Nchar(10)否测横排温度时,每个燃烧室结束的火道号横排系数起始火道Nchar(10)否计算横排系数时,每个燃烧室开始的火道号横排系数结束火道Nchar(10)否计算横排系数时,每个燃烧室开始的火道号区域数量Nchar(10)否代表每个焦炉号燃烧室的集合共52页第35页 表3.3横排温度主表字段名称数据类型是否主键说明IdInt是自动增加1单号Nvarchar(50)否表示每次测量数据的单号焦炉号Nvarchar(50)否表示每次测量的焦炉号年份Nvarchar(50)否测量的年份月份Nvarchar(50)否测量的月份起始排号Int否本次测量开始的燃烧室号结束排号Int否本次测量结束的燃烧室号班次Nvarchar(50)否本次测量的班次测量员Nvarchar(50)否本次测量员录入日期Nvarchar(50)否本次测量的日期录入时间Nvarchar(50)否本次测量的时间Kb值Numeric(18,0)否本次测量数据的Kb值表3.4横排温度表字段名称数据类型是否主键说明IdInt是自动加1单号Nvarchar(50)否每个温度数据的单号,表示数据的输入次序焦炉号Nvarchar(10)否每个温度数据所在的焦炉号燃烧室Int否每个温度数据所在的燃烧室号火道号Int否每个温度数据所在的火道号实测温度Numeric(18,0)否从设备里直接读取的实际温度温度Numeric(18,0)否经过处理后的温度,可能与实测温度不同差值Numeric(18,0)否温度-式测温度年份Nvarchar(10)否测温的年份月份Nvarchar(10)否测温的月份班次Nvarchar(20)否测温的班次测序Nvarchar(10)否温度的测量顺序测量员Nvarchar(10)否测量员录入时间Nvarchar(20)否温度的录入时间共52页第35页 1.1业务流程图整个程序其实可以分成两大部分,即输入数据和显示数据。输入数据要把设备里的数据完整的,以正确的顺序村到数据库中。显示数据则要求能以表格和曲线两中主要方式显示,并可以打印出来。图3.13就说明了这一点。图3.13业务流程图2系统功能实现2.1功能模块功能模块是指数据说明、可执行语句等程序元素的集合,它是指单独命名的可通过名字来访问的过程、函数、子程序或宏调用。功能模块化是将程序划分成若干个功能模块,每个功能模块可以完成一个子功能,再把这些功能模块总起来组成一个整体。以满足所要求的整个系统的功能。功能模块的设计需要考虑以下几点:1.提高功能模块独立性。在得到软件结构之后,就应首先着眼于改善功能模块的独立性,考验是否应该把一些功能模块提取或合并,力求降低耦合提高内聚。2.功能模块规模适度。经验表明,当功能模块过大时,功能模块的可理解性就会迅速下降。但是对过大的功能模块分解时,也不应降低功能模块的独立性。因为当对一个大的功能模块分解时,有可能增加功能模块之间的依赖。共52页第35页   3.深度、宽度、扇出和扇入要适当。如果深度过大则说明有的控制模块可能简单了。如果宽度过大则说明系统的控制过于集中。而扇出过大则意味着功能模块过于复杂,需要控制和协调过多的下级模块,这时应适当地增加中间层次,扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级功能模块中去。一个功能模块的扇入是表明有多少个上级功能模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。  4.要使模块的作用范围保持在该模块的控制范围内。功能模块的作用范围是指受该功能模块内一个判定影响的所有功能模块的集合。功能模块的控制范围是指这个功能模块本身以及所有直接或间接从属于它的功能模块的集合。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能模块,最好局限于做出判定的那个功能模块本身及它的直接下级模块。5.应减少功能模块的接口的复杂性和冗余度,并改善一致性。功能模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。  6.设计成单入口、单出口的功能模块,避免病态连接。要防止内容耦合性,如果功能模块都是从顶部入口、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个模块。  7.模块的功能可预测。如果一个功能模块可以当做一个黑箱,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。  8.组装软件根据设计的约束和移植的需要。组装是指用来把软件组合起来,以便把软件放入特定的处理环境或送往其他的地方。有时,设计约束要求一个程序要在内存中覆盖自己。如果有这种要求的话,原设计结构就可能必须重新组织以便按照重复的次数、存取的频率以及各次调用之间的间隔来把功能模块组合起来。总之,不管什么样的功能模块都有可能出现软件缺陷。因此一定要重视软件功能模块的设计和软件测试的进行,这样才能从根本上保证软件质量。毕业设计选题系统主要是为了满足普通员工和管理员的要求,普通员工要能输入数据并可以查询数据用以完成工作,管理员出了能完成普通员工的基本工作还能管理普通员工的基本信息。基于这种情况,本系统分成了主要的五个模块。第一个模块是管理模块,第二个模块是输入数据模块,第三个模块是查询数据模块,第四个是报表模块,第五个是曲线模块,具体的结构下面介绍。共52页第35页 为了更好更直观的说明各模块的结构,下面使用结构图来说明。下面主要展示的是横排温度方面的内容。1.1.1管理模块图4.1管理模块1.1.2输入数据模块图4.2数据输入模块共52页第35页 1.1.1查询数据模块图4.3数据查询模块1.1.2报表模块图4.4数据显示模块1.1.3曲线模块图4.5曲线模块1.2模块的实现在4.1中,使用结构图对各模块进行了直观的分析,在4.2中将介绍各模块的具体实现,主要是依靠各模块的运行截图和文字说明来介绍,关键代码附在了最后。1.2.1登录界面当用户输入完用户名和密码后,系统就开始判断用户名是否存在。用户名不存在时,提示出错信息,不能使用本系统;用户名存在而密码不匹配时,提示出错信息;只有当用户名和密码都正确且匹配时,进入主界面,使用温度管理系统。登陆界面如下图4.1所示。这一部分的主要代码在FrmLogin.cs中。图4.6登陆界面1.2.2管理界面普通用户登录时,进行密码修改的界面。用户名会自动填入,用户必须输入原始密码,并输入新密码和确认密码,才能修改完成。如图4.7,这一部分的代码主要在FrmUserPwdMod.cs中共52页第35页 图4.7普通员工密码修改界面管理员密码修改,与普通用户修改密码一样,出了用户名不同,如图4.8,其主要代码也在FrmUserPwdMod.cs中图4.8管理员密码修改界面共52页第35页 1测试与性能分析1.1测试的基本原则1.软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。2.软件测试的几大原则:(1)软件开发人员即程序员应当避免测试自己的程序不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块。若条件允许,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。但这并不是说程序员不能测试自己的程序,而且更加鼓励程序员进行调试,因为测试由别人来进行可能会会更加有效、客观,并且容易成功,而允许程序员自己调试也会更加有效和针对性。(2)应尽早地和不断地进行软件测试应当把软件测试贯穿到整个软件开发的过程中,而不应该把软件测试看作是其过程中的一个独立阶段。因为在软件开发的每一环节都有可能产生意想不到的问题,其影响因素有很多,比如软件本身的抽象性和复杂性、软件所涉及问题的复杂性、软件开发各个阶段工作的多样性,以及各层次工作人员的配合关系等。所以要坚持软件开发各阶段的技术评审,把错误克服在早期,从而减少成本,提高软件质量。(3)对测试用例要有正确的态度:第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件。因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。(4)人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是“80-20原则”。不要以为发现几个错误并且解决这些问题之后,就不需要测试了。反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益。(5)应当对每一个测试结果进行全面检查。一定要全面地、仔细地检查测试结果,但常常被人们忽略,导致许多错误被遗漏。(6)妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。共52页第35页 在遵守以上原则的基础上进行软件测试,可以以最少的时间和人力找出软件中的各种缺陷,从而达到保证软件质量的目的。1.1系统测试的计划和要点  软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。软件测试的本质是针对要测试的内容确定一组测试用例。在讨论之前,我先把要测试各个模块的计划和要点列出:1.登录用户名和密码的核对,信息格式的判断,防止不规范的数据和错误的数据插入数据库。2.防止输入数字的地方可以输入字符或其他的数据,威胁数据库。1.2软件部分测试当没有填写用户名时,直接点击登录会出现错误提示,如图5.1用户名为空的登录界面。图5.1用户名为空的登录界面当没有填写密码时,会出现提示,如图5.2共52页第35页 图5.2密码为空的登陆界面用户名和密码对不上时,会出如图5.3的提示。图5.3用户名或密码错误时的登陆界面为了保证输入的温度数据的正确性,在输入温度的时候是要进行判断的,如果输入的温度数据和少年许数据个数不相符,则提出警告,并将数据清除,防止将问题数据写入数据库。有问题的数据录入如图5.4,单击确定后会清除温度数据和横排顺序数据,如图5.5。图5.4读取的数据与温度顺序个数不同时的界面共52页第35页 图5.5数据输入有问题,清除所有数据界面正确的数据录入,如图5.6图5.6数据输入正确时共52页第35页 总结当毕业设计选题时,我觉得我有一定的语言基础,开发一个c/s结构的焦炉温度管理系统会比较顺利,再加上大四面临着毕业找工作情况,时间上可能会并不充裕。所以,我就选择了当前的这个毕业设计题目。然而,当开始做毕业设计的时候,关于c#、VS2008以及SQLServer2005都接触的不是很多,所知甚少。所以在前期,除了调研毕业设计的相关情况之外,大量的时间用于学习开发工具上。学习的过程是逐渐的。毕业设计的主要技术的数据库操作,和曲线的绘制,以及向Excel中写入数据,除数据操作之前有过接触,其他两个都没有做过,在图书馆查找资料很困难,所以网络就给了我很大的帮助,经过对正确关键字的搜索,在网络上我几乎都能找到我所期望的答案。因此在查找资料和写代码两个方面都获得了不小的收获。尽管毕业设计已经完成,但还是存在的一些问题的,譬如:1)在设计数据库表的时候,因为没有在一开始做太多的思考,导致建成的表不是很规范,比较繁琐,但是一旦开始根据数据表写代码,那表就无法进行大的改动了,这个问题以后要改进。2)有些功能以为找不到很好的方法,所以就是用了非常简单但很笨拙的方法,例如单排曲线多幅打印时,又使用了5个datagridview控件,程序的效率因此下降。3)在写代码的过程中,因为有时怕麻烦,所以有些地方没有注释,或者变量的命名没有严格按照见名知义的要求来做,导致程序的可读性有所下降。但总的来说,在完成毕业设计的过程中,收获还是很大的。共52页第35页 致谢经过了近一个学期学习和努力,毕业设计与毕业论文终于完成了。首先感谢导师刘辉老师。感谢刘老师在整个毕业设计过程中对我的督促和指导。从毕业设计开始的选题一直到最终完成,刘辉老师都始终给我细心的指导和不懈的支持。刘老师严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,平易近人的人格魅力对我影响深远。并且在整个毕业设计中给了我很大的鼓励。同时感谢答辩组对本毕业设计的考核,如果能够得到各位老师的认可将对我的学习和工作给予极大的鼓励。你们客观的评价和建议我将牢记在心,在今后的工作中扬长避短,更加努力的严格要求自己。同样感谢我的室友和同学们,在毕业设计的这一段时间,他们给了我极大的支持。大家相互学习,相互帮助,为毕业设计的顺利完成提供一个好的环境。另外,要感谢在大学期间所有传授我知识的老师们,正是你们的悉心教导,我才有可能拥有良好的专业课知识,这不仅是论文得以完成的基础,也是我今后在人生征途上不断前行的力量源泉。共52页第35页 参考文献[1][美]AndrewJ.BrustStephenForte.ProgrammingMicrosoftSQLServer2005.MicrosoftPress,2006.[2][英]JohnSharp.VisualC#2008stepbystep.MicrosoftPress,2009.[3]罗福强.C#程序设计经典教程.北京清华大学出版社,2012.[4]陈佛敏,潘春华,吕洋波.C#程序设计简明教程.北京:人民邮电出版社,2009.[5]戴小平.数据库系统及应用.合肥:中国科学技术大学出版社,2010.[6]周峰,王征,李永.C#典型模块开发.北京:中国铁道出版社,2009.[7]王小科,吕双.C#开发典型模块大全.北京:人民邮电出版社,2009.[8]丁士锋.C#典型模块与项目实战大全.北京:清华大学出版社,2012.共52页第35页 附录A部分源代码源代码1从串口读数据#region//串口定义privateStringBuilderbuilder=newStringBuilder();//避免在事件处理方法中反复的创建,定义到外面。delegatevoidSeriralportEvent(stringupdatatext);//定义委托SeriralportEventseriralportEvent;privatestring_portName;//串口名称privateint_portBaudRates;//波特率privateint_dataBits;//数据位privateParity_parity;//奇偶校验privateStopBits_stopBits;//停止位privateHandshake_Handshake;//握手协议privateSerialPortcom=newSerialPort();privatestringRecievDate;#region//从串口读数据richTextBox1.Text="";//清空测温仪数据try{if(serialPort1.IsOpen){serialPort1.DiscardInBuffer();serialPort1.DiscardOutBuffer();serialPort1.Close();}serialPort1.Open();//在ASCII码表中,十进制的2和3分别表示stx(正文开始)和etx(正文结束)//下面的字符串是向红外设备中写入的一条命令,意思是设备可以输出数据,//并且每行数据以rn结尾stringstrCmd=Convert.ToChar(2)+"RXX82"+Convert.ToChar(3)+"r"+"n";serialPort1.Write(strCmd);System.Threading.Thread.Sleep(1000);MessageBox.Show("连接成功,正在读取数据,请稍候。数据读取完毕,请点击自动输入横排温度按钮保存数据");}共52页第35页 源代码2生成数据顺序#region//将本次横排测温顺序数据输出到数组中intinitXuhao=1;//初始序号intbeginHuodao=32;//起始火道号intendHuodao=1;//结束火道号intnumHuodao=Convert.ToInt32(textBox2.Text);intshiXuhao=0;//燃烧室序号inti=1;//顺序数据编号intj=0;intchangeXuhao=1;//交换测序次数,最大值为2,即两次交换测温dataGridView1.Rows.Clear();//清空表格数据#regionif(comboBox33.Text=="从机侧立火道2开始"){initXuhao=2;}elseif(comboBox33.Text=="从机侧立火道1开始"){initXuhao=1;}elseif(comboBox33.Text=="从焦侧立火道32开始"){initXuhao=32;}elseif(comboBox33.Text=="从焦侧立火道31开始"){initXuhao=31;}#endregion原代码3绘制单排曲线图privatevoidbSeek_Click(objectsender,EventArgse){dt.Clear();//获取标准温度myoperate.GetStandardTemp(comboBox5.Text,refoperateinfo.standardMS,refoperateinfo.standardJS,refoperateinfo.JiejiaoTime);//清空chart1.ChartAreas.Clear();chart1.Legends.Clear();chart1.Series.Clear();共52页第35页 dataGridView1.Rows.Clear();textBox2.Text=textBox3.Text="";//从数据库横排温度表中读取数据填充表格stringsql="select火道号,温度from横排温度表where年份=""+comboBox2.Text+""and月份=""+comboBox1.Text+""and焦炉号like""+comboBox5.Text+"%"and燃烧室="+comboBox3.Text+"orderby火道号";myds=myoperate.getds(sql,"横排温度表");dt=myds.Tables["横排温度表"];for(inti=0;i=down&&ave<=up){count++;}}textBox2.Text=count.ToString();k=count/24.0;textBox3.Text=k.ToString("F2");}附录B英语翻译五千字英语翻译在另一份文档中共52页第35页'