数据结构课程设计——成绩管理系统.doc

上传人:仙人指路1688 文档编号:2396753 上传时间:2023-02-17 格式:DOC 页数:18 大小:560.50KB
返回 下载 相关 举报
数据结构课程设计——成绩管理系统.doc_第1页
第1页 / 共18页
数据结构课程设计——成绩管理系统.doc_第2页
第2页 / 共18页
数据结构课程设计——成绩管理系统.doc_第3页
第3页 / 共18页
数据结构课程设计——成绩管理系统.doc_第4页
第4页 / 共18页
数据结构课程设计——成绩管理系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数据结构课程设计——成绩管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计——成绩管理系统.doc(18页珍藏版)》请在三一办公上搜索。

1、Guangxi University of Science and Technology课程设计报告课程名称: 数据结构 课题名称: 成绩管理系统的设计 姓 名: 王永源 学 号: 院 系: 计算机学院 专业班级: 通信121 指导教师: 完成日期: 2013年12月15日 目 录 第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附

2、录(源代码)12第1部分 课程设计报告第1章 课程设计目的数据结构作为一门计算机专业必修的学科之一,主要研究数据的各种逻辑结构和存储结构,以及对数据的各种基本操作。一般来说,大体上可以分为三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。作为计算机专业的学生,我们应该很好的掌握这门技术。在课堂上,我们学到的只是理论知识,很少有过自己动手实践的机会。那么,课程

3、设计就是为解决这个问题的一个很好平台。 数据结构这门课具有比较强的理论性,同时也具有较强的实践性。其中课程设计就是是一个重要的教学环节。通过课程设计,我们需要达到以下目的: 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力,并进一步学习 和掌握C语言基础、数据结构算法基础; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 通过上机操作和调试程序,培养用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统

4、软件具有关键性作用; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;第2章 课程设计内容和要求2.1问题描述: 学生成绩管理系统是学校教务管理的重要组成部分,处理信息量很大。该题目是对学生的成绩管理做简单的模拟,其中学生信息包括学号、姓名与成绩。成绩分为课程1成绩、课程2成绩、课程3成绩、课程4成绩和总成绩及平均成绩。另外还需统计出成绩优秀的学生人数。该成绩管理系统要求可以登记学生成绩、查询学生成绩、插入学生成绩、删除学生成绩等功能。2.2设计要求:1. 用链表实现应用系统,完成链表的建立以及链表中信息的插入、删除、查找、修改、输出等操作。2.建

5、立学生成绩单链表,链表中每个节点由五个域组成,分别是学号、姓名、性别、成绩、存放下一个结点地址的next域。3. 通过菜单选择操作方式完成以下功能:(1) 登记学生成绩;(2) 查询学生成绩;(3) 插入学生成绩;(4) 删除学生成绩;(5) 输出学生成绩;(6) 统计优秀学生人数; 第3章 课程设计总体方案及分析3.1 问题分析:该题目涉及到单链表的各种操作,包括单链表的建立,结点的查找、插入、删除等基本运算。首先建立学生成绩单链表,链表中每个节点由五个域组成,分别是学号、姓名、性别、成绩、存放下一个结点地址的next域。然后将要求完成的各项功能写成函数,登记学生成绩对应建立单链表的功能。由

6、于该系统处理的信息量大,采用单链表的形式容易处理插入、删除学生信息,故采用单链表来存储学生信息,用结构体类型定义每个学生记录,这样单链表中每个结点可描述为: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 概要设计本项目的模块结构如图。图中方块表示函数,方块中指出函数名,箭头表示函数间的调用关系,虚线表示文件的组成。学生成绩管理系统程序包含以下函数:

7、(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;

8、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

9、门成绩:);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 调试分析

10、 (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 3.8 参考文献 【1】 刘勇

11、郭韶升 张炜 周丽雅 数据结构实验与实训教程 国防工业出版社 2011年7月 【2】 严蔚敏 吴伟民 数据结构(C语言版) 清华大学出版社 2007年 【3】 谭浩强 C语言程序设计(第四版) 清华大学出版社 2010年6月 第2部分 课程设计总结为了备考4级,花了大量的时间复习,本想说终于松了一口气。但回想了一下,16周还有更重的任务,数据结构课程设计及考试、信号与系统测试等。所以,考完4级后我立马转身把时间投入到课程设计中。整个过程花了一周多的时间才完成。回想过去的一周,当我看到题目的时候,一头雾水,什么都不懂,回想往事,忙于学生会工作、班级工作等我忽视了学习这一块,也就在此时我认识到了学

12、习刻不容缓的真实性。看不懂怎么办?我去了图书馆找资料,学校的图书是多,但关于数据结构这一块,虽然书不算少,但自我感觉对本次课程设计有用的不多,而且还是很旧的。在图书馆找了许久,终于找到了我设计的源泉数据结构实验与实训教程(国防工业出版社),从此开始了我的数据结构课程设计之路。我的C语言基础不好,兴趣也不在程序这一块,所以刚开始的时候有很大的难度,在这里,我不得不感谢大三计Y的一个学长和跟我同在一个学生会部门同届计Y的一个同学。他们给予了我很大的帮助,也就是在他们的帮助,我顺利地做好了课程设计,当然,最重要的是我的不懈努力。 通过本次的课程设计,我进一步学习和掌握了C语言、数据结构的基础知识和理

13、论,各方面都有了一定的收获。尤其是C语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。在理论学习和上机实践的各个环节中,通过自主学习和请教学长及同学,我收获了不少。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收获。在这段时间里,我对for、while等的循环函数用法更加熟悉,逐渐形成了较好的编程习惯。在学长的指导帮助下,同学们课余时间的讨论中,这些问题都一一得到了解决。在程序的调试能力上,无形中得到了许多的提高。例如:头文件的使用,变量和数组的范围问题,定义变量时出现的问题等等。在实际的上机操作过程中,不仅是让我们

14、了解数据结构的理论知识,更重要的是培养解决实际问题的能力,所以相信通过此次课程设计可以提高我们分析设计能力和编程能力,为后续课程的学习及实践打下良好的基础。在这次短短的课程实践里,我就清楚的认识到实践是检验真理的正确性,我学会了如何解决现实问题,如何将理论知识应用到实际问题上。总的来说,我认为课程设计很有必要,也很重要。附 录/ 成绩管理系统2.cpp : 定义控制台应用程序的入口点。/#include stdafx.h/ 成绩系统.cpp : 定义控制台应用程序的入口点。/#include#include#include#define MAXLEN 100#define NULL 0type

15、def 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);print

16、f(请输入学生的性别:);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;/forretur

17、n 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

18、(%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)p

19、rintf(学号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;/whil

20、eif(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 *

21、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-score1,q-score2,q-score3,q-score4,q-total,q-ave

22、rage);q=q-next;void main()Node *p;int k,n; /控制循环的标志while(1)printf( -n);printf( 数据结构课程设计 Copyright:王永源 201200402016n );printf( |+|n);printf( | 学生成绩管理 |n);printf( |+|n);printf( | 1.登记成绩 |n);printf( | 2.查询成绩 |n);printf( | 3.插入成绩 |n);printf( | 4.删除成绩 |n);printf( | 5.输出所有学生成绩 |n);printf( | 6.输出优秀学生总人数及各自

23、成绩|n);printf( | 0.退出程序 |n);printf( -n);printf( | 请输入你的选择(0-6): |n);printf( -n);scanf(%d,&k);switch(k)case 1:printf(请输入学生人数:);scanf(%d,&n);p=create(p,n);break;case 2:find(p); break;case 3:add(p);break;case 4:Delete(p);break;case 5:List(p);break;case 6: youxiu(p);break;case 0:exit(0);default:printf(选择错误,重新开始!n);/switch/while

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号