第一篇:校园航天探测器的设计与实现论文
1.研究背景和意义
美国“信使号”水星探测飞船于 2004 年 8 月 3 日在佛罗里达州卡纳维拉尔角的肯尼迪航天中心由“德尔塔 2”型火箭送入太空,明亮的火焰照亮了当时洒满月光的夜空辉映在大西洋上。“信使号”开始了计划中的耗时 6 年半、飞行 79 亿公里的探测远征。2015 年 04月 30 日,北京时间(即 5 月 1 日)“信使号”探测器通过硬着陆以3.9km/s 撞击水星表面的方式,结束其探测使命,在水星北极附近留下一个直径为 16 米的撞击坑,新的探测器将于 2024 年抵达,届时我们才能看到这个撞击坑的图像。
以此为契机,作者特研发了快乐者 1 号校园航天探测器,旨在通过制作、发射校园航天探测器,使青少年既能尝试到探测器在天空飞行过程中执行“探测任务”的乐趣,又能学到一些航天科技知识,对培养青少年从小养成“动脑想、动手做”的良好习惯以及激发其航天科技创新热情,乃至为国家培养未来航天人才具有举足轻重的作用。
2.基本原理
快乐者 1 号校园航天探测器搭乘自制校园航天火箭,在野外发射场点火升空后,摄像头以及传感器在空中开展“观天、看地”的预定科学探测任务以及追踪火箭的飞行姿态,并将实时画面、照片通过发射天线传回到地面接收机。
3.试验情况
这一项目研究规划从 2014 年开始,先后对准备搭载快乐者 1号校园航天探测器的自制火箭运载能力以及稳定性进行了 3 次野外发射试验。最近一次发射快乐者 1 号探测器的时间是 2015 年 5月 1 日,之所以选择这一天是因为这一天(北京时间)是美国“信使号”壮丽撞击水星的时间。快乐者 1 号发射升空飞行一段时间后,类似“信使号”以硬着陆方式撞击地面,撞击地面后仪器残骸散落一地。因经费、时间等客观因素存在,快乐者 1 号当前基于青少年航天科技教育而研发,属于民间航天技术的低空飞行探测器,有别于国家级层面太空飞行器,因此作者首次引入“校园航天”概念,并获得了首个这一领域的专利。
4.创新点
(1)其特征主要是将摄像机收集数据通过发射天线,采用2.4GHz 无线射频技术发送照片、视频及音频讯号至地面接收机。
(2)接收机可以在地面时实观察空中探测的数据,并将所探测器的数据进行存储,倘若探测器在落地过程中意外坠毁,存储在探测器中数据可能丢失,但地面接收机已存储了数据,可有效防止数据丢失。
(3)根据国家知识产权局数据检索,作者所引入“校园航天”概念,目前有且只有 1 个“校园航天”领域的专利,即文章所表述的“探测器(快乐者 1 号校园航天探测器)”.5.进一步完善设想
第二篇:航天物资信息网络管理系统的设计与实现
龙源期刊网 http://.cn
航天物资信息网络管理系统的设计与实现 作者:李娟
来源:《现代电子技术》2012年第15期
摘要:介绍了“航天物质信息网络管理系统”开发的目的、意义,重点总结了系统的设计结构及原理、功能设计、开发过程、应用效果及与时俱进需改进的方向、要求。该系统融会计统计、计划采购、库房管理于一体,实现了基层物资会计与物资统计的电算化管理,减少繁琐手工操作,大大提高了物资信息管理水平。
关键词:航天物质;信息管理系统;局域网管理;电算化管理
第三篇:信息化校园的设计与实现
信息化校园的设计与实现
信息、材料、能源作为人类社会的三大资源,它的利用虽然伴随 人类社会的发展,古已有之,但远非充分。人们从三千年前以“驿马”或烽火台“传递信息到今天以千兆比特的量,以光的速度交换信息,从而迎来了以数字化。网络化为主要特征的信息化时代。
就当今世界规模的发展趋势而言,信息技术已经不仅仅是信息产业本身的问题,必将导致人类社会。文化。思想。经济等各方面的变革,必将为人文科学和社会科学注入全新的内涵,给整个人类社会带来一次全新的冲击。而大学校园是社会的晴雨表,正面临着前所未有的巨变。大学的基本特征是在“融通古今,学贯中西”的教授指导下,一批最有活力的青年学子从事着“继承发展,研究开拓和教学相长”的创新活动。因而正在日益成为社会知识和科技发展的中枢。
于是,伴随着新的千年的来临,一股强音,信息化的强音,震响在时代的上空,激荡于古老而青春的大学校园。一切对时代变革保持敏锐感知的人们,一切洞悉科教兴国之深远意义的人们,都在关注并思考这样一个迫切的问题:大学校园,何去何从?
在信息化浪潮一次又一次冲击我们所处的校园的时候,当我们所处的大学校园在一次又一次的冲击下,却激发出更强活力的时候,我们才发现:计算机最早在大学校园里普及,网络最为广泛地在大学校园里得到运用,校园人也最先。最迅速地学会在信息化浪潮中生存成长。那些古老的。沿袭数百年的教育和学习模式终于一点点被潮流吞没,日新月异的信息技术正在改变校园的原有面貌。
今天,我们猛然发现,大学校园已经驶入了信息化的快车道,信息化下的大学校园革命已经走上了发展之路。
那么,什么是信息化校园,未来的信息化校园与我们今天的生活环境有多大的不同,校园的信息化主要体现在哪些方面呢?
一、什么是信息化校园
所谓信息化校园,就是一个网络化。数字化。智能化有机结合的新型教育。学习和研究的校园平台,这个平台以高度发达的计算机网络为其核心技术支撑,以信息和知识资源的充分共享为其手段,以培养善于获取。加工。处理和利用信息与知识的学生为其主要目标,以校园成为整个社会知识。信息的基本创新与传播中枢为其主要社会效应。
二、校园信息化的主要体现
1、社区建设方面
我们根据社区的特征可知,校园也是一个小社区,它有自己共同生活的人群;有一定的地狱界限;有一套制度规范;有自己的生活服务设施;有属于自己的文化„„但随着信息时代的到来,虚拟现实必将出现,传统的校园社区被赋予了新的内涵,虚拟身份。虚拟共同体。虚拟社区将完全改变我们真实的生活。
2、学习方面
学习,是校园的一个永恒的主题。如何才能更好地利用信息化校园的条件,提高我们的学习效果和效率,正是信息化校园担负的责任。首先,信息化对当代学子学习的影响是学习环境和手段的改变。其次,信息技术的广泛运用带动了知识体系的革命。
3、教育方面
信息技术对教育的强大冲击,给我们带来了一个“远程教育”的新概念。随着宽带的增加,那些给教育添加趣味和娱乐的新形式,如传送声音。图象片段。彩色照片都将成为可能。这样的结果是向电子化教育更进了一步。学生呆在寝室就可以上课,不必再跑得很远;教授也不必为课堂上有人打瞌睡而感到羞辱,也免得更坏的学生带着刀枪,毒品进课堂。
4、人文方面
在信息化浪潮的冲刷下,整个世界都有常新的感觉。于是,昨天已经古老。当信息化校园取代了传统校园之时,所有的莘莘学子都在网上邂逅,面对冰冷的芯片,谁还能看见一张张热情的面孔,那一颗颗曾经激荡而年轻的心。
三、深刻剖析信息化下的教育模式
年轻一代的想象力和创造力是一种非常可贵的财富,而他们比任何人更加关注教育的发展,对教育的利弊有着更深刻的体会,因此对未来教育的发展趋势有着最丰富的想象。当然,对那些尚未完全实现的领域,还不可能有一个完全准确的描述。基于现代信息技术的发展,在信息化强烈冲击的这场迟早会来到的校园革命里,让我们把更多的目光投向教育,用我们并不成熟的想法来阐述一下自己的观点,也无可厚非。
1、网络化与数字化
在以往的学校,不同专业之间老死不相往来的情况大量存在,这显然不能适应现代科学技术发展的要求。而今,越来越多的交叉学科,边缘学科都要涉及多门学科的知识,不同学科之间相互借鉴,相互渗透的现象越来越普遍。这都需要实现校园的各种软件和硬件设备为全体师生共享,并同时要求有科学的管理来维持秩序。
基于大学角色转变的要求,实现学科知识的网络化和智能化,需要在现有的基础上发展网络化校园。使教学。公益等各种活动都以网络为基础,这样可以充分调动,发挥学生的学习及应用能力,使大学校园与社会生活迅速而有效的接轨。
2、教室大冲浪
利用计算机技术。网络技术。多媒体技术进行教学活动,将多个多媒体计算机连接起来以实现多媒体通信和共享多媒体数据的计算机网络系统。将多媒体网络用于教学中。可以把文字。图象。动画。声音以及各种教学软件引入教学实践中,从而以先进的手段改变传统的教学模式。
3、资源的无限化
高校是知识和人才密集的地方,是对时代特征最为敏感的地方,所以信息活动的网络化是高校师生的最大需求。于是,高校应该成立一个信息资源中心,集成本校各类信息资源,并通过将用户与本校资源连接起来。帮助用户搜寻和利用整个信息资源,使其信息服务社会化的一种体制。同时,中心可面向社会,走向产业化,把整个高校的教学,科研及各项管理工作带向更高层次。
如何解决社会对教育的需求和目前教育机构设置,师资等方面的供需矛盾,使有限的教育资源得到合理利用和共享将成为今后教育界的一个重要问题,但愿随着信息化校园革命的到来,这些问题都会迎刃而解。
变革的潮水一轮轮洗刷着的地球,给世界带来一场场令人惊异的变幻,此中,我们的校园也走过一番番沧海桑田。这是一个一切神话都将成为可能的时代,一切的既有都在经受严峻考验的时代。以至有人说,信息化的滔滔洪流终将淹没我们的校园,未来的日子我们在数字化的网络里彼此相连。
无论今后怎样,我们都在文化的滋养下成长与生活。找寻我们生活的意义,但我们同时也是文化的建设者与创造者,我们不会被技术奴役,我们会在技术营造的五彩斑斓里活出生命的真谛。
二十一世纪是科学技术竞争和民族素质竞争的时代,其实质是人才、教育的竞争。教育的历史告诉我们,教育的每次重大变革和发展都离不开科学技术,科学技术是第一生产力,也是教育发展的重要动力。进入九十年代以来,多媒体和计算机网络逐渐被引入教学过程,成为现代教育的技术基础。实施以校园网为基础的教育信息化工程,研究现代信息技术对教育思想、教育管理、教育内容、教育方法、教育手段和教育过程的作用和影响,探索建构现代教育技术环境下的新型教学模式,已成为新时期教育所面临的新课题。
四、利用校园网建构的智能环境把学校建成一个生动活泼的,充满生机的学习环境和场所
1、改革课堂教学模式,使学生的学习活动成为一种自主愉快、探索创 造的过程 教学模式是课程设计、教材建设、指导课堂和其它教学环境中教学活动的一种计划或范式。
专家指出,围绕着课堂教学多年来开展了不少教学改革试验,但是,多数还停留在单一的和浅表层,究其原因,是教学模式基本没有改变。
近年来,我们通过计算机与学科教学整合的实验,积极探索基于计算机和网络技术的“双主”教学模式。
①、传统的以教师为中心的模式中,教师是整个教学活动的主宰,学生处于被动接受老师灌输知识的地位,教学的出发点和归宿是千方百计让学生掌握各种应试技巧。学习的基本过程是感知、理解、巩固和运用,教师在讲台上讲述、示范、演示,学生相应地吸收、记忆、存储,课堂上圈划重点,课后反复抄写、背誦。这种教学模式,虽然有利于系统的科学知识的传授,有利于对学生进行严格的训练和提高识记知识的效率。但它的致命缺陷在于,严重地抑制了学生的个性发展,束缚了学生创新思维和实践能力的培养。
②、以学生为中心的模式,较之以教师为中心的模式是一大进步,它 有利于儿童天性的发展,使每个学生都可能找到适合自己学习个性的学习方法和学习内容。这种模式的问题在于,它很难有效调动其实很难以调动的儿童的自觉性,操作不到位则容易流于放任。
③、依据何克抗、李克东等专家的研究,“双主模式”介于以教师为中心和以学生为中心的教学模式之间,它既要发挥教师的主导作用,又要充分体现学生的认知主体作用,既要把两者的长处吸收过来,又把两者的消极因素加以避免。这就是在基本保留“传递--接受“式教学活动进程的条件下,利用计算机作为教育过程的基本环境,在建构主义理论指导下通过人机交互让学生更多地去主动思考、探索、发现,从而形成一种新的教学活动进程的稳定结构形式。
④、“双主模式”的可操作性的依据是,学生学习的主体性构成了教育学理论的基石,教育实践的主干职能、规范和具体操作方法,只能围绕主体并由主体来进行。a、“双主模式” 提倡民主的教学氛围,鼓励学生大胆的质疑,培养学生的批判能力,有利于发挥认知主体的主动性,为具有创新意识和创造能力人材的成长提供了良好的土壤。b、“双主模式”是面向全体的教育,面向全体,是教学的基本原则。c、“双主模式”把学生看作是宝贵的教育资源,把学生的差异性也作为可供开发的资源。d、“双主模式”重视每个学生具有的发展和创造潜能,俗话说,跳一跳就可以把果子摘下来。e、“双主模式”引导学生参与学习的全过程,给学生主动权,让学生唱主角,多给学生提供讲和练的机会,培养学生自我表现的能力。f、“双主模式”注重教给学生学习方法,教会学生思考,教会学生讨论,教会学生总结,培养学生自得能力。
⑤、“双主模式”的实践特征是,a、从教育技术学上看,是以“教”为中心的教学设计理论与以“学”为中心教学设计理论的结合。b、从整个进程看,教师有时处于中心地位,学生有时处于传递接受学习状态。但更多的是学生在教师指导和同学帮助下通过与同学协商协作、与计算机交互主动获得知识。c、从教学内容看,应用这种模式,对知识系统性强的学习应强调教师的主导地位、指导、设计作用;新旧知识之间相互关联、技能转化性的宜充分发挥学生主动参与;知识发散性,技能熟化、扩展性的宜以学生为主体。d、教师的主导作用,须依赖与熟练地应用计算机和多媒体技术,为学生不断创设符合教学内容要求的问题情景,提供新旧知识之间联系的线索,以及能引发学生思考和讨论的问题。
五、教育信息化全面推动了学校教育教学的整体改革步伐
教育信息化工程的实施,为我校深化教育教学整体改革注入了活力,实验研究成果逐步在学校教学的各个层面上推广开来。特别是体现在信息技术能力方面的学生素质培养和体现在教科研成果方面的教师队伍建设。
全校1600名1到6年级学生,全部安排了上机和网络操作实践课,学生普遍会使用校园网,会利用网上资源,具有了初步的信息技术能力。实验班和兴趣组的学生,每周上机时间3到8课时,他们分别会用计算机做画、制作贺卡、编辑电子小报,会做个人、班队主页,会收发电子邮件,会使用国际互连网,具有和同龄人相比较强的信息技术能力。各年级学生中出现了一批计算机和网络的“高手“,他们成为教师教学中的帮手,在参加市区有关竞赛中,捧回各类奖项。这些学生也是学校“远程协作学习“项目的骨干力量。
实验开题以来,我校先后承办了深珠港澳地区教学观摩会、99深圳(南山)现代教育技术研讨会,会议期间,实验教师提供的协商学习和个别化学习课例,受到与会的专家、教师的高度评价。
两年多来,学校先后为香港教育署、计算机学会和50多所学校官员和上千名教师提供了研究课。接待了来自全国18个省市的教育行政部门的领导和几百所学校的校长、教师。
有10多名教师的课例在全国教学比赛和省市级教学比赛中获奖。王光荣、徐阳杰获“第4届全国小学计算机辅助教学观摩比赛”二等奖;谢锦获“小学数学引探教学比赛”一等奖;陈艳霞获“异步教学”课例一等奖;董金宏、唐筱勇课例入选“首届信息技术和语文教学研讨会”成果;王光荣、陈明祺获“广东省教学创新课比赛”一等奖。实验教师徐阳杰成功地为首届“维美杯”全国计算机辅助教学大赛提供了观摩课等。
2000年初,南头小学在全国中小学现代教育技术实验学校评估检查中,代表广东省实验学校作了工作汇报,受到专家和教育部领导的肯定。学校领导先后全国电化教育年会、教育部首批中小学骨干校长培训班、全国中小学整体改革专业委员会向近千名代表介绍南头小学开展实验情况。
《南头小学校园网系统建设报告》被收入中央电教馆、教育部信息管理中心编著的《校园网》一书,校园信息网络系统作为成功范例向全国介绍。
全国哲学社会科学95规划国家重点课题,“面向21世纪中国基础教育课程改革研究”的子课题“中小学电子教材的建设与实验研究”的组成部分,“小学开放性电子教材建设的研究”课题,由南头小学承担,日前通过专家鉴定,顺利结题。
有20多篇论文和研究成果分别在《中国教育报》、《电化教育研究》、《中小学电脑报》、《计算机世界》、《广东电教》、《陕西电教》、《教师报》、《中小学德育》、《师道》、《深圳教育研究》等杂志报刊发表。收集实验教师60多篇论文的专集由和平出版社、华东师大出版社出版。
40多篇论文先后获得教育部、中国电化教育学会、中国教育学会中小学计算机研究会、中国小学数学研究会、广东省教育厅、广东省教研室、广东省电教馆和深圳市及南山区教科研论文评比奖励。
学校教师开发的软件获得教育部电教办软件比赛、全国小语“四结合”总课题组软件评比二等奖,以及广东省、深圳市和南山区软件评比奖励。
作为南头小学软件专集的《全国中小学CAI集锦
(五)》,已由全国中小学计算机教育研究中心(上海部)审定,正式出版发行。
中国教育电视台多次专题介绍南头小学开展实验情况。通过教育信息化全面推进学校教育教学整体改革是一项系统工程,从比较高的尺度上来看,我们的实验仅仅是起始阶段,文章刚刚写了个开头。在教学模式的创建上,在学生素质发展的测评上,在如何使教师队伍适应实验的发展不断提高整体素质,解决发展不平衡方面,应该做的事情还很多。从全局来看,这项实验也不是一所学校所能完成的。我们将在今后的实践中认真学习兄弟学校的先进经验。在专家的指导帮助下,完成历史赋予我们的使命。
参考文献:
何克抗 《建构主义学习环境下的教学设计》
何克抗 李克东 谢幼如 王本中《“主导-主体“教学模式的理论基础》
第四篇:校园导游系统设计与实现
校园导游系统设计与实现
目录 1.设计要求 2.1需求分析 2.2概要设计
2.3各个模块名称和功能 2.4 系统导游主界面
2.4.1前台系统
2.4.2后台系统
2.4.3退出系统 3实验总结 参考文献 附件
1.设计要求
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2.1需求分析
⑴设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于 30 个。以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。
⑵存放景点代号、名称、简介等信息供用户查询。⑶为来访客人提供图中任意景点相关信息的查询。⑷为来访客人提供图中任意景点之间的问路查询。
⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。
景点距离图
2.2概要设计
校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。最后用 switch 选择语句选择执行浏览景点信息或查询最短路径。
1、主界面设计
为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。
2、存储结构设计
本系统采用图结构类型(mgraph)存储抽象校园图的信息。其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量 vexnum、arcnum 表示,它们是整型数据。
3、系统功能设计
本系统除了要完成图的初始化功能外还设置了9个子功能。图的初始化由 initgraph()函数实现。依据读入的图的顶点个数和边的条数,分别初始化图结构中图的顶点数组和图的邻接矩阵。9个子功能的设计描述如下。⑴ 景点信息查询
景点信息查询由函数 seeabout()实现。该功能根据用户输入的景点编号输出该景点的相关信息。如景点编号、名称等。⑵ 学校景点介绍
学校景点介绍由函数 browsecampus()实现。当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点介绍。⑶ 相邻的景点及其距离
为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息 ⑷ 查看浏览线路
查看浏览线路由函数 shortestpath_dij()实现。该功能采用迪杰斯特拉(Dijkstra)算 法实现。当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。⑸ 更改图信息
修改一个已有景点的相关信息、删除一个景点及其相关信息、删除一条路径、加一条路径、修改路径长度、添加一个景点 ⑹ 数据安全防范
设置密码,能保证数据不会被随便更改,由pass()判定密码是否正确,可由changepw()函数修改密码,初始密码为gdufsx ⑺ 写入文件并保存修改
打开该软件,若没有graph.txt,则会由系统初始化生成一个graph.txt,若已存在该文档会由该文档中的内容初始化系统。⑻ 恢复初始状态
若数据已经显得很杂乱并很难修理,就可以启用这个功能 ⑼ 退出
即退出校园导游系统,由 exit(0)函数实现
2.3函数结构
void initgraph(mgraph &G);
//依据读入的图的顶点个数和边的条数,//分别初始化图结构中图的顶点向量数组和图的邻接矩阵 void browsecampus(mgraph G);//输出学校全部景点的信息 :编号、名称、介绍
void cgraph(mgraph &G,Password &pw);//构造无向图和读写文件graph。txt void writetxt(mgraph &G,Password &pw);//写入文件
int pass(Password pw);
//认证密码的正确与否,正确返回1,错误返回0
void reception(mgraph &G);
//前台服务函数 void seeabout(mgraph &G);
//景点信息
void shortestpath_dij(mgraph G);//该景点到其他景点的最短路径线路及距离 void near(mgraph G);
//相邻的景点及其距离
void changegraph(mgraph &G,Password &pw);
//后台函数,并调用
void changeP(mgraph &G,Password &pw);
//修改一个已有景点的相关信息 void deleteP(mgraph &G,Password &pw);
//删除一个景点及其相关信 void deleteL(mgraph &G,Password &pw);
//删除一条路径 void addL(mgraph &G,Password &pw);
//添加一条路径 void changeL(mgraph &G,Password &pw);
//修改路径长度
void Add(mgraph &G,Password &pw);
//添加一个景点 void changepw(mgraph &G,Password &pw);//修改密码 void regraph(mgraph &G,Password &pw);
//恢复初始状态
2.4 2.4校园导游主界面
程序运行,后台对图结构进行初始化,运行结果如图2.4.1。
2.4 主界面 2.4.10前台系统
前台系统是游客浏览查询界面。如图2.4.10
2.4.10 游客浏览界面 2.4.11个别景点的相关信息查询
景点的相关信息查询是通过seeabout()函数来调用输出的,在前台系统输入1,输入任一景点编号即可知道其信息。运行结果如图2.4.11
2.4.11 信息查询 2.4.12任意两景点间最短路径查询
根据用户的需求,在用户输入了起点和终点后计算出最短路径是哪一条路径。例如起点是3.中国银行,终点是15.教学楼A栋。运行结果如图2.4.12
2.4.12 任意两景点间最短路径查询 2.4.13输出所有景点信息
为方便用户一次性知道所有景点信息,设置了查询所有景点的信息如图2.4.13
2.4.13 输出所有景点信息 2.4.14相邻的景点及其距离
为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息。如图2.4.14
2.4.14相邻的景点及其距离
2.4.20后台系统
输入密码
为防止他人随意修改景点信息,需密码验证身份,初始密码为gdufsx,进入后台系统后可修改密码,如图2.4.200
2.4.200 输入密码
后台服务
后台服务具有以下功能: 修改一个已有景点的相关信息;删除一个景点及其相关信息;删除一条路径;添加一条路径;修改路径长度;添加一个景点;修改密码;恢复初始状态。如图2.4.20。功能如图2.4.21至2.4.28
2.4.20 后台服务
2.4.21修改一个已有景点的相关信息
2.4.22 删除一个景点及其相关信息
2.4.23删除一条路径
2.4.24添加一条路径
2.4.25修改路径长度
2.4.26 添加一个景点
2.4.27修改密码
2.4.28恢复初始状态
在后台系统输入8,就会询问你是否恢复初始状态,暗“Y”将会使之前一切修改的数据信息都恢复原样,重新初始化。
2.4.28恢复初始状态 2.4.3退出系统
用户满足了需求之后,只要在主界面菜单处输入0便可退出此次校园导游系统。运行结果如图2.4.9。
退出系统
3总结
由于设计者水平有限,本导游图系统的功能还比较简单,没有求出两景点间的多条可行路径供游客选择,无法在界面中显示出地图;由于邻接矩阵是30*30的,所以无法在一个界面中完整简洁的显示出来。还有个很好的想法也没有实现,就是怎样求出游完所有景点是的最短路径和线路,这样游客就不需要重复走过几个景点。在这次作业中,我积累了不少经验,提高了动手能力。在编程序过程中不要急于求成,如果一下字把所有的功能编出来了再去编译,一旦出错,就很难找出是哪里错误了,这就需要一个一个的实现了。这次作业也让我增加了对文件流的理解。
参考文献
[1]严蔚敏,李冬梅,吴伟民.数据结构(C语言版).人民邮电出版社.2011.[2]王珊珊,臧洌,张志航.C++程序设计教程 第二版.机械工业出版社.2011 附件:
//程序名称:校园导游系统设计与实现 //程序员:Joebug //编写时间:2015年6月
#include
#define N 50 #define M 10
typedef struct Infor{
//景点结构体
char name[20];
//景点名称
char inf[100];
//景点信息
}Infor;
typedef struct{ int adj[N][N];
//各景点间的邻接关系用图邻接矩阵类型
Infor vexs[N];
//景点(顶点)信息: int vexnum,arcnum;
//图的顶点个数及边的条数 }mgraph;
typedef struct{
char p[6];
}Password;
char inform[30][100]={
“信息男宿舍,后面是内环,与风采园相近,前面是南苑9-12栋!”,“一楼价格还好,但饭菜比较难吃,二楼较贵,饭菜还行!”,“中国银行营业厅,如果要办理业务,需很早地去排队;有ATM机!”,“二楼有自强社办公室、校学生会办公室„一楼有健身房!”,“东西较贵但品类基本齐全!”,“主要是老师居住。喜祥数码港要收费,云山数码港在不换硬件条件下免费修!”,“主要接待外来人员,招待所!”,“一楼有糖水和奶茶供应,晚上总有很多部门在此开会。二楼有许多套餐!”,“一楼大众点菜,品类比三饭多。二楼的价格在8元左右!”,“女生宿舍,北苑三栋楼下有创业园!”,“组成巡逻队,协助学校保障校园安全。!”,“位于保卫处后面,在校生校内看病只需支付很少的费用!”,“具有防空洞;连接宿舍区和教学区!”,“在隧道口的上方,可以乘坐很多路的公交车!”,“一楼有中国银行ATM。早上和中午前面有校巴。不少活动的举办地点!”,“是学习的主要地方,教室里面设施较为齐全,有多媒体、空调、电视等,后面是语心湖和实验楼!”,“早上会有学生在那里练嗓子,以及读书!”,“多种会议比赛的场所!”,“学校政要的办公室所在地!”,“各学院老师的办公室所在地!”,“拍毕业照时,校友回来时的聚集之地!”,“摆放着很多电脑的地方!”,“位于教学楼和实验楼之间,湖水平静,还有黑天鹅嬉戏于水上!”,“各种活动的举办场所!”,“主要是艺术生上课的地方,周六日为雅思考场!”,“重要会议进行的地方,党课和军训理论课在这里上,有空调!”,“图书馆除了中英文借阅区与杂志借阅区外,还有自习区;前面有大广场,最前面是学校正门!”,“内有排球场、篮球场,外有足球场。还有游泳池、网球场!”,“体育馆有多个观众席;中央可用做正规比赛场所。日常用来上羽毛球课、跆拳道课!”,“位于图书馆前面,学术报告厅与艺术楼中间,虽然不宏伟,但是也是一个标志!”
};char Name[30][20]={
“南苑13栋”,“风采园(三饭)”,“中国银行”,“学活&水榭”,“又康超市”,“师苑&数码港”,“广外友苑”,“博雅园(二饭)”,“文采园(一饭)”,“创业园”,“后勤&保卫处”,“校医室”,“隧道口”,“广外公交站”,“教学楼A栋”,“教学楼E、F栋”,“凤凰山坡”,“八角楼”,“校办公楼”,“院系办公楼”,“校友林”,“实验楼”,“语心湖”,“学术报告厅”,“艺术楼”,“大会堂”,“图书馆”,“泳池&操场”,“体育馆&场”,“正校门”};
void initgraph(mgraph &G);
//依据读入的图的顶点个数和边的条数,//分别初始化图结构中图的顶点向量数组和图的邻接矩阵 void browse(mgraph G);
//输出学校全部景点的信息 :编号、名称、介绍
void cgraph(mgraph &G,Password &pw);//构造无向图和读写文件graph。txt void writetxt(mgraph &G,Password &pw);//写入文件
int pass(Password pw);
//认证密码的正确与否,正确返回1,错误返回0
void reception(mgraph &G);
//前台服务函数 void seeabout(mgraph &G);
//景点信息
void shortestpath_dij(mgraph G);//该景点到其他景点的最短路径线路及距离 void browsecampus(mgraph G);//输出学校全部景点的信息 :编号、名称、介绍
void near(mgraph G);
//相邻的景点及其距离
void changegraph(mgraph &G,Password &pw);
//后台函数,并调用
void changeP(mgraph &G,Password &pw);
//修改一个已有景点的相关信息 void deleteP(mgraph &G,Password &pw);
//删除一个景点及其相关信 void deleteL(mgraph &G,Password &pw);
//删除一条路径 void addL(mgraph &G,Password &pw);
//添加一条路径 void changeL(mgraph &G,Password &pw);
//修改路径长度
void Add(mgraph &G,Password &pw);
//添加一个景点
void changepw(mgraph &G,Password &pw);
//修改密码 void regraph(mgraph &G,Password &pw);
//恢复初始状态
int main(){ mgraph campus;Password pw;strcpy(pw.p,“gdufsx”);
//初始化密码
initgraph(campus);cgraph(campus,pw);int n,m=1;while(m)
{
system(“cls”);
cout<<“
欢迎使用GDUFS校园导游系统”< cout<<“ **************************************”< cout<<“ (1)前台服务(游客身份登陆)”< cout<<“ (2)后台服务(管理员身份登陆)”< cout<<“ (0)退出”< cout<<“ **************************************”< cout<<“ 请输入您的选择(0-2):”; cin>>n; switch(n) { case 1: reception(campus); break; case 2: if(pass(pw)==1) changegraph(campus,pw);//后台函数 break; case 0: m=0; cout<<“谢谢您的使用!” < getch(); exit(0); default: cout<<“ 您的输入有误,任意键继续...”; getch(); } } } void initgraph(mgraph &G){ //依据读入的图的顶点个数和边的条数,//分别初始化图结构中图的顶点向量数组和图的邻接矩阵 int i,j;for(i=0;i for(j=0;j G.adj[i][j]=9999;for(i=0;i<30;i++){ strcpy(G.vexs[i].name,Name[i]); strcpy(G.vexs[i].inf,inform[i]);} G.vexnum=30;G.arcnum=45; G.adj[0][1]=55; G.adj[1][0]=55; G.adj[0][5]=287; G.adj[5][0]=287;G.adj[1][2]=243; G.adj[2][1]=243;G.adj[2][3]=28; G.adj[3][2]=28;G.adj[3][4]=31; G.adj[4][3]=31;G.adj[4][5]=42; G.adj[5][4]=42;G.adj[4][9]=106; G.adj[9][4]=106; G.adj[5][6]=87; G.adj[6][5]=87;G.adj[5][7]=71; G.adj[7][5]=71;G.adj[7][8]=132; G.adj[8][7]=132;G.adj[7][9]=97; G.adj[9][7]=97;G.adj[7][12]=150; G.adj[12][7]=150;G.adj[8][9]=111; G.adj[9][8]=111;G.adj[8][11]=151; G.adj[11][8]=151;G.adj[8][13]=126; G.adj[13][8]=126;G.adj[9][11]=257; G.adj[11][9]=257;G.adj[10][11]=33; G.adj[11][10]=33;G.adj[10][13]=128; G.adj[13][10]=128;G.adj[10][27]=287; G.adj[27][10]=287;G.adj[12][13]=117; G.adj[13][12]=117;G.adj[12][14]=83; G.adj[14][12]=83;G.adj[12][16]=160; G.adj[16][12]=160;G.adj[13][26]=359; G.adj[26][13]=359;G.adj[14][15]=118; G.adj[15][14]=118;G.adj[14][16]=245; G.adj[16][14]=245;G.adj[15][22]=94; G.adj[22][15]=94;G.adj[15][26]=176; G.adj[26][15]=176;G.adj[16][18]=62; G.adj[18][16]=62;G.adj[17][18]=74; G.adj[18][17]=74;G.adj[17][19]=88; G.adj[19][17]=88;G.adj[17][22]=218; G.adj[22][17]=218;G.adj[19][20]=64; G.adj[20][19]=64;G.adj[20][21]=167; G.adj[21][20]=167;G.adj[21][22]=68; G.adj[22][21]=68;G.adj[21][23]=132; G.adj[23][21]=132;G.adj[23][26]=203; G.adj[26][23]=203;G.adj[23][29]=60; G.adj[29][23]=60;G.adj[24][25]=129; G.adj[25][24]=129;G.adj[24][28]=263; G.adj[28][24]=263;G.adj[24][29]=80; G.adj[29][24]=80;G.adj[25][26]=181; G.adj[26][25]=181;G.adj[25][27]=212; G.adj[27][25]=212;G.adj[25][28]=192; G.adj[28][25]=192;G.adj[26][27]=164; G.adj[27][26]=164;G.adj[27][28]=354; G.adj[28][27]=354;} void cgraph(mgraph &G,Password &pw){ 化 int i,j,dist;char c;ifstream infile(“graph.txt”);if(!infile){ infile.close(); writetxt(G,pw);} else{ infile.close(); ifstream infile(“graph.txt”); //写入文件并初始 infile>>G.vexnum>>G.arcnum; for(i=0;i infile>>G.vexs[i].name; infile>>G.vexs[i].inf; } for(i=0;i for(j=0;j infile>>dist; G.adj[i][j]=dist; } } for(i=0;i<6;i++) infile>>pw.p[i]; infile.close();} } void writetxt(mgraph &G,Password &pw){ //写入文件 int i,j;ofstream outfile(“graph.txt”);outfile< outfile< } for(i=0;i for(j=0;j outfile< } } for(i=0;i<6;i++) outfile< //输出学校全部景点的信息 :编号、名称 int j=0,k;for(int i=0;i k=i+1; cout< j++; if(j%3==0)cout< 请输入密码:”;for(int i=0;i<6;i++){ ch[i]=getch(); cout.flush(); cout<<“*”; } for(int i=0;i<6;i++){ if(pw.p[i]!=ch[i]) judge=0;} return judge;} void changepw(mgraph &G,Password &pw){ int i,b=1;char ch[6],ch1[6],judge1=1,judge2=1;while(b==1){ cout<<“请输入原密码:”< for(i=0;i<6;i++){ ch[i]=getch(); cout.flush(); cout<<“*”; } for(i=0;i<6;i++){ if(pw.p[i]!=ch[i]) judge1=0; } if(judge1){ cout< for(i=0;i<6;i++){ ch[i]=getch(); cout.flush(); cout<<“*”; } cout< for(i=0;i<6;i++){ ch1[i]=getch(); cout.flush(); cout<<“*”; } for(i=0;i<6;i++){ if(ch[i]!=ch1[i])judge2=0; } if(judge2){ for(i=0;i<6;i++){ pw.p[i]=ch[i]; } cout< writetxt(G,pw); } else cout< } else cout<<“密码错误!”< cout< cin>>b; cout< } /////////////////////////前台///////////////////////////////////////// void reception(mgraph &G){ //前台函数 int n,i,j; while(1) { system(“cls”);//清屏 cout<<“*********************欢迎使用前*******************”< cout<<“(1)个别景点信息查询”< cout<<“(2)问路查询”< cout<<“(3)输出所有景点信息”< cout<<“(4)相邻的景点及其距离”< cout<<“(0)返回上一级菜单”< cout<<“请输入您的选择(0-4):”; cin>>n; switch(n) { case 1: seeabout(G); break; case 2: shortestpath_dij(G); break; case 3: browsecampus(G); break; case 4: 系统 台 near(G); break; case 0: return; break; default: cout<<“您的输入有误,任意键继续...”< getch(); } } } void seeabout(mgraph &G){ //景点信息 int a; int b=1;system(“cls”);browse(G); while(b){ cout<<“请输入要查找的景点信息”< cin>>a;a--; if(a>=0&&a cout< } else { cout<<“输入错误,无此景点”< } cout<<“返回前台系统按0,继续查找按1”< cin>>b; while(b!=0&&b!=1){ cout<<“返回前台系统按0,继续查找按1”< cin>>b; } } } void shortestpath_dij(mgraph G){ //该景点到其他景点的最短路径线路及距离 int b=1,i,j,vt,v,v0,w,min; bool S[N]; int D[N],Path[N]; int n=G.vexnum; system(“cls”); browse(G); while(b){ cout<<“请输入要查询路径的两个景点的编号”< cin>>v0;v0--; cin>>vt; vt--; for(v=0;v S[v]=false; D[v]=G.adj[v0][v]; if(D[v]<9999) Path[v]=v0;//v0是v的前趋 else Path[v]=-1;//v无前趋 } D[v0]=0; S[v0]=true; for(i=1;i min=9999; for(w=0;w if(!S[w]&&D[w] S[v]=true; //将v加入S for(w=0;w if(!S[w]&&(D[v]+G.adj[v][w] D[w]=D[v]+G.adj[v][w]; Path[w]=v; } } cout<<“距离为:”< cout< cout<<“要经过”< int f=Path[vt],e[N]; i=0; while(f!=-1){ e[i]=f; f=Path[f]; i++; } for(v=i-1;v>=0;v--){ cout< } cout< cout<<“返回后台系统按0,继续查询按1”< cin>>b;} } void browsecampus(mgraph G){ //输出学校全部景点的信息 :编号、名称、介绍 int k;for(int i=0;i k=i+1; cout< } cout<<“按任意键返回前台系统”< //相邻的景点及其距离 int b=1,i,j; bool a[50][50];system(“cls”); while(b){ browse(G); for(i=0;i<50;i++) for(j=0;j<50;j++) a[i][j]=false; for(i=0;i for(j=0;j if(G.adj[i][j]!=9999){ if(!a[i][j]){ cout< ”< a[i][j]=true;a[j][i]=true; } } } } cout<<“返回后台系统按0”< cin>>b; } } ////////////////////////////后台函数/////////////////////////////////// void changegraph(mgraph &G,Password &pw){ //修改图信息 int n; while(1) { system(“cls”); cout<<“*********************欢迎使用后台系统************************”< cout<<“(1)修改一个已有景点的相关信息”< cout<<“(2)删除一个景点及其相关信息”< cout<<“(3)删除一条路径”< cout<<“(4)增加一条路径”< cout<<“(5)修改一条路径长度”< cout<<“(6)增加景点”< cout<<“(7)修改密码”< cout<<“(8)恢复初始状态”< cout<<“(0)返回上一级菜单”< cout<<“请输入您的选择(0-8):”; cin>>n; switch(n) { case 1: changeP(G,pw); break; case 2: deleteP(G,pw); break; case 3: deleteL(G,pw); break; case 4: addL(G,pw); break; case 5: changeL(G,pw); break; case 6: Add(G,pw); break; case 7: changepw(G,pw); break; case 8: regraph(G,pw); break; case 0: return; break; default: cout<<“您的输入有误,任意键继续...”< getch(); } } } void changeP(mgraph &G,Password &pw){ //修改一个已有景点的相关信息 int a; int b=1; while(b){ system(“cls”); browse(G); cout<<“请输入要修改景点信息的编号:”< cin>>a;a--; if(a>=0&&a<=G.vexnum){ cout< cout<<“请输入该景点的修改后的信息”< cin>>G.vexs[a].inf; cout<<“修改成功!!”< cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } } else{ cout<<“error!输入有误!”< } cout<<“返回后台系统按0,继续修改按1”< cin>>b; } } void deleteP(mgraph &G,Password &pw){ //删除一个景点及其相关信息 int b=1,i,j,k; while(b) { system(“cls”); browse(G); cout<<“请输入要删除的景点的编号”< cin>>i;i--; if(i>=0&&i<=G.vexnum){ for(j=i;j G.vexs[j]=G.vexs[j+1]; for(k=0;k G.adj[k][j]=G.adj[k][j+1]; } for(j=i;j for(k=0;k G.adj[j][k]=G.adj[j+1][k]; } G.vexnum--; G.arcnum=0; for(i=0;i for(j=0;j if(G.adj[i][j]!=9999) G.arcnum++; } } G.arcnum=G.arcnum/2; b=0; cout<<“删除成功!!”< } if(b!=0){ cout<<“输入有误!请看清楚!”< } else{ cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } } cout<<“返回后台系统按0,继续删除按1”< cin>>b; } } void deleteL(mgraph &G,Password &pw){ //删除一条路径 int b=1,i,j; bool a[50][50];system(“cls”); while(b){ browse(G); for(i=0;i<50;i++) for(j=0;j<50;j++) a[i][j]=false; for(i=0;i for(j=0;j if(G.adj[i][j]!=9999){ if(!a[i][j]){ cout< ”< a[i][j]=true;a[j][i]=true; } } } } cout<<“请输入要删除的路径连接的两个景点编号”< cin>>i; i--; cin>>j; j--; if(G.adj[i][j]!=9999){ G.adj[i][j]=9999; G.adj[j][i]=9999; b=0; cout<<“删除成功!”< G.arcnum--; cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } } if(b!=0){ cout<<“输入有误!”< } cout<<“返回后台系统按0,继续删除按1”< cin>>b; } } void addL(mgraph &G,Password &pw){ //添加一条路径 int b=1,i,j,distance; system(“cls”); browse(G); while(b){ cout<<“请输入要添加的路径连接的两个景点编号”< cin>>i; i--; cin>>j; j--; cout<<“请输入要添加的路径长度”< cin>>distance; if(G.adj[i][j]==9999){ G.adj[i][j]=distance; G.adj[j][i]=distance; b=0; cout<<“添加成功!”< G.arcnum++; cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } } if(b!=0){ cout<<“输入有误!”< } cout<<“返回后台系统按0,继续添加按1”< cin>>b; } } void changeL(mgraph &G,Password &pw){ //修改路径长度 int b=1,i,j,distance;bool a[50][50]; while(b){ system(“cls”); browse(G); for(i=0;i<50;i++) for(j=0;j<50;j++) a[i][j]=false; for(i=0;i for(j=0;j if(G.adj[i][j]!=9999){ if(!a[i][j]){ cout< ”< a[i][j]=true;a[j][i]=true; } } } } cout<<“请输入要修改的路径连接的两个景点编号”< cin>>i; i--; cin>>j; j--; if(G.adj[i][j]!=9999){ cout<<“请输入要修改的路径长度”< cin>>distance; G.adj[i][j]=distance; G.adj[j][i]=distance; b=0; cout<<“修改成功!”< cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } } if(b!=0){ cout<<“无此路径!”< } cout<<“返回后台系统按0,继续添加按1”< cin>>b; } } void Add(mgraph &G,Password &pw){ //添加一个景点 system(“cls”);int i,b=1;while(b==1){ cout<<“请输入景点名称:”< cin>>G.vexs[G.vexnum].name; cout<<“请输入景点信息:”< cin>>G.vexs[G.vexnum].inf; for(i=0;i G.adj[G.vexnum][i]=9999; for(i=0;i G.adj[i][G.vexnum]=9999; G.adj[G.vexnum][G.vexnum]=9999; G.vexnum++; cout<<“添加成功!”< cout< cout<<“是否要保存?保存按1,不保存按2”< int c; cin>>c; if(c==1){ writetxt(G,pw); } else{ cgraph(G,pw); } cout<<“返回后台系统按0,继续添加按1”< cin>>b; } system(“pause”);system(“cls”);} void regraph(mgraph &G,Password &pw){ //恢复初始状态 system(“cls”);cout<<“是否要恢复初始状态,是按Y,不是按N”< char c; cin>>c; if(c=='Y'){ strcpy(pw.p,“gdufsx”); //初始化密码 initgraph(G); writetxt(G,pw); } cout<<“已恢复初始状态”;} 公交查询系统设计与实现论文 1引言 随着城市经济的发展、规模的扩大以及人口的增长,城市交通问题日益突出。降低出行时间将使所有的公交利用者产生效益,快速的交通、更好的信息及更好的市场可以提高公交的形象,能够增加公交乘坐者。城市公共交通运输以其覆盖面广、经济、快捷的特点,成为绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。本地市民特别是外来旅游、出差、就医等急需了解本地道路情况的人可以利用本系统方便快捷的查询出所有符合他们要求的公交路线,对他们的出行和生活提供帮助。我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。出于这个目的,在老师的指导下,我设计了这个城市公交线路查询系统。在对公交乘客出行心理特征进行分析的基础上,考虑乘客选择公交线路决策的因素,进行程序关键部分的框架设计。 现阶段,人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次及相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。 1.1论文的研究内容 公交查询系统是一个取代过去由人工查询的查询系统。本论文论述了一个基于浏览器/服务器(B/Srowser/Server)模式的公交查询系统的研究和实现的过程.论文从开发平台和工具谈起,对ASP.NET服务器所提供的组件及其属性和方法做了一般介绍,更重要的是阐述了ASP.NET的数据库访问组件ADO.NET的使用方法。最后,详细介绍了如何创建“公交查询系统”的全部过程。系统的开发工具与环境 2.1ASP.NET简介 ASP.NET是一种建立在通用语言上的程序构架,能被用于一台 Web务器来建立强大的应用程序。ASP.NET提供许多比现在的开发模式强大的的优势。AS.PNET建立在.NET Framework的编程类之上,它提供了一个web应用程序模型,并且包含使生成web应用程序变得简单的控件集和结构。ASP.NET包含封装公共用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在务器上运行,并以HTML的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为web开发人员提供了面向对象的编程的丰富性。ASP.NET还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用ML webservices功能ASP.NET开发人员可以编写自己的业务逻辑并使ASP.NETT结构通过SOAP交付该服务。Visual Studio.NET是一套完整的开发工具,用于生成应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic.NET、Visual C++.NET、Visual C#.NET和VisualJ#.NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework的功能,此框架提供对简化应用程序和XML Web services 开发的关键技术的访问。 2.1.1ASP.NET技术的优点 ASP.NET是一种将各种Web元素组合在一起的服务器技术,是一个统一的Web开发平台,它提供了生成一个完整的Web应用程序所必须要的各种服务。与以前的开发模型相比较,它提供了以下数个重要的优点: (1)增强的性能。ASP.NET是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,.NET可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码之前便显著提高了性能。(2)世界级的工具支持。ASP.NET框架补充了Visual Studio集成开发环境中的大量工具箱和设计器。WYSIWYG编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种 (3)威力和灵活性。由于ASP.NET基于公共语言运行库,因此应用程序开发人员可以利用整个平台的威力和灵活性。.NET框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NETT也与语言无关,所以可以选择最适合应用程序的语言(如C#),或是跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到ASP.NET时保留基于COM的开发中的现有投资。(4)简易性。ASP.NET使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署的站点配置。 (5)可管理性。ASP.NET采用基于文本的分层配置系统,简化了将设置应用于服务器环境和Web应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了ASP.NET框架应用程序的部署。只需将必要的文件复制到服务器,即可将ASP.NET框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。 (6)可缩放性和可用性。ASP.NET在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。2.1.2.NET Framework概述 NET Framework是用于生成、部署和运行XML Web services 和应用程序的多语言环境。它由以下几个主要部分组成: 公共语言运行库 运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名 称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的COM相比。特别是反射等功能显著减少了开发人员为将业务逻辑转 变为可重用组件而必须编写的代码量。 统一编程类 该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集(API)。目前,C++开发人员使用Microsoft基础类,而Java开发人员使用Windows 基础类。框架统一了这些完全不同的模型并且为Visual Basic和JScript程序员同样提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从JScript到C++的所有编程语言具有对框架的相似访问,开发人员可以自由选 择它们要使用的语言。2.2 ADO.NET概述 ADO.NET并不是ADO的升级版本,它是全新的面向对象模型。比ADO更适应于分布式及Internet等大型应用程序环境,为了多人同时存取更具扩展性,ADO.NET的数据存取采用的是离线存取模式,可说是专门为.NET台设计的数据存取结构。它具有简单地访问关系数据、可扩展性、支持多层应用程序、统一XML和关系数据访问的特点。ADO.NET的主要目标是提供对关系数据的简单访问功能。坦白的说,易于使用的类描述关系数据库中的表、列和行。另外,ADO.NET引入了DataSet类,它代表来自封装在一个单元中的关联表中的一组数据,维持他们之间完整的关系。这是在ADO.NET中的新概念,可以显著的扩展数据访问接口的功能。ADO.NET可以扩展——它为插件.NET 数据提供者(也称为可管理提供者)提供了框架,这些提供者被构建,以便从任何数据源读取和写入数据。ADO.NET提供了两种内置的.NET数据提供者,一种用于OLE DB数据源,另一种用于Microsoft SQL Server。可以通过OLE DB访问数据格式(比如Microsoft Access)、第三方数据库和非关系数据另外,Microsoft最近预演了用于ADO.NET的ODBC.NET数据提供者,它允许.NET 访问更多的旧的数据格式和第三方数据库。ADO.NET用于多层应用程序。这是当今商业和电子商务应用程序最常见的体系结构。在多层体系结构中,应用逻辑的不同部5分1运a行s在p多x个服务器或进程中,每一部分就称为一层。ADO.NET使用开放的Internet标准XML格式在层之间通信,允许数通过Internet防火来传递,并允许以非Microsoft技术来实现一层或多层。那么在Visual Studio.NET中ADO.NET访问数据库分为二种。一种是SQL Server 数据库,另一种是其任何类型的数据库。本系统的后台数据库为SQL Server2005,因此是通过SQLConnection、SqlCommandSqlDataAdapter、DataSet等几个主要的数据访问对象来访问数据的.需求分析 3.1系统需求分析 随着我国经济的高速发展,人们生活水平的提高,越来越多的人开始热衷于到外地旅游。那么对于这些外来旅游者,首先搞清这个城市的公交路线显的很重要!我的家乡沈阳,作为一个旅游城市,每年都要吸引大量的游客,为了满足这些游客熟悉公交路线的需求,特以公交查询系统为设计课题。本软件不仅能给游客带来方便,也能给广大市民提供方便。我认为这样的系统应该具有很好的实用性!开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规范公交管理,提高服务质量,方便乘客查询,并为此设计该系统。人们生活水平的提高,越来越多人喜欢旅游,但是第一次来一个陌生的城市,肯定对公交路线不熟悉,所以必定需要一个能查看具体公交线路的公交系统。有些只知道一个站的某几个字或一个车次的某几个数字,所以本系统将给出站点的模糊查询,方便用户的查询,有些只知道车次 或某个站点,本系统也给出了公交线路查询、公交站点查询、公交换乘查询,进一步方便大家的出行,但也有用户什么都查不到,想留言问问人,所以再搞个留言板很有必要,方便大家交流以及解答各种疑难问题!本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及和数据库的联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能前台主要有3个模块,线路查询、站点查询、公交换乘模块和后台管理模块 功能名称:线路查询 功能概述:可以获得要查询公交所通过的各个站点。 功能名称:站点查询 功能概述:通过输入的指定站点查询经过该站点的公交。 功能名称:公交换乘查询 功能概述:分为公交直达、公交一次换乘,主要体现那些不可直达需要转车的路线的所有换法。(如果用户输入的起始点和终点,有一条及一条以上的公交线可以直达的,则为公交直达;如果输入的起始点和终点,没有一条公交线可以直接到的,系统将会给出一次换乘的方案,则为公交一次换乘)功能名称:后台管理 功能概述:用于管理员登陆,添加、修改、删除公交线路,修改信息资料、安全密码,回复留言板等功能。 本系统提供了的车次查询功能、路5线1查A询S功P能X。乘客可以方便的进行查询,以防乘错车次。当然有些功能的智能化不是很强,系统有待进一步来完善。 3.2 数据库需求分析 数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。 数据库技术是由传统的文件系统发展而来的,从层次模型、网状模型发展到关系模型。数据库技术是数据管理的最新技术,是计算机科学的一个重要分支,它能指导我们正确地设计数据库系统,它的出现极大地促进了计算机应用的发展。采用数据库技术的原理和方法可以有效地设计实用的数据库系统。一个完整的数据库系统包括数据库管理系统(DBMS),数据库管理员(DBA)、数据库(DB)、应用程序和相应的硬件设施。 目前许多数据库管理系统都基于关系模型,关系模型的主要特点是用表格结构表达实体,用键表示实体与实体之间的联系。与层次模型和网状模型相比,关系模型比较简单,容易为初学者接受。关系模型是由若干个关系模式组成的集合,关系模式相当于记录类型,它的实例称为关系。每个关系是一张表格。表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行数据操作,并不涉及到存储结构,访问技术等细节。关系模型是数学化的模型,要用到集合论,离散数学等知识。SQL语言是关系数据库的代表性语言,已经得到广泛应用。 在设计数据库时,应注意数据的安全性,保证数据的安全,防止非法用户访问数据库,以免泄露重要信息,同时也能51防A止s非法用户的蓄意破坏,有许多保护数据的方法,如采用用户标识,口令密码或访问控制等方法。一个成功的数据库应用系统应具有用户标识,每一个合法用户具有一个用户名和相应的口令,进入数据库应用系统前必须输入正确的口令,否则无法进入系统,这就保证了只有合法的用户才能操作数据库系统。为了保证数据的合法语义,必须对数据库的数据进行完整性约束,即防止用户输入不合语义的数据。 在设计应用软件时,应严格按照软件工程学的方法进行设计,传统的方法采用瀑布模型,从问题定义、可行性分析、需求分析、概念设计、总体设计、系统实现、编码和软件测试、运行和维护等软件生命周期内,每一阶段均在前一阶段的基础上进行设计,并在每一阶段有相应的文档资料。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的 需求。数据库设计一般包括如下几个步骤:数据库需要分析,数据库概念结构设计,数据库逻辑结构设计。 4系统概要设计 4.1概述 本阶段设计的基本目标是解决系统如何实现问题,也叫做概要设计,本阶段主要任务是划分 出系统的物理元素及设计软件的结构,完成软件定义时期的任务之后就应该对系统进行总体设 计,即根据系统分析产生的分析结果来确定这个系统由哪些系统和模块组成,这些系统和模块又如何有机的结合在一起,每个模块的功能如何实现。系统设计的目标是使系统实现拥有所要求的功能,同时,力争达到高效率、高可靠性、可修改性,并且容易掌握和使用。模块化的依据是: 把复杂问题分解成许多容易解决的小问题。原来的问题也就变得容易解决。模块化设计是把大型软件按照一定的原则划分成一个较小的相对功能独立又相关联的模块。每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。完成指定的功能,满足问题的要求。采用模块化原理的优点在于可以使软件结构清晰,容易测试和调试。从而提高软件的可靠性,可修改性。有助于软件开发的组织管理。一个大型软件可分别编写不同的模块。4.2功能模块划分 查询系统模块 该模块实现公交查询功能。可实现按线路查询、站点查询和起点—终点查询三种查询方式。录入系统模块该模块实现数据的新增、修改、删除功能。 4.3.1 数据库概念结构设计 在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但它只是数据库设计的第一步。E-R图是直观表示概念模型的工具,它有三个基本成分: (1)矩形框,表示实体类型(考虑问题的对象)。(2)菱形框,表示联系类型(实体间的联系)。(3)椭圆形框,表示实体的属性。实体和属性的定义如下: 管理员表(登陆ID,登录姓名,登录密码)站名表(站名编号,站名) 车辆线路编号表(车次,车线类型) 线路表(线路编号,车次,站名,次序) 车辆表(车辆编号,车次,车辆类型,服务类型,票价,IC 卡类型,运行区间) 冬季发车时间表(车次,编号,首班时间,末班时间) 夏季发车时间表(车次,编号,首班时间,末班时间) 4.3.2数据库逻辑结构设计 本系统创建的SQL数据库名称为城市公交查询系统。并将数据文件和日志文件保存在公交查询系统APP_DATA文件夹中。①管理员表(LoginTable) 管理员表存放登陆系统所需要的用户名和密码,登录后台时需要访问此表。 ②站名表 站名表存放站名等数据,修改站名需要访问此表。 ③车辆线路编号表 车辆线路编号表存放线路编号等数据,修改车辆线路编号将要访问此表。 ④线路表 线路表存放公交车线路的数据,修改车辆线路需要访问此表。 5详细设计与实现 5.1.连接数据库的包含文件 在动态网站中,调用数据库中的数据是十分频繁的,为了避免编写重复的代码。编写一个数据库连接文件是非常重要的。DB.cs 文件中包含了本系统中的数据库的连接代码。本系统的数库 的连接代码如下: public static SqlConnection createConnection(){ SqlConnection con=new SqlConnection(“server=.;database=城市公交查询系统;uid=sa;pwd=;”);return con;} 5.1.1新增车次线路 此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有新的站点加入,管理员可以登录此表,及时添加线路和站点的信息,以保证车次线路的及时更新,方便用户查询。添加车次的界面如图所示。 在输入相关车次信息后便进入站名添加过程如图 5.1.2新增车次线路 此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有所变动是,管理员可以登录此模块,及时添加相关的线路图,以保证车次线路图的及时更新,方便用户查询。添加的界面如图 5.1.3删除车次以及无效站点 此模块同样为管理员操作,如当地哪个公交线路已经被废除,或原有公交车线路有哪个站点被删除,管理员可以登录此表,及时删除线路和站点的信息,以保证车次线路的及时更新,方便用户查询。删除的界面如图 5.1.4删除线路图 该模块在管理员系统中实现,如当地哪个公交线路已经改变,管理员可以登录此模块,及时删除线路图信息,以保证车次线路图的及时更新,方便用户查询。删除的界面如图 6测试与维护 6.1 创建和测试应用程序 为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程 举例说明如下: 创建和测试应用程序应是交替进行的,既要注意开发的效率也要注意它的稳定性。每编写一个模块,就要对这个模块进行测试,看它能否根据特定的要求工作。及早发现问题,及早解决,否则到最后再来测试的话,难度会大大增加。6.2测试项目 在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS 开发总工作量的40%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。 有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。 总结 在公交数字化的时代,公交系统的设计者应当以乘客需求为首位,调整服务策略,满足社会的需要和乘客的需要,充分发挥公交系统交通中心的作用。本系统基本达到了预定的设计目标,但是在系统的实际化应用中仍需要改进和提高公交查询系统的服务职能。系统的不足与改进方案: 在数据库设计方面,还有待改进,数据库设计也可采用别的形式,比如:可以用一个字段作为站点字段,另一个字段作为经过该站点的车次字段,只要找到经过某个站点最多的车次,就可以设计该字段的类型以及长度。其次,系统的实际应用化欠缺,可以通过使用根据起点站、终点站来确定那条路线,给出多种乘车方案的方法改进。线路的更新应该可以通过调整数据库次序的方法来更新。同时,界面的设计不够美观版面的设计以及查询结果的显示不够人化,视觉效果不佳。应当参照一些比较美观的网站设计进行色彩的调整,同时亦可以加入更多的FLASH效果使得页面更具动态性。 致谢 时光飞逝,一转眼我的大学生活就要结束了。这两年我学到了很多很多的知识,是我人生的一个转折。我之所以能取得这些成绩,除了有自己的努力外,在我的学习,生活中还得到了很多人的关心和帮助。在此我要对他们表示衷心的感谢。 首先,我要感谢我的毕业指导老师。在连续数月的毕业设计中,她不遗余力地指导和帮助我。在她孜孜不倦的教诲下,我顺利地完成了毕业设计。老师对工作认真负责的态度,对学生无私的关怀,使我受益良多。我衷心地感谢她。在这里我还要感谢所有指导过我的老师们,没有你们的培养我无法完成两年的大学学业还有,我能有今天,是与我父母的辛勤培养分不开的,他们为我付出了一切。我将在以后的学习、工作中再接再厉,尽我最大的努力做到最好来报答父母的养育之恩。 参考文献 [1]曹祖圣.吴明哲.Visual C#.NET 程序设计经典.北京:科学版社,2004.P.50-53.[2]宣小平.ASP.NET数据库系统开发实例导航.上海:人民邮电出版社,2003.P.121-130.[3]金银秋.数据库原理与设计.北京:科学出版社,2003.P.201-230.[4]张海藩.软件工程.北京:人民邮电出版社2002.P.75-80.[5]朱晔.ASP.NET 第一步——基于C#和ASP.NET2.0.北京:清华大学出版社,.2007-7-1.P.301-310.[6]谭振林.道不远人——深入解析ASP.NET 2.0 控件开发.北京:子工业出版社。2007-9-1.P.125-140.[7]哈特 ASP.NET 2.0经典教程——C#篇孟宪瑞,易磊.北京:人民邮电出版社.2007-2-1.P.20-40.[8]朱印宏,熊利荣.Dreamweaver 8完美网页设计——ASP动态网页设计篇.北京 中国电力出版社.2006-10-1.P.63-72.[9]郝刚ASP.NET 2.0开发指南.北京:人民邮电出版社.2006-5-1.P.53-55.第五篇:公交查询系统设计与实现论文