计算机544数据结构课设报告_第1页
计算机544数据结构课设报告_第2页
计算机544数据结构课设报告_第3页
计算机544数据结构课设报告_第4页
计算机544数据结构课设报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 报 告课程名称 数据结构课程设计 课题名称 成绩分析问题 专 业 计算机科学与技术 班 级 计算机0803 学 号 姓 名 指导教师 2010年 9月 10 日课 程 设 计 任 务 书课程名称 数据结构课程设计 课 题 成绩分析问题 专业班级 计算机0803 学生姓名 学 号 指导老师 审 批 任务书下达日期: 2010 年 9 月 10 日任务完成日期: 2010 年 9 月 24 日一、设计内容与设计要求1设计内容:1)问题描述录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。2)基本要求a.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。b.

2、对文件input.dat中的数据进行处理,要求具有如下功能:l 按各门课程成绩排序,并生成相应的文件输出。l 计算每人的平均成绩,按平均成绩排序,并生成文件。l 求出各门课程的平均成绩、最高分、最低分、不及格人数、60-69分人数、70-79分人数、80-89分人数、90分以上人数。l 根据姓名或学号查询某人的各门课成绩,重名情况也能处理。c.界面美观。3)测试数据测试数据如下表所示:学号姓名高等数学英语计算机导论001张磊807390002王鹏766970003黎明607869004刘鹏556660005李四787080006张佳435060007赵平898579008高洁9089702设计

3、要求:l 课程设计报告规范1)需求分析a.程序的功能。b.输入输出的要求。2)概要设计a. 程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。b. 课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3)详细设计a.采用C语言定义相关的数据类型。b.写出各模块的类C码算法。c.画出各函数的调用关系图、主要函数的流程图。4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。b.程序调试中遇到的问题以及解决问题的方法。c.课程设计过程经验教训、心得体会。5)使用说

4、明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。6)书写格式见附带说明。7)附录a.参考书目b.源程序清单(带注释)l 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: 平时出勤 (占10%) 系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) 程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) 设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。

5、 独立完成情况(占10%)。l 课程验收要求 运行所设计的系统。 回答有关问题。 提交课程设计报告。 提交软盘(源程序、设计报告文档)。 依内容的创新程度,完善程序情况及对程序讲解情况打分。二、进度安排第2周星期一星期二星期三星期四星期五星期六星期日上午8:0012:00下午13:3017:30晚上18:0020:00第3周星期一星期二星期三星期四星期五星期六星期日上午8:0012:00下午13:3017:30晚上18:0020:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号

6、宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。 目录一课题的主要功能7二功能模块的划分8三主要功能的实现9四.程序调试11五.总结14六附件15一 课题的主要功能本课题的主要功能是实现学生成绩的分析,成绩的分析包括以下几个方面:a.对成绩的统计;b.学生对自己成绩的查询,其中查询有两种方式按名字查询和按姓名查询(其中按姓名的查找考虑了同名的情况,如果同名就会出现友情提

7、示,按学号查找),c.对某一门成绩的平均成绩的查询,可以分开查几门课的平均。d.对学生的某一门成绩的排序,而且可以按这一门成绩的分数,从高到低的顺序输出各个学生的每门成绩和平均成绩。最后就是退出的功能。此系统主要是针对学生的成绩的分析,查询,以及班级成绩的分析,只要运行一次,第一次输入的数据就会以文件的方式保存在电脑的硬盘里面,下次运行的时候就不用输入数据而可以直接可以利用这些数据。该系统每个功能都是由我们根据菜单的提示,提示我们输入功能选项,输入某一项就会通过内在的函数调用实现相应的功能。为了方便,该程序成绩以及其他用到的数据都是整型的。二 功能模块的划分 三 主要功能的实现成绩分析系统中主

8、要的用到的有两个结构体,一个是node,另一个是md,而且这两个结构体有密切的关系,md结构体的一个数据成员就是node类型的数据,该系统的我采用程序的头文件的方式,将各个功能模块包括在一个头文件里面,所以次系统的功能模块的层次非常的清晰。下面我来一一介绍一下划分的主要的功能模块:其中主菜单放在source文件里面,里面还包含了#include define.h #include creat.h #include sort.h #include find.h #include tongji.h各个功能模块用以实现不同的功能。主函数在这个文件里面,所以每次运行的时候都要从这个文件开始,在主函数里

9、面有个判数据文件的存在的函数,如果数据文件不存在就会调用creat函数来创建一个md类型的结构体数据,否则就直接可以读写保存的数据文件的数据,并且将它赋值给一个md类型数组以提供利用,主函数里面有一循环用来显示主菜单,用来提供功能的选择,没选择一个功能就会调用对应的功能函数,以用来实现对应的功能。 define.h文件作用是将一些用到的数据将以定义。sort.h主要用来对英语、数学和计算机单门成绩的排序,并且将这些同学的成绩都以这门成绩的排序显示在屏幕上,这个文件里面有要到了fun1和sort函数,fun1的作用是功能的选择你选择哪一门成绩的排序。Sort函数就是将前面所选择的功能实现,它的主

10、要作用就针对你选择的科目进行排序,而且在sort的函数里面调用了disp函数,目的是将排好序的成绩显示在屏幕上。creat.h用途是假如你是第一次在难的电脑上运行程序或者要在屏幕上显示数据时就要调用这个文件。在这个文件里面调用了两个函数creat函数和disp函数,creat函数就是要创建md类型的数据类型时就调用它,而disp函数顾名思义就是用来显示数据用的。find.h主要用来查找学生的成绩和对班级某一门课的平均成绩的统计。在find.h文件中用到了fun2、fun3、find_nu、find_na,下面我对每个函数的功能一一进行分析。fun2就是对某个班级的某门成绩的平均成绩的统计,并且

11、直接在屏幕上显示出来,fun3中有个while循环,它主要作用是显示查找的主菜单,也就是说提示你选择查找的方式,如:按姓名查找、按学号查找,并针对选择的功能不同可以调用不同的函数,以实现我们想要的功能。例如你选择按学号查找就会调用find_nu函数果选择按姓名查找那么就会调用find_na函数,如果有同名的同学那么就会出现友情提示。系统会告诉你按学号查找,从而调用find_nu函数。最后tongji.h文件的功能是对某一门课的成绩的不同分数段的同学进行统计,其中tongji的功能就是现实统计对象的主菜单,用来选择不同的统计对象,如果选择的对象不同那么传递给tongji1 的函数的实参就会不同,

12、从而实现对不同的科目成绩的统计。流程图开始Access()=1NoCreat()输入数据判断selectSelect=1fun1()select=2fun2()select=5select=3fun3()select=4tongji()退出系统输入select的值sort()参数不同功能不同不同输入select值根据输入不同计算出各门课均值输入select判断selectselect=1find_nu()select=2find_na()输入selecttongji()参数不同对不同科目成绩统计四.程序调试a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输

13、出结果。b.程序调试中遇到的问题以及解决问题的方法。c.课程设计过程经验教训、心得体会。程序的调试的数据如下:五.总结 六附件源程序:/主程序#include #include #include #include #include define.h#include creat.h#include sort.h#include find.h#include tongji.hvoid main() md h;int select; FILE *fp; if( (_access( E:data.txt, 0 ) != -1 ) if(fp=fopen(E:data.txt,r)!=NULL) cha

14、r seps= ,; char line1000; char *yong; int i=1,j=1; fgets(line,1000,fp); yong=strtok(line,seps); while( yong != NULL ) if(j%5=1) h.stui.number=atoi(yong); if(j%5=2) 1=atoi(yong); if(j%5=3) 2=atoi(yong); if(j%5=4) 3=atoi(yong); if(j%5=0) strcpy(,yong); i+; j+;

15、h.num=i-1; yong = strtok( NULL, seps ); else h=creat();doprintf(*n);printf(1. 排序 n);printf(2. 班级平均成绩 n);printf(3. 查找 n);printf(4. 成绩的统计n);printf(5. 退出 n); printf(*n);printf(请选择功能(1-5):n);scanf(%d,&select);if(select=5)printf(OK! n);exit(0);if(select=1) fun1(h);if(select=2) fun2(h);if(select=3) fun3(h

16、);if(select=4) tongji(h);while(1);/“define.h”文件#define maxsize1 100#define maxsize2 10typedef struct int number;char namemaxsize1; int pro5; node;typedef struct node stumaxsize2;int num;md;/creat.h 文件md creat()FILE *fp;md a;int i;printf(输入学生的人数:);scanf(%d,&a.num);if(fp=fopen(E:data.txt,w)!=NULL)for(

17、i=1;i=a.num;i+)printf(请输入第%d个学生的 学号 ,名字:,i);scanf(%d%s,&a.stui.number,&);printf(请输入第%d个 数学成绩,英语成绩,电脑成绩:,i);scanf(%d%d%d,&1,&2,&3); fprintf(fp,%d,%d,%d,%d,%s,a.stui.number,1, 2,3,);elseprintf(文件打不开!);exit(0);fclose(fp);

18、return a;void disp(md a)int i;for(i=1;i=a.num;i+)printf(学号 : %d,名字:%s,数学成绩:%d,英语成绩:%d,电脑成绩:%d,平均成绩:%dn,a.stui.number,,1,2,3,4);printf(n);/find.h文件void fun2(md a)int select,i,tatal;do printf(*n);printf(1. 班级的数学成绩 n);printf(2. 班级的英语成绩 n); printf(3. 班级

19、的电脑成绩 n); printf(4. 返回 n); printf(*n);printf(请选择功能(1-4):n);scanf(%d,&select);if(select=4)return ;else tatal=0;for(i=1;i=a.num;i+)tatal+=select;printf(班级平均成绩:%d n,tatal/a.num);while(1);void find_nu(md a,int b)int i;for(i=1;i=a.num;i+)if(a.stui.number=b) printf(名字:%s,数学成绩:%d,英语成绩:%d,电脑成绩:%d

20、n,,1,2,3);return;void find_na(md a,char ch)int i,j=0,x;for(i=1;i1)printf(友情提示,有重名字的情况!n); printf( 输入学号:);scanf(%d,&x);find_nu(a,x);elsefor(i=1;ia.num;i+) printf(学号 :%d,数学成绩:%d,英语成绩:%d,电脑成绩:%d n,a.stui.number,1,2,3 ); return;void

21、fun3(md a)int x,select;char chmaxsize1;doprintf(*n);printf(1. 按学号查找 n);printf(2. 按姓名查找 n);printf(3. 返回 n);printf(*n);printf(4. 请选择功能(1-3)n);scanf(%d,&select);if(select=3) return;else if(select=1)printf( 输入学号:);scanf(%d,&x);find_nu(a,x);elseprintf(输入名字: );scanf(%s,ch);find_na(a,ch);while(1);/tongji.h

22、文件void sort(md a,int m)int i,j,max;node temp;for(i=1;ia.num;i+)max=i;for(j=i+1;m)max=j;if(max!=i)temp=a.stumax;a.stumax=a.stui;a.stui=temp;disp(a);void fun1(md a)int select ,i;for(i=1;i=a.num;i+)4=(1+2+3)/3;doprintf(*n);printf(1. 数学成绩排序 n);printf(2. 英语成绩排序 n);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论