计算机本科论文-铁路交通查询系统_第1页
计算机本科论文-铁路交通查询系统_第2页
计算机本科论文-铁路交通查询系统_第3页
计算机本科论文-铁路交通查询系统_第4页
计算机本科论文-铁路交通查询系统_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

铁路交通查询系统-PAGE1目录目录………1摘要……………………..4前言………5一、毕业设计任务来源……………5二、任务书…………5三、本课题的特点及意义…………6第一章系统的需求分析………………71.1系统的实际应用目标…………71.2系统的功能设计要求…………81.3数据流图………8第二章系统的可行性分析…………92.1系统可行性……92.2经济可行性……92.3操作可行性……92.4法律可行性……9第三章系统的总体设计………………103.1系统设计思想…………………103.2系统设计方法…………………113.3系统结构框图…………………123.4系统流程图……12第四章系统的详细设计………………134.1E-R图…………144.2本系统的数据库设计…………144.2.1数据库开发简介…………154.2.2使用ACCESS创建所需数据库…………164.3系统主要模块流程图…………184.4各窗体介绍……20第五章系统的程序设计………………285.1开发工具平台VB6.0简介……285.2主要编码说明…………………30第六章系统的维护与调试……………336.1运行环境………346.2调试过程………356.3调试心得………35第七章展望……………367.1应用前景………367.2发展前景………36结束语…………………37致谢……………………38附录A:源程序代码…………………39参考文献………………67摘要这是一本关于铁路交通查询系统的完整设计论文,其应用软件的开发主要包括前端应用程序的开发以及后台数据库的建立和维护两个方面。对于前者,要求应用程序功能完备,易使用等特点;对于后者,则要求建立起数据一致性和完整性强、数据安全性好的数据库。经过全方面考虑,决定采用面向对象的可视化编程语言MicrosoftVisualBasic6.0对其进行开发、设计。本论文包括在系统开发前期对系统的需求分析、可行性分析、总体设计和模块设计,以及实现阶段系统的完整源程序代码。在后台设计过程中,数据库采用Access2000存储和管理数据;在对数据库进行访问时,系统采用ADO技术,使用数据集控件ADO来连接数据库,同时采用大量VB语言中嵌套SQL语言来完成一些特定功能。在界面设计中,采用一个多文档窗体集中管理,多个单文档仅供调用,实现分支功能的模式来达到类似IDE效果的集中操作。本查询系统并非只能使用在铁路这个特定的企业,它系一个通用的查询管理系统,适用于任何公司及企事业单位的信息管理,完成信息管理相关的功能,如:查询,增加数据,删除数据,修改数据等等。只要对数据库及各窗体代码进行修改即能实现。本查询管理系统功能相对完善,界面友好,操作简单,不乏是一个信息管理人员进行查询系统管理的首选系统。关键字:VB6.0;ADO;SQL;多文档;模块前言任务来源:在当今信息飞速发展的时代,使用计算机作为一种认识世界的手段已经是无可厚非的事实,电脑正逐步地成为必备家用电器队伍中的一员。作为21世纪的大学生,尤其作为计算机科学专业的学生,仅仅只会应用计算机是远远不够的。世界要求进步,时代要求进步,没有创新就没有发展,因此,在学会应用计算机之后,还必须能够编程,即开发各种应用软件,这样技术才能不断进步,人们改造自然的能力才能不断提高。由此,计算机专业的特点要求了学生的操作能力和理论知识应该齐头并进。而检验学生是否能合格的从大学毕业,最全面最适宜的方法就是让学生做毕业设计——做出一个完整的能独立成功运行的应用系统。而我们自己也在做毕业设计的过程中温故总结以前学过的相关知识,将所学应用于实践,提高电脑操作和编程的能力,并认识自己的不足以明确今后的学习和努力的方向。有了这一次真枪实弹的演习,我们对以后的工作充满信心!作为一名计算机专业的毕业生,我根据自己的兴趣和需要,选择了铁路交通查询系统这一毕业设计课题。二、任务书:铁路交通查询系统的主要任务是用计算机对铁路交通时刻、价格信息进行日常的管理,如查询、数据维护等。针对系统服务对象的具体要求,设计了本信息查询系统。此系统主要有以下几点要求:(1)对每个登录的用户进行管理,设置每个用户的操作权限,以避免意外或故意的信息损坏。(2)实现各交通数据信息表进行的查询功能,力图做到使查询条件不是某个确定的查询条件而定,而是面向用户需求而定。(3)实现各交通数据信息表的修改、删除、刷新、添加等维护功能,使得系统更易于管理。(4)用户界面友好、清晰,易学易用,易于维护;安全性好;尽量减少手工重复输入。三、本课题的特点及意义:本信息查询系统是面向现实需求的一个实用系统,特点之一是在开发VisualBasic中嵌套SQL语言(Select,Update,Delete等);之二是系统界面友好,简单易用,功能通用;之三是实现通用查询,查询条件不是某个确定的查询条件,而是面向用户需求而定;之四是用了一个多文档窗体集中管理,其余用单文档窗体仅供调用。本课题能直接应用于铁路交通查询系统,并能通过加以修改和完善的方式普遍适用于其他所有信息管理系统。通过从事本课题的开发和研究,能使人进一步了解面向对象语言的优点,进一步熟悉和掌握Basic语言的编程方法和思想精髓,由此对计算机编程有了更深入的认识,也能够在以后的工作中得心应手。第一章系统需求分析1.1系统的实际应用目标因为全国有成百上千的火车车次,所以乘客在去他想要去的地方时,常常为查找要坐哪趟车伤脑筋。看着厚厚一本密密麻麻的车次时刻表时觉得头昏眼花,并且经常漏掉所要找的信息。这样有些乘客多走了冤枉路,浪费了时间和金钱。为解决许多乘客所遇到的这种问题,也为减少不必要的损失,一个关于铁路交通查询的系统便呼之欲出。此系统要求实现涵盖所有铁路交通时刻表的信息,将这些信息进行集中管理,用程序语句实现全面、快捷、方便的查询。这样,如果乘客想要查询各个站点的车次信息,以及所有车次的详细信息时就能使用铁路交通查询系统轻松、准确获取所需信息。1.2系统的功能设计要求本铁路交通查询系统的主要功能要求分为大类:对用户的管理和对铁路交通信息的管理。其中涉及的模块有:权限管理对用户信息和交通信息分别设计操作模块,可以对其进行分别的添加、修改和删除操作。设置用户的权限,只有系统管理员才可以修改数据库的内容,包括用户表和交通数据信息表的内容,这样以避免数据的丢失或故意破坏。本系统所采用的方法是:使用0和1决定用户的访问权,1表示系统管理员,可以对数据库加以修改;0代表一般用户,只能查询,而不能修改各个表。二、查询模块说明通过使用SELECT语言访问数据库,查出需要得到的数据,赋给连接数据库的ADO控件,然后刷新MSHFlexGrid,使其显示所要查询的内容。这样以实现查询功能。三、数据维护模块说明使用SQL语句,如UPDATE、ADDNEW和DELETE语句,完成对数据库里信息的更新、添加和删除等维护工作。并且,为提高系统的安全性,在修改交通数据信息时,如果确定了修改的内容,必须在选择“保存”后方能修改原始数据库中的内容。四、打印模块说明在工程里引用Excel,将查询的结果(MSHFLexGrid所显示的内容)传送给Excel,通过使用Excel的打印功能将查询所得信息打印出来。1.3数据流图时刻表、价格表数据库录入信息时刻表、价格表数据库录入信息维护维护第二章系统可行性分析2.1

技术可行性硬件要求:主要配置为CPU(P42G以上),内存(128M以上),显卡(64M),以及大容量硬盘(40G以上)等。软件要求:系统采用VisualBasic和Access开发,用VisualBasic制作系统的应用程序界面,Access制作后台数据库,两者结合完成系统功能,可运行在Windows系列的操作系统之上。因为在开发过程中,有经验丰富的老师指导,有许多热心的同学讨论,所以在人员素质和技术上有一定保证。2.2经济可行性本系统开发的整个阶段都由校计算机中心提供所有硬件设备,并且无须支付劳动者所谓的劳动报酬,所以基本上不需要大量花费。2.3操作可行性本系统运行在通用的Windows系列操作系统上,具有Windows相似的操作界面,具有简单易学,使用方便等特点,由于进行本系统开发的人员都有理论基础并且熟悉计算机应用和语言,所以不需要再经专门的培训。2.4法律可行性本系统只是大学生的毕业设计课题,并不会直接应用于社会中,所以不可能与外面的应用系统发生专利权的冲突。所以这一点无需顾忌。第三章系统总体设计3.1系统设计思想根据设计思想,本铁路交通查询系统要求原始数据库保持相对稳定,无较大的变动,但是也必须能够修改数据库内各表的内容。针对本系统的特点,在设计时尽量保持原数据库不便,在更改时必须对原数据库进行初始化处理。3.2设计方法本系统是采用面向对象的程序设计思想进行编制的。整个系统有若干个窗体(包括一个MDI窗体,12个普通窗体),表,工具栏,状态栏及主菜单组成,由MDI窗体统一管理。用户可以通过主菜单或工具栏调用系统的各项功能。系统采用与其他系统开发人员开发系统时所采用设计方法相似,即:模块化设计。此设计化方法简化了系统设计的复杂度,降低开发系统的难度,让系统开发人员进一步明确系统的功能,从而各个击破,进行详细的开发。3.3系统结构框图在设计时,按照实际的要求把系统划分为初始化,数据管理,查询,退出等相互独立的功能的模块,以实现对铁路交通信息系统的控制,其系统结构如下页图所示。铁路交通查询系统铁路交通查询系统铁路交通信息块用户信息块铁路交通信息块用户信息块数据处理查询数据处理初始化初始化数据处理查询数据处理初始化初始化打印打印3.5系统流程图(如下页图所示)登录登录为管理员检验权限为管理员检验权限进入系统进入系统是修改密码信息查询修改密码信息查询否编辑数据库各表信息编辑数据库各表信息退出系统退出系统是退出系统退出系统第四章系统详细设计4.1E-R图权限权限用户名密码用户用户名密码用户车次一对多所经站点车次车型车次一对多所经站点车次车型出站时间站序起点站出站时间站序起点站列车终点站时刻列车终点站时刻进站时间到达时间进站时间到达时间自起点处公里行程起始时间自起点处公里行程起始时间车型车型空调价格空调价格价格价格行程下限行程上限行程下限行程上限用户(用户名,密码,权限)时刻(车次,车型,起点站,起始时间,终点站,达到时间,行程)列车(车次,站序,所经站点,进站时间,出站时间,自起点处公里)价格(车型,空调,行程下限,行程上限,价格)4.2本系统的数据库设计4.2.1数据库开发简介数据库就是以一定的组织方式,将相关的数据组织在一起,存放在计算机的存储器上,并能为多个用户共享的,与应用程序彼此独立的一组相关数据的集合,是数据库系统的核心和管理对象。数据库系统(databasesystem)是指使用数据库技术统一管理、操纵和维护数据资源的整个计算机系统。它是由计算机的硬件、软件、数据和人员4个部分组成的。MicrosoftAccess2000是Microsoft公司20世纪90年代推出的数据库管理系统软件,是MicrosoftOffice2000系列的一个重要组成部分。它有很强的通用性、实用性、集成性和网络性。MicrosoftAccess2000以其强大的交互性和通用性,已经成为当今广为流行的关系数据库管理软件,并有众多用户。MicrosoftAccess2000数据库管理系统有全新的数据库界面;能实现不同版本的数据库共享;数据库对象设计简捷方便;关闭时压缩数据库;名称自动更正;有示范数据库;有子数据表;允许创建能同万维网(Web)数据进行交互的“数据访问页”;不仅自身有强大的数据库管理能力,而且实现与Office其他应用程序的数据传递;它还能与SQLServer协同工作,使Access高级用户和开发人员更容易将数据库知识扩展到客户/服务器环境下。在Access中,设计一个合理的数据库,最主要是设计合理的表以及表间关系。作为数据库基础数据源,它是创建一个能够有效地、准确地、快捷地完成数据库具有的所有功能的基础。要做到这一点,首先要实现关系模型的规范化,力图建立参照完整性。数据库一般的设计方法步骤是:1、需求分析;2、建立数据库中的表;3、确定表的主关键字段;4、确定表间的关联关系;5、创建其他数据库对象。查询是专门用来进行数据检索以及数据加工的一种重要的数据库对象。查询是通过从一个或多个表中提取数据创建而成的,查询结果可以作为其他数据库对象数据的来源。查询的记录集实际上并不存在,基于这一点,查询的结果总是与数据源中的数据保持同步。在Access中,主要有选择查询、参数查询、交叉表查询、动作查询及SQL查询这几种方法。由于本系统使用的是SQL建立查询,下面重点介绍一下这种查询。SQL(StructuredQueryLanguage)是简捷易学的关系数据库语言,它是集数据定义、查询、操纵和控制功能于一体的结构化语言,其大多数语句都是独立执行并完成一个特定的操作语句。SQL能够创建数据定义查询、选择查询及动作查询,他们都是通过创建SQL语句,再运行SQL查询,进而创建不同的查询结果的。使用SQL创建选择查询使用的是SELECT语句,其格式为:SELECT[ALL|DEISTINCT]<字段名1>[,<字段名2>……]FROM<数据源表或查询>[INNERJOIN<数据源表或查询>ON<条件表达式>][WHERE<条件表达式>][GROUPBY<分组字段名>[HAVING<条件表达式>]][ORDERBY<排序选项>[ASC][DESC]]4.2.2使用ACCESS建立所需数据库数据库是多个表和视图的集合,创建数据库后,下一步要做的就是构造新表(DBF文件),本信息查询系统主要做到以下几个表:用户表用户表存储所有用户的资料,即用户名,密码,权限。用户名和密码确定是否能进入系统,而权限决定了每一个用户的操作范围,只有权限字段文本值为1的用户能够进入数据库修改数据,权限为0者则不行。用户表的有关信息如图所示:字段字段名称类型长度索引NULL1用户名文本50有(无重复)否2密码文本50无否3权限文本1无否时刻表时刻表存储每一趟车的时刻信息。其有关信息如下所示:字段字段名称类型长度索引NULL1车次文本10有(无重复)否2车型文本2无否3起点站文本10无否4起始时间文本10无否5终点站文本10无否6到达时间文本10无否7行程文本10无否具体内容表具体内容表存储每一次车的详尽信息,如每一个所到站点等。其相关信息如下所示:字段字段名称类型长度索引NULL1编码文本50有(无重复)否2车次文本5无否3站序文本5无否4所经站点文本5无否5进站时间文本10无否6出站时间文本10无否7自起点处公里文本10无否价格表价格表存储任何行程的价格。相关信息如下所示:字段字段名称类型长度索引NULL1编码文本50有(无重复)否2车型文本2无否3空调文本2无否4行程下限文本10无否5行程上限文本10无否6价格文本5无否注:以上所有表都存储在一个数据库中,其路径名是:D:\wmh\db1.mdb在数据库实际设计过程中,当建了一个数据库后再建表时,直接点击工具栏上的“新建”按扭,在弹出的对话框中选择所要建立的表的性质后,会自动弹出一个空表,此后,可以在表中输入数据,关闭时系统会自动提示“是否需要保存此表?”,按“是”按扭,就能成功保存此表。4.3系统主要模块流程图登录部分:输入信息输入信息检验用户名检验用户名存在存在否否是检验密码检验密码提示错误提示错误正确否正确次数>5次数>5是进入系统是进入系统退出系统退出系统查询部分:进入查询系统进入查询系统输入信息否输入信息显示所有沿途站点显示所有沿途站点粗略粗略查询只查询车次是是只查询车次只显示起点和终点只显示起点和终点否显示两站之间的车次只查询站点是显示两站之间的车次只查询站点否同时查询车次和站点同时查询车次和站点显示此车次本站点的信息是显示此车次本站点的信息否查询价格是查询价格显示所需价格信息显示所需价格信息否退出查询否退出查询是退出退出4.4介绍各窗体按照窗体在运行中的先后顺序,介绍窗体如下:frmlogin(frmlogin.frm)本窗体主要是为了提高系统安全性而设计的,为防止非法人员进入该铁路交通查询系统。该界面说明了登陆时应输入的帐号,密码。另外,数据库通过对用户名的核查以后确定该用户的操作权限,以此避免失误或故意的数据破坏。(2)MDIForm1(FRMMAIN.FRM)该窗体由一个菜单栏,一个工具栏,一个Imagelist,一个Treeview构成。此窗体是运行时的主窗体,集中管理各个子窗体,拥有所有其他窗体的连接按钮。(3)frmAbout(frmAbout.frm)此窗体由四个label,两个CommandButton,一个PictureBox组成。点击“添加窗体”按钮,选择“关于‘对话框’”选项,系统会自动生成一个对话框。而后修改Label的“Caption”属性就能改变窗体要显示的内容。(4)frmTip(frmTip.frm)该窗体主要介绍该系统的设计者的信息,以及在使用时该注意的事项。(5)密码修改(xgmm.frm)此窗体专为想要修改其自身密码的用户使用。(6)frmSearch(frmSearch.frm)此窗体由五个Label,三个Frame,三个TextBox,三个CommandButton,两个ComboBox,两个OptionButton,一个MSHFlexGrid组成。窗体完成所有查询功能,包括对铁路交通信息的车次查询,具体信息查询和价格查询。(7)用户信息编辑(manageuser.frm)此窗体由三个CommandButton,两个TextBox,两个OptionButton,一个Frame,一个MSHFlexGrid组成。其完成对用户的管理功能,包括对用户的添加,删除,以及对所有用户的权限设置。(8)时刻表编辑(managetrain.frm)该窗体完成对时刻表的编辑功能,包括对表的添加、删除和刷新的操作。(9)Form2(Form2.frm)此窗体由七个Label,四个TextBox,两个CommandButton,一个Frame,一个ComboBox组成。该窗体的功能是实现对时刻表的修改过程。由于不希望在修改时重复不必要的输入,所以在要修改时刻表的任何一行信息时,只需在时刻表编辑窗体中选择它,然后点击其中的“修改”按钮,这时,Form2窗体就会弹出,显示出所有被选中的那行信息的内容。修改需要修改的信息,然后点击“保存”,这样就完成修改过程。(10)具体内容编辑(managesimtrain.frm)该窗体由五个CommandButton,五个TextBox,一个MSHFlexGrid,一个ComboBox,一个ADO控件构成。该窗体实现对表simpletrain的添加、删除和刷新操作。(11)Form1(Form1.frm)该窗体由七个Label,两个CommandButton,一个ComboBox,一个Frame组成。该窗体主要实现对表simpletrain的修改功能。它与Form1相同,也减少不必要的重复输入。(12)价格表编辑(manageprice.frm)此窗体由五个CommandButton,五个Label,三个TextBox,两个ComboBox,一个MSHFlexGrid,一个Frame组成。该窗体主要完成对表trainprice的编辑,即添加,删除和刷新工作。(13)Form3(Form3.frm)该窗体由五个Label,两个ComboBox,两个CommandButton,一个Frame构成。实现对表trainprice的修改过程。此窗体和Form1、Form2一样,没有重复烦琐的输入过程。第五章系统程序设计5.1开发工具平台VB6.0简介VisualBasic是在Windows平台上大众化的程序开发工具,VisualBasic6.0是Microsoft公司最新推出的32位Windows开发工具,是面向对象的可视化的编程语言和Windows程序开发工具。Basic是指BASIC(BeginnersAll-purposeSymbolicInstructionCode初学者通用符号指令代码),具有面向普通使用者,易学易用的优点。目前Basic语言是拥有用户最多的计算机语言。Visual的英文原意是“可视的”,“视觉的”。在这里是指开发图形用户界面(GUI)的方法,即“可视化程序设计”。对于初者希望在Windows环境下开发一般的应用程序,VB无疑是最理想的。使用VB不仅可以感受到Windows带来新技术,新概念和新方法,而且VB是目前众多Windows软件开发工具中效率最高的一个。另外,VB系列产品得到了计算机工业界的承认,得到了许多软件开发商的大力支持,甚至在ORACLE的最新的产品中也提供对VB支持,从而使其成为一种事实上的标准。VisualBasic6.0中文版适用于Windows95和WindowsNT及其以上平台,它功能强大,方便快捷。使用VisualBasic6.0中文版可以开发通信、数据库、多媒体、动画制作、Internet与Intranet应用以及普通的Windows应用程序。它具有智能化的操作界面、执行效率高、控件制作强大等特点,这样就大大简化了Windows应用程序的编写过程。VB6的语言特点是:1、用户可定义的参数或返回值类型;2、函数返回值可以为数组;3、可对可变的数组进行复制;4、创建文件系统对象;5、用程序名进行程序调用;6、创建对象函数的功能增强;7、字符串转换函数功能增强,提供一些新的字符串函数。另外,VB6的数据存储功能很强:ADO(ActiveXDataObject)ActiveX数据对象,提供ADO数据环境和数据控件,允许建立与操纵可视化ADO连接和命令,数据绑定功能强。另外,VB6还支持OLE数据库和可视化数据集成。VB6共有三种版本,“学习版”、“专业版”和“企业版”,其中标准版主要是为初学者了解基于Windows的应用程序开发而设计的;专业版主要是为专业人员创建客户/服务器应用程序而设计的;企业版则是为创建更高级的分布式,高性能的客户/服务器或Internet/Intranet上的应用程序的。这样使得VB6.0可以满足不同层次的开发者和用户的需要。为了匹配微软本身在Web上大力倡导的ActiveX新标准,VB6理所当然的成为针对此标准所推出的程序开发工具,把Internet及Intranet应用的设计作为其重点内容之一。VB6使用“工程”来管理创建应用成组的所有文件,工程中的所有部件连同程序代码被汇集在一起,便可以编译工程,进而生成一个可执行文件,这就是应用程序。在VB6的集成环境中,当程序员下达运行程序的命令后,VB6就会自动将程序编译成二进制(即起码),再由计算机去运行这个程序,借以进行应用程序的测试及调试工作。VB6提供了多种文件类型,不仅提供标准EXE文件格式,而且提供ActiveX文件格式,且其ActiveX控件的开发能力也是VB6应用程序的设计者成为Internet相关设计的一员。VB6的程序代码由语句、常量和声明等部分组成。使用复制语句可以在程序运行中改变对象的属性和变量的值,其用法格式是:对象属性变量=表达式。VB6种有多种类型的变量供灵活选择使用,VB6应用程序设计对于变量的是拥有其特定的原则,需要程序员去遵循,这些原则主要表现在变量的命名规则和变量存放的数据类型这两个基本概念的建立变量的作用范围确定了那部分的程序代码能识别和使用这个变量,超过这个范围的程序代码则无法识别和使用这个变量。在一个过程内部声明的变量,只有这个过程内部的程序代码才能访问或改变那个变量的值。5.2主要编码说明a)查询模块编码:PrivateSubCmd查询_Click()DimstrAsStringSetmyrec=NewADODB.RecordsetIfText1.Text<>""AndText2.Text=""AndText3.Text=""AndText4.Text=""'若查询车次的文本框不为空,其他为空Then'若为粗略查询,则查时刻表IfOption3.Value=TrueThenSQL="select*from时刻表where车次='"&Trim(Text1.Text)&"'"'调用名叫cida的函数Callcidamyrec.OpenSQL,mycon,adOpenDynamic,adLockOptimistic,adCmdText'调用名叫inigrid的函数Callinigridmyrec.CloseEndIf'若为详细查询,则查具体信息表IfOption4.Value=TrueThenSQL="select*fromsimpletrainwhere车次='"&Trim(Text1.Text)&"'"CallcidaCallinigridEndIfEndIf'若站点的一个文本框不为空,其他皆空IfText2.Text<>""AndText1.Text=""AndText3.Text=""AndText4.Text=""ThenCallinigrid'则显示所有包含此站点的交通信息SQL="select*fromsimpletrainwhere所经站点='"&Trim(Text2.Text)&"'"CallcidaCallinigridEndIf'若车次文本框和一个站点文本框不为空,其他均空IfText1.Text<>""AndText2.Text<>""AndText4.Text=""Then'则显示所输入车次的所经这一站点的信息SQL="select*fromsimpletrainwhere车次='"&Trim(Text1.Text)&"'and所经站点='"&Trim(Text2.Text)&"'"CallcidaCallinigridEndIf'若两个站点文本框都不空,其他皆空IfText2.Text<>""AndText4.Text<>""AndText1.Text=""AndText3.Text=""Then'显示从一站点到达令一站点的途径SQL="select车次from时刻表where起点站='"&Trim(Text2.Text)&"'and终点站='"&Trim(Text4.Text)&"'"CallcidaCallinigridEndIf'若查询价格栏的所有输入信息框不为空,其他均空IfText3.Text<>""AndCombo1.Text<>""AndCombo2.Text<>""AndText1.Text=""AndText2.Text=""AndText4.Text=""Then'显示所要查询的价格信息SQL="select*fromtrainpricewhere空调='"&Trim(Combo2.Text)&"'and车型='"&Trim(Combo1.Text)&"'and行程下限<"&CInt(Trim(Text3.Text))&"and行程上限>"&CInt(Trim(Text3.Text))&""myrec.OpenSQL,mycon,adOpenDynamic,adLockOptimistic,adCmdTextCallcidaCallinigridEndIfEndSub'被调用的inigrid函数Subinigrid()frmSearch.Adodc1.RecordSource=SQLfrmSearch.Adodc1.RefreshSetfrmSearch.MSHFlexGrid1.DataSource=frmSearch.Adodc1frmSearch.MSHFlexGrid1.RefreshEndSub'被调用的cida函数Subcida()frmSearch.Adodc1.LockType=adLockReadOnlyfrmSearch.Adodc1.CommandType=adCmdTextfrmSearch.Adodc1.CursorType=adOpenDynamicfrmSearch.Adodc1.RecordSource=SQLEndSubb)打印模块编码:PrivateSubCmd打印_Click()'定义变量DimiAsIntegerDimjAsIntegerDimx1appAsExcel.ApplicationDimx1bookAsExcel.WorkbookDimx1sheetAsExcel.Worksheet'引用ExcelSetx1app=CreateObject("excel.application")x1app.Visible=TrueSetx1book=x1app.Workbooks.AddSetx1sheet=x1book.Worksheets(1)'读入行信息Fori=0ToMSHFlexGrid1.Rows-1MSHFlexGrid1.Row=IForj=0ToMSHFlexGrid1.Cols-1MSHFlexGrid1.Col=jIfIsNull(MSHFlexGrid1.Text)=FalseThenx1sheet.Cells(i+1,j+1)=MSHFlexGrid1.TextEndIfNextjNextISetxlsheet=NothingSetxlbook=NothingSetxlapp=Nothing'将表格里内容输出到excel文件里,实现打印EndSub第六章维护与调试6.1运行环境1、硬件:CPU:Cyrix6x86MX处理器;内存:40M硬盘:40G;CD-ROM:42XBMicrosoftMouse或兼容设备声卡:ESS688AudioDrive显示适配器:S3Trio64V2-DX/GX(775/785)2、软件:操作系统:MicrosoftWindows2000ServerFamily开发语言:面向对象的可视化语言MicrosoftVisualBasic6.0中文版3、网络:本系统是在个人计算机上开发的,没有涉及到网络方面的内容。若要实现网络共享,须根据VB的安装提示逐步操作即可。6.2调试过程程序设计编码工作完成之后,为了确保系统的正确性和严密性,系统在交给用户使用之前必须进行一系列的调试与维护测试。我在测试、调试过程中确实发现了一些问题,经过一段时间的调试与修改,程序终于达到了总体设计的要求。具体测试大致可分为以下几个方面:①数据的合法性。如:判断数据值可不可以为空,数据类型是否符合定义。②程序的容错性。输入非法的数值时,程序是否能根据各表中的关键字判断输入值合法与否,同时检验有没有相应的提示或出错警告。③人、机交互性。在查询相关信息时,对并不认可的查询方法进行提示,并要求用户重新输入。6.3调试心得在系统的整个开发过程中,我体会最深的就是调试工作的艰辛。调试,作为系统开发的一个至关重要的环节,要求调试人员必须有足够的知识水平和耐心。因为在调试时很有可能出现运行了无数次还不能解决问题的情况,系统总提示形形色色的错误,如提示“找不到对象”、“数据类型不匹配”,等等。这就需要调试工作者必须耐心地逐一检查,利用所学程序设计的知识一一核查,检查错误之后,改正,方可能成功。我这里说“可能”,是因为有时你经过反复的核查后还不能检查出错误。比如,有时仅仅因为If缺少了EndIf,或者Select没有EndSelect与之相对应,程序就无法正常运行。可是这样的错误很容易被忽略,尤其是有多重选择的时候。我在调试时也少不了遇到类似情况,刚开始时我焦急万分,因为实在检查不出错误,后来在一次次地修改源程序后还是不成功,我就开始想放弃了。但是有了问题必须得解决,我就先让自己放松一下,一段时间内尽量不去想任何关于程序的问题;等脑子清醒后再又投入学习中去;若再检查不出来就请教熟悉编程的同学,或者请指导老师予以帮助。就是这样,我才得以克服一个又一个困难,最终取得初步胜利。例如,在设计查询模块的源程序时,我在刚开始运行时先就出现了“找不到对象”的错误提示,分析了一下原因我认为是ADO控件的连接出了问题,在修改控件的属性之后,仍出现了问题,这时我就怀疑是程序出了问题。在检查程序代码时,我一句一句地思考,但是在接下来修改了几次后仍不能运行,没办法,只好歇息一下。第二天我重新找错误,结果最后发现是几个关键的定义漏了。在再次修改后,程序最终能够运行。接着就是每一个查询功能的运行,在此期间,出现了很多问题,比如让程序自身比较两个数值的大小,先是怎么也不能正确判断数值所处的区间,纠其原因,原来是文本类型的数值不能使系统准确判断大小,只好重新定义数字类型。就是这样一步一步调试、检查,再调试、再检查……最后,问题逐一解决!第七章展望7.1应用前景由于本交通查询系统是一个通用的信息查询系统,并不是专门为某一特定的部门或者企事业单位开发的,故可以适合于任何公司部门的信息查询和管理。本系统虽然简单,但通用,易用,界面友好,安全性高。在对信息管理的同时也对用户进行管理。7.2发展前景在今后的实践和应用中发现该系统的不足,并加以完善,尽最大可能完整实现该系统的查询功能,实现真正的面向用户,即切实实际地做到查询条件表示某个确定的查询条件而定,而是面向用户的需求而定。另外,网络目前已成为广为流行的一种获得信息的手段和方法,若要实现信息的共享,最便捷的方法就是将自己的信息发布到Internet上,以供别人参考和借鉴。所以,此类系统的发展前景就是将其本身发布到网络世界以实现资源共享。结束语经过四个多月的辛勤设计和开发,铁路交通查询系统基本开发完毕。其功能基本符合要求,能够完成并实对现各个表数据的存储和查询,以及各类相关信息的打印。同时,还提供了系统维护功能,使用户能够方便地进行数据备份、恢复、删除和修改。另外,程序也有效地解决了数据的一致性的问题。但是,经过进一步的分析与思考,本铁路交通查询系统还存在着以下问题:由于在设计时考虑地欠全面,查询块的功能并非十分完善,比如要实现对从一个站点到另一个站点,而这两个站点并非起点站和终点站时,可以乘什么车次的车的问题,这当中有可能要牵连到“换乘”的问题,换乘又牵连到时间以及天数的问题,这样就要涉及到数据结构中最短路径的思想……要周全考虑所有的查询要求并对其实现,需要有很精确的思路和扎实的理论概念和基础,进行更进一步的研究和开发。鸣谢首先,我要感谢我的指导老师——陈学进老师,他在我做毕业设计的过程中起了举足轻重的作用。一开始,陈老师给我们列出《毕业设计指导书》和《毕业设计论文编写大纲》,宏观安排好各个时间段所要做的工作,要求我们尽量按照所要求的进程完成。虽然陈老师工作忙,但在繁忙之余他总不忘关心我们的设计进度。每隔一段时间,老师会询问我们做的怎样,有没有什么困难。若有疑问,不论问题大小和难易,老师都耐心解答,这样使我没有一点紧张的情绪,交流时气氛也特别的轻松。我得感谢所有授予我知识的老师,正是点滴知识的积累,我才有了自学和学以致用的本领,才能够完成毕业设计。另外,我还要感谢校计算机中心的值班老师,他们尽最大可能保持机房的开放(甚至没有周末),以让我们有充足的时间做毕业设计。他们是如此辛苦却没有一句怨言!我还要感谢所有同学,正是大家一起创造了良好的学习氛围,发扬了互相帮助、乐于助人的精神,在别人遇到困难时乐心予以帮助,才使得我在学习的过程中积极向上,充满信心。在整整一学期的做毕业设计的过程中,我了解到VB等面向对象编程技术的优点,熟悉了Basic语言。我亦学会应用VB的基本和主要的控件,将编程的思路和开发系统的方法全面提高,以至能独立完成一般信息管理系统的开发执行过程。有了这次实践经历,我能在今后的系统开发中驾轻就熟,也使我们能更有自信面对今后的学习和工作。我由衷的感谢所有予以我帮助的人,谢谢!附录:源程序代码(a)login窗体代码:DimmyconAsADODB.ConnectionDimmystrAsStringDimmyrecAsADODB.RecordsetDimstrAsStringDimSQLAsStringOptionExplicitDimsisAsIntegerPublicLoginSucceededAsBooleanPrivateSubcmdCancel_Click()LoginSucceeded=FalseUnloadMeEndEndSubPrivateSubcmdOK_Click()Setmyrec=NewADODB.RecordsetSQL="select*from用户表where用户名='"&Trim(txtUserName.Text)&"'and密码='"&Trim(txtPassword.Text)&"'"myrec.OpenSQL,mycon,adOpenDynamic,adLockBatchOptimistic,adCmdTextIfmyrec.BOFAndmyrec.EOFThenmyrec.CloseMsgBox"用户名或密码有误,请重新输入!",vbCriticalsis=sis+1Ifsis>=5ThenUnloadfrmloginExitSubElseIftxtPassword.Text=myrec.Fields("密码").ValueThenIfmyrec.Fields("权限")=1ThenUnloadfrmloginMDIForm1.ShowEndIfIfmyrec.Fields("权限")=0ThenUnloadfrmloginMDIForm1.ShowMDIForm1.manage.Enabled=FalseMDIForm1.Toolbar1.Buttons(3).Enabled=FalseMDIForm1.Toolbar1.Buttons(4).Enabled=FalseMDIForm1.a.Enabled=FalseMDIForm1.b.Enabled=FalseMDIForm1.c.Enabled=FalseMDIForm1.yh.Enabled=FalseMDIForm1.TreeView1.Enabled=FalseEndIfEndIfmyrec.CloseEndIfEndSubPrivateSubForm_Load()Setmycon=NewADODB.Connectionstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\wmh\db1.mdb;PersistSecurityInfo=False"mycon.OpenstrEndSubPrivateSubTimer1_Timer()Staticii=i+1Image1.Picture=ImageList1.ListImages(i).PictureIfi=8Theni=1-1EndIfEndSubPrivateSubTimer2_Timer()Label1.Left=Label1.Left-50IfLabel1.Left<-Label1.WidthThenEndIfEndSubPrivateSubtxtPassword_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThencmdOK.SetFocusEndIfEndSubPrivateSubtxtUserName_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThentxtPassword.SetFocusEndIfEndSub(b)MDIForm1窗体代码:PrivateSuba_Click()时刻表编辑.ShowEndSubPrivateSubabout_Click()frmAbout.ShowEndSubPrivateSubb_Click()具体内容编辑.ShowEndSubPrivateSubc_Click()价格表编辑.ShowEndSubPrivateSubexit_Click()IfMsgBox("是否退出此系统?",vbYesNo+vbCritical,"系统")=vbYesThenEndEndIfEndSubPrivateSubfind_Click()frmSearch.ShowEndSubPrivateSublogin_Click()frmlogin.ShowEndSubPrivateSubMDIForm_Activate()TreeView1.Width=Picture1.ScaleWidthTreeView1.Height=Picture1.ScaleHeightTreeView1.Left=0EndSubPrivateSubMDIForm_Load()DimSysNodeAsNodeSetSysNode=TreeView1.Nodes.Add(,,"SysFunc","铁路交通查询系统",1)SysNode.Expanded=TrueSetSysNode=TreeView1.Nodes.Add("SysFunc",tvwChild,"yhgl","用户管理",2)SetSysNode=TreeView1.Nodes.Add("yhgl",tvwChild,"edityh","用户信息编辑",4)SetSysNode=TreeView1.Nodes.Add("SysFunc",tvwChild,"jtgl","交通管理",2)SetSysNode=TreeView1.Nodes.Add("jtgl",tvwChild,"searchsj","交通信息查询",3)SetSysNode=TreeView1.Nodes.Add("jtgl",tvwChild,"editsk","时刻表编辑",4)SetSysNode=TreeView1.Nodes.Add("jtgl",tvwChild,"editjt","具体内容编辑",4)SetSysNode=TreeView1.Nodes.Add("jtgl",tvwChild,"editjg","价格表编辑",4)SetSysNode=TreeView1.Nodes.Add("SysFunc",tvwChild,"tc","退出系统",5)EndSubPrivateSubMDIForm_Unload(CancelAsInteger)OnErrorResumeNextUnloadfrmTipEndSubPrivateSubPicture1_Resize()TreeView1.Width=Picture1.ScaleWidthTreeView1.Height=Picture1.ScaleHeightTreeView1.Left=0EndSubPrivateSubtip_Click()SaveSettingApp.EXEName,"Options","在启动时显示提示",1frmTip.ShowEndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase"b":find_ClickCase"c":xgmm_ClickCase"d":yh_ClickCase"e":a_ClickCase"f":frmTip.ShowEndSelectEndSubPrivateSubTreeView1_NodeClick(ByValNodeAsMSComctlLib.Node)SelectCaseNodeCase"用户信息编辑":yh_ClickCase"交通信息查询":find_ClickCase"时刻表编辑":a_ClickCase"具体内容编辑":b_ClickCase"价格表编辑":c_ClickCase"退出系统":exit_ClickEndSelectEndSubPrivateSubxgmm_Click()密码修改.ShowEndSubPrivateSubyh_Click()用户信息编辑.ShowEndSub(c)About窗体代码:OptionExplicit'注册表关键字安全选项...ConstREAD_CONTROL=&H20000ConstKEY_QUERY_VALUE=&H1ConstKEY_SET_VALUE=&H2ConstKEY_CREATE_SUB_KEY=&H4ConstKEY_ENUMERATE_SUB_KEYS=&H8ConstKEY_NOTIFY=&H10ConstKEY_CREATE_LINK=&H20ConstKEY_ALL_ACCESS=KEY_QUERY_VALUE+KEY_SET_VALUE+_KEY_CREATE_SUB_KEY+KEY_ENUMERATE_SUB_KEYS+_KEY_NOTIFY+KEY_CREATE_LINK+READ_CONTROL'注册表关键字ROOT类型...ConstHKEY_LOCAL_MACHINE=&H80000002ConstERROR_SUCCESS=0ConstREG_SZ=1'独立的空的终结字符串ConstREG_DWORD=4'32位数字ConstgREGKEYSYSINFOLOC="SOFTWARE\Microsoft\SharedToolsLocation"ConstgREGVALSYSINFOLOC="MSINFO"ConstgREGKEYSYSINFO="SOFTWARE\Microsoft\SharedTools\MSINFO"ConstgREGVALSYSINFO="PATH"PrivateDeclareFunctionRegOpenKeyExLib"advapi32"Alias"RegOpenKeyExA"(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,ByRefphkResultAsLong)AsLongPrivateDeclareFunctionRegCloseKeyLib"advapi32"(ByValhKeyAsLong)AsLongPrivateSubcmdSysInfo_Click()CallStartSysInfoEndSubPrivateSubcmdOK_Click()UnloadMeEndSubPrivateSubForm_Load()Me.Caption="关于"&App.TitlelblVersion.Caption="版本"&App.Major&"."&App.Minor&"."&App.RevisionlblTitle.Caption=App.TitleEndSubPublicSubStartSysInfo()OnErrorGoToSysInfoErrDimrcAsLongDimSysInfoPathAsString'试图从注册表中获得系统信息程序的路径及名称...IfGetKeyValue(HKEY_LOCAL_MACHINE,gREGKEYSYSINFO,gREGVALSYSINFO,SysInfoPath)Then'试图仅从注册表中获得系统信息程序的路径...ElseIfGetKeyValue(HKEY_LOCAL_MACHINE,gREGKEYSYSINFOLOC,gREGVALSYSINFOLOC,SysInfoPath)Then'已知32位文件版本的有效位置If(Dir(SysInfoPath&"\MSINFO32.EXE")<>"")ThenSysInfoPath=SysInfoPath&"\MSINFO32.EXE"'错误-文件不能被找到...ElseGoToSysInfoErrEndIf'错误-注册表相应条目不能被找到...ElseGoToSysInfoErrEndIfCallShell(SysInfoPath,vbNormalFocus)ExitSubSysInfoErr:MsgBox"此时系统信息不可用",vbOKOnlyEndSubPublicFunctionGetKeyValue(KeyRootAsLong,KeyNameAsString,SubKeyRefAsString,ByRefKeyValAsString)AsBooleanDimiAsLong'循环计数器DimrcAsLong'返回代码DimhKeyAsLong'打开的注册表关键字句柄DimhDepthAsLongDimKeyValTypeAsLong'注册表关键字数据类型DimtmpValAsString'注册表关键字值的临时存储器DimKeyValSizeAsLong'注册表关键自变量的尺寸'打开{HKEY_LOCAL_MACHINE...}下的RegKeyrc=RegOpenKeyEx(KeyRoot,KeyName,0,KEY_ALL_ACCESS,hKey)'打开注册表关键字If(rc<>ERROR_SUCCESS)ThenGoToGetKeyError'处理错误...tmpVal=String$(1024,0)'分配变量空间KeyValSize=1024'标记变量尺寸'检索注册表关键字的值...rc=RegQueryValueEx(hKey,SubKeyRef,0,_KeyValType,tmpVal,KeyValSize)'获得/创建关键字值If(rc<>ERROR_SUCCESS)ThenGoToGetKeyError'处理错误If(Asc(Mid(tmpVal,KeyValSize,1))=0)Then'Win95外接程序空终结字符串...tmpVal=Left(tmpVal,KeyValSize-1)'Null被找到,从字符串中分离出来Else'WinNT没有空终结字符串...tmpVal=Left(tmpVal,KeyValSize)'Null没有被找到,分离字符串EndIf'决定转换的关键字的值类型...SelectCaseKeyValType'搜索数据类型...CaseREG_SZ'字符串注册关键字数据类型KeyVal=tmpVal'复制字符串的值CaseREG_DWORD'四字节的注册表关键字数据类型Fori=Len(tmpVal)To1Step-1'将每位进行转换KeyVal=KeyVal+Hex(Asc(Mid(tmpVal,i,1)))'生成值字符。ByChar。NextKeyVal=Format$("&h"+KeyVal)'转换四字节的字符为字符串EndSelectGetKeyValue=True'返回成功rc=RegCloseKey(hKey)'关闭注册表关键字ExitFunction'退出GetKeyError:'错误发生后将其清除...KeyVal=""'设置返回值到空字符串GetKeyValue=False'返回失败rc=RegCloseKey(hKey)'关闭注册表关键字EndFunction(d)Tip窗体代码:OptionExplicit'内存中的提示数据库。DimTipsAsNewCollection'提示文件名称ConstTIP_FILE="TIPOFDAY.ini"'当前正在显示的提示集合的索引。DimCurrentTipAsLongPrivateSubDoNextTip()'随机选择一条提示。CurrentTip=Int((Tips.Count*Rnd)+1)'或者,您可以按顺序遍历提示'CurrentTip=CurrentTip+1'IfTips.Count<CurrentTipThen'CurrentTip=1'EndIf'显示它。frmTip.DisplayCurrentTipEndSubFunctionLoadTips(sFileAsString)AsBooleanDimNextTipAsString'从文件中读出的每条提示。DimInFileAsInteger'文件的描述符。'包含下一个自由文件描述符。InFile=FreeFile'确定为指定文件。IfsFile=""ThenLoadTips=FalseExitFunctionEndIf'在打开前确保文件存在。IfDir(sFile)=""ThenLoadTips=FalseExitFunctionEndIf'从文本文件中读取集合。OpensFileForInputAsInFileWhileNotEOF(InFile)LineInput#InFile,NextTipTips.AddNextTipWendCloseInFile'随机显示一条提示。DoNextTipLoadTips=TrueEndFunctionPrivateSubchkLoadTipsAtStartup_Click()'保存在下次启动时是否显示此窗体SaveSettingApp.EXEName,"Options","在启动时显示提示",chkLoadTipsAtStartup.ValueEndSubPrivateSubcmdNextTip_Click()DoNextTipEndSubPrivateSubcmdOK_Click()UnloadMeEndSubPrivateSubForm_Load()DimShowAtStartupAsLong'察看在启动时是否将被显示ShowAtStartup=GetSetting(App.EXEName,"Options","在启动时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论