《数据结构与算法分析》课程设计教学任务书
一、课程设计的目的
数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求
1. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
2. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3. 按照课程设计的具体要求建立功能模块,每个模块要求按照如下几个内容认真完成:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计:
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)
c)详细设计:
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释
d)调试分析:
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是那些,问题如何解决?),算法的改进设想
课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到的问题、解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容
4. 实现的结果必须进行检查和演示,程序源代码和程序的说明文件必须上交,作为考核内容的一部分。(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如魁”。该文件夹下至少包括:“源代码”、“课程设计报告”、“可执行文件”。由学习委员收集按规定时间统一上交)
5. 课程设计报告不要附源代码,可以对重点函数及结构进行说明。
6. 报告提交
时间:第18周星期四检查,第18周星期五由学习委员收集上交,迟交无成绩。
形式:课程设计报告(要求手写)。
三. 课程设计内容
1. 内部排序演示
问题描述
设计一个测试程序比较几种排序算法的关键字比较次数和移动次数以取得直观感受。
基本要求
(1)对起(冒)泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
(2)待排序的元素的关键字为整数。其中的数据要用伪随机产生程序产生(如10000个),至少用5组不同的输入数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较;
(3)演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,用条形图(星号表示)进行表示,以便比较各种排序的优劣。
测试数据
由随机数产生器生成
实现提示
主要工作是设法在已知算法中的适当位置插入对关键字的比较次数和移动次数的计数操作。程序还可以考虑几组数据的典型性,如:正序、逆序和不同程度的乱序。注意采用分块调试的方法。
选作内容
(1)对不同表长进行比较
(2)验证各算法的稳定性
2. 建通讯录
问题描述
设计散列表实现通讯录查找系统,使得平均查找长度不超过R,完成相应的建表和查表程序。
基本要求
(1)设每个记录有下列数据项:用户名、电话号码、地址;
(2)从键盘输入各记录,分别以姓名为关键字建立散列表;
(3)假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2;
(4)哈希函数用除留余数法构造,采用二次探测再散列法解决冲突;
(5)查找并显示给定电话号码的记录;
(6)通讯录信息保存。
测试数据
取周围熟悉的30个人的姓名及相关信息。
实现提示
人名长度均不超过19个字符,字符的取码方法可直接利用C语言中的函数,并对过长的人名先作折叠处理。
选做内容
(1)系统功能的完善
(2)设计不同的散列函数,比较冲突率
(3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化
3. 校园导游咨询
问题描述
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
基本要求
(1)设计你所在的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点的名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短的简单路径。
测试数据
由读者根据实际情况指定
实现提示
一般情况下,校园的道路是由双向通行的,可设校园平面图是一个无向图。顶点和边均含有相关信息。
选作内容:
(1)求校园图的关节点
(2)提供图中任意景点问踟查询,即求任意两个景点之间的所有路径。
(3)提供校园图中多个景点的最佳路线查询,即求途经这多个景点的最佳(短)路径。
(4)校园导游图的景点和道路的修改扩充功能。
(5)扩充道路信息,如道路类别(车道、人行道等),沿途景色等级,以至可按客人所需分别查询人行路径或车街上路径或观景路径等。
(6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。
4. 基于RAS算法的文本加密与解密
问题描述
设计一个基于RAS加密与解密算法,并编程实现之。
基本要求
(1) 熟悉RAS加密与解密算法。
(2) 创建一个工程,对于给定文本文件(该文件作为明文,包含空格和所有文本)使用RAS加密算法进行加密。给出密文。
(3) 对于给定的密文使用RAS解密算法,给出明文
(4) 对于输入明文和经过解密后的明文进行判断。
(5) 给出加密和解密的时间。
测试数据
测试数据见附件一。
实现提示
本课程设计的实现主要包括以下主要过程:
(1) 关于文件的操作(主要是读写操作!)
(2) RAS加密与解密
(3) 大整数相乘
选做内容
如果同学感兴趣,可以做成一个windows程序。
附件1: 明文
I became what I am today at the age of twelve, on a frigid overcast day in the winter of 1975. I remember the precise moment, crouching behind a crumbling mud wall, peeking into the alley near the frozen creek. That was a long time ago, but it’s wrong what they say about the past, I’ve learned, about how you can bury it. Because the past claws its way out. Looking back now, I realize I have been peeking into that deserted alley for the last twenty-six years.
One day last summer, my friend Rahim Khan called from Pakistan. He asked me to come see him. Standing in the kitchen with the receiver to my ear, I knew it wasn’t just Rahim Khan on the line. It was my past of unatoned sins. After I hung up, I went for a walk along Spreckels Lake on the northern edge of Golden Gate Park
I sat on a park bench near a willow tree. I thought about something Rahim Khan said just before he hung up, almost as an after thought. _There is a way to be good again_. I looked up at those twin kites. I thought about Hassan. Thought about Baba. Ali. Kabul. I thought of the life I had lived until the winter of 1975 came and changed everything. And made me what I am today.
附件2: RAS加密与解密算法
找两素数p和q 取n=p*q 取t=(p-1)*(q-1) 取一个数 e(和
文档评论(0)