数据结构课程设计报告一.docx

上传人:b****6 文档编号:7525949 上传时间:2023-01-24 格式:DOCX 页数:11 大小:212.81KB
下载 相关 举报
数据结构课程设计报告一.docx_第1页
第1页 / 共11页
数据结构课程设计报告一.docx_第2页
第2页 / 共11页
数据结构课程设计报告一.docx_第3页
第3页 / 共11页
数据结构课程设计报告一.docx_第4页
第4页 / 共11页
数据结构课程设计报告一.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构课程设计报告一.docx

《数据结构课程设计报告一.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告一.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构课程设计报告一.docx

数据结构课程设计报告一

中南大学

数据结构课程设计报告

 

学生姓名:

刘江涛

学号:

0909090710

专业班级:

计科0902班

指导老师:

王国军

学院:

信息科学与工程学院

完成时间:

2011年7月7日

目录

一、实验序号实验名称3

二、班级、姓名、学号、实验日期3

三、实验目的3

四、实验内容:

3

五、实验要求:

3

六、概要设计4

七、详细设计4

八、调试分析6

九、测试结果8

十、实验心得12

一、实验序号实验名称

实验序号:

实验五

实验名称:

运动会分数统计系统

二、班级、姓名、学号、实验日期

班级:

计科0902班

姓名:

刘江涛姚启鹏

学号:

0909090710

实验日期:

2011年7月7日

三、实验目的

1.要求学生达到熟练掌握C语言的基本知识和技能。

2.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。

3.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

4.培养算法分析能力。

分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

5.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

四、实验内容:

参加运动会的n个学校编号为l~n。

比赛分成m个男子项目和w个女子项目,项目编号分别为l~m和m+1~m+w。

由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

设计一个统计程序按名次产生各种成绩单、得分报表。

五、实验要求:

1.在上机前思考程序的编写;

2.能在机器上正确运行程序;

3.用户界面清晰。

六、概要设计

1.首先,这个题目要求设计一个统计程序按名次产生各种成绩单、得分报表。

这些得分报表还要按照不同的要求按名次排序输出(比如:

按男团总分、女团总分等)。

2.其次,要求有n个学校编号为l~n参加比赛。

比赛分成m个男子项目和w个女子项目,项目编号分别为l~m和m+1~m+w。

有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

这里采用了结构体,定义头文件等先把大致结构确定。

3.再次,要求产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;均按名次排序。

这里就比较麻烦,设计到排序输出的问题,在这里我选择用冒泡排序的方法。

4.最后,是最后界面菜单问题和所用语言问题,我选择运用C++。

七、详细设计

1.首先,确定程序的大致流程,定义项目节点类型—>头结点类型—>输入函数—>输出函数—>查询函数—>主函数。

2.其次,根据题目要求学校编号,项目编号,项目所取名次(前三还是前五),获奖人姓名和所获得名次分数,都需要自己进行输入。

因此,运用宏定义先确定学校数目和男女项目个数,其次定义voidinputinformation()为输入信息函数。

用来输入各个学校各个项目前三名或前五名的成绩,结果取前三名还是前五名自己定,同时利用swith语句前三名的分数赋为5、3、2,前五名的成绩赋为7,5、3、2、1,未取得成绩则赋为0。

最后,统计团体总分,男团总分和女团总分。

3.再次,就是这个程序最关键的地方——输出。

按照题目要求这里要求输出各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

因此,定义voidoutput()为输出函数。

列出一个输出目录利用swich语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。

利用辅助数组remember[]和冒泡排序的方法使之按分数的由高到低输出。

利用循环语句dowhile()当输入2时返回输出目录,输入0是跳出循环返回主菜单。

无疑,这里如何按不同要求顺序输出是最关键的,因此在这里我采用了冒泡排序,同时利用数组remember[]来辅助进行。

4.再次,除了题目要求的任务外,另外添加了两种查询方式,分别为“按学校编号查询”和“按项目编号查询”。

因此,在这里定义voidinquiry()为查询函数。

列出一个查询目录利用swich语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得分情况或某个项目的前几名的学校。

再利用循环语句dowhile()当输入2是返回查询目录,输入0时跳出循环返回主菜单。

5.最后,为了使大家能够方便的使用各个功能,要求做一个清晰方便的菜单供大家完成各个功能。

因此,定义voidmain()是主函数。

列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。

八、调试分析

1.问题一:

显示出开始界面。

我是利用了label,在label上放上一张图片显示出来,让玩家点击然后进入到游戏中。

但是一开始图片一直显示不出来,最后不断地改,终于发现了问题的所在,原来是一句话的原因:

startPanel.setLayout(null);

这句话是设置startPanel的布局是空,然后如果添加了一个label的话,label虽然并没有正确的设置它的位置和大小,所以无法显示出label来。

去掉之后,还有一个问题,原来的图片的大小很大,1000*967,但是我的窗体的大小是600*600,显示出来的图片出现了明显的变形,很不美观,想让图片自适应大小,找了很久,终于知道怎么设置了:

image.setImage(image.getImage().getScaledInstance(600,600,Image.SCALE_DEFAULT));

这样就好了,开始界面显示就没有什么问题了。

2.问题二:

随机扑克牌的产生。

刚开始我只是利用Java的Random类对象的nextInt方法来产生四个随机数:

Randomram=newRandom();a=ram.nextInt(52)+1;

后来发现错了,四张扑克牌是不会相同的,而随机产生四个数字是有可能相同的!

想到这里我马上就去改,保证下一个产生的随机数不和前面的随机数字相同,然后就可以了。

Randomram=newRandom();

a=ram.nextInt(52)+1;//既要保证数字随机还要保证不能重复

do{

b=ram.nextInt(52)+1;

}while(a==b);

do{

c=ram.nextInt(52)+1;

}while(c==a||c==b);

do{

d=ram.nextInt(52)+1;

}while(d==a||d==b||d==c);

3.问题三:

中缀表达式转换成后缀表达式。

这里有一个很关键的问题就是判断操作符的优先级。

我是按照课件PPT中方法去做的,刚开始就在中缀表达式的末尾添加一个’#’,并让’#’入栈。

然后按顺序遍历中缀表达式,如果是数字的话,首先看后面的字符是否也是数字,根据情况(这里的数字不会超过三位数)判断,求出数值,如果是开括号的话,就直接放入到栈中。

如果是闭括号,就要不断弹出栈顶元素直到栈顶元素是开括号,然后再弹出栈顶。

如果是其他的操作符,那么就要比较栈顶元素和当前的操作符的优先级,如果栈顶元素的优先级高,就弹出栈顶,直到当前操作符的优先级高于栈顶元素的优先级。

比较操作符时,可以只考虑栈顶元素优先级高的情况。

例如当栈顶元素是’*’时,然后考虑当前操作符就可以了,它可以是’+’,’-’,’*’,’/’,如果满足其中的一个,那么久返回true,其他的同理可得。

这里刚开始遇到了不少的问题,最后都慢慢的解决了,要注意一些特殊的情况,如果当前的操作符是’#’,那么说明到了表达式的结尾,这个时候返回值就是true!

4.问题四:

四个数字的全排列。

我给这个程序提供了一个附加的功能,这个功能就是可以给玩家一些参考答案。

为了实现这个功能,我首先要做的是实现四个数字的全排列,这个问题看起来很简单,但是自己写我试了好几种方法都失败了,后来看了数据结构的书找到了,使用的是递归的方法,看了一会,觉得看懂了,然后自己写,还是失败了,输出的结果都是原来的排列,最终问题出现在递归的交换两个数字那里。

重新写了一下,没有使用交换方法并把交换的顺序好好地捋了捋,终于好了,实现了四个数字的全排列。

九、测试结果

1.程序运行时的开始界面

2.输入1之后进入输入页面。

这时可以按文字提示输入各种信息。

输入完成后按enter后,自动返回主菜单。

3.选择2进入输出页面,根据菜单提示,按不同方式输出。

(1)按学校编号输出

(2)按学校总分输出

(3)按男团总分输出

(4)按女团总分输出

输出完成后,按0退出返回主菜单。

4.查询。

分为按学校编号查询和按项目编号查询。

(1)按学校编号查询

(2)按项目编号查询

(3)如果查询的不存在,则:

(4)退出系统。

实验心得

为期一周的数据结构上机已经结束了。

在这期间我遇到了很多问题,发现自己还并不能足够的掌握这些知识,比如:

结构体的运用上感觉不是很熟悉,遇到结构体的时候很陌生,这是以后必须要加强的。

同样还遇到了一些不能很好解决的问题,在输出的时候不能得到我们想要的效果,在按学校编号排序查询输出的时候,发生了重叠在做了几次修改之后都能使之满意,这有待学习和修改。

通过这次课程设计让我明白了:

在编写之前,做整体的规划很重要,这才能让在编程的时候效率更高,编写更流畅。

同时,也让我对基础的掌握更加熟练,也更加明白基础的重要性。

总而言之,对我来说这是一次很好的机会,同时我也很好的把握了这次机会,认真的完成了此次上机的任务,对自己今后在程序编写方面相信会有很大的帮助,今后必需认真思考,全面的想问题,以达到最完美的结果。

仔细回顾数据结构的学习过程,发现其实他也并不是想象中的那么难。

数据结构的学习应该是自己不断积累的过程,这比老师给我一个“A”要强数倍,,因为这意味着我走上了积累的道路,今天我所做的一切,不仅在改变今天的生活,而且在创造我将来的生活。

可以先尝试做简单的培养自己的兴趣,当你满足了最基本的,你可以想能不能再完善一些,不断为自己提出新要求,就可以不断地去超越,人也是在不断地超越过程中逐步成长的。

我们学习的关键就是算法,也就是说数据结构的思想精髓,适当的实践与交流是必要的,可以为自己以后奠定宝贵的一笔财富。

因此,我会一步一个脚印的走下去,这样才可以达到预期的彼岸!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1