1、山东建筑大学数据结构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问
2、题。使用语言:C编译环境:vc6.0二、课程设计题目一成绩分析文档资料问题描述录入、保留一个班级学生多门课程成绩,并对成绩进行分析。需求分析1.经过键盘输入各学生多门课程成绩,建立对应文件input.dat2.对文件input.dat中数据进行处理,要求含有以下功效:a.按各门课程成绩排序,并生成对应文件输出b.计算每人平均成绩,按平均成绩排序,并生成文件c.求出各门课程平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、8089分人数、90分以上人数d.依据姓名或学号查询某人各门课成绩,重名也要能处理3.界面美观概要设计-=ADT=-Status CreateList(Da
3、taRecond* 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
4、(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);/按学号
5、查找) 存放结构typedef struct Recond/统计类型unsigned int No;/学号char name10; /姓名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 Part
6、ition(KeyWord* RL, int low, int high) /快速排序第一趟用第一个统计做枢轴统计;while (lowhigh)while(low=keypivot)-high;高端统计下移;while (lowhigh & RLlow.score=keypivot)+low;低端统计上移;将枢轴放到合适位置return low;具体设计 源程序清单调试分析本程序关键操作对象是统计数组,使用存放结构是结构体数组。另外还有对C语言中相关文件操作,这是本程序中一个关键也是难点,是此程序出现问题关键原因之一:问题一:现象:输出成绩不是正确数字,而是部分类似于地址值数字。原因:程序中
7、对各数组下标操作不统一。因为程序要分别对三个科目标成绩进行统计,所以程序中就要有一个临时数组来存放成绩值,然而在将学科成绩存放在临时数组过程中假如出现了下标不统一情况,即在原统计数组中是1n号元素存放数据,在临时数组中却是0n-1号元素存放数据。就会引发程序错误。处理方法是将整个程序中相互相关数组使用统一下标存放数据,就能够避免这种问题。问题二:现象:这是一个相关文件操作问题。在将统计存入文件以后再从文件中读取时就出现错误。原因:在使用fwrite和fread命令时候函数参数没有写正确。fwrite和fread 命令第一个参数是存放数据首地址,假如没有地址没有正确,那么就不能正常地将数据存到文
8、件中也不能正常地读取。运行结果及分析从屏幕上截图,说明运行结果,并分析是否正确,正确原因三、课程设计题目二成绩分析文档资料问题描述录入、保留一个班级学生多门课程成绩,并对成绩进行分析。需求分析1.经过键盘输入各学生多门课程成绩,建立对应文件input.dat2.对文件input.dat中数据进行处理,要求含有以下功效:a.按各门课程成绩排序,并生成对应文件输出b.计算每人平均成绩,按平均成绩排序,并生成文件c.求出各门课程平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、8089分人数、90分以上人数d.依据姓名或学号查询某人各门课成绩,重名也要能处理3.界面美观概要设计-
9、=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);/
10、计算每科平均成绩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 No
11、Query(DataRecond* DR);/按学号查找) 存放结构typedef struct Recond/统计类型unsigned int No;/学号char name10; /姓名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
12、 score;KeyWord;步骤图int Partition(KeyWord* RL, int low, int high) /快速排序第一趟用第一个统计做枢轴统计;while (lowhigh)while(low=keypivot)-high;高端统计下移;while (lowhigh & RLlow.score=keypivot)+low;低端统计上移;将枢轴放到合适位置return low;具体设计 源程序清单调试分析本程序关键操作对象是统计数组,使用存放结构是结构体数组。另外还有对C语言中相关文件操作,这是本程序中一个关键也是难点,是此程序出现问题关键原因之一:问题一:现象:输出成绩
13、不是正确数字,而是部分类似于地址值数字。原因:程序中对各数组下标操作不统一。因为程序要分别对三个科目标成绩进行统计,所以程序中就要有一个临时数组来存放成绩值,然而在将学科成绩存放在临时数组过程中假如出现了下标不统一情况,即在原统计数组中是1n号元素存放数据,在临时数组中却是0n-1号元素存放数据。就会引发程序错误。处理方法是将整个程序中相互相关数组使用统一下标存放数据,就能够避免这种问题。问题二:现象:这是一个相关文件操作问题。在将统计存入文件以后再从文件中读取时就出现错误。原因:在使用fwrite和fread命令时候函数参数没有写正确。fwrite和fread 命令第一个参数是存放数据首地址,假如没有地址没有正确,那么就不能正常地将数据存到文件中也不能正常地读取。运行结果及分析从屏幕上截图,说明运行结果,并分析是否正确,正确原因四、参考文件:1.C程序设计第二版,谭浩强著。北京:清华大学出版社,。2.数据结构 严蔚敏、吴伟民。北京:清华大学出版社,。