数据结构课程设计-运动会分数统计(C语言版)

数据结构课程设计-运动会分数统计(C语言版)
数据结构课程设计-运动会分数统计(C语言版)

目录

第一章绪论 (1)

运动会分数统计系统的背景 (1)

运动会分数统计系统的任务和目标 (1)

第二章运动会分数统计系统的需求分析 (2)

功能需求 (2)

功能模块 (2)

数据要求 (3)

性能要求 (3)

第三章系统开发工具及关键技术 (4)

系统开发工具 (4)

3.1.1 CodeBlocks (4)

关键技术 (4)

3.2.1 C语言 (4)

3.2.2 数组 (4)

3.2.3 链表 (4)

第四章运动会分数统计系统的实现 (5)

数据结构设计 (5)

结构定义 (5)

系统界面的实现 (6)

4.3.1 主菜单窗口 (6)

4.3.2 输入各个项目成绩并存储文件 (6)

4.3.3 统计各学校总分 (8)

4.3.4 按学校编号排序输出 (8)

4.3.5 按学校总分排序输出 (8)

4.3.6 按男团体总分排序输出 (9)

4.3.7 按女团体总分排序输出 (9)

4.3.8 按学校编号查询学校某个项目情况 (10)

4.3.9 按项目编号查询取得名次的学校 (10)

第五章结束语 (11)

课程设计总结 (11)

致谢 (11)

参考文献 (12)

附录 (13)

第一章绪论

运动会分数统计系统的背景

在信息技术已经深入人类工作生活的今天,计算机软件得到了广泛的应用,越来越多的政府和企业将其业务纳入计算机软件系统。

随着社会进步,体育事业的发展,为了提高运动会成绩统计准确,减少设计者们的工作量,开发了本系统。

运动会分数统计系统的任务和目标

任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前前三名积分;前三名的积分分别为:5、3、2。(m、w<=20,n<=10)。

目标:

1.可以输入各个项目的前三名或前五名的成绩;

2.能统计各学校总分;

3.可以按学校编号、学校总分、男女团体总分排序输出;

4.可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)。

第二章运动会分数统计系统的需求分析

功能需求

运动会分数统计方案适合采用结构体数组,为了实现系统功能,主要应实现以下几部分:比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。

功能模块

根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。该系统分为比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。比赛成绩输出模块有四个子模块,分别是:按学校编号输出模块、按学校总分输出模块、安南员总分输出模块和按女团总分输出模块;查询比赛成绩模块分为按学校编号查询模块河岸项目编号查询两个子模块。

功能模块图如图2-1所示。

图2-1功能模块图

(1)比赛成绩输入模块:比赛成绩输入模块分为:创建信息部分,该部分需输入

学校编号,项目编号,取得的名次,以及哪些名次;算法部分,得到排序结

果。

(2)比赛成绩输出模块:将以输入的数据按照输出比赛菜单的选择输出相应的数

据。

(3)查询比赛成绩模块:按照查询比赛结果菜单和其查询方式子菜单查询需要的

数据。

(4)调用统计结果:将输入的各学校运动会成绩排序输出。

数据需求

需要输入学校编号,项目编号,取得的名次,以及哪些名次。

性能需求

本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。

第三章系统开发工具及关键技术

系统开发工具

3.1.1 Code::Blocks

Code::Blocks是一个开放源码的全功能的跨平C/C++集成开发环境。Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢,再也不必忍受的庞大和高昂的价格。

关键技术

3.2.1 C语言

C语言是一种计算机程序设计语言它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。

3.2.2 数组

数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

3.2.3 链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。

使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C/C++和Java依靠易变工具来生成链表。

第四章运动会分数统计系统的实现

数据结构设计

学校的存储结构为链表,

其中

school类为:

class school:public athlete /*学校*/

{ ……

public:

int item; /*学校获奖数*/

int school; /*学校编号*/

int boys; /*男团体总分*/

int girls; /*女团体总分*/

int score; /*学校总分*/

athlete ath[MaxSize]; /*获奖运动员信息数组,包括分数,名次,项目*/ school *prev;4.3.1 4.3.2输入各个项目

成绩并存储文件

请选择(0~8):1进入输入各个项目成绩并存储文件

图4-2

1.输入男子项目总数m;1

2.输入男子项目总数m;1

3.输入参加运动会的学校总数3

图4-3

输入项目:1 请选择1(1.前三名2.前五名)

第3名:学校<学校编号为数字>3

第2名:学校<学校编号为数字>2

第1名:学校<学校编号为数字>1

项目:2 请选择1(1.前三名2.前五名)

第3名:学校<学校编号为数字>1

第2名:学校<学校编号为数字>2

第1名:学校<学校编号为数字>3

项目:3 请选择1(1.前三名2.前五名)

第3名:学校<学校编号为数字>1

第2名:学校<学校编号为数字>3

第1名:学校<学校编号为数字>2

图4-4然后输入项目:0 返回到菜单主页面

图4-5 4.3.3. 统计各学校总分

请选择(0~8):2进入统计各学校总分

图4-6

4.3.4 按学校编号排序输出

按按任意键继续返回到菜单主界面请选择(0~8):3

图4-7

4.3.

5. 按学校总分排序输出

按按任意键继续返回到菜单主界面请选择(0~8):4

图4-8

4.3.6. 按男团体总分排序输出

按按任意键继续返回到菜单主界面请选择(0~8):5

图4-9

4.3.7. 按女团体总分排序输出

按按任意键继续返回到菜单主界面请选择(0~8):6

图4-10

4.3.8. 按学校编号查询学校某个项目情

按按任意键继续返回到菜单主界面请选择(0~8):7

图4-11

4.3.9. 按项目编号查询取得名次的学校

按按任意键继续返回到菜单主界面请选择(0~8):8

图4-12

第五章结束语

课程设计总结

经过此次的课程设计,可以很明确的了解到自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯,实现由知识向智能的初步转化;学会遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,并与同组成员共同完成设计、编写、调试和测试应用程序及编写文档的任务。

致谢

本设计的完成是在我们的导师李菁老师的细心指导下进行的。在每次设计遇到问题时老师不辞辛苦的讲解才使得我的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了郭老师很多的宝贵时间和精力,在此向导师表示衷心地感谢!导师严谨的治学态度,开拓进取的精神和高度的责任心都将使学生受益终生!

还要感谢帮助我的几位同学,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意。

参考文献:

[1] 严蔚敏吴伟民著.《数据结构(C语言版)》[M].北京:清华大学出版社. .;

[2] 苏小红陈惠鹏等著.《C语言大学实用教程(第2版)》[M].北京:电子工业出版社;

[3] 苏小红陈惠鹏等著.《C语言大学实用教程学习指导(第2版)》.电子工业出版社。

附录

详细代码:

#include <>

#include <>

#include <>

#include <>

tem=k;

g1->a[k].firstschool=NULL;

}

for(k=1;k<=g2->n;k++)

{

g2->b[k].school=k;

g2->b[k].firstitem=0;

g2->b[k].score=0;

g2->b[k].boys=0;

g2->b[k].girls=0;

}

g2->b[0].score=0;

g2->b[0].boys=0;

g2->b[0].girls=0;

while(i!=0)

{

printf("\n 项目:");

scanf("%d",&i);

if(i!=0)

{

printf(" 1.前三名 2.前五名\n");

printf(" 请选择:");

scanf("%d",&j);

if(j!=1&&j!=2)

{

printf(" 输入有误,请重新选择:");

scanf("%d",&j);

}

if(j==1)

{

h=3;

do{ printf(" 第%d名:学校(学校编号为数字)",h);

scanf("%d",&x);

p1=(Schools *)malloc(sizeof(Schools));

p1->school=x;

p2=(Items *)malloc(sizeof(Items));

p2->item=i;

if(h==3) p2->record=p1->record=2;

if(h==2) p2->record=p1->record=3;

if(h==1) p2->record=p1->record=5;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->b[x].firstitem=p2;

g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分*/

if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record; /* 累计男团体总分*/

else g2->b[x].girls=g2->b[x].girls+p2->record; /* 累计女团体总分*/

h--;

}while(x!=0&&h!=0);

}

if(j==2)

h=5;

do{

printf(" 第%d名:学校(学校编号为数字)",h);

scanf("%d",&x);

p1=(Schools *)malloc(sizeof(Schools));

p1->school=x;

p2=(Items *)malloc(sizeof(Items));

p2->item=i;

if(h==5) p2->record=p1->record=1;

if(h==4) p2->record=p1->record=2;

if(h==3) p2->record=p1->record=3;

if(h==2) p2->record=p1->record=5;

if(h==1) p2->record=p1->record=7;

p1->next=g1->a[i].firstschool;

g1->a[i].firstschool=p1;

p2->next=g2->b[x].firstitem;

g2->b[x].firstitem=p2;

g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分*/

if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record; /* 累计男团体总分*/

else g2->b[x].girls=g2->b[x].girls+p2->record; /* 累计女团体总分*/

h--;

}while(x!=0&&h!=0);

}

}

}

}

void save()

{

FILE *fp1,*fp2;

fp1=(FILE *)malloc(sizeof(FILE));

fp2=(FILE *)malloc(sizeof(FILE));

if((fp1=fopen("sports1","wb"))==NULL)

{

printf("cannot open file.\n");

return;

}

if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1)

printf("file write error.\n");

fclose(fp1);

if((fp2=fopen("sports2","wb"))==NULL)

{ printf("cannot open file.\n");

return;

}

if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1)

printf("file write error.\n");

fclose(fp2);

}

void funct2(ALLNode *g2) /* 输出各学校总分*/

{

int k;

printf("\n\n ****** 输出各学校总分******\n");

printf(" 学校编号\t 总分\n");

for(k=1;k<=g2->n;k++)

printf(" %d\t\t\t %d\n",k,g2->b[k].score);

printf("\n");

system("pause");

printf(" 按任意键返回主菜单......");

getchar();

}

void funct3(ALLNode *g2) /* 按学校编号排序输出*/

{

Items *p2;

p2=(Items *)malloc(sizeof(Items));

printf("\n\n ****** 按学校编号排序输出******\n"); printf(" 学校编号\t\t\t获奖情况\n");

scanf("%d",&k);

for(k=1;k<=g2->n;k++)

{

printf("\t\t\t\t\t\t%d\t",k);

p2=g2->b[k].firstitem;

while(p2!=NULL)

{

printf("项目%d:得%d分",p2->item,p2->record);

p2=p2->next;

}

printf("\n");

}

printf("\n");

system("pause");

printf("按任意键返回主菜单......");

getchar();

}

void funct4(ALLNode *g2) /* 按学校总分排序输出*/ {

int i,j,k;

Items *p2;

printf("\n\n ****** 按学校总分排序输出******\n"); printf(" 学校编号\t\t总分\n");

scanf("%d",&k);

irstitem;

while(p2!=NULL)

{

printf("%d \t\t%d\n",g2->b[k].school,g2->b[k].score);

p2=p2->next;

}

printf("\n");

g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].scoreb[j].score&&j>0)

{

g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d \t\t%d\n",g2->b[k].school,g2->b[k].score);

system("pause");

printf("按任意键返回主菜单......");

getchar();

}

void funct5(ALLNode *g2) /* 按男团体总分排序输出*/ {

int i,j,k;

Items *p2;

p2=(Items *)malloc(sizeof(Items));

printf("\n\n ****** 按男团体总分排序输出******\n"); printf("学校编号\t\t男团体总分\n");

scanf("%d",&k);

irstitem;

while(p2!=NULL)

{ printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].boys);

p2=p2->next;

}

printf("\n");

g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

j=i-1;

while(g2->b[0].boysb[j].boys&&j>0)

{

g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].boys);

system("pause"); ....");

getchar();

}

void funct6(ALLNode *g2) /* 按女团体总分排序输出*/ {

int i,j,k;

Items *p2;

p2=(Items *)malloc(sizeof(Items));

printf("\n\n ****** 按女团体总分排序输出******\n"); printf("学校编号\t\t女团体总分\n");

scanf("%d",&k);

irstitem;

while(p2!=NULL)

{ printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].girls);

p2=p2->next;

}

printf("\n");

g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

g2->b[0].girls=g2->b[i].girls;

g2->b[0].school=g2->b[i].school;

while(g2->b[0].girlsb[j].girls&&j>0)

{ g2->b[j+1].score=g2->b[j].score;

g2->b[j+1].boys=g2->b[j].boys;

g2->b[j+1].girls=g2->b[j].girls;

g2->b[j+1].school=g2->b[j].school;

j--;

}

g2->b[j+1].score=g2->b[0].score;

g2->b[j+1].boys=g2->b[0].boys;

g2->b[j+1].girls=g2->b[0].girls;

g2->b[j+1].school=g2->b[0].school;

}

for(k=1;k<=g2->n;k++)

printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].girls);

system("pause");

printf("按任意键返回主菜单......");

getchar();

}

void funct7(ALLNode *g2) /* 按学校编号查询学校某个项目情况*/

{

int i,j;

Items *p2;

printf("\n ****** 按学校编号查询学校某个项目情况******\n");

printf(" 输入要查询的学校编号:");

scanf("%d",&i);

printf(" 输入要查询的项目编号:");

scanf("%d",&j);

p2=g2->b[i].firstitem;

while(p2!=NULL)

{

if(p2->item==j)

printf(" 学校编号:%d\t项目%d:得%d分\n",i,p2->item,p2->record);

p2=p2->next;

}

printf("\n");

system("pause");

printf(" 按任意键返回主菜单......");

getchar();

}

void funct8(ALLitems *g1) /* 按项目编号查询取得名次的学校*/

{

int i;

Schools *p1;

printf("\n*** 按项目编号查询取得名次的学校***\n");

printf("输入要查询的项目编号:");

scanf("%d",&i);

printf("项目编号\t\t\t取得名次的学校\n");

printf("%d\t",i);

p1=g1->a[i].firstschool;

while(p1!=NULL)

{ printf(" 学校%d:得%d分",p1->school,p1->record);

p1=p1->next;

}

printf("\n\n");

system("pause");

printf("按任意键返回主菜单......");

getchar();

}

{

int t;

g2=(ALLNode*)malloc(sizeof(ALLNode));

g1=(ALLitems*)malloc(sizeof(ALLitems));

if(!g2||!g1)

exit(1);

入各个项目成绩并存储文件*\t \n");

printf("\t\t* 2.统计各学校总分*\t \n");

printf("\t\t* 3.按学校编号排序输出*\t \n");

printf("\t\t* 4.按学校总分排序输出*\t \n");

printf("\t\t* 5.按男团体总分排序输出*\t \n");

printf("\t\t* 6.按女团体总分排序输出*\t \n");

printf("\t\t* 7.按学校编号查询学校某个项目情况*\t \n");

printf("\t\t* 8.按项目编号查询取得名次的学校*\n");

printf("\t\t* 0.退出*\n");

printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");

printf("\t\t \n");

printf("\t\t \n");

printf("\t\t \n");

printf("\t\t 请选择(0-8):");

loop:scanf("%d",&t);

system("cls");

switch(t)

{

case 1:funct1(g1,g2);save();break;

case 2:funct2(g2);break;

case 3:funct3(g2);break;

case 4:funct4(g2);break;

case 5:funct5(g2);break;

case 6:funct6(g2);break;

case 7:funct7(g2);break;

case 8:funct8(g1);break;

case 0:exit(0);

default:{ printf("输入有误,请重新选择:");

goto loop;}

}//clrscr();

system("cls");

}

}

(完整word版)运动会分数统计系统实验报告

运动会分数统计系统的实现 09计科(2)班 E10914044 杨素传 一、设计要求 1、问题描述 参加运动会有n个学校,学校编码为1,2,…,n,比赛分成m个男子项目和w个女子项目。项目编号为男子1,2,…,m,女子m+1,m+2,…,m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为7,5,3,2,1;前三名的积分分别5,3,2;哪些取前五名或前三名由学生自己设定(m<=20,n<=20)。 2、需求分析 (1)可以输入各个项目的前三名或前五名成绩; (2)能统计各学校成绩; (3)可以按学校编号、学校总分、男女团体总分排序输出; (4)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名的学校。 二、概要设计 1、主界面设计 为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。本系统主控菜单运行界面图1所示。 图1 运动会分数统计系统程序主菜单 2、存储结构设计 本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。运动会分数统计系统的链表中的结点包括8个域:项目编号域(objnum)、项目类型(objtype)、运动员编号(athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、

运动员分数(athscore)和指向下一个节点的指针欲(struct LNode *next)。 3、系统功能设计 本系统设置了8个子功能菜单。8个子功能的设计描述如下: (1)录入各项目的成绩。由函数creatLink()实现。当用户选择该功能时,系统会以用户输入的数据运动会分数统计链表。 (2)统计各学校分数。由函数schoolScore()实现。当用户选择该功能时,系统会统计各学校分数。 (3)按学校编号顺序输出。由函数printfSchoolNumber()实现。当用户选择该功能时,系统会按学校编号顺序输出数据。 (4)按学校总分顺序输出。由函数printfSchoolScore()实现。当用户选择该功能时,系统会按学校总分顺序输出数据。 (5)按男女团体总分顺序输出。由函数printfManWomanScore()实现。当用户选择该功能时,系统会按男女团体总分顺序输出数据。 (6)按学校编号查询学校某项目情况。由函数printfSchoolObject()实现。当用户选择该功能时,系统会按学校编号输出学校某项目情况。 (7)按项目编号查询取得前三名或前五名的学校。由函数printfObjectSchool()实现。当用户选择该功能时,系统会按项目编号查询取得前三名或前五名的学校情况。 (8)退出。由exit(0)函数实现。 三、模块设计 1、模块设计 本程序包含两个模块:主程序模块和工作区选择模块。其调用关系如图2所示。 主程序模块工作区选择模块 图2 模块调用示意图 2、系统子程序及功能设计 本系统共设置个6子程序,各子程序的函数名及功能说明如下。 (1)LinkList creatLink() //创建链表(录入各项目的成绩) (2)int schoolScore(LinkList L) //统计各学校总分 (3)void printfSchoolNumber() //按学校编号顺序输出 (4)void printfSchoolScore() //按学校总分顺序输出 (5)void printfManWomanScore(LinkList L //按男女团体总分排序输出 (6)void printfSchoolObject(LinkList L) //按学校编号查询学校某项目情况 (7)void printfObjectSchool(LinkList L) //按项目编号查询取得前三名或前五名的学校 (8)int main() //主函数 3、函数主要调用关系图 本系统6个子系统之间的主要调用关系如图3所示,图中数字是各函数的编号。

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

《数据结构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

数据结构课程设计报告(运动会分数统计系统)

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

(4)动手调试能力; (5)论文撰写的层次性、条理性、格式的规范性。 4)参考文献 [1] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社, 2007年. [2] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2006年. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 程序设计与调试3计算机房 撰写论文1图书馆 6)任务及具体要求 任务: 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 要求: 产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 学生签名: 2010年12月27 日 课程设计(论文)评审意见 (1)任务难易及设计思路:优()、良()、中()、一般()、差()(2)动手调试能力评价:优()、良()、中()、一般()、差()(3)任务完成情况评价:优()、良()、中()、一般()、差()(4)论文撰写水平及规范性评价:优()、良()、中()、一般()、差()(5)考勤和态度:优()、良()、中()、一般()、差() 评阅人:职称:讲师 2011年1 月3 日

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 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> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构课程设计—运动会分数统计系统[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) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。 二、概要设计 1. 本系统的流程图如下: Y N Case1 Case3 N Y Y 开始---初始化 输入 输入某项目各名次成绩 输入学校及男女项目范围 继续输 查询各学校成绩 Case2 查询团体总分 成绩查询 继续

2. 本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表: (1) 项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项 目为接下来报名、场地的准备提供依据。本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。这也有利于以后项目情况的查询。 typedef struct { int itemnum; //项目编号 int top; //取名次的数目 int range[5]; //名次 int mark[5]; //分数 }itemnode; //定义项目结点的类型 (2) 学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校 的编号、名称、男子团体总分、女子团体总分和学校总分。其中学校编号和名称是提前输入的,而其他三项内容将由系统进行自动统计。 typedef struct { int schoolnum; //学校编号 N N Y 输出查询学校成绩 继续 结束—退出

1.1运动会分数统计

#include #include #include #define N 20 /*学校最大数目*/ #define M 20 /*男子项目最大数目*/ #define W 20 /*女子项目最大数目*/ typedef struct { int inum; /*项目编号*/ int top; /*取名次的数目*/ int range[5]; /*名次*/ int mark[5]; /*分数*/ }itemnode; /*存放项目信息*/ typedef struct { int snum; /*学校编号*/ int score; /*学校总分*/ int mscore; /*男团体总分*/ int wscore; /*女团体总分*/ itemnode t[M+W]; /*项目数组*/ }snode; /*存放学校信息*/ snode a[N]; /* 定义一个学校数组*/ void menu(int n,int m,int w) /*菜单函数*/ { int c; void input(int n,int m,int w); void output(int n,int m,int w); void sortput(int n,int m,int w); void search(int n,int m,int w); printf("\t\t\t欢迎使用\t\t\t\t\n\n"); printf("\t***********运动会分数统计系统***********\n\n"); printf("\t\t*******1.信息输入*******\n"); printf("\t\t*******2.统计输出*******\n"); printf("\t\t*******3.排序输出*******\n"); printf("\t\t*******4.信息查询*******\n"); printf("\t\t*******0.退出系统*******\n\n"); printf("=======================================================\n\n"); printf("请选择要实现步骤的编号(0--4):"); scanf("%d",&c); switch(c) { case 1: input(n,m,w);break; case 2: output(n,m,w);break; case 3: sortput(n,m,w);break; case 4: search(n,m,w);break; case 0: printf("谢谢使用,再见!\n"); exit(0); default: printf("输入错误,请重试!\n"); menu(n,m,w); } } void savetofile() /*信息存入文件file*/ {

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

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

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

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

运动会分数统计系统

******************* 实践教学 ******************* 兰州理工大学 软件学院 2011年秋季学期 计算机应用基础课程设计 题目:运动会分数统计系统 专业班级:软件技术(2)班 姓名:刘正翔 学号: 指导教师:张墨逸 成绩:

目录

摘要 C语言通常别称为高级语言中的中级计算机语言。C语言由于它的可移植性和高效率,各种C语言编译程序均可产生非常紧凑、执行快捷的目标码。它比任何一种BASIC语言编译程序的目标码都紧凑、快速。这就要求有较高的理论水平,而且还要求有实际的动手能力。因此掌握C语言程序设计是学好软件技术的第一步。 本课程设计的主要目的是提高实践能力,包括提高C语言的编程能力,长期以来,注重书本知识,轻视实际动手设计能力是教学中普遍存在的现象。进行课程设计的目的就是要改变这种状况,使学习者既具有完备的理论知识,也能够解决在实际学习,生活工作中遇到的问题。学生应该能够把学习到的理论知识运用到实际中去,将知识转变为实际的能力,同时通过这些理论知识和实际的应用推动理论和实践的发展。 关键字:函数,定义,子程序,文本编辑 运动会分数统计系统 1 问题描述与分析 课程设计目的 为了巩固我们数据结构知识,加强我们的实际动手能力和提高我们综合素质,提高我们对计算机软件工程的认识学院组织我们进行了数据结构课程设计。此次课程设计要达到以下几点目的:(1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。 (2)提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 (3)培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。 (4)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

运动会分数统计系统的设计与实现

目录 1 实习目的 (1) 2 问题描述 (1) 3 需求分析 (1) 4 概要设计 (2) 5 详细设计 (5) 5.1数据结构定义 (5) 5.2各个函数分析 (5) 6 调试与测试 (19) 6.1调试 (19) 6.2 测试 (19) 7 使用说明 (22) 8 总结 (23) 9 参考文献 (23) 10 附录 (23)

运动会分数统计系统的设计与实现 1 实习目的 通过学习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。 2 问题描述 参加运动会有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)数据存入文件并能随时查询。 3 需求分析 3.1功能需求 本系统主要是运动会分数统计方案设计。 运动会分数统计方案适合采用结构体数组,为了实现系统功能,主要应实现以下几部分:比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。 3.2 数据需求

需要输入学校编号,项目编号,取得的名次,以及哪些名次。 3.3 性能需求 本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。 4 概要设计 4.1系统设计方案 本方案要求准备结构体数组、读写文件。还能把信息直接输入存储到文件中,读取文件中信息,从而得到结果。 (1) 菜单设计 分为主函数菜单、比赛成绩输出菜单、查询分数统计结果菜单、查询方式子菜单。 (2) 数据保存方式 建立文件,数据保存在文件中。运动运分数统计程序 (3) 数据类型 采用结构体类型。 (4) 存储结构 采用结构体类型数组存储结构存储。 (5) 算法设计 输入比赛结果模块中运用了冒泡算法将输入的数据排序。 4.2 数据库设计 系统用到的抽象数据类型定义: typedef struct { int itemnum; //项目编号

数据结构课程设计报告

编号 课程设计 题目 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:

运动会分数统计

运动会分数统计 【问题描述】 参加运动会有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以内的整数(如果做得更好可以输入学校的名称,运动项目的名称) 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 (数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决) 请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。 进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;【测试数据】 自行设定,注意边界等特殊情况。 */

目录 一、需求分析 (3) 二、概要设计 (1) 三、详细设计 (3) 四、程序调试与实现 (7) 五、用户使用说明..................................................................... 错误!未定义书签。 六、附录..................................................................................... 错误!未定义书签。

数据结构课程设计报告

数据结构课程设计 设计说明书 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..

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

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

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

运动会分数统计系统

数据结构课程设计 运 动 会 分 数 统 计 东华大学信息科学与技术学院 班级:电气0910班 姓名:周涛涛 学号:090901017

一.需求分析 1问题描述 运动会分数统计 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w 个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20) 2. 基本要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分; 3) 可以按学校编号、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况; 5) 可以按项目编号查询取得前三或前五名的学校。 3.测试数据 1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次); 然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。 2)然后进入总目录,输入:1 统计各学校总分并输出; 3)输入:2 按学校编号排序输出; 4)输入:3 按学校总分排序输出; 5)输入:4 按男团体总分排序输出; 6)输入: 5 按女团体总分排序输出; 7) 输入:6 按学校编号查询学校某个项目情况; 8)输入:7 按项目编号查询取得名次的学校; 9)输入:0 退出系统; 10)输入其他数据会提示错误输入,重新输入。 二、概要设计 1 结构体 运动项目 { 项目编号;名次;};

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目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.需求分析 (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)查看两景点间最短路径

数据结构课程设计报告 合并果子问题

合肥学院 计算机科学与技术系 课程设计报告 2011 ~2012 学年第二学期 课程数据结构与算法 课程设计名称合并果子问题 学生姓名杜双双 学号1004013037 专业班级计算机科学与技术10级3班 指导教师李红陈艳平王竹婷 2012 年2 月

课程设计报告 一、问题分析和任务定义 此程序需要完成如下要求:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。 例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力3+12=15。可以证明15为最小的体力耗费值。 实现本程序需要解决以下几个问题: 1、要使每次合并的体力消耗最小应该选择数目最小的两堆果子,那么如何选择出两堆最小的呢? 2、选择出了两堆果子如何进行合并? 3、如何计算最小的体力耗费值? 本问题的关键和难点在于数据结构的选择,找出最优的方法,在此选择哈夫曼树数据结构。 示例:三种果子,果子数目分别为1,2,3 哈夫曼树 最小体力消耗值:3+6=9 二、数据结构的选择和概要设计 上面采用哈夫曼树,则其存储就是哈夫曼树的存储结构。采用数组顺序存储结点信息。每一个结点包括四个域:存放该结点的weight 域、分别存放其左右孩子结点在数组中下标的lchild 域和rchild 域,以及记录该结点的父结点信息的parent 域。 只需用一个主函数就能解决问题。 三、详细设计和编码 数据结构: typedef struct {

C++运动会分数统计系统

课程设计报告 运动会分数统计系统 1. 系统需求分析 问题描述: 参加运动会有n个学校,学校编号为1,2,〃〃〃,n,比赛分为m个男子项目和w个女子项目。项目编号为男子1,2,〃〃〃,m个,女子m+1个,m+2个,〃〃,m+w。不同的项目取得前五名或前三名积分;取前五名的积分分别为7,5,3,2,1;前三名的积分分别为5,3,2;项目编号为奇数的取前五名,项目编号为偶数的取前三名(m≤20,n≤20)。每个项目结束时,将其编号输入,并按名次顺序输入运动员姓名、学校编号和成绩。 请用C/C++编写一系统,模拟运动会分数统计过程,软件应包括如下几个方面: (一)功能要求: (1)成绩输入: 要求:可以输入各个项目的前三名或前五名的成绩。 (2)成绩查询: 要求:可以按学校编号查询学校各项目情况;可以按项目编号查询取得前三名或前五名的学校。 (3)成绩统计: 要求:能统计各学校总分。 (4)成绩排序: 要求:可以按学校编号、学校总分、男女团体总分排序输出。 (二)其它要求: (1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅 读; (2)至少采用文本菜单界面(如果能采用图形菜单界面更好); (3)学生可自动增加新功能模块(视情况可另外加分); (4)写出课程设计报告,具体要求见相关说明文档。 2 概要设计 2.1 系统功能设计 根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1所示。 (1)信息统计模实现信息的输入、统计。 (2)信息输出模块,实现信息的输出。

(3)信息查询实现信息的查询。 图1 系统功能结构图 3.详细设计: 毕业设计有困难?加QQ929486211 (1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。 (2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总

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

Guangxi University of Science and Technology 课程设计报告 课程名称:算法与编程综合实习 课题名称: 姓名: 学号: 院系:计算机学院 专业班级:通信121 指导教师: 完成日期:2012年12月15日

目录 第1部分课程设计报告 (3) 第1章课程设计目的 (3) 第2章课程设计内容和要求 (4) 2.1 问题描述 (4) 2.2 设计要求 (4) 第3章课程设计总体方案及分析 (4) 3.1 问题分析 (4) 3.2 概要设计 (7) 3.3 详细设计 (7) 3.4 调试分析 (10) 3.5 测试结果 (10) 3.6 参考文献 (12) 第2部分课程设计总结 (13) 附录(源代码) (14)

第1部分课程设计报告 第1章课程设计目的 仅仅认识到队列是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解队列的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方………………………………………………………………………………………………………………………………………………………………………………………..(省略)

第2章课程设计内容和要求 2.1问题描述: 迷宫问题是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。老鼠经过多次试验最终学会走通迷宫的路线。设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。 图A 2.2设计要求: 要求设计程序输出如下: (1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏 幕上显示出来; (2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。 (3)用一种标志(如数字8)在迷宫中标出该条通路; (4)在屏幕上输出迷宫和通路; (5)上述功能可用菜单选择。

相关文档
最新文档