2009级数据结构课程设计任务书-样本

合集下载

数据结构课程设计-任务书

数据结构课程设计-任务书

数据结构与数据处理应用训练课程名称:数据结构与数据处理应用训练计划学时:32学时(1周)一、课程目的1.培养运用数据结构的基本知识解决实际问题的能力;2.加深对数据结构基本知识的理解;3.发挥各人的想象能力和分析能力,拓展思维空间;4.掌握应用程序设计的基本方法;5.培养书写课程设计报告的能力。

二、课程设计内容与要求具体见附录I,每位学生任选一题。

三、考核形式考核办法:结合课程设计作品、课程设计报告和平时情况评定。

评分标准:程序运行及答辩占60%,课程设计报告占20%,平时占20%。

评分等级为优秀、良好、中等、及格、不及格五个级别。

实现难度不同的课程设计,给不同的分数。

若完成项目指定功能,按对应的标准给分;若在完成指定功能的基础上,还添加扩展功能、有创意,给予一定的加分;若运行有错误,酌情减分。

课程设计要求独立完成,严禁抄袭,如发现雷同,一经证实,相关人都按作弊处理,没有成绩,并且上报学院。

四、应提交材料1、课程设计报告(实习报告)不少于3000字。

格式参见附录II的模板。

内容主要包括:(1) 封面。

(2) 课程设计题目、摘要、关键词。

(3) 内容与要求(说明课程设计题目的具体内容、需实现的功能及要求)。

(4) 总体设计(说明算法总体思路及由哪几大功能模块组成、各功能模块的功能介绍)。

(5) 详细设计(说明各功能模块的具体实现算法----流程图、存储结构描述、及各功能模块的参数说明)。

(6) 程序测试(给出程序运行结果截图,需包括若干组测试用例以实现对各种情况的测试)。

(7) 总结(说明调试过程中遇到的问题是如何解决的;对设计与实现的回顾讨论与分析、改进设想;收获与体会等)。

(8) 参考文献(9) 附录(包含源程序)2、程序提交完整的工程文件。

在统一答辩完成后,每个教学班交一张光盘,包含所有学生的资料(课程设计报告与程序),每个学生的资料放在以“学号姓名”命名的文件夹中。

附录I 课程设计题目:题目一:航空客运售票服务系统【问题描述】航空客运订票的业务活动包括:查询航线、机票预订和办理退票等。

数据结构课程设计任务书

数据结构课程设计任务书

《数据结构》课程设计任务书一、设计题目1、约瑟夫环2、集合的并、交和差运算3、一元稀疏多项式计算器4、停车场管理5、车厢调度6、文学研究助手7、哈夫曼编/译码器8、图遍历的演示9、最小生成树问题10、哈希表设计二、设计目的数据结构课程设计是计算机专业的集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。

其目的在于加深对数据结构的理解和掌握,使学生更好地掌握数据结构的特点、存储表示、运算方法及其应用,训练学生选用合适的数据结构编写质量高、风格好的应用程序的能力。

三、设计任务每班每人按照学号的顺序依次选择1-10号设计题目,独立完成课题。

(即1、11、21号学生完成1号课题,2、12、22号学生完成2号题,以此类推)四、时间安排五、设计内容1. 约瑟夫环【问题描述】约瑟夫(Joseph) 问题的一种描述是:编号为1,2,… ,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。

一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。

报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

试设计一个程序求出出列顺序。

【基本要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。

【测试数据】m的初值为20;n=7,7 个人的密码依次为:3,1,7,2,4,8,4,首先m值为6( 正确的出列顺序应为6,1,4,7,2,3,5) 。

【实现提示】程序运行后,首先要求用户指定初始报数上限值,然后读取各人的密码。

可设n≤30。

此题所用的循环链表中不需要“头结点”,请注意空表和非空表的界限。

【选作内容】向上述程序中添加在顺序结构上实现的部分。

2. 集合的并、交和差运算【问题描述】编制一个能演示执行集合的并、交和差运算的程序。

【基本要求】(1) 集合的元素限定为小写字母字符[‘a’..’z’] 。

数据结构课程设计任务书

数据结构课程设计任务书

数据结构课程设计任务书一、课程设计的目的数据结构课程设计是为数据结构课程独立开设的实践性教学环节。

数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。

课程设计的目的:1.要求学生达到熟练掌握C语言的基本知识和技能。

2.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。

3.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

4.培养算法分析能力。

分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

5.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

二、课程设计的要求数据结构课程设计用C/C++编程实现。

课程设计的一般步骤:1.问题描述与分析:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?限制条件是什么?2.数据结构设计:为实现每个功能选择的逻辑结构和存储结构,分析原因及合理性。

3.软件结构设计:设计软件模块之间的结构。

4.算法设计:算法的设计及算法分析。

每个部分的算法设计说明,可以用流程图描述算法。

5.程序编码:把详细设计的结果进一步求精为程序设计语言程序。

源程序要按照软件工程的规则来编写,要求结构清晰,重要功能部分要加上清晰的程序注释。

6.调试分析:掌握调试工具的各种功能,设计测试数据,测试输出的结果。

并进行算法的时间复杂度和空间复杂度的分析。

7.总结:课程设计过程的收获,遇到问题以及解决问题的思路和方法,程序调试能力的思考,对数据结构这门课程的认识及思考等。

8.编写课程设计报告。

三、课程设计题目及分组1、栈的应用:表达式求值1)设计题目设计一个表达式求值的程序。

该程序必须可以接受包含(,),+,-,*,/,%,和^(求幂运算符,a^b=a b)的中缀表达式,并求出结果。

如果表达式正确,则输出表达式的结果;如果表达式非法,则输出错误信息。

《数据结构》课程设计方案任务书

《数据结构》课程设计方案任务书

《数据结构》课程设计任务书计算机与通信学院2018-5湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院湖南工业大学计算机与通信学院湖南工业大学计算机与通信学院湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书湖南工业大学计算机与通信学院《数据结构》课程设计任务书。

数据结构课程设计任务书

数据结构课程设计任务书

《数据结构》课程设计任务书课程设计时间:2009-2010学年第一学期指导老师:刘惠临班级: 计算机08-5 一、课程设计的目的数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。

通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

通过此次课程设计主要达到以下目的:⏹了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;⏹初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;⏹提高综合运用所学的理论知识和方法独立分析和解决问题的能力;⏹训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计的基本要求1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。

2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

3、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:a)需求分析:在该部分中叙述,每个模块的功能要求b)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

c)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。

要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

数据结构课程设计任务书

数据结构课程设计任务书

课程设计任务书《数据结构》课程设计一、课程设计的目的课程设计是《数据结构》课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。

通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。

二、课程设计的要求1.明确课设任务,复习与查阅有关资料。

2.按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。

3.应用程序应具有一定的可用性。

凡用户输入时,给出足够的提示信息。

格式明显易懂,使用户感到方便使用。

4.程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行:对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。

三、课程设计报告内容课程设计报告中应包括封面、内容摘要、关键词、目录、正文、参考文献、附录、致谢等几部分。

正文包括绪论、需求分析、概要设计、详细设计、调试分析、测试结果、总结等。

具体:(1)封面包括设计题目、所在系、专业、班级、姓名、指导教师姓名和完成日期。

(2)内容摘要应扼要叙述课设的主要内容、特点,文字要精练,是一篇具有独立性和完整性的短文,包括基本研究方法、理论与实际意义。

关键词是供检索用的主题词条,应采用能够覆盖课程设计报告主要内容的通用专业术语。

(3)绪论一般作为第1章,综述课程设计选题的目的、背景和意义,所要研究的主要内容。

(4)需求分析陈述说明课程设计的任务。

明确规定:输入/输出形式和输出值的范围;程序所能达到的功能;测试的数据:包括正确的输入和错误的输入及其相应的输出结果。

(5)概要设计包括设计思想、实现方法、系统中主要函数及各函数间的关系描述。

(6)详细设计包括实现概要设计中定义的所有数据类型,对每个操作需要写出伪代码算法。

(7)调试分析包括:调试过程中遇到的问题,如何解决的以及对设计实现的回顾讨论和分析;对算法的分析和改进设想;经验和体会等。

数据结构课程设计任务书

数据结构课程设计任务书

数据结构课程设计任务书(2008-2009学年第2学期用)一、课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

二、课程设计题目共7题,每个学生一题,单独完成。

(选法为根据学生所在班级名册的自然顺序,第1-7名同学分别做第1到第7题,然后循环,第8-14名同学分别做第1到第7题,依次类推。

)1、运动会分数统计系统任务:参加运动会有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).可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计。

请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;2、航班订票系统任务:通过此系统可以实现如下功能:1)、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

数据结构课程设计任务书

数据结构课程设计任务书

数据结构与算法课程设计任务书目录1.课程设计目标 (2)课程目标 (2)课程任务 (2)开发环境 (2)2.课题内容要求 (2)课题一词频分析系统 (2)课题二哈夫曼编码系统 (2)课题三文档集合查询 (3)课题四基于XML的网站生成器 (3)课题五简单数字图像处理 (4)课题六DES算法实现 (5)课题七传感网模拟器 (5)3.课程设计考核要求 (6)设计要求 (6)考核方法 (6)4.课程设计进度表 (6)附1 对课程设计提交内容的要求 (8)附2课程设计上机安排表 (8)附3成绩的评定 (8)附4 课程设计报告封面 (9)附5课程设计报告模板 (11)1.课程设计目标课程目标深化对《数据结构》课程中基本概念、理论和方法的理解,训练综合运用所学知识处理实际问题的能力。

课程任务根据实际问题,结合《数据结构》课程中的基本理论和基本算法,分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法,完成总体结构设计、输入输出设计,解决实际的应用问题。

开发环境硬件:微型计算机,计算机局域网络。

软件:Visual C++,Java2.课题内容要求课题一词频分析系统[问题描述]文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。

试写一个实现这一目标的词频统计系统。

[基本要求] 英文小说存于一个文本文件中。

待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。

程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。

[测试数据] 以你的源程序模拟英文小说,程序语言保留字集作为待统计的词汇集。

[实现提示] 设小说中的词汇一律不跨行。

这样,每读入一行,就统计每个词在这行中的出现次数。

出现位置所在行的行号可以用链表存储。

若某行中出现了不止一次,不必存多个相同的行号。

课题二哈夫曼编码系统[问题描述]利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。

《数据结构》课程设计任务书

《数据结构》课程设计任务书

一.课程设计的任务每位同学做两题:一题在设计题中每人相对应一题号另一题必选题(每个班级有一必选题)二. 要求:1、对相应的题目进行算法设计2、编写源代码3、上机调试4、显示调试结果5、写出实验总结三.课程设计进度安排设计总学时为2周课程设计每周大体分五个阶段:1、选题与搜集资料:每人选择相应题目,进行课程设计课题的资料搜集.2、分析与概要设计:根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构,并在此基础上进行实现程序功能的算法设计.3、程序设计:运用掌握C语言编写程序,实现所程序的各个模块功能.4、调试与测试:自行调试程序,成员交叉测试程序,并记录测试情况.5、实习报告:编写实习报告6、验收与评分:指导教师对每个小组的开发的系统,及每个成员开发的模块进行综合验收.结合设计报告,根据课程设计成绩的评定方法,评出成绩.四.课程设计考核标准考核时主要有如下几项参考:1、初步设计内容的考核:是否有查阅资料能力?是否有设计思想?2、程序编码能力调试能力的考核:程序是否清晰、易读?在技算计上是否可独立完成程序的调试,是否熟练?3、说明书质量的考核:设计结构是否合理?叙述是否正确?方案是否可行?4、答辩:设计结果的调试能力,对自己设计是否熟练?5、出勤率极平时表现的考核:出勤超过2次不到者成绩为不及格。

五.课程设计报告的内容设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料.设计报告以规定格式的电子文档书写,打印并装订,排版及图,表要清楚,工整.装订顺序如下:封面、目录、正文.正文包括以下7个内容:1.需求分析陈述说明程序设计的任务,强调的是程序要做什么,需要什么结果、所能达到的功能.2.概要设计说明本程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系.3.详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图、N S 图进行描述,画出函数和过程的调用关系图.4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c.经验和体会等.5.测试结果列出你的测试结果,包括输入和输出.这里的测试数据应该完整和严格,最好多于需求分析中所列.6.参考文献列出参考的相关资料和书籍.封面格式如下:数据结构课程设计报告题目——采用的方法班级:_________________________姓名:__________________________ 指导教师:__________________________ 成绩:__________________________信息工程学院年月日。

《数据结构》课程设计任务书

《数据结构》课程设计任务书

《数据结构》课程设计任务书一、设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

二、设计要求1.通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

2.学生必须仔细研读《数据结构》课程设计要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。

3.本次课程设计按照教学要求需要在一周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时地向指导教师汇报。

4.编程语言任选。

三、设计选题选题说明:前面6个为基础题(必选一题,可达60分),后面题目*越多难度越大,根据实际选做题目的难度和数量以及实现程序的完善性可以适当加减分;同学们在选题时,要结合个人实际情况,确保及格,力争多做。

1.集合的并、交和差运算任务:编制一个能演示执行集合的并、交和差运算的程序。

要求:(1) 集合的元素限定为小写字母字符[‘a’..’z’] 。

(2) 演示程序以用户和计算机的对话方式执行。

实现提示:以链表表示集合。

选作内容:(1) 集合的元素判定和子集判定运算。

(2) 求集合的补集。

(3) 集合的混合运算表达式求值。

(4) 集合的元素类型推广到其他类型,甚至任意类型。

2.停车场管理任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

数据结构课程设计任务书

数据结构课程设计任务书

数据结构与算法课程设计任务书一.数据结构与算法课程设计的目的和要求(一)设计的目的数据结构与算法课程设计是在学完数据结构与算法课程之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过数据结构课程设计在下述各方面得到锻炼:1.能根据实际问题的具体情况,结合数据结构与算法课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3.培养算法分析能力。

分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

(二)设计要求1.学生必须仔细阅读《数据结构与算法》课程设计方案,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

2.学生要发挥自主学习的能力,充分利用时间,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。

3.课程设计按照教学要求需要一周时间完成,属教师安排上机时间学生不得缺席。

二.设计内容及步骤1.分析问题,给出数学模型,设计相应的数据结构。

(1)分析问题的特点,用数学表达式或其它形式描述其数学模型。

(2)选择能够体现问题本身特点的逻辑结构。

(3)在逻辑结构确定的情况下,为算法的设计选择相应的存储结构,顺序存储结构和非顺序存储结构的不同存储方式,其对应的算法也不相同。

2.算法设计在已经选择好数据结构的前提下,为解决问题设计算法。

(1)确定所需模块对于稍复杂的程序设计,要充分利用模块化程序设计方法,自顶向下,逐步细化,在整体思路确定的情况下,考虑所需模块数,各模块完成功能以及模块之间的数据联系和调用关系。

(2)各子模块功能描述给出主要模块的算法描述,用流程图或伪代码表示。

2009级数据结构课程设计任务书-总则

2009级数据结构课程设计任务书-总则

2009级数据结构课程设计任务书课程设计教学目的数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。

数据结构是实践性很强的课程。

课程设计是加强学生实践能力的一个强有力手段。

本课程属于集中实践教学环节,是在学习了C语言、面向对象程序设计(C++)和数据结构后开设的。

要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C(C++,Java)程序并上机调试的基本方法。

课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

设计要求1、学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

每个学生必须独立完成;2、课程设计时间为2周;3、设计语言不限;鼓励学生采用GUI设计;4、充分利用课余时间完成源程序和课程设计报告等文档书写工作,上机时带上源程序、数据结构教材、C++语言教材。

5、上机任务1)选择合适的数据结构,并定义数据结构的结构体;2)根据程序所要完成的基本要求和程序实现提示,设计出完整的算法;3)设计出主程序或界面,使其成为完整的程序。

6、无论在校外、校内,都要严格遵守学校的学习和劳动纪律、规章制度,学生有事离校必须请假。

课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。

7、学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。

09级《数据结构》课程设计任务书

09级《数据结构》课程设计任务书

一.课程设计的任务本次设计是为加强学生的软件编程能力而进行的专门训练。

选题考虑到学生在数据结构中学过的各种算法、数据组织方式进行选题,考虑数据结构算法所涉及的操作系统、网络、编译方法等中的实例,进行设计。

下面是课程设计待选题目共43题。

按学号相应选题,如:学号为01,则选择第1题。

分析题目,完成相应题目的程序设计。

1、商品管理问题描述:以链表结构的有序表表示某商场家电部的库存模型,当有提货或进货时需要对该链表及时进行维护,每个工作日结束以后,将该链表中的数据以文件形式保存,每日开始营业之前,须将文件形式保存的数据恢复成链表结构的有序表。

实现要求:链表结构的数据域包括家电名称、品牌、单价和数量,以单价的升序体现链表的有序性。

程序功能包括:初始化、创建表、插入、删除、更新数据、查询及链表数据与文件之间的转换等。

2、编程整理表达式键盘输入一个含有括号的四则运算表达式,可能含有多余的括号,编程整理该表达式,去掉所有多余的括号,原表达式中所有变量和运算符相对位置保持不变,并保持与原表达式等价。

3、个人帐簿管理问题描述:个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。

进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。

实现要求:1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;3.进一步要求:完成对每月的开支排序,以及完成系统查询功能。

有兴趣的同学可以自己扩充系统功能。

4、实现:连通无向图的非递归遍历。

5、招聘模拟。

问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种各有不同的编号(o,1,3,…m一1)和计划招聘人数,参加应聘的人数有n个(编号为o,1,2,…n一1)。

数据结构课程设计任务书范本样本

数据结构课程设计任务书范本样本

数据结构课程设计任务书一、选题选题标准是数据结构算法实现及在具体问题中应用。

可选择下列和实际应用紧密结合较综合性题目,也可自选(自选题必需经过任课老师认可)。

要求经过课程设计实践,在数据结构表示、数据结构选择及应用、算法设计和实现等方面加深对数据结构课程基础内容了解和综合利用能力提升。

对下列题目每个同学课设任务按下式确定:按宿舍,每两个宿舍同学组成一小组,共同完成一个任务数据结构课程设计任务书1题目:学生运动会成绩数据库功效:学生运动会成绩数据库系统统计某校运动会上全部运动项目,各系取得分数及排名情况,包含50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。

进入系统后能够输入和修改某个项目标结果情况,能够按各系院编号输出总分;按总分排序;按男团体总分排序;按系院编号查询;按项目编号查询;按女团体总分排序。

分步实施:1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2)完成最低要求:建立一个文件,包含某个系,5个项目标得分情况,能对文件中信息进行扩充(追加),修改和删除;3)深入要求:完成对多个系,多个项目标得分排序,和完成系统查询功效。

有爱好同学能够自己扩充系统功效。

键盘输入:系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)要求:1)界面友好,函数功效要划分好2)总体设计应画一步骤图3)程序要加必需注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功效少部分,也要能运行起来,不能运行程序是没有价值。

数据结构课程设计任务书2题目:哈夫曼树应用功效:1.从终端读入字符集大小n,和n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中哈夫曼树以直观方法(比如树)显示在终端上;2.利用已经建好哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告样本数据结构课程设计系别电子信息系专业计算机科学与技术班级学号姓名指导教师成绩年月日一、需求分析1.本演示程序中,集合的元素限定为小写字母字符[…a ‟..‟z ‟],集合的大小n<27。

集合输入的形式为一个以“回车符”为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去。

输出的运算结果字符串中将不含重复字符或非法字符。

2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中非法字符)和运算结果显示在其后。

3.程序执行的命令包括:1)构造集合1;2)构造集合2;3)求并集;4)求交集;5)求差集;6)结束。

“构造集合1”和“构造集合2”时,需以字符串的形式键入集合元素。

4.测试数据(1)Set1=”magazine ”, Set2=”paper ”,Set1 Set2=”aegimnprz ”, Set1 Set2=”ae ”, Set1-Set2=”gimnz ”; (2)Set1=”012oper4a6tion89”, Set2=”error data ”,Set1 Set2=”adeinoprt ”, Set1 Set2=”aeort ”, Set1-Set2=”inp ”。

二、概要设计为实现上述程序功能,应以有序链表表示集合。

为此,需要两个抽象数据类型:有序表和集合。

1.有序表的抽象数据类型定义为: ADT OrderedList{ 数据对象:D= {|,1,2,,,0i i a a C harSet i n n ∈=≥ }数据关系:R1={111,|,,,1,2,,i i i i i i a a a a D a a i n---<>∈<= }基本操作:InitList(&L)操作结果:构造一个空的有序表L 。

DestroyList(&L)初始条件:有序表L 已存在。

操作结果:销毁有序表L 。

ListLength(L)初始条件:有序表L 已存在。

操作结果:返回有序表L 的长度。

ListEmpty(L)初始条件:有序表L 已存在。

操作结果:若有序表L 为空表,则返回True ,否则返回False 。

GetElem(L ,pos)初始条件:有序表L 已存在。

操作结果:若1()pos Length L ≤≤,则返回表中第pos 个数据元素。

LocateElem(L ,e ,&q)初始条件:有序表L 已存在。

操作结果:若有序表L 中存在元素e ,则q 指示L 中第一个值为e 的元素的位置,并返回函数值True ;否则q 指示第一个大于e 的元素的前驱的位置,并返回函数值FalseAppend(&L ,e)初始条件:有序表L 已存在。

操作结果:在有序表L 的末尾插入元素e 。

InsertAfter(&L ,q ,e)初始条件:有序表L 已存在,q 指示L 中一个元素。

操作结果:在有序表L 中q 指示的元素之后插入元素e 。

ListTraverse(q ,visit())初始条件:有序表L 已存在,q 指示L 中一个元素。

操作结果:依次对L 中q 指示的元素开始的每个元素调用函数visit()。

}ADT OrderedList2.集合的抽象数据类型定义为: ADT Set{ 数据对象:D= {i a |ia 为小写英文字母且互不相同,1,2,,i n = ,026n ≤≤}数据关系:R1={} 基本操作:CreateSet(&T ,Str)初始条件:Str 为字符串。

操作结果:生成一个由Str 中小写字母构成的集合T 。

DestroySet(&T)初始条件:集合T 已存在。

操作结果:销毁集合T 的结构。

Union(&T ,S1,S2)初始条件:集合S1和S2存在。

操作结果:生成一个由S1和S2的并集构成的集合T 。

Intersection (&T ,S1,S2)初始条件:集合S1和S2存在。

操作结果:生成一个由S1和S2的交集构成的集合T 。

Difference (&T ,S1,S2)初始条件:集合S1和S2存在。

操作结果:生成一个由S1和S2的差集构成的集合T 。

PrintSet (T )初始条件:集合T 已存在。

操作结果:按字母次序顺序显示集合T 的全部元素。

}ADT Set3. 本程序包含四个模块: 1) 主程序模块: void main( ) { 初始化;do {接受命令;处理命令;} while (“命令”=”退出”);}2) 集合单元模块——实现集合的抽象数据类型;3)有序表单元模块——实现有序表的抽象数据类型;4)结点结构单元模块——定义有序表的结点结构。

各模块之间的调用关系如下:三、详细设计1.元素类型、结点类型和指针类型typedef char ElemType ;//元素类型typedef struct NodeType {ElemType data;NodeType *next;} NodeType, *LinkType;//结点类型,指针类型status MakeNode(LinkType &p,ElemType e){//分配由p指向的数据元素为e、后继为“空”的结点,并返回TRUE,// 若分配失败,则返回FALSEP = (LinkType)malloc(sizeof(NodeType));if (!p) return FALSE;p-> data = e;p->next = NULL;return TRUE;}void FreeNode(LinkType &p){ //释放p所指结点}LinkType Copy ( LinkType p){//复制生成和指针p所指结点有同值元素的新结点并返回,//若分配空间失败,则返回空指针。

新结点的指针域为NULLs = (LinkType)malloc(sizeof(NodeType));if (!s) return NULL;s->data = p -> data;s->next = NULL;return s;}ElemType Elem(LinkType p){//若指针p!=NULL,则返回p所指结点的数据元素,否则返回‘#’}LinkType SuccNode(LinkType p){//若指针p!=NULL,则返回指向p所指结点的后继元素的指针,//否则返回NULL}2.根据有序表的基本操作的特点,有序表采用有序链表实现。

链表设头、尾两个指针和表长数据域,并附设头结点,头结点的数据域没有实在意义。

typedef struct {LinkType head,tail;//分别指向线性链表的头结点和尾结点int size;// 指示链表当前的长度} Orderedlist;// 有序链表类型有序链表的基本操作设置如下:bool InitList(OrderedList &L);//构造一个带头结点的空的有序链表L,并返回TRUE;// 若分配空间失败,则令L.head为NULL,并返回FALSEvoid DestroyList(OrderedList &L);// 销毁有序链表Lbool ListEmpty(OrderedList L);//若L不存在或为“空表”,则返回TRUE,否则返回FALSEint ListLength(OrderedList L);//返回链表的长度LinkType GetElemPos(OrderedList L, int pos);// 若L存在且0<pos<L.size+1,则返回指向第pos个元素的指针,//否则返回NULLbool LocateElem (OrderedList L,ElemType e,LinkType &q);// 若有序链表L存在且表中存在元素e,则q指示L中第一个值为e的//结点的位置,并返回TRUE;否则q指示第一个大于e的元素的前驱的//位置,并返回FALSEvoid Append (OrderedList &L,LinkType s);// 在已存在的有序链表L的末尾插入指针s所指结点void InsertAfter(OrderList &L,LinkType q,LinkType s );// 在已存在的有序链表L中q所指示的结点之后插入指针s所指结点void ListTraverse(LinkType p, status(*visit)(LinkType q));//从p(p!=NULL )指示的结点开始,依次对每个结点调用函数visit其中部分操作的伪码算法如下:BOOL InitList(OrderedList &L)if(MakeNode(head,' ')){ // 头结点的虚设元素为空格符‘’L.tail = L.head;L.size = 0;return TRUE;}else {L.head =NULL;return FALSE;}}//InitListvoid DestroyList(OrderedList &L){p = L.head;while(p){q = p;p = SuccNode(p);FreeNode(q);}L.head = L.tail = NULL;} //DestroylistLinkType GetElemPos(OrderedList L,int pos){if(! L.head || pos<1 || pos>L.size) return NULL;else if ( pos = = L.size ) return L.tail ;else{p = L.head->next;k=1;while ( p && k<pos) { p=SuccNode(p);k++;}return p;}} //GetElemPosstatus LocateElem( OrderedList L,ElemType e,LinkType &p) {if ( L.head ) {pre = L.head ;p =pre->next;//pre 指向*p的前驱,p指向第一个元素结点while ( p &&p->data<e ){pre = p;p = SuccNode(p);}if ( p&&p->data= =e) return TRUE;else { p=pre;return FALSE;}}else return FALSE;}//LocateElemvoid Append (OrderedList &L,LinkType s){if ( L.head && s) {if ( L.tail != L.head ) L.tail->next = s ;else L.head->next = s;L.tail=s;L.size++;}} //Appendvoid InsertAfter(OrderList &L,LinkType q,LinkType s ){if ( L.head && q && s ) {s->next = q->next;q-> next= s;if (L.tail= =q)L.tail = s;L.size++;}}//InsertAftervoid ListTraverse(Link Type p,status(*visit)(LinkType)){while(p){ visit(p);p=SuccNode(p);}}// ListTraverse3. 集合Set 利用有序链表类型OrderedList 来实现,定义为有序集OrderedSet:typedef OrderedList OrderedSet;集合类型的基本操作的类C伪码描述如下:void CreateSet( OrderedSet & T, char *s){//生成由串s中小写字母构成的集合T,IsLower是小写字母判别函数if(InitList(T))//构造空集Tfor (i=1;i<=length(s);i++)if (islower(s[i]) &&! LocateElem(T,s[i],p))// 过滤重复元素并按字母次序大小插入if(MakeNode(q,s[i]))InsertAfter(T,p,q);}// CreateSetvoid DestroySet (OrderedSet & T){//销毁集合T的结构DestroyList(T);}// DestroyListvoid Union(OrderedSet &T,OrderedSet S1,OrderedSet S2 ){//求已建成的集合S1和S2的并集T,即:S1.Head!=NULL 且S2.head!= NULL if(InitList(T)){p1=GetElemPos(S1,1);P2=GetElemPos(S2,1);while(p1 &&p2){c1= Elem(p1);c2= Elem(p2);if(c1<=c2) {Append(T,Copy(p1));p1=SuccNode(p1);if(c1= =c2) p2=SuccNode(p2);}else {Append(T,Copy(p2));p2=SuccNode(p2);}}while (p1){ Append(T,Copy(p1));p1=SuccNode(p1);}while (p2){ Append(T,Copy(p2));p2=SuccNode(p2);}}}//Unionvoid Intersection(OrderedSet &T,OrderedSet S1,OrderedSet S2){//求集合S1和S2的交集Tif (!InitList(T)) T.head=NULL;else {p1=GetElemPos(S1,1);p2=GetElemPos(S2,1);while (p1&&p2) {c1=Elem(p1);c2=Elem(p2);if (c1<c2) p1= SuccNode(p1);else if (c1>c2) p2=SuccNode(p2);else {//c1= =c2Append(T,Copy(p1));p1= SuccNode(p1);p2=SuccNode(p2);}//else}//while}//else}//Intersectionvoid Difference(OrderedSet &T,OrderedSet S1,OrderedSet S2 ){//求集合S1和S2的差集Tif (!InitList(T)) T.head=NULL;else {p1=GetElemPos(S1,1);p1=GetElemPos(S2,1);while (p1&&p2) {c1=Elem(p1);c2=Elem(p2);if (c1<c2) {Append(T,Copy(p1));p1= SuccNode(p1);}else if (c1>c2) p2=SuccNode(p2);else // c1= =c2{ p1= SuccNode(p1);p2=SuccNode(p2);}}//whilewhile (p1){ Append(T,Copy(p1));p1= SuccNode(p1);}}//else}//Differencevoid WriteSetElem(LinkType p){//显示集合的一个元素printf(',');writeElem (Elem (p));}//WriteSetElemvoid PrintSet(OrderedSet T){//显示集合的全部元素p=GetElemPos(T,1);printf('[');if(p){WriteElem(Elem(p);p=SuccNode(p);}ListTraverse(p,WriteSetElem);printf(']');}//PrintSet4.主函数和其他函数的伪码算法void main(){//主函数Initialization();//初始化do {ReadCommand(cmd);//读入一个操作命令符Interpret(cmd);//解释执行操作命令符} while(cmd !='q'&&cmd !='Q');}//mainvoid Initialization(){//系统初始化Clrscr();//清屏在屏幕上方显示操作命令清单:MakeSet1--1 MakeSet2--2 Union--uIntersaction--i Difference--d Quit--q;在屏幕下方显示操作命令提示框;CreateSet(Set1,“”);PrintSet(Set1);//构造并显示空集Set1 CreateSet(Set2,“”);PrintSet(Set1);//构造并显示空集Set2 } //Initializationvoid ReadCommand(char crmd){//读入操作命令符显示键入操作命令符的提示信息;do {cmd=getche( );}while (cmd […1‟,‟2‟,‟u‟,‟U‟,‟i‟,‟I‟,‟d‟,‟D‟,‟q‟,‟Q‟]));}void Interpret( char cmd){//解释执行操作命令cmdswitch (cmd) {case …1‟:显示以串的形式键入集合元素的提示信息;scanf(v);//读入集合元素到串变量vCreateSet(Set1, v);PrintSet(Set1);//构造并显示有序集Set1break;case …2‟:显示以串的形式键入集合元素的提示信息;scanf(v);//读入集合元素到串变量vCreateSet(Set2, v);PrintSet(Set2);//构造并显示有序集Set2 case …u‟,‟U‟:Union(Set3, Set1, Set2);有序集Set1和Set2的并集Set3PrintSet(Set3);//显示并集Set3DestroyList(Set3);//销毁并集Set3break;case …i‟,‟I‟:Intersaction(Set3,Set1,Set2);//求有序集Set1和Set2的交集Set3 PrintSet(Set3);DestroyList(Set3);break;case …d‟,‟D‟:Difference(Set3,Set1,Set2);//求有序集Set1和Set2的差集Set3PrintSet(Set3);DestroyList(Set3);}}//Interpret5. 函数的调用关系图反映了演示程序的层次结构:四、调试分析1.由于对集合的三种运算的算法推敲不足,在有序链表类型的早期版本未设置尾指针和Append操作,导致算法低效。

相关文档
最新文档