文档库 最新最全的文档下载
当前位置:文档库 › 数据结构课程设计小组报告_模板

数据结构课程设计小组报告_模板

数据结构课程设计小组报告_模板
数据结构课程设计小组报告_模板

数据结构课程设计

----小组设计报告

专业:计算机科学与技术

班级:计算机科学与技术06**

组号:201

组长姓名(学号):张三(060******)

副组长姓名(学号):张三(060******)

组员姓名(学号):张三(060******)

指导教师:冯向阳、陈志良

日期:08年1月10日至08年1月20日

目录

1组内成员贡献表 (3)

2 课程设计目的 (3)

3 课程设计内容和要求 (3)

4 任务完成情况 (4)

5 设计名称 (4)

5.1 设计目的 (4)

5.2 设计内容及要求 (4)

5.3 需求分析 (4)

5.4 概要设计 (6)

5.5 详细代码 (7)

5.6 使用说明 (7)

5.7 测试结果与分析 (8)

5.8 体会与感想 (12)

6 参考文献 (13)

附录: (13)

设计名称的代码 (13)

1组内成员贡献表

表1-1 组内成员贡献表

2 课程设计目的

1、学习获取知识的方法;

2、提高发现问题、分析问题和解决实际问题的能力;

3、加强创新意识和创新精神;

4、加强团队的分工与合作;

5、掌握面向实际背景思考问题的方法。

3 课程设计内容和要求

内容:

第一章前言

第二章航班信息的查询与检索

第三章树结构的应用

第四章图结构的应用

第五章大数四则运算

第六章综合应用——图书管理信息系统的设计和实现

要求:

完成第2章、第3章中每章2个设计任务中的至少一个任务。

在完成个人任务1的基础上,完成第4章2个设计任务中的至少一个任务。

每人必须在完成个人任务的基础上提交个人任务的设计报告,内容包括:任务名称、目的、具体内容、需求分析、概要设计、主要代码分析、测试结果、收获与体会。无论是个人任务还是小组任务希望各小组团队合作,小组成员之间应互相讨论,互相启发。

4 任务完成情况

任务完成情况介绍,如表3-1.(仅供参考,请根据实际完成情况填写)

表3-1 任务完成情况表

5 设计名称

5.1 设计目的

根据内容填写

5.2 设计内容及要求

本程序用VC编写,完成以下功能:根据内容填写

5.3 需求分析

下列仅供参考(请根据内容填写)

本程序用VC编写,完成二叉树的生成二叉链表、递归中序遍历、非递归中序遍历、层次遍历、计算二叉树的深度及叶子个数、建立线索二叉树并实现中序遍历等功能,并且需要一个菜单让用户自主选择执行的功能。

①输入的形式和输入值的范围:

元素输入时,元素的值都是char型,以“#”为空结点。

②输出的形式:

在每次选择菜单后,都输出相应的结果,并且询问下次操作的项目。

③程序所能达到的功能:

完成单链表的二叉树的生成二叉链表、递归中序遍历、非递归中序遍历、层次遍历、计算二叉树的深度及叶子个数、建立线索二叉树并实现中序遍历。每次操作结束后,都会有菜单方便用户进行下一步的操作。

④测试数据:

A.菜单显示为:

-----------------------菜单---------------------------

A----------------------二叉树建立

B----------------------递归中序遍历

C----------------------非递归中序遍历

D----------------------层次遍历

E----------------------求二叉树的深度

F----------------------求二叉树的子叶个数

G---------------------线索二叉树的建立及遍历

H----------------------退出

请输入您要测试的项目:

B.二叉树建立

?选择A或a

?显示“请按先序建立二叉树的结点序列(以“#”为空结点):”?输入ABC##DE##F##G##

?输出完成创建二叉树!

C.递归中序遍历

?选择B或b

?显示“该二叉树的递归中序遍历序列为:”

?输出 C B E D F A G

D.非递归中序遍历

?选择C或c

?显示“该二叉树的非递归中序遍历序列为:”

?输出 C B E D F A G

E.层次遍历

?选择D或d

?显示“该二叉树层次遍历序列为:”

?输出 C B E D F A G

F.求二叉树的深度

?选择E或e

?显示“该二叉树的深度为:”

?输出 4

G.求二叉树的子叶个数

?选择F或f

?显示“该二叉树的子叶个数为:”

?输出 4

H.线索二叉树的建立及遍历

?选择G或g

?显示“请按先序线索二叉树输入元素:”

?输入ABC##DE##F##G##

?输出完成创建线索二叉树!

?显示“二叉树的线索化:”

?输出线索化成功!

?显示“线索二叉树的中序遍历:”

?输出 C B E D F A G

I.退出程序

?选择7

?退出当前程序

5.4 概要设计

1)为了实现上述程序功能,需要定义单链表的抽象数据类型:下列仅供参考(请

根据内容填写)

CreateBinTree(&T)

操作结果:构造一个先序存储的二叉树T,以“#”为空结点

Inorder(T)

初始条件:二叉树T已存在

操作结果:将二叉树T按中序遍历

InorderN(T)

初始条件:二叉树T已存在

操作结果:将二叉树T按中序遍历

print_cengci(T)

初始条件:二叉树T已存在

操作结果:将二叉树T按层次遍历

PostTreeDepth(T)

初始条件:二叉树T已存在

操作结果:将二叉树T的深度输出

leaf(T)

初始条件:二叉树T已存在

操作结果:将二叉树T的叶子个数输出

CreateBiThrTree(Tr)

操作结果:构造一个先序存储的线索二叉树Tr,以“#”为空结点

InOrderThreading(Tr)

初始条件:线索二叉树Tr已存在

操作结果:将二叉树Tr线索化

InOrderTraverse_Thr(Tr)

初始条件:线索二叉树Tr已存在

操作结果:将线索二叉树Tr输出

2)本程序包含9个函数:下列仅供参考(请根据内容填写)

①主函数main()

②初始化二叉树函数CreateBinTree ()

③递归中序遍历二叉树函数Inorder ()

④非递归中序遍历二叉树函数Inorder N()

⑤层次遍历二叉树函数print_cengci ()

⑥计算二叉树深度函数PostTreeDepth ()

⑦计算二叉树叶子个数函数leaf l ()

⑧初始化线索二叉树函数CreateBiThrTree ()

⑨二叉树线索化函数InOrderThreading ()

⑩线索二叉树输出函数InOrderTraverse_Thr()

3)各函数间关系如下:下列仅供参考(请根据内容填写)

CreateBinTree ()

Inorder ()

Inorder N()

print_cengci () main() PostTreeDepth ()

leaf l ()

CreateBiThrTree ()

InOrderThreading ()

InOrderTraverse_Thr() 5.5 详细代码

见附录一。

5.6 使用说明

下列仅供参考(请根据内容填写)

程序名为二叉树.exe,所有程序在VC++ 6.0环境下调试通过。程序执行如图4-1。

图4-1 二叉树的程序执行图

输入字母选择执行不同的功能。要求首先创建二叉树或线索二叉树,才可以进行其他的操作。每执行一次功能,就会显示执行的结果以及再次输出菜单,以便继续选择功能。

选择A或a:显示“请按先序建立二叉树的结点序列(以“#”为空结点):”,

要求输入二叉树的结点,以“#”为空结点,

显示“完成创建二叉树!”。

选择B或b:显示“该二叉树的递归中序遍历序列为:” 。

选择C或c:显示“该二叉树的非递归中序遍历序列为:”。

选择D或d:“该二叉树的层次遍历序列为:”。

选择E或e:显示“该二叉树的深度为:”。

选择F或f:显示“该二叉树的子叶个数为:”。

选择G或g:显示“请按先序线索二叉树输入元素:”,

要求输入线索二叉树的结点,以“#”为空结点,

显示“完成创建线索二叉树!”,

显示“二叉树的线索化:”,

显示“线索化成功!”,

显示“线索二叉树的中序遍历:”。

选择H或h:退出程序

5.7 测试结果与分析

下列仅供参考(请根据内容填写)

1)建立二叉树:

实验结果(文字说明并配图),如图4-2。

图4-2 建立二叉树的程序执行

相应分析。

2)递归中序遍历二叉树:下列仅供参考(请根据内容填写)运行结果(文字说明并配图),如图4-3。

图4-3 二叉树的递归中序遍历的程序执行图

相应分析。

3)非递归中序遍历二叉树:

实验结果(文字说明并配图),如图4-4。

图4-4 二叉树的非递归中序遍历的程序执行图相应分析。

4)层次遍历:

实验结果(文字说明并配图),如图4-5。

图4-5 二叉树的层次遍历的程序执行图

相应分析。

5)计算二叉树的深度:

实验结果(文字说明并配图),如图4-6。

图4-6 计算二叉树的深度的程序执行图

相应分析。

6)计算二叉树的叶子个数:

实验结果(文字说明并配图),如图4-7。

图4-7 计算二叉树的叶子个数的程序执行图

相应分析。

7)初始化线索二叉树及其遍历:

实验结果(文字说明并配图),如图4-8。

图4-8 初始化线索二叉树及其遍历的程序执行

相应分析。

8)退出程序:

实验结果(文字说明并配图),如图4-9。

图4-8 退出程序的程序执行图

相应分析。

5.8 体会与感想

下列仅供参考(请根据内容填写)

经过。。。,对我的编程能力有了一定的提高。所以这的实验相对来说完成的稍微快一些。对于书上算法的实现,也有了一定的效率的提高。由于线索二叉树的复杂,在其的初始化以及线索化上,都花费了一些时间。最后还是参考了书以及其他人的程序,才得以实现。今后,要提高编程的速度,同时在完成基本任务的情况下,也可以尝试着做一下老师布置的较高要求。

6 参考文献

附录:

设计名称的代码

#include

#include

#include

#define MAX 1000

#define OVERFLOW 0

#define OK 1

int num_leaf=0;

typedef char ElemType;

typedef ElemType TElemType;

typedef struct node{

TElemType data;

struct node *lchild,*rchild;

}BinTNode;

typedef enum PointerTag{Link,Thread};

typedef struct BiThrNode{

TElemType data;

struct BiThrNode *lchild,*rchild;

PointerTag LTag,RTag;

}BiThrNode;

typedef BinTNode *BinTree;

typedef BiThrNode *BiThrTree;

BiThrTree pre;

void CreateBinTree(BinTree &T) //二叉树的建立{

char ch;

cin>>ch;

if(ch=='#')

T=NULL;

else

{

T=(BinTNode *)malloc(sizeof(BinTNode));

T->data=ch;

CreateBinTree(T->lchild);

CreateBinTree(T->rchild);

}

}

void Inorder(BinTree T){ //二叉树的中序递归便历if(T){

Inorder(T->lchild);

printf("%3c",T->data);

Inorder(T->rchild);

}

}

void InorderN(BinTree T){ //二叉树的中序非递归便历BinTree stack[MAX],p;

int top=0;

p=T;

do

{

while(p!=NULL)

{

stack[top]=p;

top++;

p=p->lchild;

}

if(top>0)

{

top--;

p=stack[top];

printf("%3c",p->data);

p=p->rchild;

}

}while(p!=NULL||top!=0);

}

void print_cengci(BinTree T)//层次遍历二叉树

{

BinTree stack[MAX],p;

int top=0,base=0;

{

p=T;

stack[base]=p;

base++;

while(top!=base)

{

printf("%3c",stack[top]->data);

if(stack[top]->lchild)

{

stack[base]=stack[top]->lchild;

base++;

}

if(stack[top]->rchild)

{

stack[base]=stack[top]->rchild;

base++;

}

top++;

}

}

}

int PostTreeDepth(BinTree T) //求二叉树的高度

{

int hl,hr,max;

if(T)

{

hl=PostTreeDepth(T->lchild); //求左子树的深度

hr=PostTreeDepth(T->rchild); //求右子树的深度

max=hl>hr?hl:hr; //得到左、右子树深度较大者return(max+1); // 返回树的深度

}

else return(0) ;//如果是空树,则返回0

}

void leaf(BinTree T) //二叉树的叶子个数

{

if(T)

{

if(T->lchild==NULL&&T->rchild==NULL)

num_leaf++; //若T所指结点为叶子, 则累加

leaf(T->lchild);

leaf(T->rchild);

}

void CreateBiThrTree(BiThrTree &Tr) //线索化建立二叉树

{

char ch;

cin>>ch;

if(ch=='#')

Tr=NULL;

else

{

Tr=(BiThrNode *)malloc(sizeof(BiThrNode));

Tr->data=ch;

Tr->LTag=Tr->RTag=Link;

CreateBiThrTree(Tr->lchild);

CreateBiThrTree(Tr->rchild);

}

}

void InThread(BiThrTree Tr) //线索化二叉树

{

if(Tr)

{

InThread(Tr->lchild); //线索化左子树

if(!Tr->lchild)

{ //置前驱线索

Tr->LTag=Thread;

Tr->lchild=pre;

}

if(!pre->rchild)

{ // 置后继线索

pre->RTag=Thread;

pre->rchild=Tr;

}

pre=Tr; //保持pre指向Tr的前驱

InThread(Tr->rchild); //线索化右子树

}

}

struct BiThrNode *InOrderThreading(BiThrTree Tr) //中序遍历二叉树T

//将其中序线索化,Thrt指向头结点

{

BiThrTree Thrt;

if(!(Thrt=(BiThrTree)malloc(sizeof(BiThrTree))))

exit(OVERFLOW);

Thrt->LTag=Link; Thrt->RTag=Thread; //建立头结点

Thrt->rchild=Thrt; //右指针回指

if(!Tr) //若二叉树为空,则左指针回指Thrt->lchild=Thrt;

else

{

Thrt->lchild=Tr;

pre=Thrt;

InThread(Tr); //中序遍历进行中序线索化

pre->rchild=Thrt;pre->RTag=Thread; //最后一个结点线索化

Thrt->rchild=pre;

}

printf("线索化成功!\n");

return(Thrt);

}

void InOrderTraverse_Thr(BiThrTree T) //输出线索二叉树

//T指向头结点,头结点的左链lchild指向根结点

//中序遍历二叉线索树T的非递归算发{

BiThrTree p;

p=T->lchild; //p指向根结点

while(p!=T) //空树或遍历结束时,p==T

{

while(p->LTag==Link)

p=p->lchild;

printf("%3c",p->data); //访问其左子树为空的结点

while(p->RTag==Thread&&p->rchild!=T)

{

p=p->rchild;

printf("%3c",p->data); //访问后继结点

}

p=p->rchild;

}

}

void main(){

BinTree T;

BiThrTree Tr;

char ch1,ch2;

printf("\n欢迎进入二叉树基本操作测试程序,请选择:\n");

ch1='y';

while(ch1=='y'||ch1=='Y')

{

printf("------------------菜单-----------------------");

printf("\nA----------------------二叉树建立");

printf("\nB----------------------递归中序遍历");

printf("\nC----------------------非递归中序遍历");

printf("\nD----------------------层次遍历");

printf("\nE----------------------求二叉树的深度");

printf("\nF----------------------求二叉树的子叶个数");

printf("\nG----------------------线索二叉树的建立及遍历");

printf("\nH----------------------退出\n");

printf("\n请输入您要测试的项目:\n");

scanf(" %c",&ch2);

switch(ch2)

{

case 'a':

case 'A':

printf("请按先序建立二叉树的结点序列(以“#”为空结点):\n");

CreateBinTree(T);

printf("完成创建二叉树!\n");

break;

case 'b':

case 'B':

printf("该二叉树的递归中序遍历序列为:\n");

Inorder(T);

printf("\n");

break;

case 'c':

case 'C':

printf("该二叉树的非递归中序遍历序列为:\n");

InorderN(T);

printf("\n");

break;

case 'd':

case 'D':

printf("该二叉树的层次遍历序列为:\n");

print_cengci(T);

printf("\n");

break;

case 'e':

case 'E':

int depth;

depth=PostTreeDepth(T);

printf("该二叉树的深度为:%d\n",depth);

break;

case 'f':

case 'F':

leaf(T);

printf("该二叉树的子叶个数为:%d\n",num_leaf);

break;

case 'g':

case 'G':

BiThrTree tr;

printf("请按先序线索二叉树输入元素:\n");

CreateBiThrTree(Tr);

printf("完成创建线索二叉树!\n");

printf("二叉树的线索化:\n");

tr=InOrderThreading(Tr);

printf("线索二叉树的中序遍历:\n");

InOrderTraverse_Thr(tr);

printf("\n");

break;

case 'h':

case 'H':

ch1='n';

break;

default:

printf("输入无效,请重新选择需要的操作\n");

}

}

}

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

大作业报告格式

《供配电技术课程大作业》 报告书 题目:高低压电气设备的 维护与故障处理指导教师: 姓名: 学号: 日期: 机电工和系2013-2014学年第2学期

报告书格式要求: 一、报告前置部分 (一)摘要内容包括研究目的、方法、结果、结论(300字~400字)四部分 (二)格式要求 1.中文摘要: “摘要”(黑体三号,居中),摘要正文(居左,首行缩进两字,宋体五号)。“关键词”(黑体小四号,居左顶格,单独占行),关键词正文(宋体五号),关键词为报告研究内容3~8核心专有名词,词与词之间用分号间隔。 2.外文摘要:独占一页 “Abstract”(Times New Roman,三号,加粗,居中),Abstract正文(居左顶格,Times New Roman,五号); “Key words”(Times New Roman,小四号,加粗,居左顶格,单独占行),Key words正文(居左顶格,Times New Roman,五号),与中文关键词对应,词与词之间用分号间隔。 二、报告主体部分 (一)正文格式要求 1.页眉(宋体,五号,居中),由“学生姓名:论文题目”格式构成。 2.页码(页面底端(页脚),右侧)。 3.章条序码(阿拉伯数字,小圆点间隔,末尾不加小圆点,左顶格,编号后空一个字距)第一级0,1, 2, 3,…(黑体,小二号) 第二级1.1,1.2,… 2.1,2.2,… 3.1,3.2,……(黑体,小三号) 第三级 1.1.1,1.1.2,…1.2.1,1.2.2,…2.1.1,2.1.2,…2.2.1, 2.2.2,… 3.1.1,3.1.2,…3.2.1,3.2.2,……(黑体,四号) 如在条以下仍需分层,则通常用a,b,…或1),2),…编序,左空2个字距。 4.前言、引言不编序号 (二)图、表及公式格式要求 1.图表字体(宋体、五号),图表名(中外文对照、宋体、五号、居中),图表按章编号(如图1-1、表2-2等),图编号及图名置下,表编号及表名置上。 插图宽度不宜超过10cm,有刻度的坐标图不加箭头,标值线朝里,其标值数字尽量不超过3位数(如用30km代替30000m)或小数以后不多于一个“0”(如用5μg 代替0.005mg);标目中的物理量的符号用斜体,单位符号用正体,纵坐标标目、标值逆时针旋转九十度书写;图中坐标线、尺寸线、引线0.5磅,轮廓线、函数线等主要部分0.75磅;文中图片要清晰。 表格的绘制均用三线表,表内无斜线、竖线,结构比较复杂的表可增加不通长的辅助线;表头中量的写法要规范,量的表示法不允许出现两条斜线(如:动量矩单位kg.m2/s,在表中应为L/kg.m2.s-1);表中“空白”代表未测或无此项,“-”代表未发现,“0”代表实测数据为零。 2.公式。公式统一用Microsoft公式3.0在系统默认状态下编辑,居中放置,其前的“解”、“假设”等文字顶格书写,公式序号按章排,加圆括号,居行尾。如“(1-1)”、“(2-1)”。公式换行书写时与等号对齐,凡正文中未提到的公式可不排序。 (三)引用和注释 1.引用。引用参考文献,在正文引用位置右上角标“[1]”、“[2]”,依据出现先后次序流水编号,相同文献多处引用,统一用首次编号。

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 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) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

小组总结报告

小组总结报告 引言:也许这个世界上真的存在,不管你怎样努力都无法达成的梦想。但千百倍的努力能够换取与这个梦想一个呼吸的距离,那么就值得我们一往无前的执着付出! 两个星期的课程设计,让我们经历了很多、学到了很多。在课程设计中,从刚开始的一无所知到最后作品的出炉,大家都花费了很多时间与精力。因为只有用心的付出,才能有更多知识的沉淀与收获!作为我们大学最后一次课程设计,我想此次课程设计它有着非常特殊的意义。在即将离开学校之前,让我们更加深刻的记住那些一起学习、讨论、思考的经历,一起欢笑的场景!也许明天,不会再有老师的谆谆教诲、不会再有同学之间坦诚、纯真、真挚的友谊。但我们可以记住在自己大学学习过程中感动自己的一切,激励我们永远向前拼搏奋斗!接下来,就我们的课程设计进行总结思考。 在课程设计的第一天,老师主要给我们讲解了实验具体安排相关要求,以及Flexsim 软件的使用方法。在刚开始接触这套软件之前,我们就已经组建了自己的小组,并针对各自的工作进行了分工,分工的思路主要根据课程设计的各环节来进行的。主要分为设计思路的构建、实地调研、具体Flexsim设计、总结报告。在设计中,设计思路的构建由三个人讨论后决定做某车间的生产流水线设计,张峰主要负责写总结报告、王秋月负责具体Flexsim设计、张宝负责实地调研。 Flexsim是属于分散型摸拟软件,它能使决策者轻易的在个人计算机中构建及监控任何工业和企业的分布式流程。根据其对象的功能及参数设置可以把任何制造业、物料处理和业务流程的快速、轻易、高效建摸的主要特征描述出来。Flexsim还是一个强有力的分析工具,可帮助工程师和设计人员在系统设计和运作中做出智能决策。采用Flexsim,可以建立一个真实系统的3D计算机模型,然后用比在真实系统上更短的时间或者更低的成本来研究系统。

《.net程序设计》大作业报告模板

《.net程序设计》大作业报告学院信息科学与技术学院 专业 学号 学生姓名 指导教师 2017年12月

摘要 目前各种资格认证考试的在线考试通过无纸化考试方式实现了跨越时间、空间的限制,节省了大量的物力财力。在线考试和即时阅卷提高了考试效率,减轻了考生和考务人员的负担。学校的传统考试沿用纸质出题、打印,考试、监考、人工阅卷的流程,中间资源浪费较多。相比而言,在线考试能够更好的服务于学生,满足考试的需求,是网络教育的发展重点。在线考试涉及管理学生考试信息、试题信息的维护和更新,是能够实现的有效的考试方式。在线考试是学校网络教育发展的必然趋势。 本文以开发适用于学校的在线模拟考试系统为例,针对试题维护、随机组卷、在线考试进行了开发和测试,进行了相关的探索和研究。 关键词:JSP 在线考试维护

目录 第1章需求分析 (1) 1.1 XXX (1) 第2章系统模块设计 (3) 2.1 XXX (3) 第3章数据库设计 (6) 3.1 XXX (6) 第4章系统实现 (16) 4.1 登录模块 (16) 第5章心得体会 (36) 参考文献 (37) 附录(源代码) (38)

第1章需求分析 页面设置:A4,上、下页边距3cm,左、右页边距2.5cm 正文:宋体小四号字,首行缩进、固定行距20磅 本章最后说明每个组员的具体分工

第2章系统模块设计功能框图参见如下格式: 图2.1 系统的总体结构

第3章数据库设计 数据表采用如下任一种格式: 表3.1 学生表(Student) 表3-1 考生信息表 字段名字段类型可否为空说明 Id Bigint(8) not null 主键自增 Name Varchar(20) not null 姓名 Sex Varchar(2) not null 性别 Answer Profession CardNo Grade Varchar(50) Varchar(30) Varchar(18) Varchar(18) not null not null not null not null 问题答案 专业 身份证号 所属班级

数据结构课程设计报告模板

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

目录 1.引言 (1) 2.课题分析 (4) 3.具体设计过程 (5) 3.1设计思路 (5) 3.2程序设计流程图 (5) 3.3.函数实现说明 (10) 4.程序运行结果 (12) 5.软件使用说明 (16) 6.结论 (19) 参考文献 (20) 附录:源代码 (21)

1.引言 数据结构在计算机科学界至今没有标准的定义。个人根据各自的理解的不同而有不同的表述方法: Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。” Lobert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。 1.1. 重要意义 一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。 在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。 选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。 1.2. 研究内容

数据结构课程设计报告范本

数据结构课程设计 报告

数据结构课程设计报告 压缩软件 一·问题描述 利用哈夫曼编码设计一个压缩软件,能对任何类型的文件进行哈夫曼编码,产生编码后的文件——压缩文件;也能对输入的压缩文件进行译码,生成压缩前的文件——解压文件。 二·基本要求 要求编码和译码的效率尽可能地高。 三·工具/准备工作 已学内容:哈夫曼树,哈夫曼树构造算法,哈夫曼编码,Huffman压缩算法。 需要的硬件设施与开发软件:一台计算机,并安装了Visual C++. 四·分析与实现 Huffman树中,叶子结点包含字符以及对应的字符频度(权值) struct HTNode{ //压缩用Huffman树结点 unsigned long weight; //字符频度(权值) unsigned int parent,lchild,rchild; };

使用哈夫曼编码能够对文件进行压缩,由于字符的哈夫曼编码以比特为单位,而当将哈夫曼编码以压缩文件进行存储时,压缩文件最少以字节为单位进行存储,因此需要定义字节缓冲器,以便自动将比特转换为字节,定义如下: struct Buffer{ //字节缓冲压缩用Huffman树 char ch; //字节 unsigned int bits; //实际比特数 }; 定义哈夫曼树的抽象基类模板,实现建树,压缩,解压等功能 class HuffmanTree{ //Huffman树 public: void Code(); //编码 void UnCode(); //译码 private: HTNode HT[m+1]; //树结点表(HT[1]到HT[m]) char Leaf[n+1]; //叶结点对应字符(leaf[1]到leaf[n]) char *HuffmanCode[n+1]; //叶结点对应

数据结构课程设计报告模板2013

课程设计(论文)任务书 学院专业班 一、课程设计(论文)题目 二、课程设计(论文)工作自年月日起至年月日止。 三、课程设计(论文) 地点: 四、课程设计(论文)内容要求: 1.课程设计的目的 为了配合《数据结构》课程的教学,使学生能更深刻的领会《数据结构》课程的重要性,特开设此课程设计;编写一些在特定数据结构上的算法,通过上机调试,更好的掌握各种数据结构及其特点,培养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 2.课程设计的任务及要求 1)基本要求 (1)课程设计前必须选定课程设计题目,并认真进行需求分析与系统设计; (2)上机调试之前要认真准备实验程序及调试时所需的测试数据; (3)独立思考,独立完成,严禁抄袭,调试过程要规范,认真记录调试结果; (4)上机结束后认真规范撰写课设报告,对设计进行总结和讨论。 2)课程设计论文编写要求 (1)要按照书稿的规格撰写打印课设论文 (2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等 (3)正文中要有问题描述、抽象数据类型的定义、数据的存储结构、设计的求解算法、算法的实现、调试分析与测试结果 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查: (1)考勤和态度; (2)任务的难易程度及设计思路;

(3)动手调试能力; (4)论文撰写的水平、格式的规范性。 4)参考文献 [1] 严蔚敏, 吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社, 2007年. [2] 严蔚敏, 吴伟民. 数据结构题集(C语言版)[M]. 北京:清华大学出版社, 2007年. [3] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2006年. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 程序设计与调试3计算机房 撰写论文1图书馆 6)任务及具体要求 (此处填写任务书中自已所选题目的要求) 学生签名:亲笔签名 年月日 课程设计(论文)评审意见 (1)考勤和态度:优()、良()、中()、一般()、差()(2)任务难易及设计思路:优()、良()、中()、一般()、差()(3)动手调试能力评价:优()、良()、中()、一般()、差()(4)论文撰写水平及规范性评价:优()、良()、中()、一般()、差() 评阅人:职称:讲师 年月日

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

小组作业实习报告

小组作业实习报告 这个学期第一次小组作业,我们要做的是找一个我们觉得它的企业形象做得还不太完善的品牌进行市场调查并且通过小组讨论找出一些解决办法。 刚开始听到老师布置这个作业我就想到了两个品牌,第一个是TCL,这个以生产家电为主企业一直以来在中国大陆的排行都还不错,但是它的品牌标识一直都是很简洁的三个字母,刚开始我想的主要是它要进行国际化的定位和一些改变,后面经过和小组的讨论发现,这个品牌已经趋于成熟了,而且这个公司建立的时间比较长,大家都已经对他的品牌标志完全记忆了,所以觉得如果重新定位在改变难度比较大,所以,这个计划不行;第二个想到的是得力文具,这个品牌以前并不是经常听到,只是因为暑假在家的时候在电视上看到了一个广告,是陈鲁豫拍的,广告只有一分钟左右,主要是介绍得力文具的各种各样的产品在办公室里面的广泛的应用,“她几乎不出不在。”得力公司是一个生产办公、学生、书写、办公等方面的工具的公司;得力,让办公更得力。这是得力文具的品牌定位。通过分析我们发现,因为像得力一样在电视上特别还是最近收视率很高的湖南电视台投放影视广告的文具公司基本上是没有的,所以,我们去找了一下得力文具公司的资料,发现,得力文具公司目前已成长为国内最大的综合文具供应商,而且很多产品已经远销国外。表面上听名字大部分人都对这个品牌不是很熟悉,但是其实只要我们观察一下,就会发现在我们身边的文具里,有很多文具都是这个品牌的,甚至,它还在一些地方有专卖店的。 我们小组选择了这个品牌的标志进行策划方案。 对于一个前景这么好的公司,通过分析我们却发现了几个问题,第一,得力

文具公司的品牌标志只是一个简单的汉语拼音的组合,虽然简单但是设计缺少现代感,不适应当今国际大品牌的设计趋势;第二,标志的颜色是大红色,与公司的定位“让每一个办公室都有得力文具”不太相符合,办公室里面办公要的应该是能让人觉得冷静一些的颜色。但是归根结底,标志的过于随便的设计是最大的问题。 所以,通过小组成员的一起的讨论和分析,我们对其进行了一些个人建议:商标方面:应该在颜色和图形上面重新运用与设计,得力要想成为世界综合文具供应商,就要顺应国际图形与标志设计的趋势,鉴于中国的传统文化日渐流行的特点,我们的得力也可以运用具有中国风特色的文房四宝、水墨、京剧、剪纸等等元素,把中国元素带到得力文具里面去,让得力成为代表中国的文具品牌,让得力成为中国在世界的品牌。 其实我们都有认真分析了问题,也了解了得力企业应有的品牌定位,只是因为我们小组的PPT里面缺少了对同类品牌的一些对比与分析,对具体的问题分析得还不是很透彻,所以,最后的作业有点欠缺。通过这次作业,我也发现了自己的一些问题,考虑问题不够全面,我要努力克服缺点,争取让下一次作业做得完美。

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

数据结构课程设计报告

山东建筑大学 课程设计成果报告 题目: 1.数组实现两个矩阵的相乘运算 2.成绩分析问题 课程:数据结构A课程设计 院(部):管理工程学院 专业:信息管理与信息系统 班级:信管*** 学生姓名:*** 学号:******** 指导教师:******* 完成日期:2016年12月29日

目录 目录 (2) 一、课程设计概述 (3) 二、课程设计题目一 (3) 用数组实现两个矩阵的相乘运算 (3) 2.1[问题描述] (3) 2.2[要求及提示]: (3) 2.3[详细设计] (4) 2.4[调试分析] (5) 2.5[运行结果及分析] (5) 三、课程设计题目二 (6) 成绩分析问题 (6) 3.1[问题描述] (6) 3.2[概要设计] (6) 3.3[存储结构] (7) 3.4[流程图] (7) 3.5[详细设计] (8) 3.6[调试分析] (8) 3.7[运行结果及分析] (22) 四、参考文献: (25)

一、课程设计概述 本次数据结构课程设计共完成两个题:用数组实现两个矩阵相乘运算、成绩分析问题。使用语言:C 编译环境:vc6.0 二、课程设计题目一 用数组实现两个矩阵的相乘运算 2.1[问题描述] #include “stdio.h” int r[6][6]; void mult(int a[6][6] , int b[6][6]){ } main(){ int i,j; int num1[6][6],num2[6][6]; printf(“请输入第一个矩阵的值:”,); for(i=1;i<=6;i++) for(j=1;j<=6;j++) scanf(“%d”,&num1[i][j]); printf(“请输入第二个矩阵的值:”,); for(i=1;i<=6;i++) for(j=1;j<=6;j++) scanf(“%d”,&num2[i][j]); mult(num1,num2); printf(“\n两个矩阵相乘后的结果为:”); for(i=1;i<=6;i++) {for(j=1;j<=6;j++) printf(“%4d”,r[i][j]); printf(“\n”); } } 2.2[要求及提示]: 1、要求完善函数mult( ),

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

数据结构课程设计格式参考

郑州师范学院软件工程专业 数据结构课程设计报告 设计题目: 班级: 组长:姓名(学号) 组员:姓名(学号)… 指导教师: 完成日期: 成绩:

目录 1需求分析 (1) 1.1功能分析 (1) 1.2设计平台 (1) 2概要设计 (2) 2.1类LinkList (4) 2.2类Joseph (4) 2.3类异常处理 (4) 3详细设计和实现 (4) 3.1创建结点Node (5) 3.2创建双向循环链表 (6) 3.3从链表中删除结点 (7) 4调试与操作说明 (11) 4.1调试情况 (11) 4.2操作说明 (11) 5设计总结 (12) 参考文献 (13) 附录 (13)

1需求分析 1.1功能分析 本次选做的课程设计是改进约瑟夫(Joseph)环问题。约瑟夫环问题是一个古老的数学问题,本次课题要求用程序语言的方式解决数学问题。此问题仅使用单循环链表就可以解决此问题。而改进的约瑟夫问题通过运用双向循环链表,同样也能方便地解决。 在建立双向循环链表时,因为约瑟夫环的大小由输入决定。为方便操作,我们将每个结点的数据域的值定为生成结点时的顺序号和每个人持有的密码。进行操作时,用一个指针current指向当前的结点,指针front始终指向头结点。然后建立双向循环链表,因为每个人的密码是通过rand()函数随机生成的,所以指定第一个人的顺序号,找到结点,不断地从链表中删除链结点,直到链表剩下最后一个结点,通过一系列的循环就可以解决改进约瑟夫环问题。 1、本演示程序中,利用单向循环链表存储结构模拟约瑟夫问题的进行。程序运行后,首先要求用户指定初始报数上限值,然后读取个人的密码。可设n ≤30。此题所用的循环链表中不需要“头结点”,因此在程序设计中应注意空表和非空表的界限。 2、演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令:相应的输入数据和运算结果显示在其后。 3、程序执行的命令包括: 1)构造约瑟夫环;2)执行约瑟夫环,并输出出列人的序号以及相应的密码; 3)结束。 4、测试数据 1)m的初始值为20; 2)n=7,7个人的密码依次为:3、1、7、2、4、8、4。 3)首先m值为6,正确的出列顺序应为6、1、4、7、2、3、5。 1.2设计平台

数据结构课程设计报告模板

数据结构课程设计报告模板 成绩 计算机与信息工程学院 专业名称信息与计算科学 学生班级 10 级1班 学生姓名刘远远 学生学号 2010025707 设计起止时间: 2012年12月17日至 2012年12月21日 课程设计任务书 一、课程设计题目: 线性表的应用(大数运算) 二、课程设计目的与要求: 1、课程设计目的 (1)对数据结构中线性结构的理解和掌握; (2)熟练掌握顺序和链式存储结构有关知识和方法; (3)深入掌握各种数据结构的理论知识和实践操作; (4) 养成良好的编程风格,掌握各种数据结构的编程思想和编程方法; (5)将数据结构的理论知识和实践有机结合起来,为后续知识的学习 做好准备。 2、课程设计要求 (1) 选择合适的存储结构实现大数存储; (2) 设计算法,采用顺序存储结构完成大数的阶乘运算; (3) 设计算法,采用链式存储结构完成大数的加法运算; (4) 设计算法,选择合适的存储结构完成大数的乘法运算;

(5) 其中某一算法采用两种存储结构实现。三、工作计划: 第一阶段(12月17日,12月18日): 查阅各种数据结构相关资料书籍,整理出课程设计初步模型,并形成 课程设计的整体理论框架,理论模型 ; 第二阶段(12月19日,12月21日): 在DEV-C++5或TURBOC2相关开发语言上,进行编码、上机调试, 逐步形成完善的设计程序,使其达到上机完善演示出系统性的课程设计。 四、课程设计提交的文件: (1) 课程设计报告 (2) 课程设计可运行程序(刻录成光盘) 指导教师: 张绍兵 2012 年 12 月 1日 2 线性表有两种不同的存储结构,分别是顺序存储结构和链式存储结构,在实际中应用十分广泛。本设计要求分别利用线性表的两种存储结构,设计算法完成对大数的阶乘、加法、乘法的求解。 数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系的操作的学科,在本次课程设计中,定义存储结构均采用了数据结构中的抽象数据类型,而抽象数据类型是指一个数据模型以及定义在改模型上的一组操作,抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。选择合适存储结构实现大数运算。首先需要先解释的是这里大数计算的因数和结果精度一般是少则数十位,多则几万位。在C语言中定义的类型中精度最多只有二十多位,因而在此我们采取用线性表的顺序和链表存储结构的方式来存放大数,

数据结构课程设计报告-学生成绩管理系统[]

武汉理工大学华夏学院课程设计报告书 课程名称:数据结构课程设计 题目:用C语言实现成绩统计程序的设计系名:信息工程系 专业班级:计算机1121 姓名:吴涛 学号:10210412104 指导教师:司晓梅 2016年3 月20日

武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:数据结构课程设计指导教师:司晓梅班级名称:计算机1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C语言实现成绩统计程序的设计 〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间:1周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天~第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准

数据结构课程设计报告模板

校园导游系统设计 一、设计要求 1.问题描述 设计一个校园导游程序,为来访的客人提供信息查询服务。 2.需求分析 (1)设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图(无向网),以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。 (2)存放景点代号、名称、简介等信息供用户查询。 (3)为来访客人提供图中任意景点相关信息的查询。 (4)为来访客人提供图中任意景点之间的问路查询。 (5)可以为校园平面图增加或删除景点或边,修改边上的权值等。 二、概要设计 为了实现以上功能,可以从3个方面着手设计。 1.主界面设计 为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。本系统主控菜单运行界面如图7-10所示。 2.存储结构设计 本系统采用图结构类型(mgraph)存储抽象校园图的信息。其中:各景点间的邻接关系用图的邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的个数由分量vexnum、arcnum表示,它们是整型数据。 此外,本系统还设置了三个全局变量:visited[ ] 数组用于存储顶点是否被访问标志;d[ ]数组用于存放边上的权值或存储查找路径顶点的编号;campus是一个图结构的全局变量。 3.系统功能设计 本系统除了要完成图的初始化功能外还设置了8个子功能菜单。图的初始化由函数initgraph( )实现。依据读入的图的顶点个数和边的个数,分别初始化图结构中图的顶点向量数组和图的邻接矩阵。8个子功能的设计描述如下。 (1)学校景点介绍 学校景点介绍由函数browsecompus( )实现。当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点简介。 (2)查看浏览路线 查看浏览路线由函数shortestpath_dij( )实现。该功能采用迪杰斯特拉(Dijkstra)算法实现。当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其它景点的最短路径线路及距离。 (3)查看两景点间最短路径

相关文档
相关文档 最新文档