- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]数据库课程设计统计成绩
题目:统计成绩
姓名: ************
学号: ***********
班级: ***********
专业:
学院:
指导老师:*********
2011年6月14日
数据结构课程设计
一、实验题目
统计成绩:
任务:给出n个学生的考试成绩表,每条信息有姓名与分数组成,
分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;
按名次列出每个学生的姓名与分数。
要求:学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。
二、实验目的
通过本次实践实验活动加强对数据结构的掌握,以及对算法的理解能力及设计程序的能力,以实现对C语言以及C++语言的掌握,并用C语言或c++程序设计语言来编程,解决实际现实生活中的问题。理解数据结构的精髓,将现实生活中的客观事物抽象为一种具体的数据结构,并设计一种具体的算法思想步骤,解决这些客观事物所涉及到的问题。从而也使得我们更加熟练地掌握C语言及C++语言和数据结构。
三、实验内容
1. 需求分析:
在生活中,特别是在学校,我们经常要对学生的考试成绩进行处理,因此,设计一个统计学生成绩的程序是非常有用的。在此程序中,用线性表和快速排序函数实现。
算法思想如下:
建立一个存放学生信息的线性表,手动输入学生信息,将其存放在线性表中相应位置,用一个QuickSort()函数对学生成绩进行快速排序,手动控制排序方式(按科目排序,按总分排序)排序后用display()函数输出。其中需注意的是:
(1)考生成绩手动输入。
(2)分数相同名次相同。
(3)对输出格式进行控制,使输出整齐。
(4)可以对多门课程进行排名并输出。
(5)可以打印成绩。保存到文本文档。
2.概要设计:
ai的结构如下:
存储结构如下:
图1-1 存储结构
程序结构:
图1-2 程序结构图
如图,main( )函数调用了四个子函数, creat( )、QuickSort( )、place ( )、display ( )。
其中,creat( )把手动输入的学生成绩建立一个线性表。
QuickSort( )实现学生成绩的排序,它调用了一个子函数,QSort( )实现快速排序,而QSort( ) 又调用了Partition( ),枢轴函数。
dayin( )为实现打印学生成绩单的函数。
place( )用来排学生名次。
display( )用来输出排序后的学生成绩表。
函数及变量说明:
creat( )为输入学生信息函数,用来输入各个学生的学号,姓名,各科成绩,学生人数由自己定,利用for语句来输入相关信息,最后在输出所输入的学生信息。
Partition()为枢轴函数,交换顺序表L中子表stu[low..high]的记录,枢轴记录到位,并返回其 所在位置,此时在它之前(后)的记录均不大(小)于它。
void QSort()快速排序函数,此函数中调用了枢轴函数int Partition(),对顺序表L中的子序列L.stu[low..high]作快速排序。
void QuickSort( )为对数据进行排序的函数,此函数中调用了快速排序函数,对数据进行总体的排序,用在主函数中,输入信息后,对总分或者单科成绩进行排序。
void place( )为排名次函数,利用for()对每个学生名次进行定义,同时总分相同的学生名次相同。
dayin( )为实现打印学生成绩单的函数。
void display( )为输出函数,用printf对每个学生的信息进行输出,并进行格式控制,使输出对齐,其中void display2()为输出学生总分排序后的信息的函数, display1()为手动输入学生信息后输出控制格式后的学生信息的函数,display2()为总分排序时输出函数,较void display1()多了总分名次一项。 display3()为单科排序时输出函数,较void display2()多了单科名次一项。其中关于格式的控制,如输出函数的一部分printf(%12s %10s %6d %6d %6d\n,中的“%12s”要求输出宽度为若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。main( )为主函数,其中定义了一个新的线性表,调用函数进行学生信息的创建及分数排序,利用switch语句调用以上函数实现各个菜单的功能。
程序流程图:
3. 详细设计:
主函数:
#includestdio.h
#includestdlib.h
#define maxsize 200 //maxsize为学生最大个数
#includec8-2.h // 对两个数值型关键字比较的约定
#includec1.h//
typedef double KeyType;//定义
文档评论(0)