在当下社会,接触并使用报告的人越来越多,不同的报告内容同样也是不同的。报告对于我们的帮助很大,所以我们要好好写一篇报告。下边是小编为你们整理的报告例文,仅供参考,你们一上去瞧瞧吧。
数据结构课程设计题目数据结构与算法课程设计报告篇一
一、要求
本次课程设计可以从以下的题目中任选其二,每位题目基本实现的要求是:
1、有菜单功能
2、有读写数据读档功能
3、有数据图形显示或动漫显示。
成品应包括以下内容:
1、程序设计书(word格式)。
包括程序设计目标、问题描述、需求剖析、概要设计、详细设计、源程序清单(要求格式整齐400行以上,要有注释说明)、软件说明书(给出软件怎样使用,使用时的注意事项)、测试报告(每位函数的功能测试,输入条件,输出结果)和课程设计总结。
2、可执行程序源代码。
二、设计题目
三、上交作业及成绩评定
1、上交要求
1)上交课程设计报告和源程序代码。
2)每小组写一份设计报告,以电子版方式上交,排版一定要规范,否则成绩下滑一档。
3)以自己的“2012+专业+学号+姓名”建立文件夹,文件夹内容包括程序源码、设计报告的电子文档。
4)课程设计时间为二周,要求每人上机学时不高于20学时。
2、评分标准
按照完成任务的情况(必须进行系统演示)、课程设计报告书的质量和课程设计过程中的工作心态等根据30%、50%、20%加权综合打分。成绩评定推行优秀、良好、中等、及格和不及格五个等级。上机程序检测未通过者、无设计报告者以及严重剽窃他人设计者,成绩为不及格。
注:
每班分为十几个小组,每组2人。
每位题目每班最多只能有两小组选做。
每小组之间不得雷同,否则成绩最多及格。
数据结构课程设计题目数据结构与算法课程设计报告篇二
《数据结构》课程设计要求
一、课程设计的目的及要求
1.课程设计目的
课程设计是《数据结构》课程教学必不可缺的一个重要环节,它可加深中学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相连接的关键步骤。通过课程设计,才能提升中学生剖析问题、解决问题,因而运用所学知识解决实际问题的能力,因此必须给与足够的注重。2.课程设计要求
1)明晰课设任务,备考与查阅有关资料
2)按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。3)每人完成一个项目。
4)应用程序应具有一定的可用性:
5)凡等候用户输入时,给出足够的提示信息,如“pleaseselect(1—3):”提示用户选择。
6)格式显著易懂,配上适当的颜色、声音等辅助疗效,能便捷地改正输入时的错误,使用户倍感便捷、好用。
7)有联机求救功能。用户能直接从系统得到必要的提示,不查指南也能解决一些疑难。8)程序具有一定的强壮性,不会由于用户的输入错误导致程序运行错误而中断执行:9)对输入值的类型、大小范围、字符串的厚度等,进行正确性检测,对不合法的输入值给出出错信息,强调错误类型,等待重新输入。
10)当可能的回答有多种时,应容许输入任何一种回答。11)对删掉数据应给出警告。
二、课程设计任务、内容及时间安排
1.课程设计任务、内容
课程设计的题目可由班主任指定,如可在下述选题中选择,或由班主任另外选择,也可由中学生自行选择。但选题内容、难度要适当,要有一定的实际意义,并能达到进一步巩固和加强本课程所学知识的疗效。
选题1.停车场管理问题。
问题描述:设有一个可以停放n辆车辆的狭小停车场,它只有一个房门可以供汽车进出。汽车按抵达停车场时间的早晚依次从停车场最上面向大旁边处停放(最先抵达的第一辆车放到停车场的最上面)。假如停车场已放满n辆车,则后来的汽车只能在停车场房门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就步入停车场。停车场内如有某辆车要开走,在它以后步入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这种辆再依原先的顺序进场。每辆车在离开停车场时,都应按照它在停车场内逗留的时间长短缴费。假如逗留在便道上的车未进停车场时,容许其离去,不收停路费,但是依然保持在便道上等待的汽车的顺序。编制一程序模拟该停车场的管理。
基本要求:要求程序输出每辆车抵达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内逗留的时间。
实现提示:车辆的模拟输入信息格式可以是:(抵达/离去,车辆车牌号码,抵达/离去的时刻)。比如,(„a‟,1,5)表示1车牌照车在5这个时刻抵达,而(„d‟,5,20)表示5车牌照车在20这个时刻离去。整个程序可以在输入信息为(„e‟,0,0)时结束。本题可用栈和队列来实现。
选题2.一元方程简单估算
问题描述:设计一个一元方程简单的估算器。基本要求:一元方程简单估算器的基本功能为:(1)输入并完善方程;(2)输出方程:
(3)两个方程相加减、相乘,完善并输出方程。
实现提示:可选择带头结点的双向循环数组或单数组储存方程,头结点可储存方程的参数(如项数等)。
选题3.迷宫问题。
问题描述:迷宫实验是取自心理学的一个古典的实验。在该实验中,把一只老鼠从一个无顶大袋子的门倒入,在盒中设置了许多墙,对行进方向产生了多处阻挠。袋子仅有一个出口,在出口处放置一块芝士,吸引老鼠在迷宫中找寻公路以抵达出口。对同一只老鼠重复进行上述实验,仍然到老鼠从入口到出口,而不走错一步。老鼠经多次试验总算得到它学习走通迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的推论。
基本要求:要求程序输出:
(1)一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的座标。
(2)用一种标志(如数字8)在二维字段中标出该条通路,并在屏幕上输出二维链表。
实现提示:可以借助一个二维链表maze[i][j]表示迷宫,其中1≦i≦m,1≦j≦n。链表元素值为1表示该位置是墙上,不能通行;元素值为0表示该位置是通路。假设从maze[1][1]出发,出口坐落maze[m][n],联通方向可以是8个方向(东、东南、南、西南、西、西北、北和西南)。
选题4.算术表达式求值演示。选题5.哈夫曼编/解调器。选题6.简单行编辑程序。选题7.各类图的算法的演示。选题8.汉诺塔的演示。2.时间安排
课程设计,安排在本课程的最后部份,时间一周。周1下午:设计动员,分组,布置课程设计任务。周1晚上:查阅资料。
周2全天:进行程序总体设计和详尽设计。周3~4全天:详尽设计,系统调试。
周5下午:系统调试,整理,撰写设计(或督查)报告。周5凌晨:初验,答辩,递交设计(或督查)报告,评定成绩。
四、报告内容及要求
课程设计报告应不多于1000字。报告中应包括需求剖析、概要设计、详细设计、调试剖析、用户指南、测试结果、附录等,具体地:
(1)设计报告中应首先包括设计题目、班级、姓名、学号、完成日期。
(2)概要设计中应包括设计思想、实现方式、系统中主要模块及各模块间的关系的描述。
(3)用户指南应详尽、具体,使具有程序设计语言基础的人在阅读用户指南后能使用和退出应用程序。
(4)附表中包括源程序、设计感受等。源程序中应有注解,说明每位模块的功能,使他人能比较容易地看懂源程序;设计感受中应包括本系统的不足之处以及可改进的地方,还应说明系统的特色、新的发明、创造等等。
数据结构课程设计题目数据结构与算法课程设计报告篇三
光碟内容说明
本光碟有8个目录,对应于课程设计教材中第2至5章的8个案例。每位目录以ch0x0y命名,代表第x章第y节的案例,内容包含该案例的源程序及教材中描述的测试数据。除“文件目录结构的显示”案例为.c++源程序外,其他均为c源程序。
各目录中的内容及说明:
0201:表达式求值,在vc++6.0环境下测试通过
文件main.c:案例源程序;
:案例测试输入数据文件;
:案例测试输出结果文件;
0202:文件目录结构的显示,在vc++6.0环境下测试通过
文件main.c:案例源程序;
:案例测试输入数据文件;
:案例容错测试输入数据文件;
:的输出结果文件;
0301:挽救007,在vc++6.0环境下测试通过
文件main.c、graph.c、deque.c、error.c、graph.h、deque.h、error.h:案例源程序。编译时需通过应用工程文件(consoleproject)。
:案例测试输入数据文件;
:案例测试输出结果文件;
0302:迷宫问题,在tc2.0环境下测试通过
文件main.c:案例源程序;
说明:测试时可选择手动生成测试数据,读者也可根据教材中提供的数据进行测试;
0401:快速排序详析,在vc++6.0环境下测试通过
文件main.c:案例源程序;
:案例测试输入数据文件,包含次序、逆序和随机等三种类型的测试数据;
:案例测试输出结果文件;
0402:插队购票,在vc++6.0环境下测试通过
文件main.c:案例源程序;
:案例测试输入数据文件;
:案例测试输出结果文件;
0501:搜索算法效率比较,在vc++6.0环境下测试通过
文件main.c:案例源程序;
说明:读者可根据教材中提供的数据进行测试;
0502:任务调度问题,在vc++6.0环境下测试通过
文件main.c:案例源程序;
说明:读者可根据教材中提供的数据进行测试;
数据结构课程设计题目数据结构与算法课程设计报告篇四
1.二叉树的遍历和应用
问题描述:以二叉数组表示二叉树,在此基础上实现对二叉树的遍历和应用。要求:创建二叉树
输出二叉树
二叉树的先序、中序、后序遍历
二叉树的按层遍历
统计二叉树的叶子结点、计算二叉树的深度
设计主函数测试该类。2.猴子选大王(约瑟夫环)
问题描述:一堆猴子都有编号,编号是1,2,3….m,这群猴子(m个)根据1-m的次序围坐一圈,从1开始数,没数到第n个,该猴子就要离开此圈,这样依次出来,直至圈中只剩下最后一只猴子,则该猴子为大王。输入数据:输入m,n。(m,n为整数,且n
问题描述:设计一个借助赫夫曼算法的编码和解调系统。要求:从按键给出字符及频率,构建赫夫曼树并输出;4.图的构建及输出
问题描述:构建图的储存结构(图的类型可以是有向图,无向图;有向网,无向网,任选一组或以上),才能输入图的顶点和边的信息,并储存到相应的储存结构中,而后输出图的邻接矩阵。5.常用排序算法的实现
问题描述:对10000个随机整数,借助插入排序,希尔排序c语言程序课程设计题目计划书 简单计算器问题描述,起泡排序,快速排序,选择排序,堆排序,归并排序等方式进行排序,并统计每一种排序上机所耗费时间并列举统计表。数据的输入:整数数据的输出:递增
6.次序结构、动态数组结构下的一元整式的乘法,加法的实现问题描述:先构建一元方程am(x)和bn(x)
要求:完成两个方程的乘法,加法;根据降幂排列显示。
7.二叉平衡树
问题描述:从一颗空树开始创建,保证数的有序性,同时要针对数的平衡性做些微调。最终要把创建的二叉排序树转换成二叉平衡树。基本要求:创建(插入,调整),输出。
参考资料:1.《数据结构
(c语言版)》严蔚敏、吴伟民主编北大学院出版社2004.112.《数据结构课程设计案例精编(用c/c++描述)》,李建学等编绘,复旦学院出版社2007.23.《数据结构:用面向对象方式与c++语言描述》,殷人昆主编,复旦学院出版社2007.6课程设计报告的规范要求:1.需求剖析
进行需求剖析,确定每位模块的功能要求。即按照设计题目的要求,充分地剖析和理解问题,明晰问题要求做的内容。2.算法设计
进行概要设计和详尽设计。说明用到的数据结构定义,主程序的流程及各程序模块的调用关系。并用自然语言描述每位模块所设计的算法。3.测试数据
列举对于给定的输入所形成的输出结果。4.源程序及系统文件使用说明
附上关键数据结构的定义及关键算法的源代码。5.心得感受
说说课程设计过程中的收获,碰到的问题及解决问题过程的思索,程序调试能力的思索,对数据结构那么课程的思索,在课程设计过程中对《数据结构》课程认识等的思索。6.参考文献
参考文献要标明作者,出版社,出版日期。
7.递交内容包括:a.完整的程序系统(电子形式递交,以学号命名文件夹,由连长统一刻录成光碟上交);b.课程设计报告(字数不多于1500字)。8.课程设计考评方式及成绩评定:课程设计成绩分两部份,设计报告占50%,设计作品占50%;其中设计报告须要答辩。9.报告封面格式
课程设计报告
题目:
班级:
学号:
姓名:
数据结构课程设计题目数据结构与算法课程设计报告篇五
数据结构
课程设计报告
题目:一元方程估算专业:信息管理与信息系统班级:2012级普本班学号:201201011367姓名:左帅帅指导老师:郝慎学时间:
一、课程设计题目剖析
本课程设计要求借助c语言或c++编撰,本程序实现了一元方程的乘法、减法、乘法、除法运算等功能。
二、设计思路
本程序采用c语言来完成课程设计。
1、首先,借助次序储存结构来构造两个储存方程a(x)和b(x)的结构。
2、然后把输入,加,减,乘,除运算分成五个主要的模块:实现方程输入模块、实现乘法的模块、实现加法的模块、实现加法的模块、实现加法的模块。
3、然后各个模块上面还要分成若干种情况来考虑并通过函数的嵌套调用来实现其功能,尽量减低程序运行时错误的出现。
4、最后编撰main()主函数以实现对方程输入输出以及加、减、乘、除,调试程序并将不足的地方加以更改。
三、设计算法剖析
1、相关函数说明:
(1)定义数据结构类型为线性表的链式储存结构类型变量
typedefstructpolynomial{}
(2)其他功能函数
插入函数voidinsert(polynp,polynh)
比较函数intcompare(polyna,polynb)
构建一元方程函数polyncreate(polynhead,intm)
求解并完善方程a+b,polynadd(polynpa,polynpb)
求解并完善方程a-b,polynsubtract(polynpa,polynpb)2
求解并完善方程a*b,polynmultiply(polynpa,polynpb)
求解并完善方程a/b,voiddevice(polynpa,polynpb)
输出函数输出方程,voidprint(polynp)
销毁方程函数释放显存,voiddestroy(polynp)
主函数,voidmain()
2、主程序的流程基函数调用说明(1)typedefstructpolynomial{
floatcoef;
intexpn;
structpolynomial*next;}*polyn,polynomial;
在这个结构体变量中coef表示每一项前的系数,expn表示每一项的指数,polyn为结点表针类型,属于具象数据类型一般由用户自行定义,polynomial表示的是结构体中的数据对象名。
(2)当用户输入两个一元方程的系数和指数后,构建数组,储存这两个方程,主要说明如下:
polyncreatepolyn(polynhead,intm)构建一个头表针为head、项数为m的一元整式
p=head=(polyn)malloc(sizeof(structpolynomial));为输入的式子申请足够的储存空间
p=(polyn)malloc(sizeof(structpolynomial));构建新结点以接收数据
insert(p,head);调用insert函数插入结点
这就完善一元方程的关键步骤
(3)因为方程的系数和指数都是随后输入的,所以按照要求须要对方程按指数进行降幂排序。在这个程序模块中,使用数组,依照对指数大小的比较,对各类情况进行处理,此处因为反复使用指针对各个结点进行定位,找到合适的位置再借助voidinsert(polynp,polynh)进行插入操作。(4)加、减、乘、除、的算法实现:
在该程序中,最关键的一步是实现四则运算和输出,因为加减算法原则是一样,除法可通过系数为负的减法实现;对于乘除算法的大致流程都是:首先构建方程a*b,a/b,之后使用数组储存所求出的乘积,商和余数。这就实现了方程估算模块的主要功能。
(5)另一个子函数是输出函数printpolyn();
输出最终的结果,算法是将最后估算合并的数组挨个结点依次输出,便得到整数组,也就是最后的估算式估算结果。因为考虑各个结点的指数情况不同,分别进行了判定处理。
四、程序新点
通过多次写程序,发觉在程序在控制台运行时总是白色的,本次写程序就想着改变一下,于是经过查资料借助system(“colore0”);可以函数解决,这儿“e0,”e是控制台背景颜色,0是控制台输出字体颜色。
五、设计中遇见的问题及解决办法
首先是,因为这次课程设计里使用表针使用比较多,自己在表针多的时侯易头脑混乱出错,对于此问题我是采取比较笨的办法在信纸上写明白后开始进行4
代码编撰。
其次是,在写乘法模块时比较复杂,自己通过查资料最后成功写出乘法模块功能。
最后是,前期剖析不足开始急于写代码,中途出现各类问题,算是给自己之后设计时的一个经验吧。
六、测试(程序截图)
1.数据输入及主菜单
2.乘法和除法模块
3.加法和乘法模块
七、总结
通过本次应用c语言设计一元方程基本估算程序,使我愈发巩固了c语言程序设计的知识,曾经对表针这一点使用是比较模糊,现今通过这次课程设计对表针理解的比较深刻了。并且对于数据结构的相关算法和函数的调用方面知识的加深。本次的课程设计,一方面提升了自己独立思索处理问题的能力;另一方面使自己再设计开发程序方面有了一定的小经验和看法,对自己之后学习其他语言程序设计奠定了一定的基础。
八、指导老师评语及成绩
附表:(课程设计代码)
#include
#include
#include
typedefstructpolynomial{
floatcoef;6
intexpn;
structpolynomial*next;}*polyn,polynomial;
//polyn为结点表针类型voidinsert(polynp,polynh){
if(p->coef==0)free(p);
//系数为0的话释放结点
else
polynq1,q2;
q1=h;q2=h->next;
while(q2&&p->expn
expn)//查找插入位置
q1=q2;q2=q2->next;}
if(q2&&p->expn==q2->expn)//将指数相同相合并{
q2->coef+=p->coef;
free(p);
if(!q2->coef)//系数为0的话释放结点
{q1->next=q2->next;free(q2);}
else{p->next=q2;q1->next=p;
}//指数为新时将结点插入
}7
}//构建一个头表针为head、项数为m的一元整式polyncreate(polynhead,intm){
inti;
polynp;
p=head=(polyn)malloc(sizeof(structpolynomial));
head->next=null;
for(i=0;i
p=(polyn)malloc(sizeof(structpolynomial));//完善新结点以接收数据
printf(“请输入第%d项的系数与指数:”,i+1);
scanf(“%f%d”,&p->coef,&p->expn);
insert(p,head);
//调用insert函数插入结点
returnhead;}//销毁方程pvoiddestroy(polynp){
polynq1,q2;
q1=p->next;8
q2=q1->next;
while(q1->next)
free(q1);
q1=q2;//表针后移
q2=q2->next;
}}//输出方程pintprint(polynp){
polynq=p->next;
intflag=1;//项数计数器
if(!q)//若方程为空c语言程序课程设计题目计划书 简单计算器问题描述,输出0
putchar('0');
printf(“n”);
return;
while(q)
if(q->coef>0&&flag!=1)putchar('+');//系数小于0且不是第一项9
if(q->coef!=1&&q->coef!=-1)//系数非1或-1的普通情况
printf(“%g”,q->coef);
if(q->expn==1)putchar('x');
elseif(q->expn)printf(“x^%d”,q->expn);
else
if(q->coef==1){
if(!q->expn)putchar('1');
elseif(q->expn==1)putchar('x');
elseprintf(“x^%d”,q->expn);}
if(q->coef==-1){
if(!q->expn)printf(“-1”);
elseif(q->expn==1)printf(“-x”);
elseprintf(“-x^%d”,q->expn);}
q=q->next;
flag++;
printf(“n”);}intcompare(polyna,polynb){
if(a&&b)
if(!b||a->expn>b->expn)return1;
elseif(!a||a->expn
expn)return-1;
elsereturn0;
elseif(!a&&b)return-1;//a方程已空,但b方程非空
elsereturn1;//b方程已空,但a方程非空}//求解并完善方程a+b,返回其头表针polynadd(polynpa,polynpb){
polynqa=pa->next;
polynqb=pb->next;
polynheadc,hc,qc;
hc=(polyn)malloc(sizeof(structpolynomial));//构建头结点11
hc->next=null;
headc=hc;
while(qa||qb){
qc=(polyn)malloc(sizeof(structpolynomial));
switch(compare(qa,qb))
case1:
qc->coef=qa->coef;
qc->expn=qa->expn;
qa=qa->next;
break;
case0:
qc->coef=qa->coef+qb->coef;
qc->expn=qa->expn;
qa=qa->next;
qb=qb->next;
break;
case-1:
qc->coef=qb->coef;
qc->expn=qb->expn;
qb=qb->next;
break;12
if(qc->coef!=0)
qc->next=hc->next;
hc->next=qc;
hc=qc;
elsefree(qc);//当相乘系数为0时,释放该结点
returnheadc;}//求解并完善方程a-b,返回其头表针polynsubtract(polynpa,polynpb){
polynh=pb;
polynp=pb->next;
polynpd;
while(p)//将pb的系数取反
{p->coef*=-1;p=p->next;}
pd=add(pa,h);
for(p=h->next;p;p=p->next)
//恢复pb的系数
p->coef*=-1;13
returnpd;}//求解并完善方程a*b,返回其头表针polynmultiply(polynpa,polynpb){
polynhf,pf;
polynqa=pa->next;
polynqb=pb->next;
hf=(polyn)malloc(sizeof(structpolynomial));//构建头结点
hf->next=null;
for(;qa;qa=qa->next)
for(qb=pb->next;qb;qb=qb->next)
pf=(polyn)malloc(sizeof(structpolynomial));
pf->coef=qa->coef*qb->coef;
pf->expn=qa->expn+qb->expn;
insert(pf,hf);//调用insert函数以合并指数相同的项
returnhf;}
//求解并完善方程a/b,返回其头表针voiddevice(polynpa,polynpb){
polynhf,pf,temp1,temp2;
polynqa=pa->next;
polynqb=pb->next;
hf=(polyn)malloc(sizeof(structpolynomial));//构建头结点,储存商
hf->next=null;
pf=(polyn)malloc(sizeof(structpolynomial));//构建头结点,储存余数
pf->next=null;
temp1=(polyn)malloc(sizeof(structpolynomial));
temp1->next=null;
temp2=(polyn)malloc(sizeof(structpolynomial));
temp2->next=null;
temp1=add(temp1,pa);
while(qa!=null&&qa->expn>=qb->expn)
temp2->next=(polyn)malloc(sizeof(structpolynomial));
temp2->next->coef=(qa->coef)/(qb->coef);
temp2->next->expn=(qa->expn)-(qb->expn);
insert(temp2->next,hf);
pa=subtract(pa,multiply(pb,temp2));15
qa=pa->next;
temp2->next=null;
pf=subtract(temp1,multiply(hf,pb));
pb=temp1;
printf(“商是:”);
print(hf);
printf(“余数是:”);
print(pf);}voidmain(){intchoose=1;intm,n,flag=0;system(“colore0”);polynpa=0,pb=0,pc,pd,pf;//定义各色的头表针,pa与pb在使用前付年率nullprintf(“请输入a(x)的项数:”);scanf(“%d”,&m);printf(“n”);pa=create(pa,m);//构建方程aprintf(“n”);printf(“请输入b(x)的项数:”);16
scanf(“%d”,&n);printf(“n”);pb=create(pb,n);//构建方程bprintf(“n”);printf(“**********************************************n”);printf(“*
方程操作菜单
printf(”**********************************************n“);printf(”tt1.输出操作n“);printf(”tt2.除法操作n“);printf(”tt3.除法操作n“);printf(”tt4.除法操作n“);printf(”tt5.减法操作n“);printf(”tt6.退出操作n“);printf(”**********************************************n“);while(choose){
printf(”执行操作:“);
scanf(”%d“,&flag);
switch(flag)
case1:
printf(”多项式a(x):“);print(pa);*n”);
printf(“多项式b(x):”);print(pb);
break;
case2:
pc=add(pa,pb);
printf(“多项式a(x)+b(x):”);print(pc);
destroy(pc);break;
case3:
pd=subtract(pa,pb);
printf(“多项式a(x)-b(x):”);print(pd);
destroy(pd);break;
case4:
pf=multiply(pa,pb);
printf(“多项式a(x)*b(x):”);
print(pf);
destroy(pf);
break;
case5:
device(pa,pb);18
break;
case6:
exit(0);
break;
}}
destroy(pa);
destroy(pb);}