数据结构课程设计——成绩管理系统 精品.doc_第1页
数据结构课程设计——成绩管理系统 精品.doc_第2页
数据结构课程设计——成绩管理系统 精品.doc_第3页
数据结构课程设计——成绩管理系统 精品.doc_第4页
数据结构课程设计——成绩管理系统 精品.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

课程设计报告课题名称: 成绩管理系统的设计 目 录 第1部分 课程设计报告3第1章 课程设计目的3第2章 课程设计内容和要求42.1 问题描述42.2 设计要求4第3章 课程设计总体方案及分析43.1 问题分析43.2 概要设计53.3 模块结构图63.4 流程图63.5 详细设计63.6 调试分析83.7 测试结果83.8 参考文献10第2部分 课程设计总结10附录(源代码)12第1部分 课程设计报告第1章 课程设计目的数据结构作为一门计算机专业必修的学科之一,主要研究数据的各种逻辑结构和存储结构,以及对数据的各种基本操作。一般来说,大体上可以分为三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。作为计算机专业的学生,我们应该很好的掌握这门技术。在课堂上,我们学到的只是理论知识,很少有过自己动手实践的机会。那么,课程设计就是为解决这个问题的一个很好平台。 数据结构这门课具有比较强的理论性,同时也具有较强的实践性。其中课程设计就是是一个重要的教学环节。通过课程设计,我们需要达到以下目的: 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力,并进一步学习 和掌握C语言基础、数据结构算法基础; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 通过上机操作和调试程序,培养用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;第2章 课程设计内容和要求2.1问题描述: 学生成绩管理系统是学校教务管理的重要组成部分,处理信息量很大。该题目是对学生的成绩管理做简单的模拟,其中学生信息包括学号、姓名与成绩。成绩分为课程1成绩、课程2成绩、课程3成绩、课程4成绩和总成绩及平均成绩。另外还需统计出成绩优秀的学生人数。该成绩管理系统要求可以登记学生成绩、查询学生成绩、插入学生成绩、删除学生成绩等功能。2.2设计要求:1. 用链表实现应用系统,完成链表的建立以及链表中信息的插入、删除、查找、修改、输出等操作。2.建立学生成绩单链表,链表中每个节点由五个域组成,分别是学号、姓名、性别、成绩、存放下一个结点地址的next域。3. 通过菜单选择操作方式完成以下功能:(1) 登记学生成绩;(2) 查询学生成绩;(3) 插入学生成绩;(4) 删除学生成绩;(5) 输出学生成绩;(6) 统计优秀学生人数; 第3章 课程设计总体方案及分析3.1 问题分析:该题目涉及到单链表的各种操作,包括单链表的建立,结点的查找、插入、删除等基本运算。首先建立学生成绩单链表,链表中每个节点由五个域组成,分别是学号、姓名、性别、成绩、存放下一个结点地址的next域。然后将要求完成的各项功能写成函数,登记学生成绩对应建立单链表的功能。由于该系统处理的信息量大,采用单链表的形式容易处理插入、删除学生信息,故采用单链表来存储学生信息,用结构体类型定义每个学生记录,这样单链表中每个结点可描述为:typedef struct Nodeint num;char nameMALLEN;char sex20int score1;int score2;int score3;int score4;int total;double average;struct Node *next;Node;3.2 概要设计本项目的模块结构如图。图中方块表示函数,方块中指出函数名,箭头表示函数间的调用关系,虚线表示文件的组成。学生成绩管理系统程序包含以下函数:(1) Node *create(Node *h,int n):创建学生成绩信息表。(2) void find(Node *h):查找学生成绩。(3) void insert(Node *h):插入学生信息。(4) void shanchu(Node *h):删除学生信息。(5) void youxiu(Node *p):统计优秀学生人数。(6) void output(Node *h):输出全部学生信息。 3.3 模块结构图: 图3.3.13.4 流程图图3.4.13.5 详细设计1. 创建学生成绩信息表Node *create(Node *h,int n)Node *p,*r;int i;h=(Node *)malloc(sizeof(Node);h-next=NULL;r=h;for(i=1;inext;q=(Node *)malloc(sizeof(Node);printf(请输入插入学生的学号:);scanf(%d,&q-num);printf(请输入学生的姓名:);scanf(%s,q-name);printf(请输入学生的第1门成绩:);scanf(%d,&q-score1);printf(请输入学生的第2门成绩:);scanf(%d,&q-score2);printf(请输入学生的第3门成绩:);scanf(%d,&q-score3);printf(请输入学生的第4门成绩:);scanf(%d,&q-score4);q-total=q-score1+q-score2+q-score3+q-score4;q-average=q-total/4;q-next=NULL;while(p!=NULL)r=p;p=p-next;/whiler-next=q;/r=r-next;/insert3. 查找学生成绩:void find(Node *h)4.删除学生信息:void shanchu(Node *h) 5. 统计优秀学生人数:void yoxiu(Node *p)6.输出全部学生信息:void output(Node *h)注:具体源代码见附录3.6 调试分析 (1) 开始执行程序,系统创建链表,进入输出的选择界面; (2)按需要进行的操作选择输入相应的选项,系统执行输入的字符命令; (3)输出相应的数据; (4)测试无误,完成测试;3.7 测试结果1. 首先,进入成绩管理系统的界面 图3.7.1 2.输入“1”,进入成绩登记界面,登记成绩 .图3.7.2 3.输入“5”,输出所有所登记学生的成绩及平均成绩 图3.7.3 4.输入“6”,输出优秀学生总人数及其各自的信息 图3.7.4 5.输入“2”,查询学生成绩 图3.7.5 6.输入“3”,插入学生成绩 图3.7.6 7.,输入“4”,删除学生成绩 图3.7.7 第2部分 课程设计总结为了备考4级,花了大量的时间复习,本想说终于松了一口气。但回想了一下,16周还有更重的任务,数据结构课程设计及考试、信号与系统测试等。所以,考完4级后我立马转身把时间投入到课程设计中。整个过程花了一周多的时间才完成。回想过去的一周,当我看到题目的时候,一头雾水,什么都不懂,回想往事,忙于学生会工作、班级工作等我忽视了学习这一块,也就在此时我认识到了学习刻不容缓的真实性。看不懂怎么办?我去了图书馆找资料,学校的图书是多,但关于数据结构这一块,虽然书不算少,但自我感觉对本次课程设计有用的不多,而且还是很旧的。在图书馆找了许久,终于找到了我设计的源泉数据结构实验与实训教程(国防工业出版社),从此开始了我的数据结构课程设计之路。我的C语言基础不好,兴趣也不在程序这一块,所以刚开始的时候有很大的难度,在这里,我不得不感谢大三计Y的一个学长和跟我同在一个学生会部门同届计Y的一个同学。他们给予了我很大的帮助,也就是在他们的帮助,我顺利地做好了课程设计,当然,最重要的是我的不懈努力。 通过本次的课程设计,我进一步学习和掌握了C语言、数据结构的基础知识和理论,各方面都有了一定的收获。尤其是C语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。在理论学习和上机实践的各个环节中,通过自主学习和请教学长及同学,我收获了不少。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收获。在这段时间里,我对for、while等的循环函数用法更加熟悉,逐渐形成了较好的编程习惯。在学长的指导帮助下,同学们课余时间的讨论中,这些问题都一一得到了解决。在程序的调试能力上,无形中得到了许多的提高。例如:头文件的使用,变量和数组的范围问题,定义变量时出现的问题等等。在实际的上机操作过程中,不仅是让我们了解数据结构的理论知识,更重要的是培养解决实际问题的能力,所以相信通过此次课程设计可以提高我们分析设计能力和编程能力,为后续课程的学习及实践打下良好的基础。在这次短短的课程实践里,我就清楚的认识到实践是检验真理的正确性,我学会了如何解决现实问题,如何将理论知识应用到实际问题上。总的来说,我认为课程设计很有必要,也很重要。附 录/ 成绩管理系统2.cpp : 定义控制台应用程序的入口点。/#include stdafx.h/ 成绩系统.cpp : 定义控制台应用程序的入口点。/#include#include#include#define MAXLEN 100#define NULL 0typedef struct Nodeint num;char nameMAXLEN;char sex20;int score1;int score2;int score3;int score4;int total;double average ;struct Node *next;Node;/*创建学生成绩信息表*/Node *create(Node *h,int n)Node *p,*r;int i;h=(Node *)malloc(sizeof(Node);h-next=NULL;r=h;for(i=1;inum);printf(请输入学生的姓名:);scanf(%s,p-name);printf(请输入学生的性别:);scanf(%s,p-sex);printf(请输入学生的第1门成绩:);scanf(%d,&p-score1);printf(请输入学生的第2门成绩:);scanf(%d,&p-score2);printf(请输入学生的第3门成绩:);scanf(%d,&p-score3);printf(请输入学生的第4门成绩:);scanf(%d,&p-score4);p-total=p-score1+p-score2+p-score3+p-score4;p-average=1.0*p-total/4;p-next=NULL;r-next=p;r=r-next;/forreturn h;/createvoid add(Node *h)Node *p,*q,*r;/r=h;p=h-next;q=(Node *)malloc(sizeof(Node);printf(请输入插入学生的学号:);scanf(%d,&q-num);printf(请输入学生的姓名:);scanf(%s,q-name);printf(请输入学生的性别:);scanf(%s,q-sex);printf(请输入学生的第1门成绩:);scanf(%d,&q-score1);printf(请输入学生的第2门成绩:);scanf(%d,&q-score2);printf(请输入学生的第3门成绩:);scanf(%d,&q-score3);printf(请输入学生的第4门成绩:);scanf(%d,&q-score4);q-total=q-score1+q-score2+q-score3+q-score4;q-average=1.0*q-total/4;q-next=NULL;while(p!=NULL)r=p;p=p-next;/whiler-next=q;/r=r-next;/addvoid find(Node *h)int k;Node *p;p=h-next;printf(请输入要查找学生的学号:n);scanf(%d,&k);while(p&p-num!=k)p=p-next;if(p)printf(学号t姓名t性别t成绩1t成绩2t成绩3t成绩4t总成绩t平均成绩n);printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,p-num,p-name,p-sex,p-score1,p-score2,p-score3,p-score4,p-total,p-average);/ifelseprintf(没找到!n);/findvoid Delete(Node *h)int k;Node *p,*q;q=h;p=h-next;printf(请输入待删除学生的学号:);scanf(%d,&k);while(p&p-num!=k)q=p;p=p-next;/whileif(p)q-next=p-next;free(p);elseprintf(该学生信息不存在,无法删除!n);/Deletevoid List(Node *h)Node *p;p=h-next;printf(学号t姓名t性别t成绩1t成绩2t成绩3t成绩4t总成绩t平均成绩n);while(p!=NULL)printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,p-num,p-name,p-sex,p-score1,p-score2,p-score3,p-score4,p-total,p-average);p=p-next;/Listvoid youxiu(Node *p)Node *q=p-next ;int n=0;while(q!=NULL)if(q-average =90)n+;q=q-next;q=p;printf(优秀学生总数:%dn,n); printf(优秀学生详细信息如下:n); printf(学号t姓名t性别t成绩1t成绩2t成绩3t成绩4t总成绩t平均成绩n); while(q!=NULL) if(q-average =90)printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,q-num,q-name,q-sex,q-scor

温馨提示

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

评论

0/150

提交评论