资源描述
山东建筑大学
数据结构A课程设计结果汇报
题 目: 1.
2.
课 程: 数据结构A课程设计
院 (部): 管理工程学院
专 业: 信息管理和信息系统
班 级: 信管102
学生姓名: 张凤丹
学 号: 021418
指导老师: 陈 兆 柱
完成日期: 1月6日
课程设计汇报目录
一、课程设计概述: 3
二、课程设计题目一 3
[问题描述] 3
[概要设计] 3
[存放结构] 4
[步骤图] 5
[具体设计] 5
[调试分析] 5
[运行结果及分析] 6
三、课程设计题目二 6
[问题描述] 6
[需求分析] 6
[概要设计] 7
[存放结构] 8
[步骤图] 8
[具体设计] 9
[调试分析] 9
[运行结果及分析] 9
四、参考文件: 9
一、课程设计概述:
此次数据结构课程设计共完成三个题:一元稀疏矩阵多项式计算器、稀疏矩阵操作、Josephu问题。
使用语言:C
编译环境: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);
//快速排序
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 //成绩表类型
{
StuReco *StuArray;
unsigned int size;
}DataRecond;
typedef struct KeyWord //关键字类型
{
int cord;
int score;
}KeyWord;
[步骤图]
int Partition(KeyWord* RL, int low, int high) //快速排序第一趟
用第一个统计做枢轴统计;
while (low<high)
while(low<high&& RL[high].score>=keypivot)
--high;
高端统计下移;
while (low<high && RL[low].score<=keypivot)
++low;
低端统计上移;
将枢轴放到合适位置
return low;
[具体设计]
——源程序清单
[调试分析]
本程序关键操作对象是统计数组,使用存放结构是结构体数组。另外还有对C语言中相关文件操作,这是本程序中一个关键也是难点,是此程序出现问题关键原因之一:
问题一:
现象:输出成绩不是正确数字,而是部分类似于地址值数字。
原因:程序中对各数组下标操作不统一。因为程序要分别对三个科目标成绩进行统计,所以程序中就要有一个临时数组来存放成绩值,然而在将学科成绩存放在临时数组过程中假如出现了下标不统一情况,即在原统计数组中是1…n号元素存放数据,在临时数组中却是0…n-1号元素存放数据。就会引发程序错误。处理方法是将整个程序中相互相关数组使用统一下标存放数据,就能够避免这种问题。
问题二:
现象:这是一个相关文件操作问题。在将统计存入文件以后再从文件中读取时就出现错误。
原因:在使用fwrite和fread命令时候函数参数没有写正确。fwrite和fread 命令第一个参数是存放数据首地址,假如没有地址没有正确,那么就不能正常地将数据存到文件中也不能正常地读取。
[运行结果及分析]
——从屏幕上截图,说明运行结果,并分析是否正确,正确原因
三、课程设计题目二
成绩分析文档资料
[问题描述]
录入、保留一个班级学生多门课程成绩,并对成绩进行分析。
[需求分析]
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);
//快速排序
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 //成绩表类型
{
StuReco *StuArray;
unsigned int size;
}DataRecond;
typedef struct KeyWord //关键字类型
{
int cord;
int score;
}KeyWord;
[步骤图]
int Partition(KeyWord* RL, int low, int high) //快速排序第一趟
用第一个统计做枢轴统计;
while (low<high)
while(low<high&& RL[high].score>=keypivot)
--high;
高端统计下移;
while (low<high && RL[low].score<=keypivot)
++low;
低端统计上移;
将枢轴放到合适位置
return low;
[具体设计]
——源程序清单
[调试分析]
本程序关键操作对象是统计数组,使用存放结构是结构体数组。另外还有对C语言中相关文件操作,这是本程序中一个关键也是难点,是此程序出现问题关键原因之一:
问题一:
现象:输出成绩不是正确数字,而是部分类似于地址值数字。
原因:程序中对各数组下标操作不统一。因为程序要分别对三个科目标成绩进行统计,所以程序中就要有一个临时数组来存放成绩值,然而在将学科成绩存放在临时数组过程中假如出现了下标不统一情况,即在原统计数组中是1…n号元素存放数据,在临时数组中却是0…n-1号元素存放数据。就会引发程序错误。处理方法是将整个程序中相互相关数组使用统一下标存放数据,就能够避免这种问题。
问题二:
现象:这是一个相关文件操作问题。在将统计存入文件以后再从文件中读取时就出现错误。
原因:在使用fwrite和fread命令时候函数参数没有写正确。fwrite和fread 命令第一个参数是存放数据首地址,假如没有地址没有正确,那么就不能正常地将数据存到文件中也不能正常地读取。
[运行结果及分析]
——从屏幕上截图,说明运行结果,并分析是否正确,正确原因
四、参考文件:
[1].《C程序设计》第二版,谭浩强著。北京:清华大学出版社,。
[2].《数据结构》 严蔚敏、吴伟民。北京:清华大学出版社,。
展开阅读全文