东华大学 数据结构课程设计
东华大学数据结构上机实验报告
东华大学信息科学与技术学院实验报告实验名称:线性表的基本操作指导教师:学生姓名:学生学号:实验日期:2012/11一、实验目的1、熟悉C或VC++语言上机环境。
2、会定义线性表的顺序存储结构和链式存储结构。
3、熟悉顺序表和单链表的一些基本操作和应用。
4、加深对线性表的理解,逐步培养解决实际问题的编程能力。
二、实验环境运行C或VC++的微机。
三、实验内容:分别使用顺序表和单链表存储结构实现以下操作:1.建立线性表L={12,13,21,24,28,31,42,77};2.在第5个元素之前插入26;3.删除第5个元素28;4.查找28。
四、实验设计思路及算法流程(一)使用顺序表实现操作:建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出、查找元素、判线性表是否为空;问题分析:利用顺序表,设计一组输入数据,能够对顺序表进行如下操作:创建一个新的顺序表,实现动态空间分配的初始化;已给定的值插入到指定位置和删除指定位置的值,形成有序顺序表;按值查找,根据给定数据元素的值,查找该元素的位置,对查找结果进行返回;实现顺序表的各个元素的输出;“初始化算法”的操作结果:构造一个空的顺序线性表,对顺序表的空间进行动态管理,实现动态分配、回收和增加存储空间;“位置插入算法”的初始条件:顺序线性表L已存在,给定的元素位置为i,且1≤i≤ListLength(L)+1 ;其操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1;“位置删除算法”的初始条件:顺序线性表L已存在,1≤i≤ListLength(L) ;其操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 ;“输出算法”的初始条件:顺序线性表L已存在;其操作结果:依次对L的每个数据元素进行输出;“按值查找算法”初始条件:顺序线性表L已存在,元素值为e;其操作结果:返回L 中数据元素值为e的元素位置;线性表的顺序存储结构的定义及其基本操作的参考程序(顺序表)文件一:pubuse. h 是公共使用的常量定义和系统函数调用声明。
东华大学电子信息科学与技术 培养方案
电子信息工程专业(卓越工程师培养计划班)发布时间:2011-12-22总体培养目标面向国家信息化战略规划,德智体全面发展,掌握电子信息工程学科的相关理论基础,获得工程师良好训练,能胜任电子信息系统工程项目的分析、设计、开发、维护、管理,具有继续学习能力、创新能力、国际视野、跨文化沟通能力和团队意识的卓越电子信息人才。
通过本科阶段的培养使学生掌握电子信息工程领域扎实的理论基础和较宽的专业知识、具有团队精神和创新意识、具有国际交流能力的电子信息工程型人才;经过工程实践能力的重点训练,使其成为能从事通信系统、智能化仪器仪表、信息电子和消费类电子系统与装置的设计、研制、开发、运行的高级工程技术人才。
主要课程除工科类本科公共基础课、技术基础课外,还开设了创新思维与方法、专业导论等课程。
主要专业基础课和专业课有: 电路分析、模拟电子技术、数字电子技术、通信电子电路、信号与线性系统、电磁场与电磁波、通信原理、单片机原理与实践、数字信号处理、嵌入式原理与应用、面向对象程序设计、感测技术、计算机通信网、随机信号分析、数字图像处理、先进电子系统分析与设计、锁相与频率合成、天线与电波传播、电磁兼容原理和技术、电子专业前沿课程、射频与微波电路设计、无线移动通信、可编程ASIC技术、无线传感网络原理与应用、DSP技术、信息采集与处理技术。
主要实践环节工程训练、C语言程序设计上机、认识实习(电工电子)、数据结构课程设计、电路实验、信号与系统课程设计、电子技术实验、电子技术课程设计(分散)、微机系统及应用课程设计、微机系统与应用实验、数字信号处理综合实验、高频电子线路实验、通信原理实验、企业认识实习、电子信息系统设计、专业综合实习、毕业设计(论文)。
通信工程专业培养目标本专业培养掌握通信科学基础理论与技术以及电子科学、计算机科学、控制科学的一般理论与技术,能在通信领域及相关领域中从事通信与信息系统研究、设计、制造、运营及在国民经济各部门从事开发、应用通信技术与设备的高级通信工程技术人才。
东华理工大学C++课程设计(哈夫曼树)
《数据结构与算法设计》课程设计报告题目:哈夫曼树及其应用学生姓名:刘信宏学号: ************班级: 1121808指导教师:**2013年1 月11 日数据结构课程设计任务书使用班级:1121805-8/1121813-16/1121821-22使用时间:2012-2013学年第1学期一、课程设计目的本课程设计的目的考察学生对常见数据结构及相关算法的综合应用能力,达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,解决实际问题中数据的合理存储表示,并根据相应的存储结构设计效率较高的算法实现对问题的求解;通过此次课程设计进一步培养学生良好的程序设计技巧和分析问题解决问题的能力。
二、课程设计题目哈夫曼树及其应用设计目的:熟悉树的各种存储结构及其特点。
掌握建立哈夫曼树和哈夫曼编码的方法及带权路径长度的计算。
设计内容:欲发一封内容为AABBCAB ……(共长100 字符,其中:A 、B 、C 、D 、E 、F分别有7 、9 、12 、22 、23、27个)的电报报文,实现哈夫曼编码和译码。
设计要求:分析系统需求。
建立哈夫曼树。
进行哈夫曼编码,并求出平均编码长度。
译码。
对编码好的内容进行译码。
三、课程设计要求:1、每人一题,且需独立完成。
2、每人的设计程序必须为可执行的exe文件,且需指导教师验收合格。
学生程序必须在课程设计的最后一天交由指导教师验收合格。
过期不再验收程序,如程序验收不合格或在规定时间内未经指导教师验收,则视为该生程序没有完成。
3、每人必须在规定时间内到机房做程序,指导老师将严格考勤,上机期间严禁做与课程设计无关的事情。
指导教师将随时抽查。
4、每人必须撰写课程设计报告并上交纸质稿(格式附后)。
5、上交材料包括课程设计报告电子稿和程序代码电子稿(每位同学先建立一个文件夹,取名规则为“学号姓名”,文件夹里存放上交电子内容,分别是“学号+姓名+报告”和“学号+姓名+程序”,每班取一文件夹名,取名规则为班级号,内放该班同学上交内容,每班学习委员统一收齐后拷贝给指导老师。
数据结构课程设计实验指导书20111222
钱六:80*100/100=80分
3
如果某小组无此表格,则每个成员的贡献度按100计算。 如果某小组的贡献度平均值大于100,则降低组长的贡献度, 使得平均值为100。 1.6 注意事项: 1、 迟到3次或缺席一次,成绩下降一个档次,迟到6次或缺席2 次,成绩再下降一个档次,依次类推。 2、 上机时发现玩游戏一次,成绩下降一个档次,玩游戏二次, 成绩再下降一个档次,依次类推。 3、 课程设计开始前,各班的同学在班内自由组合,形成小组, 每小组自行推荐小组长一人,在课程设计开始的第一天上交 组长名单、小组组员名单,名单上注明班级、学号、姓名。 1.7 参考书目 [1] 严蔚敏等著, 数据结构(C语言版), 清华大学出版社
为了更好地配合数据结构课程的实践,特编写此课程设计指导 书。 1.1 指导思想
本次课程设计的指导思想是: 1、学习获取知识的方法; 2、提高发现问题、分析问题和解决实际问题的能力; 3、加强创新意识和创新精神; 4、加强团队的分工与合作; 5、掌握面向实际背景思考问题的方法。 1.2 设计任务 本次课程设计任务主要分为个人任务和小组任务两种。 个人基本任务: 完成第2章以及第3章中的设计任务,其中选做题不是必须完成的 任务。
数据结构课程设计
实 验 指 导 书
东华大学计算机科学与技术学院
2011 年 12 月
0
目录
1. 前言.............................................................................................................................................1 2 顺序表与链表.................................................................................................................................5
东华大学c语言课程设计
东华大学c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生独立编程和解决问题的能力。
具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、关键字、数据类型、运算符、控制结构、函数等基本概念。
2.技能目标:学生能够熟练使用C语言进行程序设计,掌握常用的调试技巧,能够独立解决编程过程中遇到的问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生自主学习、合作交流的能力,培养学生的创新意识和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。
具体安排如下:1.C语言基本语法:介绍C语言的基本数据类型、运算符、控制结构、函数等。
2.数据结构:讲解数组、链表、栈、队列等基本数据结构及其应用。
3.算法:介绍常用的排序算法、查找算法、递归算法等。
4.编程思想:培养学生面向对象编程的思想,讲解面向对象编程的基本概念和方法。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师通过讲解、演示、举例等方式,向学生传授C语言的基本知识和编程技巧。
2.讨论法:学生进行小组讨论,引导学生主动思考、提问,培养学生的合作交流能力。
3.案例分析法:分析典型的编程案例,让学生学会分析问题、解决问题的方法。
4.实验法:安排实验课程,让学生动手实践,巩固所学知识,提高编程能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。
2.参考书:提供一些有关C语言编程的参考书籍,供学生拓展阅读。
3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。
4.实验设备:准备计算机、网络等实验设备,为学生提供实践编程的环境。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。
数据结构课程设计(1)
课程设计 pp-6
数据结构
题目2 迷宫问题
课程设计
问题描述:
以一个m*n的长方阵表示迷宫,0和1分别表示迷宫 中的通路和障碍。迷宫问题要求求出从入口(1,1)到 出口(m,n)的一条通路,或得出没有通路的结论。
基本要求:
首先实现一个以链表作存储结构的栈类型,然后 编写一个求迷宫问题的非递归程序,求得的通路以三元 组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的 一个坐标, d表示走到下一坐标的方向。
基本要求:
1、待排序表的表长不小于100;
2、至少要用5组不同的输入数据作比较;
3、排序算法不少于5种;
4、最后要对结果作简单的分析。
测试数据:
用伪随机数产生程序产生。
选作内容:
对不同的表长做试验分析两个指标相对于表长变 化关系。
pp-12
实现要点
数据结构
题目1 多项式的算术运算
多项式相加
p(x)=3x14−8x8+6x2+2 q(x)=2x10+4x8−6x2
9 操作说明 说明使用本软件的操作方法。
10 总结 在总结中可谈本人的心得体会及软件 进一步改进的方向等项内容。
11 参考文献
12 附录
pp-4
数据结构
题目1 一元多项式计算器
课程设计
问题描述:
设计一个稀疏多项式简单计算器
基本要求:
(1) 输入并分别建立多项式A和B。
(2) 输入输出多项式,输出形式为整数序列:
数据结构
课程设计
课程设计
pp-1
数据结构
时间: 完成方式: 考核方式: 考核形式:
课程设计
二周。 一人一题。 考查。 检查:上机运行、检查结果; 答辩:对程序提问、回答问题; 提交:原程序清单、课程设计报告。
数据结构课程设计-运动会分数统计系统
运动会分数统计系统Ø 设计内容1. 任务:参加运动会有n个学校,学校编号为1~n。
比赛分成m个男子项目,和w个女子项目。
项目编号为1~m,女子为m+1~w。
不同的项目取前5名或前3明积分;取前5名的积分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由学生自己决定。
(m<=20,n<=20)。
2. 功能要求:1) 可以输入各个项目的前3名或前5名的成绩;名的成绩;2) 能统计各个学校总分;能统计各个学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前3或前5名的学校。
名的学校。
Ø 设计思路1. 系统结构设计图运动会SportsMeeting东华University交大University……比赛项目集合SportEvents 项目1 Event项目2 Event…………复旦University运动会分数统计系统结构设计图2. 思路分析1) 从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的比赛项目。
然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参加某个比赛项目。
加某个比赛项目。
2) 首先,在上述结构图中,比赛项目Event 是最小的数据存储基本单元。
比赛项目集合SportEvents 可以理解为Event 数组,包含了所有的比赛项目。
根据约束,只要有学校University 参加运动会,此学校就包含了一个SportEvents 集合,即为每个学校分配自己的项目成绩单。
有n 个学校报名参加了运动会SportsMee ng ,大会的工作人员根据比赛项目结果统计各个学校的成绩。
赛项目结果统计各个学校的成绩。
因此,因此,这种设计结构有3层包含关系,层包含关系,但是每一部分但是每一部分相互独立,耦合性弱。
东华大学数据结构设计C语言航空订票系统
char start_time[20]; /*起飞时间*/
char arrive_time[20]; /*到达时间*/
float price; /*票价*/
float discount; /*折扣率*/
int ticketnum; /*总票数*/
int ticketleft; /*剩余票数*/
}air[A];
五、概要设计……………………………………………………(5)
5.1 系统的流程框图…………………………………………(5) 5.2 系统各函数的功能、相互调用关系 …………………(6)
六、详细设计……………………………………………………(8)
6.1 各变量的定义和作用 ………………………………(8)
6.2 系统各函数的功能 …………………………………(8) 七、调试分析……………………………………………………(21) 八、用户手册 …………………………………………………(22) 九、测试结果……………………………………………………(22) 十、心得体会与参考文献………………………………………(22)
} //调用管理员账户信息 else cout<<"密码错误!!! 重新选择按键"<<endl;
break; } case 2://登陆客户账户
{ system("cls"); /*清屏功能,美化界面*/
customermenu(); break; }
case 0://登陆客户账户 {
exit(0); break;
●尽量达到系统操作过程中的直观、方便、实用、安全等要求。 ●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未 参与开发的技术维护人员补充、维护。 ●系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。
东华理工大学数据结构课程设计
数据结构课程设计论文题目:基于线性表下的查找与排序姓名:赖德发学院:理学院专业:信息与计算科学班级:1123202学号:2011203202022014年1月17日一、实验环境(1)硬件:学生每人一台计算机。
(2)软件:Windows操作系统,Visual C++6.0。
二、实验内容基于线性表下的查找与排序。
三、实验原理1.基于线性表的查找法概述集合结构是数据对象之间关系松散的一种数据结构,对其进行查找是根据给定的关键字,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。
查找的方法分为比较式查找法和计算式查找法,其中比较式查找法可分为基于线性表的查找法和基于树的查找法;而计算式查找法也称为Hash(哈希)查找法。
基于线性表的查找法是将集合的数据对象组织成为线性表形式进行查找,即用给定的关键字与线性表中各元素的关键字逐个比较,直到成功或失败。
线性表的存储结构通常是顺序存储结构,也可使用链式存储结构。
查找时可在表的一端设置一个“监视哨”,存放要查找元素的关键字,从表的另一端开始查找,若在“监视哨”找到要查找元素的关键字,返回失败信息,否则返回关键字的位序。
基于线性表的查找技术有着非常广泛的应用。
2.基于线性表的排序法概述排序是计算机程序设计中的一种重要操作,在数值计算或数据处理过程中,都会直接或间接用到数据的排序问题。
排序的功能是将一个数据元素(或称记录)的无序序列,按数据元素的关键字大小排列成一个递增或递减有序的记录序列。
由于待排序的记录数量不同,使得排序过程中涉及的存储器也不同,因此可将排序方法分为内排序和外排序。
内排序包括插入、交换、选择和归并等几类排序。
2.1基于插入类的排序概述插入类排序的基本思想是假定记录序列中前面的一部分记录已经有序,把后面的一个记录插入已排序的有序子序列中去,使得插入这个记录后得到的依然是有序序列,从而逐步扩大有序的子序列的长度,直到所有记录都有序为止。
东华大学专业选课手册-电子信息工程专业选课指导手册
电子信息专业选课指导手册
一、明确各类课程的任务
基础阶段:通识教育(基础课程、公共课)
学科基础:专业平台课、学科基础必修和选修课程,宽厚的专业基础能力培养
专业方向:专业方向能力培养
实践教学与综合实践:实践、创新能力培养
二、选课指导
●为了达到比较良好的学习效果,建议学生安排好大学四年的课程,不要过于集中在某学年或某学期,注意修读学分量的把握、平衡。
●“/”表示前半学期和后半学期的分界
●综合实践中的课外科技活动2个学分可通过参加开放性实验、在各级竞赛中获奖、获发明、专利、发表论文等获得。
●学生在校期间在各级竞赛中取得优秀成绩或获发明、专利、发表论文及其他成果者,经专家评定可给予创新学分,由教务处授予。
创新学分可抵充学科基础类选修课程学分、综合实践中的课外科技活动学分。
具体课程由学生提出申请,学院审核同意,报教务处认定。
本选课指导手册解释权归信息学院
选课咨询地点:信息楼221;电话:67792332,联系人:刘堂友。
数据结构课程设计
数据结构课程设计运动会分数统计东华大学信息科学与技术学院班级:电气1403班姓名:余晨辉学号:140400529一.任务:参加运动会有n 个学校,学校编号为1……n。
比赛分成m 个男子项目,和w 个女子项目。
项目编号为男子1~m,女子m+1~m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。
(m<=20,n<=20)二.功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按1.学校编号、2.学校总分、3.男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
三.测试数据:现将表格中的数据输入(“1”代表第一名,“2”代表第二名,“3”代表第三名,“0”代表没有名次。
且实际输入时,以对应的“0”和“1”输入到三维的存储结构中去,而不是以“1”“2”“3”“0”等输入)。
四.算法设计:然后进入总目录1)输入:1 统计各学校总分并输出;2)输入:2按学校总分排序输出;3)输入:2 按学校编号排序输出;4)输入:4 按男团体总分排序输出;5)输入: 5 按女团体总分排序输出;6) 输入:6 按学校编号查询学校某个项目情况;7)输入:7 按项目编号查询取得名次的学校;8)输入:0 退出系统;9)输入其他数据会提示错误输入,重新输入。
一.概要设计1 结构体运动项目{ 项目编号;名次;};学校{ 学校编号;项目;团体总分;男团体总分;女团体总分;};2 主程序(main)包括登陆欢迎程序,分数录入程序,查询程序,分数统计程序,退出程序3 程序模块机之间的调用关系4 取N=5,bg=gg=5;为简便,取前三名进行实验二,详细设计1、宏定义:#define N 5#define bg 5#define gg 52、数据类型定义(1)运动项目的定义:struct xiangm{Int xiangmm;//项目名int paix[3];//排名}xia[bg+gg];(2)学校的定义:struct xuex{int xuexm;//学校名int zf;//总分int bzf;//boy总分int gzf;//girl总分struct xiangm xia[bg+gg];//项目}xue[N];主要算法的设计思想:本程序主要是使用顺序表来实现操作。
东华理工大学数据库课程设计任务书
2.员工工资信息维护(包括信息录入,修改,删除和实发工资计算等);
3.员工综合信息(包括人事信息和工资信息)查询;
题目5:学生证管理系统数据库的设计与实现
描述:设计一个学生证管理系统。实现下列功能:
1.录入某位学生的学生证信息
2.给定学号,查询某位学生的学生证信息;
3.给定班号,显示该班所有学生的学生证信息;
4.给定学号,修改该学生的学生证信息;
5.给定学号,删除该学生的学生证信息;
题目6:档案管理系统数据库的设计与实现
描述:设计一个档案管理系统,实现下列功能:
1.维护人员的档案信息(输入、修改和删除)
2.根据给定条件查询人员档案信息;
3.档案报表输出;
题目7:工资管理系统数据库的设计与实现
-东华理工大学-数据库课程设计任务书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
ﻩ
《关系数据库原理及应用》课程设计任务书
一、目的:
通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
5.实验设计内容必须以老师指定的题目为准,老师指定的题目为最终检查的依据。
附:实验报告格式:
·实验题目
·实验时间、地点
·实验目的
·实验要求
·实现思路(要求有文Leabharlann 描述,并画出流程图)(占报告40%)
·实现过程(要求有文字说明实现的过程,并对相应的代码添加注释)(占报告40%)
C语言 课程设计 学生成绩管理系统 东华大学
开始
主菜单界面
1
2
3
4
5
6
计算 学生成 绩
计算 课程成 绩
筛选 补考学 生
学生 排名
输入 计算 学生平 均分 输入 课程名 称 输入 学生 学号 及成绩
退出
计算 学生总 成绩
计算 各科平 均分
主菜单界面
图 2-2 程序流程图
计算 各科及 格率
计算 各科最 高分
计算 各科最 低分 结束
3. 详细设计与程序实现
6.输出各科补考学生的信息
主菜单中选择 5 的时候,调用 bukao()函数,分别检测每门课每个学生的成绩,筛选出 成绩小于 60 分的学生。 然后调用 print_table_head_bukao()函数显示各科补考名单的表头。 再按一定格式分别输出各科补考学生的学号、 成绩。 最后, 调用 print_table_buttom_bukao() 函数打印补考名单的表尾。
7.退出
主菜单中选择 6 的时候,退出系统。 学生成绩管理系统的功能模块如图 2-1 所示。
输入课程及学生信息 计算学生总成绩 计算学生成绩 计算学生平均成绩 学生排名 计算各科平均成绩 筛选各科补考学生 计算各科及格率 计算各科成绩 计算各科最高成绩 退出系统 计算各科最低成绩 学生成绩管理系统 2.2 程序处理流程
系统的执行应从系统菜单的选择开始,允许用户输入 1~6 之间的数值来选择要进行的 操作,输入其他字符是无效的,系统会保持等待直到用户输入合法的选项。 若用户输入 1,则调用 input_score()函数,进行输入课程及学生信息操作。 若输入 2,则调用 stu_ave()函数,进行计算学生成绩操作。最后提示用户按任意键返 回主菜单。 若输入 3,则调用 cour_ave()函数,进行计算各科成绩操作。最后提示用户按任意键返
《数据结构》实验指导书(有代码)
数据结构实验指导书东华大学计算机科学与技术学院2009年9月目录前言 (1)一、概述 (1)二、实验步骤 (2)三、实验报告规范 (5)四、算法书写规范 (6)五、参考书目 (9)实验〇顺序表与链表 (10)实验〇实验报告示例 (12)实验一线性表 (25)实验报告示例:集合的并、交和差运算 (28)实验二栈和队列 (42)实验报告示例:迷宫问题 (45)实验三树和二叉树 (57)实验四图 (60)实验五查找 (63)实验六排序 (65)实验七综合设计性实验——航班信息的查询与检索 (67)前言一、概述上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。
为了达到上述目的,本指导书安排了七个主实验单元(其中除实验0作为预备练习,训练数组和链表的编程方法和编程技巧),其它各单元的训练重点在于基本的数据结构,而不强调面面俱到。
各实验单元与教科书的各章只具有粗略的对应关系,一个实验题常常涉及几部分教学内容。
在每个实验单元中安排有难度不等的实验题,经验表明,如果某题的难度略高于自己过去所对付过的最难题目的难度,则选择此题能够带来最大的收益。
切忌过分追求难题或者容易的题目。
一些实验题采取了统一的格式(其余的实验题由于比较简单,没有这么详细列出来,读者可举一反三),由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。
数据结构课程设计全集
数据结构实践教程前言数据结构是计算机专业的必修. 主干课程之一, 它旨在使读者学会分析研究数据对象的特性, 学会数据的组织方法,以便选择合适的数据逻辑结构和存储结构, 以及相应的运算(操作),把现实世界中的问题转化为计算机内部的表示和处理,这是一个良好的程序设计技能训练的过程。
在整个教学或学习过程中,解题能力和技巧的训练是一个重要的环节。
为了帮助教师讲授“数据结构”,满足指导和评价“课程设计”的需要,为了帮助和指导读者更好地学习数据结构这门课程, 我们特编写了这本《数据结构实践教程》辅助教材,旨在弥补课堂教学和实验中的不足,帮助学生充分理解和巩固所学的基本概念、原理和方法,达到融会贯通、举一反三的目的。
实践证明,理解课程内容与较好地解决实际问题之间存在着明显差距, 而算法设计完成的质量与基本的程序设计素质的培养是密切相关的. 要想理解和巩固所学的基本概念。
原理和方法,牢固地掌握所学的基本知识。
基本技能,达到融会贯通. 举一反三的目的,就必须多做。
多练。
多见(见多识广). 正是为了达到上述目的,书中用一些实际的应用, 对一些重要的数据结构和算法进行解读。
经过循序渐进地训练,就可以使读者掌握更多的程序设计技巧和方法,提高分析。
解决问题的能力。
本书根据学生的基础知识和兴趣爱好将内容分为基础篇和提高篇两个部分。
第一部分基础篇精选出适当的、与实际生活结合密切的课程设计实例加以分析实现。
第二部分提高篇旨在使读者通过运用数据结构知识及复杂算法去解决现实世界中的一些实际问题.本书依据数据结构课程教学大纲要求,同时又独立于具体的教科书,既重视实践应用,又重视理论分析,本书的主要特点有:●本书精选出来的实例项目经典、实用、具有一定的趣味性,其内容丰富、涉及面广、难易适当,能给读者以启发,达到让读者掌握相关知识和开阔视野的目的●为了提高学生分析问题、解决问题的能力,本书对实例项目进行分析,其设计思路清晰流畅,值得参考.●本书不仅仅是对照数据结构课程教学大纲举些例子说明数据结构能解决什么问题,而是通过分析具体的实例项目,得到对数据组织关系的需求,从而选择某个数据结构适应一些特定的问题和算法,并说明使用这种数据结构的优缺点。
2012 东华大学 数据结构课程实验报告
数据结构课程设计报告设计题目:运动会分数统计迷宫问题求解学院:信息科学与技术学院年级专业:10级电气信息大类学号:100900905学生姓名:刘妍指导老师:孙韶媛2012年1月一、设计目的:课题一运动会分数统计1、任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1~m,女子m+1~m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。
(m<=20,n<=20)2、功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
课题二迷宫问题求解问题描述:迷宫问题是取自心理学的一个古典实验。
实验中,把一只老鼠从一个没有顶的大盒子的门放入,在盒中设置了许多墙,对行进的方向形成了多处阻挡。
盒子仅仅有一个出口,在出口处放置了一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。
重复对老鼠进行上述实验,看老鼠能在多久找到出口。
请设计一个算法实现迷宫问题求解。
二、总体设计:1、运动会分数统计:设计思路:所需功能:成绩输入/输出、查询结果、调用统计结果输入数据:学校编号、项目编号、取得的名次、哪些名次采用结构体数据类型,利用冒泡法实现相应的排序;利用“switch”语句实现功能的选择;利用“for”语句实现各个方式的数据输入。
详细设计:void inputinformation() 信息输入模块,开始输入信息**void output() 信息输出模块,选择按不同的方式输出信息**void inquiry() **查询模块,用来查询信息** 流程图:源代码:#include<stdio.h>#include<math.h>#define n 2 //学校数目#define m 1 //男子项目数目#define w 1 //女子项目数目typedef struct //typedef :为一种数据类型定义新名字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录设计题目一航空订票系统任务 (2)功能要求 (2)需求分析 (2)概要设计 (3)详细设计 (5)调试分析 (13)用户手册 (14)测试结果 (14)设计题目二哈希表查找的设计任务 (19)功能要求 (19)需求分析 (19)概要设计 (19)详细设计 (20)调试分析 (24)用户手册 (25)测试结果 (25)设计题目一航空订票系统任务航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
功能要求1) 录入:可以录入航班情况2) 查询:可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票:可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。
需求分析宏观需求分析1)采用现有的软硬件环境及先进的管理系统方案,从而达到充分利用现有资源,提高系统应用效果的目的。
2)尽量达到系统操作过程中的直观、方便、实用、安全等要求。
3)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
4)系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。
具体需求分析菜单是应用程序中非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。
1)录入航线信息编写void input()函数来输入全部航线信息。
其中调用了int check(char s[])函数,该函数的功能是检查信息是否重复;以及void save()从而存储全部航线信息。
2)按航班号查询航班信息编写void search_num()函数来实现查询航班信息的宫呢个。
这个函数中需要输入要查询的航班号,通过void search_num()函数来寻找这个航线然后输出该航线的全部信息。
3)按航线查询航班信息编写void search_line()函数来实现查询航线的功能。
用户输入出发城市以及抵达城市名后,该函数会在航线信息链表中进行查询。
如果有该城市,则会输出此航线的信息。
4)办理订票业务编写void booking()函数来实现订票功能。
首先提示用户输入个人及航班号,然后查找此航班,如果该航班存在,则会提示用户输入订单信息,在订票乘员名单域中添加客户信息。
5)办理退票业务编写void cancel()函数来实现退票功能。
首先提示用户输入订单编号,然后查找此订单,如果该订单存在,则提示退票成功并将乘员信息中的该乘员信息删除,修改航班的剩余票数信息。
6)查询客户资料编写void search_customer()函数来实现客户资料查询功能,输出订单编号、客户姓名、证件号、订票量以及航班号。
7)修改航班信息编写void edit()来实现修改航班信息的功能。
在检查输入航班号与原航班号不重复之后输入航班号的全部信息并保存。
8)退出系统用户在菜单页面下输入8回车即exit(0),即可退出系统。
概要设计typedef struct Flight//航班信息{char FlightNumber[20];//航班号char SPlace[20];//出发城市char DPlace[20];//到达城市char SEtime[20];//起飞--降落时间int price;//价格int discount;//折扣率(%)int total;//总票数int left;//剩余票数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//客户姓名char ID[20];//证件号char FlightNumber[20];//航班号int num;//订票数量}Order;void duqu()//读取文件信息char menu()//菜单void save()//录入信息void input() //输入航班信息int check(char s[])//检查是否重复void search_num()//航班信息查询(按航班号)void search_line() //航班信息查询(按路线)void booking()//订票void cancel()//退票void search_customer()//客户资料查询void edit()//修改航班信息int main()库函数:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<malloc.h>程序调用关系:save()check() main() search_num()duqu() menu() input()search_line() save()详细设计#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<malloc.h>#define N 100//最大容量#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef struct Flight//航班信息{char FlightNumber[20];//航班号char SPlace[20];//出发城市char DPlace[20];//到达城市char SEtime[20];//起飞--降落时间int price;//价格int discount;//折扣率(%)int total;//总票数int left;//剩余票数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//客户姓名char ID[20];//证件号char FlightNumber[20];//航班号int num;//订票数量}Order;int i,j;int air_num=0;//航班数int order_num=0;//订单数char t;//获取客户选择的变量char filenamef[]="flight.txt";//航班文件名char filenameo[]="order.txt";//订单文件名Flight fl[N];Order od[N];int check(char s[]);void duqu()//读取文件信息{FILE *fp;if((fp=fopen(filenamef,"r"))!=NULL)//打开文件读取航班信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%s%s%s%s%d%d%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i].DPlac e,&fl[i].SEtime,&fl[i].price,&fl[i].discount,&fl[i].total,&fl[i].left);//fscanf 用于从文件读入数据if(!feof(fp))//feof(fp)返回0才可进行对文件的操作i++;}air_num=i;//航班数量fclose(fp);//关闭文件}if((fp=fopen(filenameo,"r"))!=NULL)//打开文件读取订单信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od[i].Fli ghtNumber,&od[i].num);if(!feof(fp))i++;}order_num=i;//订单数量fclose(fp);//关闭文件}}void save()//录入信息{FILE *fp;//定义标准数据结构,用于文件if((fp=fopen(filenamef,"w"))!=NULL)//打开文件保存航班信息(fopen标准函数,打开磁盘文件flight.txt,用于读,送返指针,指向FILE类型对象){for(i=0;i<air_num;i++)//写入文件{fprintf(fp,"%s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);}fclose(fp);//关闭文件}if((fp=fopen(filenameo,"w"))!=NULL)//打开文件保存订单信息{for(i=0;i<order_num;i++)//写入文件{fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].Fli ghtNumber,od[i].num);}fclose(fp);//关闭文件}}void input()//输入航班信息{for(i=air_num;i<N;i++){printf("请输入航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=1)//检查是否重复{printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("出发城市:");gets(fl[i].SPlace);printf("到达城市:");gets(fl[i].DPlace);printf("起飞时间--到达时间:");gets(fl[i].SEtime);printf("价格:");scanf("%d",&fl[i].price);printf("折扣率(%%):");scanf("%d",&fl[i].discount);printf("总票数:");scanf("%d",&fl[i].total);printf("剩余票数:");scanf("%d",&fl[i].left);getchar();//消除回车air_num++;//航班数加1printf("航班信息录入完成! 继续录入?(Y/N):");while(1){t=getchar(); //输入一个字符型数据,把值赋给变量tgetchar(); //消除上一步产生的回车符if(t=='y' || t=='Y' || t=='n' || t=='N')break;elseprintf("请重新输入:");}if(t=='n' || t=='N')break;}save();//保存}int check(char s[])//检查是否重复{int g=0;for(;g<air_num;g++)if(strcmp(fl[g].FlightNumber,s)==0 && g!=i)//对比是否相同相同就说明重复了return g;//表示重复了return 1;//遍历了整个数组都没发现重复的表示没有重复}void edit()//修改航班信息{char s[100];printf("请输入要修改的航班号:");gets(s);for(i=0;i<air_num;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==air_num){printf("没有您输入航班信息,请按回车键返回!");getchar();return;}printf("请输入新的航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=1)//检查是否重复{printf("航班号重复,请重新输入:"); //检查后发现重复gets(fl[i].FlightNumber);}printf("请更新下列信息:\n");printf("出发城市:");gets(fl[i].SPlace);printf("到达城市:");gets(fl[i].DPlace);printf("起飞时间--到达时间:");gets(fl[i].SEtime);printf("价格:");scanf("%d",&fl[i].price);printf("折扣率(%%):");scanf("%d",&fl[i].discount);printf("总票数:");scanf("%d",&fl[i].total);printf("剩余票数:");scanf("%d",&fl[i].left);getchar();//消除回车save();//保存printf("修改成功!\n");system("pause");//任意键继续}void booking()//订票{i=order_num;printf("请输入您的姓名:");gets(od[i].PName);printf("请输入您的证件号:");gets(od[i].ID);printf("请输入订票的航班号:");gets(od[i].FlightNumber);for(j=0;j<air_num;j++)if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//对比是否相同break;if(j==air_num)//表示航班不存在{printf("航班号不存在!请按回车键返回!");getchar();return;}printf("请输入订票数量:");scanf("%d",&od[i].num);fl[j].left-=od[i].num;//新的剩余票数printf("请输入订单编号:");scanf("%d",&od[i].OrderNumber);getchar();//消除回车order_num++;//订单数加1save();//保存到文件printf("订票成功!\n");system("pause");//任意键继续}void cancel()//退票{int num;printf("请输入要退票的订单编号:");scanf("%d",&num);getchar();//消除回车for(i=0;i<order_num;i++)if(od[i].OrderNumber==num)//检查是否存在订单编号break;if(i==order_num){printf("订单不存在!请按回车键返回!");getchar();return;}j=check(od[i].FlightNumber);//获取航班的下标fl[j].left+=od[i].num;//新的剩余票数od[i]=od[order_num-1];//最后一条订单覆盖退票的订单order_num--;//订单数减1save();//保存printf("退票成功!\n");system("pause");//任意键继续}void search_num()//航班信息查询(按航班号){char s[100];printf("请输入要查询的航班号:\n");gets(s);for(i=0;i<air_num;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==air_num){printf("航班号不存在!请按回车键返回!");getchar();return;}printf("查询成功!\n\n");printf(" 航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%) 总票数剩余票数\n");printf(" %s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);printf("********************************************************************* *****\n");printf("\n");system("pause");//任意键继续}void search_line() //航班信息查询(按路线){char s[20],e[20];int flag=0;printf("请输入要查询的路线的起点:");gets(s);printf("请输入要查询的路线的终点:");gets(e);printf("查询成功!\n\n");printf(" 航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%) 总票数剩余票数\n");for(i=0;i<air_num;i++)//查找信息if(strcmp(fl[i].SPlace,s)==0 && strcmp(fl[i].DPlace,e)==0) {printf(" %s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);}printf("********************************************************************* *****\n");printf("\n");flag=1;//标记找到了信息if(flag==0){printf("航班信息不存在!\n");}system("pause");//任意键继续}void search_customer()//客户资料查询{printf(" 订单编号客户姓名证件号订票量航班号\n");for(i=0;i<order_num;i++)//查询是否存在输入的信息{printf(" %d %s %s %d %s\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].num,od[i].FlightNumber);}printf("******************************************************************\n") ;printf("\n");system("pause");//任意键继续}char menu()//菜单{char c;printf(" 欢迎来到航空订票系统!\n");printf(" ** ==>1 录入航班情况**\n");printf(" ** ==>2 航班信息查看(航班号查询)**\n");printf(" ** ==>3 航班信息查看(站站查询)**\n");printf(" ** ==>4 订票**\n");printf(" ** ==>5 退票**\n");printf(" ** ==>6 客户资料**\n");printf(" ** ==>7 航班信息修改**\n");printf(" ** ==>8 退出**\n");printf("请选择功能:\n");c=getchar();getchar();//消除缓存中的换行符return c;}int main(){duqu();//读取文件信息while(1){t=menu();//获取选择switch(t){case '1': input(); break;//航班信息录入case '2': search_num(); break;//航班信息查询(按航班号)case '3': search_line(); break;//航班信息查询(按路线)case '4': booking(); break;// 订票case '5': cancel(); break;// 退票case '6': search_customer(); break;// 客户资料case '7': edit(); break;//航班信息修改case '8': exit(0);//退出}}}调试分析1)考虑将数据保存在文件中,这样可以防止数据全部存储在内存中造成的丢失现象,以及实现数据的及时存储功能。