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

运动会是学校中一项重要的活动,通过运动会可以增强学生的体质,增进师生之间的情感,同时也能够激发学生的运动热情和团队精神。
而对于运动会的分数统计来说,如何高效、准确地完成这项工作是非常重要的。
本文主要介绍了基于数据结构课程设计的运动会分数统计系统,使用Python语言实现。
二、系统设计1. 数据结构的选择在设计运动会分数统计系统时,需要考虑如何存储和管理参赛队伍和成绩信息。
由于参赛队伍和成绩信息的数量较大,因此需要选择适合高效查询和排序的数据结构。
本系统选择使用Python中的字典(dictionary)和列表(list)来存储和管理数据。
2. 数据的存储在系统中,每支队伍的信息包括队伍编号、队伍名称和各项比赛成绩等。
这些信息可以使用字典来存储,其中队伍编号作为键,队伍信息作为值。
而各项比赛成绩可以使用列表来存储,方便进行排序和统计。
3. 数据的输入为了方便输入参赛队伍和成绩信息,本系统提供了相应的输入界面,用户可以通过界面逐一输入每支队伍的信息。
程序也提供了批量导入功能,用户可以通过导入文件的方式一次性输入所有的参赛队伍和成4. 数据的统计和输出系统可以对输入的成绩信息进行统计和排序,可以按照总分或特定比赛项目的成绩进行排序,并将排名信息输出到文件中。
排名信息包括队伍名称、总分和各项比赛成绩,方便后续的奖励和表彰工作。
三、系统实现1. 数据结构类的设计为了方便对队伍和成绩信息进行管理,本系统设计了队伍(Team)和成绩(Score)两个类,分别用于存储队伍信息和比赛成绩。
2. 主程序的设计系统的主程序主要包括数据的输入、统计和输出三个功能。
用户可以通过交互式界面输入队伍和成绩信息,也可以通过命令行参数进行批量导入。
系统会对输入的成绩信息进行统计和排序,并将排名信息输出到指定的文件中。
3. 界面设计为了方便用户操作,系统提供了简洁清晰的交互式界面。
用户可以通过界面进行数据的输入和操作,也可以查看和导出排名信息。
数据结构课设报告_运动会分数统计

目录一、设计任务 (2)二、功能需求分析 (2)三、功能算法设计 (3)四、编码实现 (4)五、调试分析 (5)六、课设总结 (7)七、参考文献 (7)一、设计任务问题描述:参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
基本要求:⑴每个项目结束时,输入前三名或前五名的项目编号、运动员姓名、校名和名次(成绩);⑵产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分,并统计各学校总分;⑶产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
二、功能需求分析1.int InitList(SqList &L)操作结果构造一个空的顺序线性表2.int ListInsert(SqList &L,int i,ElemType e)初始条件:顺序线性表L已存在,≤i≤ListLength(L)+1操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加3.void InsertSort(List &L)操作结果:对顺序表L作直接插入排序。
算法.14.void print(List L)操作结果:打印线性表:5.int main()操作结果:完成系统的主要设计;三、功能算法设计InitList()流程图ListInsert()流程图Print()流程图InsertSort(List &L)流程图四、编码实现struct RedType // 记录类型{KeyType key; // 关键字项InfoType otherinfo; // 其它数据项,具体类型在主程中定义};typedef struct{int schnum;//学校的编号int mscore[20];//学校在各个男生项目的积分int wscore[20];//学校在各个女生项目的积分}school;//学校记录类型typedef int ElemType;struct SqList{ElemType *elem;// 存储空间基址int length; // 当前长度int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位)};struct List{RedType r[20];int length;};int InitList(SqList &L) // 算法.3{ // 操作结果:构造一个空的顺序线性表L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)exit(-1); // 存储分配失败L.length=0; // 空表长度为L.listsize=LIST_INIT_SIZE; // 初始存储容量return 1;}int ListInsert(SqList &L,int i,ElemType e) // 算法.4{ // 初始条件:顺序线性表L已存在,≤i≤ListLength(L)+1// 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加ElemType *newbase,*q,*p;if(i<1||i>L.length+1) // i值不合法return 0;if(L.length>=L.listsize) // 当前存储空间已满,增加分配{if(!(newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)))) exit(-1); // 存储分配失败L.elem=newbase; // 新基址L.listsize+=LISTINCREMENT; // 增加存储容量}q=L.elem+i-1; // q为插入位置for(p=L.elem+L.length-1;p>=q;--p) // 插入位置及之后的元素右移*(p+1)=*p;*q=e; // 插入e++L.length; // 表长增return 1;}void InsertSort(List &L){ // 对顺序表L作直接插入排序。
数据结构运动会分数统计系统

数据结构运动会分数统计系统一、系统需求分析在设计运动会分数统计系统之前,我们首先需要明确系统的需求。
运动会通常包括多个项目,如田径、游泳、球类比赛等,每个项目又有不同的小项和参赛选手。
因此,系统需要能够处理大量的比赛数据,包括选手信息、比赛项目、成绩等。
1、数据录入功能系统应提供方便快捷的数据录入界面,支持手动输入和批量导入数据。
录入的数据应包括选手的基本信息(如姓名、性别、班级等)、参赛项目、比赛成绩等。
2、成绩计算功能能够根据不同项目的比赛规则自动计算选手的成绩和得分。
例如,在田径比赛中,根据选手的跑步时间计算名次和得分;在游泳比赛中,根据选手的游泳时间计算得分;在球类比赛中,根据比赛结果(如胜、负、平)计算得分。
3、数据存储功能系统需要将录入和计算得到的数据安全地存储起来,以便后续查询和分析。
数据存储应采用可靠的数据库管理系统,如 MySQL、Oracle 等。
能够根据不同的条件查询和统计比赛数据,如查询某个选手的比赛成绩、某个班级的总分、某个项目的前三名等。
统计结果应以清晰直观的方式展示,如表格、图表等。
5、报表生成功能系统应能够生成各种报表,如比赛成绩报表、班级总分报表、项目排名报表等。
报表应支持打印和导出为 Excel、PDF 等格式,方便数据的共享和存档。
二、系统设计基于上述需求分析,我们可以设计一个基于数据结构的运动会分数统计系统。
系统主要由以下几个模块组成:1、数据录入模块该模块负责接收用户输入的比赛数据,并进行合法性检查和数据预处理。
数据录入可以通过网页界面、Excel 导入等方式进行。
2、成绩计算模块根据比赛项目的规则和录入的成绩数据,计算选手的得分和排名。
成绩计算可以采用算法实现,如冒泡排序、快速排序等。
3、数据存储模块使用数据库来存储比赛数据,包括选手信息表、比赛项目表、成绩表等。
数据库设计应遵循规范化原则,以确保数据的一致性和完整性。
通过编写 SQL 查询语句,实现对比赛数据的查询和统计功能。
数据结构课程设计报告 运动会计分系统

课程设计报告书
2010 年
12 月
目录
1 设计时间 .....................................................3 2 设计目的 .....................................................3 3 设计任务 .....................................................3 4 设计内容 .....................................................3 4.1 需求分析 ................................................3 4.2 总体设计 ................................................4 4.3 详细设计 ................................................6 4.4 测试与分析 ..............................................9 4.4.1 测试 ...............................................8 4.4.2 分析 ...............................................8 4.5 附录 ....................................................9 5 总结与展望 ..................................................14 5.1 设计总结 ...............................................14 5.2 优化展望 ...............................................10 参考文献......................................................15 成绩评定......................................................15
(完整word版)数据结构 运动会分数统计系统

数据结构课程设计报告题目:运动会分数统计系统学生姓名:学号:班级:指导教师:2010年 5 月28 日目录一、题目 (2)二、时间 (3)三、地点 (3)四、程序要求 (3)五、数据结构设计 (3)1。
概述 (3)2。
关键算法 (5)3。
查询操作 (7)六、详细代码 (8)七、测试结果 (26)1.主菜单窗口 (26)3. 统计各学校总分 (27)4. 按学校编号排序输出 (27)5。
按学校总分排序输出 (28)6. 按男团体总分排序输出 (28)7。
按女团体总分排序输出 (29)8. 按学校编号查询学校某个项目情况 (29)9。
按项目编号查询取得名次的学校 (30)八、测试非法数据 (30)九、课程设计总结 (32)一、题目:运动会分数统计系统二、时间:2010.05.24~05。
28三、地点:软件楼606四、程序要求:任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前前三名积分;前三名的积分分别为:5、3、2。
(m、w<=20,n<=10)功能要求:1).可以输入各个学校、各项目、以及各项目前三名的数据信息;2).能统计各学校总分、男子项目和女子项目总分;3).可以按学校编号(或学校名称)、学校总分、男女团体总分排序输出;4)。
可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目编号查询取得前三的学校。
规定:输入数据形式和范围:10以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
数据结构课程设计运动会分数统计

班级 :姓名:学号日期课题一运动会分数统计一. 需求剖析: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)入所需要的各数据2)成行排序3)找成 4)退出束4.数据:入五个学校的名字 : ,上外,外,,工技大入四个体育目:球,游泳,足球,拉松。
入球前五名的学校代排名状况: 1 3 5 2 4入游泳前三名学校代排名状况: 1 2 3入足球前三名学校代状况: 1 4 2入拉松前三名的学校代排名状况: 1 5 3二.纲要设计:了上述程序需要使用要串和性表,所以需要两个抽象数据型:串和性序表。
1.串的抽象数据型的定以下:ADT String{数据象: D={a |ai ∈ characterSet,I=1,2, ⋯⋯, n,n>=0}i数据关系: R1={<a i-1, a i >|a i-1 ,a i∈D,I=2, ⋯⋯, n}基本操作:StrAssign(&T,chars)初始条件: chars 是字符串常量。
操作果:生成一同等于chars 的字符串 T.StrCopy(&T,s)初始条件 :串S存在操作果:由串复制得串T.StrEmpty(s)初始条件 :串S存在。
操作果:若 S 空串,返回 TRUE,否返回 FALSE. Strcompare(S,T)初始条件:串 S 和 T 存在。
操作果 : 若 S>T,返回 >0; 若 S=T,返回 =0, 若 S<T,返回 <0. Strlength(S)初始条件 :串S存在。
数据结构课程设计运动会分数统计

数据结构课程设计报告(一)课题一运动会分数统计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.需求分析在程序中,用户输入各运动会项目的排名情况,程序会计算出各校的得分情况存储于顺序表中,可供查询。
4.概要设计struct{int order[5]; //项目排名}sub[10];struct{int score; //学校总分int score1; //学校男团总分int score2; //学校女团总分}sch[5];程序调用关系如下:主程序模块成绩输入模块总分输出模块排名查询模块学校情况查询模块项目情况查询模块5.详细设计#include <windows.h>#include<stdio.h>#include<stdlib.h>char SCHOOL[5][13]={"东华大学","上海交大","复旦大学","同济大学","华东师范大学"};char SUBJECT[10][10]={"男子100米","男子200米","男子400米","男子跳高 ","男子跳远","女子跳高","女子跳远","女子铅球", "女子100","女子400米"};int SCORE[2][5]={{7,5,3,2,1},{5,3,2}};struct //存储项目信息{int order[5]; //排名}sub[10];struct //存储学校信息{int score; //学校总分int score1; //学校男团总分int score2; //学校女团总分}sch[5];int menu();void func1(); //输入成绩void calculate(); //计算各校成绩void func2(); //输出各校总分int menu2();void func31(); //按学校编号输出各项成绩void func32(); //排序输出各校总分void func33(); //排序输出各校男团总分void func34(); //排序输出各校女团总分void func4(); //输出学校情况void func5(); //输出项目情况int main(){menu();}int menu(){int n;printf("_______________________________________________________\n");printf(" MENU \n");printf(" 1.输入成绩 \n"); printf(" 2.各校总分 \n");printf(" 3.成绩排序 \n");printf(" 4.学校情况 \n");printf(" 5.项目情况 \n");printf(" 6.退出系统 \n\n");printf(" 请输入编号:");scanf("%d",&n);system("cls");switch(n){case 1:func1();calculate();break;case 2:func2();break;case 3:menu2();break;case 4:func4();break;case 5:func5();break;case 6:return 0;default:menu();}menu();}void func1(){int i;printf("_______________________________________________________\n"); printf(" 请输入各体育项目名次所对学校编号 \n"); printf(" 学校编号(1:东华大学,2:上海交大,3:复旦大学,4:同济大学,5:华东师范大学,0:退出) \n");for(i=0;i<10;i++){printf(" %d.%s 第一名:",i+1,SUBJECT[i]);scanf("%d",&sub[i].order[0]);if(sub[i].order[0]==0)menu();printf("\n 第二名:");scanf("%d",&sub[i].order[1]);if(sub[i].order[1]==0)menu();printf("\n 第三名:");scanf("%d",&sub[i].order[2]);if(sub[i].order[2]==0)menu();if(i%2==0){printf("\n 第四名:");scanf("%d",&sub[i].order[3]);if(sub[i].order[3]==0)menu();printf("\n 第五名:");scanf("%d",&sub[i].order[4]);if(sub[i].order[4]==0)menu();}}system("cls");}void calculate(){int i,j,k;for(i=0;i<5;i++){for(j=0;j<5;j++) //求出各校男团总分{if(j%2==0){for(k=0;k<5;k++){if(sub[j].order[k]==i+1)sch[i].score1=sch[i].score1+SCORE[0][k];}}else{for(k=0;k<3;k++){if(sub[j].order[k]==i+1)sch[i].score1=sch[i].score1+SCORE[1][k];}}}for(;j<10;j++) //求出各校女团总分{if(j%2==0){for(k=0;k<5;k++){if(sub[j].order[k]==i+1)sch[i].score2=sch[i].score2+SCORE[0][k];}}else{for(k=0;k<3;k++){if(sub[j].order[k]==i+1)sch[i].score2=sch[i].score2+SCORE[1][k];}}}sch[i].score=sch[i].score1+sch[i].score2; //求出各校总分}}void func2(){int i;printf("_______________________________________________________\n"); printf(" 各校总分 \n");for(i=0;i<5;i++)printf(" %d.%s %d分\n",i+1,SCHOOL[i],sch[i].score);printf("\n\n输入任意值返回");getch();system("cls");}int menu2(){int n;printf("_______________________________________________________\n");printf(" 成绩排序 \n");printf(" 1.按学校编号 \n"); printf(" 2.按学校总分 \n");printf(" 3.按男团总分 \n");printf(" 4.按女团总分 \n");printf(" 5.返回 \n\n");printf(" 请输入编号:");scanf("%d",&n);system("cls");switch(n){case 1:func31();break;case 2:func32();break;case 3:func33();break;case 4:func34();break;case 5:menu();default:menu2();}return 0;}void func31(){int i;printf("_______________________________________________________\n");printf(" 按学校编号排序 \n");for(i=0;i<5;i++){printf(" %d.%s 学校总分 %d分\n",i+1,SCHOOL[i],sch[i].score);printf(" 男团总分 %d分\n",sch[i].score1);printf(" 女团总分 %d分\n",sch[i].score2);}printf("\n\n输入任意值返回");getch();system("cls");}void func32(){int a[5][2],i,j,p,q,k;printf("_______________________________________________________\n"); printf(" 按学校总分排序 \n"); for(p=0;p<5;p++){a[p][0]=p;a[p][1]=sch[p].score;}for(i=0;i<4;i++) //将各校总分从大到小排序for(j=0;j<4;j++)if(a[i][1]<a[i+1][1]){q=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=q;k=a[i][0];a[i][0]=a[i+1][0];a[i+1][0]=k;}for(p=0;p<5;p++)printf(" %d.%s %d分\n",p+1,SCHOOL[a[p][0]],sch[p].score); printf("\n\n输入任意值返回");getch();system("cls");}void func33(){int a[5][2],i,j,p,q,k;printf("_______________________________________________________\n"); printf(" 按男团总分排序 \n"); for(p=0;p<5;p++) //将各校男团总分从大到小排列{a[p][0]=p;a[p][1]=sch[p].score1;}for(i=0;i<4;i++)for(j=0;j<4;j++)if(a[i][1]<a[i+1][1]){q=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=q;k=a[i][0];a[i][0]=a[i+1][0];a[i+1][0]=k;}for(p=0;p<5;p++)printf(" %d.%s %d分\n",p+1,SCHOOL[a[p][0]],sch[p].score1); printf("\n\n输入任意值返回");getch();system("cls");}void func34(){int a[5][2],i,j,p,q,k;printf("_______________________________________________________\n"); printf(" 按女团总分排序 \n"); for(p=0;p<5;p++) //将各校女团总分从大到小排列{a[p][0]=p;a[p][1]=sch[p].score2;}for(i=0;i<4;i++)for(j=0;j<4;j++)if(a[i][1]<a[i+1][1]){q=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=q;k=a[i][0];a[i][0]=a[i+1][0];a[i+1][0]=k;}for(p=0;p<5;p++)printf(" %d.%s %d分\n",p+1,SCHOOL[a[p][0]],sch[p].score2);printf("\n\n输入任意值返回");getch();system("cls");}void func4(){int i,j,a,b=0;printf("_______________________________________________________\n"); printf(" 学校情况 \n"); printf("学校编号(1:东华大学,2:上海交大,3:复旦大学,4:同济大学,5: 华东师范大学,0:退出)\n");printf(" 请输入学校编号:");scanf("%d",&i);if(i==0){system("cls");menu();}else{if(i>5||i<0){system("cls");func4();}else{printf("项目编号(1:男子100米,2:男子200米,3:男子400米,4:男子跳高,5:男子跳远\n");printf(" 6:女子跳高,7:女子跳远,8:女子铅球,9:女100,10:女子400米,0:退出)\n\n");printf("请输入项目编号:");scanf("%d",&j);if(j==0){system("cls");menu();}else if(j>10||j<0){system("cls");func4();}else if(j%2!=0)for(a=0;a<5;a++){if(sub[j-1].order[a]==i){printf("\t\t%s %s 第%d",SCHOOL[i-1],SUBJECT[j-1],a+1);break;}}else{for(a=0;a<3;a++){if(sub[j-1].order[a]==i){printf("\t\t %s %s 第%d"SCHOOL[i-1],SUBJECT[j-1],a+1 );b=1;break;}}if(b==0)printf("\t\t %s %s 未获得名次",SCHOOL [i-1],SUBJECT[j-1]);}}}printf("\n\n输入任意值返回");getch();system("cls");}void func5(){int i,j;printf("_______________________________________________________\n"); printf(" 项目情况 \n"); printf(" 项目编号(1:男子100米,2:男子200米,3:男子400米,4:男子跳高,5:男子跳远\n");printf(" 6:女子跳高,7:女子跳远,8:女子铅球,9:女子100米 ,10:女子400米,0:退出)\n");printf(" 请输入项目编号:");scanf("%d",&i);if(i==0){system("cls");menu();}else if(i>10||i<0){system("cls");func5();}else{if(i%2==0)for(j=0;j<3;j++)printf(" 第%d名: %s\n",j+1,SCHOOL[(sub[i-1].order[j])-1]);else for(j=0;j<5;j++)printf("第%d名: %s\n",j+1,SCHOOL[(sub[i-1].order[j])-1]);}printf("\n\n输入任意值返回");getch();system("cls");}6.调试分析1)在函数calculate中,将sub[j].order[k]==i+1中的i+1错写为i,导致各校成绩的统计出错,后面的功能运作出现问题。
数据结构课程设计--运动会成绩管理系统

目录1 需求分析 (1)1.1 问题描述 (1)1.2 基本要求 (1)1.3 测试数据 (1)2 概要设计 (2)2.1 数据结构 (2)2.2 程序模块及之间的调用关系 (2)3 详细设计 (3)3.1 数据类型定义 (3)3.2 函数之间的调用关系 (3)3.3 算法设计 (4)4 测试结果 (5)4.1多组数据输入与输出 (5)5 调试分析 (9)参考文献 (10)附录 (11)1 需求分析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 基本要求(1) 可以输入各个项目的前三名或前五名的成绩;(2) 能统计各系总分,(3) 可以按系编号、系总分、男女团体总分排序输出;(4) 可以按系编号查询系某个项目的情况;可以按项目编号查询取得前三或前五名的系。
1.3 测试数据(1) 输入:进入输入界面,根据提示,输入参赛学校个数,再输入:男子组和女子组个数。
再根据提示的选择菜单1:输入各项中的获奖学校。
(2) 输入:2查看输出结果。
(3) 输入:3查看输出结果。
(4) 输入:4查看输出结果。
(5) 输入:5查看输出结果。
(6) 输入:6查看输出结果。
(7) 输入:7根据提示输入系编号和项目编号。
(8) 输入:8根据提示输入系编号和项目编号。
(8) 输入:9,退出。
2.1 数据结构(1) 学校:代号,男子团体个数和总分,女子团体个数和总分。
(2) 运动项目:项目编号,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。
2.2 程序模块及之间的调用关系3.1算法设计主要算法的设计思想:本程序主要是使用数组来实现操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)任务书软件学院信息专业 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 日目录1 绪论 (3)2需求分析与概要设计 (4)2.1 需求分析 (4)2.1.1问题描述 (4)2.1.2基本要求 (4)2.2 概要设计 (4)2.2.1数据结构 (4)2.2.2程序模块及之间的调用关系 (5)3详细设计与编码实现 (6)3.1目的结果 (6)3.2变量关系 (6)数据类型及重要变量的定义 (6)3.3编码实现 (7)3.3.1信息输入及分数统计功能 (7)3.3.2信息输出查询功能 (7)3.3.3主函数 (8)4调试分析与结果 (9)4.1 运行界面 (9)输入各项信息 (9)4.2查询 (11)5总结体会 (13)6参考文献 (14)附录:源程序代码 (15)1 绪论近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。
不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。
面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。
随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以及相应的处理算法。
因此面向对象程序设计知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业基础知识。
著名的瑞士计算机科学家沃思提出:对象+消息=程序。
2需求分析与概要设计2.1 需求分析2.1.1问题描述参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
2.1.2基本要求产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
2.2 概要设计2.2.1数据结构1)学校:名称,编号,男子团体总分,女子固体总分。
2)运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名学校的编号,第二名学校的编号,第三名学校的编号,第四名学校的编号,第五名学校的编号。
2.2.2程序模块及之间的调用关系图2.1:模块之间的调用关系3详细设计与编码实现3.1目的结果本课程设计主要解决在运动会上,将各个比赛项目所有获得名次的同学的成绩输入;成绩查询;成绩修改;成绩删除;以及成绩输出。
该程序用于运动会上,涉及到比赛项目成绩的录入,某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。
其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;自己扩展的功能是“某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学校以及运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。
3.2变量关系数据类型及重要变量的定义(1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。
int n; //n个学校int m; //m个男子项目int w; //w个女子项目struct pro //表示项目的结构体(2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。
//定义学校结点类型int num;string name; //学校名称int score; //学校总分int male; //男子总分int female; //女子总分3.3编码实现3.3.1信息输入及分数统计功能void input()为输入信息及分数统计函数。
在输入信息的同时进行分数的统计。
可以输入各个学校各项目前三名或前五名的成绩。
在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。
其主要功能代码如下:int integral[5]={7,5,3,2,1};//前五名得分int integraly[3]={7,5,3};//三名得分for(i=1;i<=m+w;i++){printf("输入第%d个项目的名称:\n",i);cin>>p[i].name;printf("该项目取前三名选0,取前5名选1:");scanf("%d",&q);3.3.2信息输出查询功能1)void output( )为输出函数。
列出一个输出目录利用swich语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。
利用辅助数组remember[]和冒泡排序的方法使之按分数的由高到低输出。
利用循环语句do while( )当输入2时返回输出目录,输入0是跳出循环返回主菜单。
void print(int i){cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score< <setw(9)<<sch[i].male<<setw(10)<<sch[i].female<<endl;}2)void cxxm()为查询函数。
列车一个查询目录利用swich 语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得分情况或某个项目的前几名的学校。
再利用循环语句do while( )当输入2是返回查询目录,输入0时跳出循环返回主菜单。
3.3.3主函数void main( )是主函数。
列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。
想在每次查询结束想返回主菜单进行其它项时,应在main( )函数中调用其它函数时再调用main( )函数。
4调试分析与结果4.1 运行界面输入各项信息图4.1:输入各项信息的界面(1)图4.2:选择前几名的界面图4.3:输入各项信息的界面(2)图4.4:各项信息输入完毕的界面4.2查询可以按多个指标查询图4.5:查询界面(1)图4.6:查询界面(2)5总结体会本次课程设计,使我对数据结构线性表,栈的设计方法、步骤、思路、有一定的了解与认识。
它相当于实际设计工作的模拟。
在课程设计过程中,基本能按照规定的程序进行,先针对表达式算法为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案。
通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵的经验。
特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。
怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,达到相互协调的作用其次,我熟悉了数据结构知识。
学会了很多关于程序设计的经验和技巧,明白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。
重要的是,通过这次设计,逐步我具备了走向程序员的基本素质。
知道应如何在困难重重中一步一步细心的发现问题,解决问题。
并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何达到相对的完美。