大型软件实验指导书信息与通信工程学院通信工程系第一章概述1.1实验设计目的与作用:数据结构是通信工程专业一门重要的专业技术课程,它是一门实践性很强的课程。大型软件实验课程是为配合数据结构课程,对学生进行全面综合训练、与课堂教学、作业练习题、上机实验相辅的必不可少的一个教学环节。●练习题主要是结合每章节的内容进行练习;●上机实验是对课堂内容的理解,而且提高同学编程、上机操作、程序调试、验证算法的能力。●大型实验是在数据结构课程结束后对学生进行软件设计全面训练的一个重要环节。通过该课程实验,培养学生综合运用数据结构知识解决实际问题的能力及计算机应用的能力,培养学生严谨的科学作风、团结协作精神、撰写设计说明书的能力。要求学生灵活应用软件工程理论与知识,选择一个结合实际的题目,进行系统分析,系统设计。选择合适的数据结构和算法选择一种高级语言编程实现所设计的内容,并进行模块调试和联合调试。设计结束后按照软件工程规范写出设计报告。1.2实验步骤:按照软件工程方法要求的几个阶段进行。(1)问题定义和系统分析阶段分析题目要求做什么,即分析题目的数据要求和功能要求。数据要求主要如原始数据有哪些,输入数据的类型、取值范围及输出形式,数据的限制条件、动态变化情况,系统性能等。分析功能要求:说明要实现什么功能,定义功能的含义,从输入数据如何表示成输出数据,分析系统对安全保密性能的要求。确定人机边界。哪些是由计算机完成的,哪些是由人工完成的。对于在人工工作过程中重复性的工作能否合并,去伪存真,建立计算机的逻辑模型。写出系统分析说明书。(2)系统设计阶段在系统分析的基础上进行系统设计,主要是如何实现分析阶段提出的任务。第一步,确定功能结构图。根据分析阶段提出的数据要求,以数据结构为中心,定义总体结构图,确定功能模块。第二步,细化功能模块,使每个模块完成单一功能,模块间联系尽量少。确定模块的输入、输出数据类型、数据格式,模块的功能及模块间的联系,画出模块间联系图。第三步,选择数据结构。根据功能要求和数据要求确定数据的存储结构和算法。要求所选的数据结构合理,算法高效率。编写每个模块的算法。第四步将上述内容写成设计说明书。(3)系统编程阶段选择C语言或PASCAL等语言进行结构化程序设计,编程实现各模块,每个模块语句一般在50条左右。在编程前,先定义程序功能、变量说明、输入数据。然后进行小组分工,要求每一个人完成一部分模块的程序。程序编好后,先进行静态检查,即手工执行程序,对程序进行全面检查,做好上机准备,熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机。然后上机编辑调试各模块。上机调试程序时要带一本高级语言教材或手册。(4)系统测试阶段测试是软件工程中重要的一个阶段。测试的目的是发现设计中的错误、修改错误,保证软件的正确性、可靠性。第一步,准备好测试数据,可选择一些实际的数据。第二步,分模块测试,即对每一个模块进行测试。先个人测试,然后小组内相互测试。自底向上,即先调试低层过程或函数。必要时可以另写一个调用驱动程序。这种表面上麻烦的工作实际可以大大降低测试所面临的复杂性,提高测试工作效率。在调试程序过程中可以不断借助DEBUG的各种功能,提高调试效率。调试中遇到的各种异常现象往往是预料不到的,此时不应“苦思其想”,而应动手确定疑点,通过修改程序来证实它或绕过它。测试数据选择应分几种情况:正常情况、特殊情况、非法数据。第三步,联调。整个系统连起来调试,由组长负责。第四步,写出测试报告。测试正确后,认真整理源程序及其注释,印出带有完整注释的且格式良好的源程序清单和结果。(5)总结整理实验报告1.3实验报告的规范实验报告的开头给出题目、班级、姓名、学号和完成日期。(1)需求分析说明题目设计的任务压哦,强调的是程序要做什么?明确规定:输入数据的形式和输入值的范围;输出的形式;程序所能达到的功能;测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。(2)概要设计总体模块结构,主程序的流程以及各程序模块之间的层次(调用)关系。(3)详细设计对每个模块按照细化后的模块进行功能说明;说明所选择的数据结构、每个操作的算法;定义所有数据结构和数据类型,对主程序和其他模块也都需要写出算法(算法达到的详细程度建议为:按照算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。(4)程序调试分析内容包括:调试过程及遇到的问题、解决的方法;(5)测试结果列出你的测试结果,包括输入和输出。测试数据应该完整和严格。(6)用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。(7)经验和体会,改进设想等。附录带注释的源程序。提交源程序软盘,附录可以只列出程序文件名的清单。注意:实习报告的各种文档资料,如:上述中的前三部分要在程序开发的过程中逐渐充实形成,详细设计应在编程前确定、写好,每人一份,而不是最后补写.当然最后应该用实验报告纸誊清或打印。1.4实验时间安排:总学时:两周。第一周:星期一选课题、分组、查资料;星期二要求分析,写出分析报告;星期三系统设计,确定总体方案,选择数据结构、存储结构和算法;讨论系统设计报告。星期四系统设计方案确定;星期五:编程;第二周:星期一:编程;星期二:上机,调试;星期三:上机,调试;星期四:自行调试,写总结报告;星期五:上机验收;第三周:交实验报告。第二章综合实验题目1订票系统设计一个航空订票系统或火车订票系统。(4人)要求能够办理以下客运业务:(1)对铁路客运或航线信息的存储和查询,增加、删除、修改各项内容。其信息包括车次、始发站、经过站点、距离、票价、开车时间。(2)订票业务为旅客办理订票。旅客姓名、身份证号码、性别、联系地址、电话以及订票信息,包括车次、座号、票价、开车时间、数量等。客户查询相关车次情况、座位情况、票价等情况。(3)预约订票。(4)退票业务。根据订票信息办理退票。所退票可考虑出售给预约订票的乘客或直接退票。(5)综合查询系统。各车次订票、退票情况,票价、到站、乘客信息等等。2图书管理系统(4人)(1)要求对图书进行采编入库,分类存储。(2)方便用户检索,用户可查询各类图书、现在库存情况。(3)读者借书登记。(4)还书登记。3哈夫曼编/译码系统(4人)哈夫曼编码是一不等长编码,实现了数据的压缩。利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间。要求对发送端待发送的信息进行哈夫曼编码,在接收端进行译码。(1)统计待发送数据的字符出现的频率。(2)建立哈夫曼树,显示哈夫曼树。(3)求哈夫曼编码,显示发送数据。(4)译码:根据发送的数据与哈夫曼树进行译码,显示译码数据。4.全国交通咨询模拟(4人)编制一个全国城市间的交通咨询程序,为旅客提供最优的路线。要求:(1)对全国铁路交通图和航空航线进行编辑存储,包括插入、删除、修改打印功能。(2)根据用户需要提供旅行路线。①最快到达(节省时间)路径。②最短路径(省钱)。③从某始发站到某终点站的各条路线。查询显示,包括时间、费用、中转站等。5校园导游咨询(4人)(问题描述)设计一个校园导游程序,为来访的客人提供各种信息查询服务。(基本要求)(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2)为来访客人提供图中任意景点相关的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。(实现提示)一般情况下,校园的道路是双向通行的,可设校园平面是一个无向网。顶点和边均含有相关信息。6停车场管理(2人)(问题描述)设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场是必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。(基本要求)按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。7、学生成绩管理(4人)按学年、学期分学院、专业、班管理每个人的成绩,包括建立、插入、删除、查询和统计等功能。8、仓库物资管理(4人)某仓库有四大类物资:黑色金属、有色金属、非金属、机电设备。要其按类管理物资,管理功能如下:(1)、物资按四大类入库,记录库存明细账(包括账号、品名、规格、单价、数量、金额、产地、入库日期)。(2)、出库:记录出库明细账(3)、查询(4)、分类统计:月报表、季报表、年报表9、英语词典检索(4人)建立英语词汇表、能够实现快速查询、插入、删除。10、最小生成树(4人)(习题集152页5.6题)在n各城市间建设通讯网络,用最小成本架设线路。要求建立N个城市间通信网络;增加删除城市节点;遍历通信网络中的各个城市节点;求最小生成树,输出各节点及边上的权值。11、智能排序系统(4人)对教科书上讲解的各类排序方法编程实现,进行演示。分析比较各种排序方法,输入各种情况的数据进行排序,分析出它们的比较次数,并作图显示各种排序曲线,得出结论,各类排序的最好情况,最坏情况,平均情况。13、自选题目学生也可自己选择一个适合得到综合训练的题目进行设计。