数据结构课程设计实验报告.doc_第1页
数据结构课程设计实验报告.doc_第2页
数据结构课程设计实验报告.doc_第3页
数据结构课程设计实验报告.doc_第4页
数据结构课程设计实验报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海应用技术学院课程设计报告课程名称 数据结构课程设计 设计题目 运动会分数统计 、纸牌游戏 、猴子选大王 一. 目的与要求1. 巩固和加深对常见数据结构的理解和掌握2. 掌握基于数据结构进行算法设计的基本方法3. 掌握用高级语言实现算法的基本技能4. 掌握书写程序设计说明文档的能力5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力二. 课程设计内容说明1. 项目一:运动会分数统计(1) 对设计任务内容的概述参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)(2) 需求分析或功能描述功能: 1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分, 3)可以按学校编号、学校总分、男女团体总分排序输出; 4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得 前三 或前五名的学校。(4) 详细设计或源代码说明 void list1() /主函数 int a; input(); solve(); while(1) scanf(%d,&a); switch (a) case 1:bianhao();break; case 2:zongfen();break; case 3:malezf();break; case 4:femalezf();break; case 5:cxsch();break; case 6:cxxm();break; case 0:system(cls);break; default:printf(输入指令无效,请重新输入!n); if(a=0) break; (5)程序模块及其接口描述程序模块每一个固定的功能,都用一个函数来实现。在菜单中都用switch语句来链接实现整个程序的功能。(6)调试分析或程序测试 运行主菜单界面 运动会输入数据界面,输入数据完毕。运动会分数查询菜单界面 按 学 校 编 号 输 出 按 学 校 总 分 排 序 输 出按 学 校 男 总 分 排 序 输 按 学 校 女 总 分 排 序 输 出 查 询 某 个 学 校 成 绩 查 询 某 个 项 目 成 绩(8) 尚未解决的问题或改进方向在输出界面上名称有的没有对齐(9) 对软件的使用说明必须安规定提示准确的输入数字,本软件只输出前五名的学校,学校所得分数已按顺序在程序中默认。2. 项目二 纸牌游戏(1) 对设计任务内容的概述任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些? (2) 需求分析或功能描述 最终准确输出任务中所要的结果(3) 概要设计或程序流程图 开始输入2 运行程序回车返回 结束(4) 详细设计或源代码说明int list2()list* a;build(a);int j=0;void change(list* &l); /翻牌change(a);printf(n);printf(n);return 0;void change(list* &l) /翻牌int j=0,i,zheng=0;for(j=2;jlength;j+)for(i=1;ilength;i+)if(i*jlength)&(l-datai*j-1=1)l-datai*j-1=0;ki*j-1+;continue;if(i*jlength)&(l-datai*j-1=0)l-datai*j-1=1;ki*j-1+;continue;(5) 程序模块及其接口描述 程序模块每一个固定的功能,都用一个函数来实现。在菜单中都用switch语句来链接实现整个程序的功能。(6) 调试分析或程序测试 主菜单纸牌游戏运行结果(7) 尚未解决的问题或改进方向 无3. 项目三 猴子选大王(1) 对设计任务内容的概述任务:一堆猴子都有编号,编号是1,2,3 .m ,这群猴子(m个)按照 1-m 的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。(2) 需求分析或功能描述 功能:输入数据:输入m,n m,n 为整数,nm 输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能 (3) 概要设计或程序流程图 开始 数据 运行程序 结果 结束 (4) 详细设计或源代码说明 void list3() printf( 猴子选大王nn);printf(请输入猴子总数:); scanf(%d,&nnn); printf(请输入一个小于猴子总数的整数:); scanf(%d,&mmm); LINK p,head,p2; int i; head=p=p2=(LINK)malloc(sizeof(Monkey);for(i=1;inext=p; p2=p; p2-next=head; p=head; for(i=1;inum=i; p=p-next; i=0; p=head; (5) 调试分析或程序测试主菜单运行界面 输入数据游戏运行结果二. 结论及体会通过这次课程设计使我进一步达到理论与实际相结合,提高了自己组织数据及编写程序的能力,使我们能够根据问题要求和数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并用软件解决问题,培养良好的程序设计技能,掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务,锻炼自己的动脑能力,学会用自己的思路解决现实中的实际问题,调试过程中也遇到了一些问题也都是自己独立思考完成的,还有一个体会是,遇到不会的地方可以参考课本也可以去图书馆或网上查资料,当然主要思路有了也就简单点了,一开始思路不是很清楚就开始在敲程序了。其实,当你实验遇到问题时,自己会通过很多途径去解决它,没有解决时,心急如焚,解决之后的那种快感是前所未有的,这也许就是付出了行动之后的收获吧!我想我们以后在社会上,遇见了事情不可怕,只要不被困难击倒,解决了它,那样我们就是胜利的!附录1:参考文献1 数据结构教程(第3版),李春葆,清华大学出版社,20102数据结构,杨剑,清华大学出版社,20113数据结构(C语言版),严蔚敏 吴伟民,清华大学出版社,19974Data Structures Using C数据结构(C语言版),R Krishnamoorthy、G Indirani Kumaravel,清华大学出版社,2009-95C+数据结构与程序设计 (美)Robert L.Kruse/Alexander J.Ryba著/钱丽萍译, 清华大学出版社,2004 6计算机算法设计与分析(第2版),王晓东, 电子工业出版社, 2004源代码清单#include list1.cpp#include list2.cpp#include list3.cppvoid main()int i,flag=1;while (flag)L1:printf(t数据结构课程设计n);printf(t1:运动会分数统计n);printf(t2:纸牌游戏n);printf(t3:猴子选大王n);printf(t0:退出n);printf(t请选择0-3:n);while (true)scanf(%d,&i);if (i=0 & i=3)break;elseprintf(输入错误,);printf(请选择0-3:n);switch (i)case 1:system(cls);list1();break;case 2:system(cls);list2();break;case 3:system(cls);list3();break;case 0:flag=0;break;#include #include#include #include #includeusing namespace std; int n; /n个学校 int m; /m个男子项目 int w; /w个女子项目 struct pro /表示项目的结构体 string name; /项目名称 int snum6; /前5名学校的编号 p21; struct school /表示学校的结构体 int num; string name; /学校名称 int score; /学校总分 int male; /男子总分 int female; /女子总分 sch21; int integral5=7,5,3,2,1;/前五名得分 void fanhui();void input() int i,j,y,x; printf(运动会分数统计n);printf(输入数据nn);printf(输入学校数目:); y=0; while(1) scanf(%d,&n); if(n=1&n=20)y=1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;; schi.score=0; schi.female=0; schi.male=0; schi.num=i; printf(输入男子项目数和女子项目数:); y=0; while(1) scanf(%d%d,&m,&w); if(m=1&w=1)y=1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;; printf(输入第%d个项目的前5名的学校编号:n,i); for(j=1;j=1&x=20)y=1; if(y)break; else printf(输入数据有误,请重新输入:); pi.snumj=x; schx.score+=integralj-1; if(i=m)schx.male+=integralj-1; else schx.female+=integralj-1; printf(nn数据输入完毕,回车进入运动会统计菜单。);getchar();getchar();system(cls); void print(int i) printf(%d ,schi.num);;printf( %d %d %dn,schi.score,schi.male,schi.female); void bianhao() /按编号排序 system(cls);int i,j; school t; for(i=1;in;i+) for(j=i;jschj.num) t=schi;schi=schj;schj=t; printf(n按编号排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); fanhui(); void zongfen() /按学校总分排序 system(cls);int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) if(schi.scoreschj.score) t=schi;schi=schj;schj=t; printf(n按学校总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i);ofstream fout;fout.open(运动会分数统计.txt); fout编号 学校名称 总分 男子总分 女子总分endl;for(i=1;i=n;i+) foutschi.num setw(8)schi.scoresetw(9) schi.malesetw(10)schi.femaleendl; fout.close();fanhui(); void malezf() /按学校男总分排序 system(cls);int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) if(schi.maleschj.male) t=schi;schi=schj;schj=t; printf(n按学校男子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); fanhui(); void femalezf() /按学校女总分排序 system(cls);int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) if(schi.femaleschj.female) t=schi;schi=schj;schj=t; printf(n按学校女子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); cout=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); printf(该学校相关信息:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) if(schi.num=s) print(i); break; cout=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); 前5名学校编号及名称为:endl; printf(名次 编号 学校名称n); for(i=1;i=5;i+)printf(%d %d ,i,ps.snumi);endl; fanhui(); void solve() /菜单函数printf( 运动会分数统计菜单nn);printf(1.按学校编号排序输出n); printf(2.按学校总分排序输出(存储数据)n); printf(3.按学校男总分排序输出n); printf(4.按学校女总分排序输出n); printf(5.查询某个学校成绩n); printf(6.查询某个项目成绩n); printf(0.返回n); printf(n选择您需要的操作(选择序号):n); void list1() /主函数 int a;input(); solve(); while(1)scanf(%d,&a);switch (a)case 1:bianhao();break;case 2:zongfen();break;case 3:malezf();break;case 4:femalezf();break;case 5:cxsch();break;case 6:cxxm();break;case 0:system(cls);break;default:printf(输入指令无效,请重新输入!n);if(a=0) break;void fanhui()printf(返回运动会分数统计菜单n);getchar();getchar();system(cls);solve();typedef struct/定义线形表int data52;int length;list;void build(list* &l)/建立线形表int i;l=(list*)malloc(sizeof(list);for(i=0;idatai=0;l-length=52;int k52=0;/翻动次数int list2()list* a;build(a);int j=0;void change(list* &l); /翻牌change(a);printf(n);printf(n);return 0;void change(list* &l) /翻牌int j=0,i,zheng=0;for(j=2;jlength;j+)for(i=1;ilength;i+)if(i*jlength)&(l-datai*j-1=1)l-datai*j-1=0;ki*j-1+;continue;if(i*jlength)&(l-d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论