1、1 课 程 设 计 报 告 课程名称课程名称 数据结构 课题名称课题名称 学生成绩管理系统 专专 业业 通信工程 2015 年年 7 月月 2 日日 2 目目 录录 一、课程设计的分析一、课程设计的分析 3 1.1.课程设计目的:课程设计目的: 3 2.2.课程设计题目课程设计题目 3 3.3.需求分析需求分析 . 4 二、概要设计二、概要设计 . 4 三、详细设计三、详细设计 . 5 四、调试分析四、调试分析 . 10 (1)调试过程中遇到的调试过程中遇到的问题问题 .10 (2)经验和体会经验和体会 10 五、用户使用说明五、用户使用说明 11 六、测试结果六、测试结果 . 12 七、附录
2、七、附录. 17 八、八、课程设计评分表课程设计评分表 37 3 一、一、课程设计的课程设计的分析分析 1.1.课程设计目的:课程设计目的: 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相 成的必不可少的一个教学环节。通常,实习题中的问题比平时的习题复杂得多, 也更接近实际。实习着眼于原理与应用的结合点,使读者学会如何把书上学到的 知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上 的知识变“活” ,起到深化理解和灵活掌握教学内容的目的。平时的练习较偏重 于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题 分析、总体结构设计、用户界面
3、设计、程序设计基本技能和技巧,多人合作,以 至一整套软件工作规范的训练和科学作风的培养。 2.2.课程设计题目课程设计题目 【课题】 学生成绩管理系统学生成绩管理系统 【问题描述】 根据自己这个学期的课程表,设计一个成绩管理系统管理自己班的成绩;每 个学生记录包含学号、姓名、每门课程成绩、总分以及加权平均分。 【基本要求】 一个完整的成绩管理系统应具有以下功能: (1)输入:成绩录入; (2)输出:输出成绩表; (3)插入:在成绩表中适当位置插入某个学生成绩; (4)删除:在成绩表中删除某个学生成绩; (5)查找:根据某个关键字查找某个学生成绩; (6)排序:根据某一个或某几个关键字进行排序;
4、 (7)筛选:根据某个关键字筛选出符合某些条件的数据; 【测试数据】 用本班的成绩总表作为测试数据。 4 3.3.需求分析需求分析 本次课程设计的题目是学生成绩管理系统,要求可以存入学生,学生信息包 括学生学号、姓名、每科成绩和平均成绩以及加权平均成绩等。该系统主要有以 下七个功能,即对学生信息进行:输入、输出、插入、删除、查找、排序、筛选 等功能。 对学生进行操作可以有很多思路,而我选用的是单链表村学生信息那一条思 路,即设置一个单链表,其中节点数据域保存学生基本信息。由于我们学号比较 长,用整型数据无法保存,所以我定义 char 型的字符串来保存学号和姓名。用 一个数组来保存学生每一科的成
5、绩,此外在定义一个总分和平均分变量。 定义学 生如下:typedef struct Student char mun12; /学号 char name20; /姓名 float score8; /成绩 float all_score; /总分 float ave_score; /加权平均分 struct Student *next; LinkList; 二、二、概要设计概要设计 本程序采用链表的方法将每一个学生设置成为一个链表中的数据节点,节点 中有字符型 mun12(学号) 、name20(姓名) 、浮点型数据 score8(放置每一 科成绩的数组) 、all_score(总分)和 ave_
6、score(加权平均分) 。 主函数中在执行成绩管理系统之前会先创建一个链表,并调用 void InitList (LinkList * 输入学生信息,计算总分与加权分 for(m=1;mnext=s;r=s;(尾插法插入链表) 输出学生信息,p=p-next count=count+1;学生总数加 1 6 开始 结束 LinkList *p=L-next; mnext m+ m+1 N Y 3、插入学生 4、删除学生 输入要插入的位置 数字选择删除方式 scanf(“%d“, 按编号删除和学号删除 调用插入函数 1 编号 调用 Delete_Student Insert_Student(h,w); 2 学号 调用 Locate_Student 找到 学生位置,在用 Delete_Student 的流程图如下: Insert_Student 函数