《数据结构》课程设计报告 这里填设计的题目 学院(系): 班 级: 学生姓名: 学号 指导教师: 时间:
1
从2011年12月31日 到2012年1月 6日 一、课程设计概述:
本次数据结构课程设计共完成三个题:一元稀疏矩阵多项式计算器、稀疏矩阵的操作、Josephu问题。
使用语言:C 编译环境:TC3.0 / VC6.0
二、课程设计题目一 [实验内容]
成绩分析文档资料
[问题描述] 录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。 [需求分析]
1.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat 2.对文件input.dat中的数据进行处理,要求具有如下功能: a.按各门课程成绩排序,并生成相应的文件输出 b.计算每人的平均成绩,按平均成绩排序,并生成文件 c.求出各门课程的平均成绩、最高分、最低分、不及格人数、 60-69分人数、70-79分人数、80-89分人数、90分以上人数
d.根据姓名或学号查询某人的各门课成绩,重名也要能处理
3.界面美观 [概要设计]
-=ADT=-
{
Status CreateList(DataRecond* DR, int n); //创建成绩表
Status SortScore(DataRecond* DR,int n); //按各科成绩排序并存于文件
Status Partition(KeyWord* RL, int low, int high); //快速排序的第一趟
Status QSort(KeyWord* RL, int low, int high); //快速排序
Status QuickSort(KeyWord* RL,int n); //快速排序
2
Status EveryAvageScore(DataRecond* DR, int n); //计算每科平均成绩
Status CaluAverage(int *temp, int n); //计算平均成绩
Status ScoreProcess(DataRecond* DR); //成绩处理
Status MaxScore(int *temp, int n); //求最大分数
Status MinScore(int *temp, int n); //求最小分数
Status ScoreSegment(DataRecond* DR); //求分数段
Status Process(int *temp,int n); //主处理函数
Status NameQuery(DataRecond* DR); //按名字查找
Status NoQuery(DataRecond* DR); //按学号查找 )
[存储结构]
typedef struct Recond //记录类型 { unsigned int No; //学号 char name[10]; //姓名 unsigned int Math; //数学成绩 unsigned int English; //英语成绩
unsigned int Computer; //计算机成绩
}StuReco;
typedef struct DataRecond //成绩表类型
{ 3
StuReco *StuArray; unsigned int size;
}DataRecond;
typedef struct KeyWord //关键字类型 {
int cord; int score;
}KeyWord;
[流程图]
int Partition(KeyWord* RL, int low, int high) //快速排序第一趟
用第一个记录做枢轴记录; while (low [详细设计] ——源程序清单(重要程序段和其重要变量的说明) [调试分析] 本程序主要的操作对象是记录数组,使用的存储结构是结构体数组。另外还有对C语言中关于文件的操作,这是本程序中的一个重点也是难点,是此程序出现问题的主要原因之一: 问题一: 现象:输出的成绩不是正确的数字,而是一些类似于地址值的数字。 原因:程序中对各数组的下标操作不统一。因为程序要分别对三个科目的成绩进行统计,高端记录下移; 所以程序中就要有一个临时数组来存放成绩值,然而在将学科成绩存放在临时数组的过程中如果出现了下标不统一的情况,即在原记录数组中是1…n号元素存放数据,在临时数组中却是0…n-1号元素存放数据。就会引起程序的错误。解决的方法是将整个程序中相互有关的数组使用统一的下标存放数据,就可以避免这种问题。 4 问题二: 现象:这是一个关于文件操作的问题。在将记录存入文件以后再从文件中读取时就出现原因:在使用fwrite和fread命令的时候函数的参数没有写正确。fwrite和fread 命令的错误。 第一个参数是存储数据的首地址,如果没有地址没有正确,那么就不能正常地将数据存到文件中也不能正常地读取。 [运行结果及分析] ——从屏幕上截图,说明运行结果,并分析是否正确,正确的原因 三、参考文献: [1].《C程序设计》第二版,谭浩强著。北京:清华大学出版社,2004年。 [2].《数据结构》 严蔚敏、吴伟民。北京:清华大学出版社,2005年。 5

