数据结构课程设计任务书.docx
- 文档编号:25042479
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:17
- 大小:41.77KB
数据结构课程设计任务书.docx
《数据结构课程设计任务书.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计任务书.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构课程设计任务书
上海电力学院
课程设计(大型作业)任务书
(20/20学年第一学期)
课程编号
课程名称数据结构(JAVA)
院(系)
专业
班级
时间
任课老师
一、课程设计的性质、目的与作用
数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础;数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
本课程属于集中实践教学环节,是在学习JAVA和数据结构后开设的。
要求学生掌握数据结构的应用、算法的编写、JAVA程序的实现并上机调试的基本方法。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计索养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
二、课程设计的具体内容
选题原则是数据结构算法实现及在具体问题中的应用。
要求通过课程设计实践,在数据结构的表示、数据结构的选择及应用、算法设计与实现等方面加深对数据结构课程基本内容的理解和综合运用能力的提高。
参考选题及要求说明如下,选题次序的规则由各班级约定,带**题较难,最高评分可达“优”,其他题目的最高评分为“良”,要求一人一题,不重复。
1.车厢调度
问题描述:
假设停在铁路L周度站入日处的车厢序列的编号一次为1,2,3,…,n。
设汁一个程序,求出所有可能由此输出的长度为n的车厢序列。
2.**学生运动会
功能:
学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200、400、1500米,跳高,跳远,标枪,铅球铁饼等。
进入系统后可以输入和修改某个项日的结果情况,可以按各系院编号输出总分:
按总分排序;按男团体总分排序;按系院编号查询;按项目编号查询;按女团体总分排序。
要求:
(1)建立一个文件,包括某个系,5个项目的得分情况,能对文件中的信息进行扩充(追加),修改和删除;
(2)完成对多个系,多个项目的得分排序,以及完成系统查询功能。
3.多边形表示和运算
声明多边形类Polygon,使用顺序表存储多边形的多个坐标点Point类,支持插入、删除点,实现求多边形周长、面积等运算,以及共用边的两个多边形合并等操作,分析算法效率。
4.**学生成绩表的存储和管理(排序顺序表)
声明学生类Student,使用排序顺序表存储和管理学生成绩表,实现以下功能:
①提供学生对象的插入、删除、查找操作。
②存储和管理学生的多门课程成绩。
③提供学生成绩查询操作。
④提供统计指定课程的平均值功能。
⑤提供指定课程按优秀、良好、中等、及格、不及格五个等级统计人数功能。
⑥指定学生成绩表按学号排序,或按成绩排序。
⑦将学生信息写入记录文件,并能够从记录文件中读取学生信息。
5.**学生成绩表的存储和管理(单链表)
声明学生类Student,使用单链表存储和管理学生成绩表,实现以下功能:
①提供学生对象的插入、删除、查找操作。
②存储和管理学生的多门课程成绩。
③提供学生成绩查询操作。
④提供统计指定课程的平均值功能。
⑤提供指定课程按优秀、良好、中等、及格、不及格五个等级统计人数功能。
⑥指定学生成绩表按学号排序,或按成绩排序。
⑦将学生信息写入记录文件,并能够从记录文件中读取学生信息。
6.一元多项式乘法
1)问题描述
已知A(x)=a0+a1x+a2x2+……+anxn和B(x)=b0+b1x+b2x2+……+bmxm,并且在A(x)和B(x)中指数相差很多,求A(x)=A(x)*B(x)。
2)基本要求
(1)设计存储结构表示一元多项式;
(2)设计算法实现一元多项式乘法;
(3)分析算法的时间复杂度和空间复杂度。
7.集合运算
使用链表来表示集合,完成集合的并、交、差集操作。
8.商店存货管理系统
建立一商店存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。
9.字符串查找和替换
实现文本文件的查找和替换字符串功能,并设置区分大小写、全字匹配、使用通配符等选项。
10.使用栈计算表达式值
使用栈计算表达式值,要求同时使用运算符栈和操作数栈,省略转换成后缀表达式过程,并增加关系等运算符,为各运算符约定优先级,设置若干优先级。
将运算符及其优先级声明为运算符对象。
11.**个人账簿管理系统设计
个人账簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
12.排序系统设计
1)问题描述
设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。
开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。
如此下去,直到所有人全部出列为止。
令n最大值取30。
要求设计一个程序模拟此过程,求出出列编号序列。
2)基本要求
(1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:
建立一个文件,包括某5个人的情况。
13.**文本编辑器
设计一个文本编辑器,提供以下功能:
(1)关键字自动识别功能。
将文本中的关键字以特定颜色显示。
(2)查找和替换功能。
制作查找和替换字符串对话框,对文本文件实现字符串的查找和替换功能,并提供区分大小写、全字匹配等多个功能。
14.**选票统计
设一次选举有n个候选人,设计一种选票格式及计票程序,统计所有选票数量、每个候选人的得票数和得票率,将候选人及其得票数和得票率按得票数降序排序输出。
如果不限定候选人数,则可采用什么结构?
分别说明所采用的数据结构和算法,分析各数据结构的查找性能,及查找和排序算法效率,说明查找性能与哪些因素有关,说明为提高查找效率通常采用的措施。
15.统计获奖名单
已知有n人报名参加某个比赛,设一~三等奖的获奖名额分别为:
x、y、z名等,将获奖名额方案保存在指定数组中。
研究采用何种存储结构存储参赛者信息及比赛成绩?
采用什么方法选择决定获奖者的效率最高?
实现一种方案并分析算法效率。
16.**航空客运订票系统
航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
(1)每条航线所涉及的信息有:
终点站名、航班名、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
(2)作为示意系统,全部数据可以只放在内存中;
(3)系统能实现的操作和功能如下:
查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户。
17.马踏棋盘
设计一个国际象棋的马踏遍棋盘的演示程序。
将马随机放在国际象棋的88棋盘Board88的某个方格中,马按走棋规则进行移动。
要求每个方格只进入一次,走遍棋盘上全部64个方格。
编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个88的阵,输出之。
18.学生搭配问题
一个班有M个女生,有N人男生(M不等于N),现要开一个舞会,男女生分别编号坐在舞池边的椅子上。
每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲舞伴。
请设计一系统模拟动态地显示出上述过程,要求如下:
(1)输出每曲配对情况。
(2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。
至少求出K的两个值。
19.**电话簿的存储与查找(树形结构分类,树的横向凹入)
设计电话簿存储结构,要求按类似以下树形结构分类,并将该棵树保存在文本文件中。
实现查找、插入和删除元素操作,分析各算法效率。
全部
同学
中学同学
大学同学
研究生同学
同事
计算机系
通信系
20.**Huffman编码
1)问题描述
设某编码系统共有n个字符,使用频率分别为{w1,w2,…,wn},设计一个不等长的编码方案,使得该编码系统的空间效率最好。
2)基本要求
(1)设计数据结构;
(2)设计编码算法;
(3)分析时间复杂度和空间复杂度。
3)设计思想
利用Huffman编码树求得最佳的编码方案。
根据哈夫曼算法,建立哈夫曼树时,可以将哈夫曼树定义为一个结构型的一维数组HuffTree,保存哈夫曼树中各结点的信息,每个结点包括:
权值、左孩子、右孩子、双亲,如图所示。
由于哈夫曼树中共有2n-1个结点,并且进行n-1次合并操作,所以该数组的长度为2n-1。
21.**各种排序算法时间性能的比较
1)问题描述
对各种排序方法(直接插入排序、希尔排序、起泡排序、快速排序、直接选择排序、堆排序和归并排序)的时间性能进行比较。
2)基本要求
(1)设计并实现上述各种排序算法;
(2)产生正序和逆序的初始排列分别调用上述排序算法,并比较时间性能;
(3)产生随机的初始排列分别调用上述排序算法,并比较时间性能。
22.**哈希表设计
1)问题描述
针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。
2)基本要求
假设人名为中国人姓名的汉语拼音形式。
待填入哈希表的人名共有30个,取平均查找长度的上限为2。
哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。
3)测试数据
取周围较熟悉的30个人名。
23.统计成绩
1)问题描述
给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。
对学生的考试成绩进行有关统计,并打印统计表。
2)基本要求
(1)按总数高低次序,打印出名次表,分数相同的为同一名次;
(2)按名次打印出每个学生的学号、姓名、总分以及各科成绩。
3)测试数据
由学生依据软件工程的测试技术自己确定。
注意测试边界数据。
24.**学分管理程序
1)问题描述
请设计一个学生的学分管理程序。
假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分、实验性课程20学分才能够毕业。
因此在管理学分时,要考虑每个学分所属于的课程类别。
学分信息应该包括学号、姓名、课程类别、学分等。
2)基本要求
该程序应该具有下列功能:
(1)通过键盘输入某位学生的学分;
(2)给定学号,显示某位学生的学分完成情况;
(3)给定某个班级的班号,显示该班所有学生学分完成情况;
(4)给定某位学生的学号,修改该学生的学分信息;
(5)按照某类课程的学分高低进行排序;
(6)提供一些统计各类信息的功能。
25.**销售管理系统
1)问题描述
某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
2)基本要求
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
26.**宿舍管理软件
1)问题描述
设某宿舍有:
101,102,201,202四个房间,每个房间有4个床位,学生信息包括学号、姓名、房间号,为学生宿舍管理人员编写一个宿舍管理软件。
2)基本要求
该程序应该具有下列功能:
(1)学生的入住处理;
(2)学生退房处理;
(3)输出学生入住信息(按房间号和床号有序);
(4)修改入住信息;
(5)学生调换宿舍或床位处理;
(6)按给定学号、姓名、房号查询;
(7)查询房间使用情况。
27.**库存管理系统
1)问题描述
试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)。
2)基本要求
该系统应具有以下功能:
(1)产品信息录入功能(产品信息用文件保存)--输入
(2)产品信息浏览功能--输出
(3)产品入库
(4)产品出库
(5)查询和排序功能:
(6)按价格从大到小排序
(7)按名称查询
(8)产品信息删除、修改功能。
28.迷宫问题
1)问题描述
迷宫求解是实验心理学中的一个经典问题,心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口处放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。
例如,图2所示为一个迷宫示意图,其中双边矩形表示迷宫,1代表有障碍,0代表无障碍。
0
1
2
3
4
5
6
7
8
9
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
1
1
1
1
2
1
1
0
1
0
1
1
1
1
1
3
1
0
1
0
0
0
0
0
1
1
4
1
0
1
1
1
0
1
1
1
1
5
1
1
0
0
1
1
0
0
0
1
6
1
0
1
1
0
0
1
1
0
1
7
1
1
1
1
1
1
1
1
1
1
2)基本要求
(1)设计数据结构存储迷宫;
(2)设计存储结构保存从入口到出口的通路;
(3)设计算法完成迷宫问题的求解;
(4)分析算法的时间复杂度。
3)设计思想
可以采用回溯法实现该问题的求解。
回溯法是一种不断试探及时纠正错误的搜索方法。
从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达新点,否则试探下一方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探,直到所有可能的通路都搜索到,或找到一条通路,或无路可走又返回到入口点。
在求解过程中,为了保证在任何位置上都能沿原路退回,需要一个后进先出的栈来保存从入口到当前位置的路径。
29.最小生成树问题
1)问题描述
若要在n个城市之间建设通信网络,只需要架设n-1条线路即可。
如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。
2)基本要求
以邻接多重表存储无向带权图,利用克鲁斯卡尔算法或普瑞姆算法求网的最小生成树。
30.带变量的表达式求值
设一个表达式中带有多个变量标识符,要求:
①识别出其中所有变量标识符;②为所有变量标识符设置取值;③对于任意一组变量取值,求得表达式的运算结果值。
31.压缩存储下三角矩阵
线性压缩存储下三角矩阵,实现构造函数、矩阵相加(+=和+)、比较相等、转置等功能。
32.稀疏矩阵三元组顺序表
稀疏矩阵三元组顺序表类增加矩阵相加(+)、比较相等、转置等功能。
33.稀疏矩阵三元组单链表
使用单链表作为成员变量声明稀疏矩阵三元组单链表类,实现构造、矩阵相加(+=和+)、比较相等、转置等功能。
34.**电话簿的存储与查找(二叉排序树)
采用二叉排序树存储电话簿数据元素,元素按姓氏排序,实现查找、插入和删除元素操作,分析各算法效率。
35.**算法的动态演示
为以下算法设计图形用户界面,动态演示算法的执行过程。
(1)单链表或双链表的查找、插入、删除操作;
(2)栈、队列的插入、删除操作;
(3)KMP算法;
(4)二叉树的查找、插入、删除操作。
三、课程设计的要求
数据结构课程设计的要求是:
综合运用数据结构的基础知识和算法设计的基本原则,独立编制一个具有中等规模的、一定难度的、解决实际问题的应用程序;通过题意分析、选择数据结构、算法设计、编制程序、调试程序、软件测试、结果分析、撰写课程设计报告等环节完成软件设计的全过程,完善算法并提高程序性能。
1.选题及要求
各课题的难易度有一定的差异,因此,参加课程设计的学生首先要了解设计的任务,仔细阅读各个课题的设计要求,然后根据自己的基础和能力情况选择其中一题,或者由指导教师指定。
一般来说,选则课题应以在规定的时间内能完成,并能得到应有的锻炼为原则。
若学生对课题表以外的相关课题较感兴趣,希望选作课程设计的课题时,应征得指导教师的认可,并写出明确的设计要求和说明。
设计时要严格按照题意要求独立进行设计,不能随意更改。
若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。
选题与数据结构课程内容相关,体现基本的数据结构和算法设计原则。
2.设计要求
(1)学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。
有问题及时主动与教师联系沟通。
每个学生必须独立完成;
(2)课程设计时间为1周;
(3)设计语言采用JAVA编程语言;
(4)充分利用课余时间完成源程序和课程设计报告等文档书写;
(5)选择合适的数据结构,根据程序所要完成的基本要求和程序实现提示,设计出完整的算法;设计出主程序或界面,使其成为完整的程序。
(6)课程设计期间无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
3.系统验收及评分标准
(1)在设计完成后,应由指导教师在规定的环境下运行每个学生设计好的系统,检查运行数据库设计的正确性,系统功能的完整性。
由指导教师根据学生完成任务的情况、课程设计说明书的质量和课程设计过程中的工作态度等综合打分。
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
(2)设计程序的检查由教师当面在计算机上检查测试,并同时对程序中的问题至少提出三个问题,学生当面回答。
(3)独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
发现课程设计抄袭,一律以不及格处理。
4.设计报告
课程设计的设计报告是学生对本次课程设计的全面总结,应该反映每个设计阶段的设计思路和设计内容。
该设计报告,应作为整个课程设计评分的书面依据和存档材料。
设计报告一般要以固定规格的纸张(如A4)书写或打印并装订,字迹及图形要清楚、工整、规范。
课程设计报告包括:
课程设计目的、题目说明、题意分析、设计特点、设计方案、功能说明、实现技术和手段、程序流程、源程序清单、运行结果及结果分析、设计经验和教训总结、存在问题及改进措施等。
设计报告模版见附录1。
5.关于课程设计的成绩评定
课程设计的成绩评定以选定课题的难易度、完成情况和设计报告为依据综合评分。
从总体来说,所设计的内容应该符合设计要求,设计过程中的每一个阶段均应提供正确的文档(设计报告),此外,程序必须运行通过,对于各种输入数据,有明确的不同的输出结果。
程序运行有错误时,必须采取各种调试手段排除错误。
设计报告要符合规范。
6、进度安排
起止日期
工作内容
设计前二周
设计周,周一~周三
周四
周五
教师提出课题范围及要求;学生查阅资料,确定选题。
学生写程序草稿、运行,修改并完善程序,测试多种运行结果。
教师审查验收;学生撰写设计报告。
组织答辩,教师验证学生程序,批改设计报告。
附录1
上海电力学院
数据结构(JAVA)课程设计
题 目:
学生姓名:
学号:
院 系:
计算机科学与技术学院
专业年级:
级
20 年 月 日
一、设计题目
二、需求分析
1)运行环境(软、硬件环境)
2)输入的形式和输入值的范围
3)输出的形式描述
4)功能描述
5)测试数据
三、概要设计
1)抽象数据类型定义描述
(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)
2)功能模块设计(如主程序模块设计)
3)模块层次调用关系图
四、详细设计
实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。
五、调试分析
包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。
六、用户使用说明
详细列出每一步的操作说明。
七、测试结果
八、附录:
程序设计源代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 任务书