数据结构课程设计--学生成绩管理
数 据 结 构 课程设计报告书 学校 学号 姓名 指导老师 课程设计的名称课程设计的名称学生成绩管理学生成绩管理 1. 问题描述 学生成绩管理是学校教务管理的重要组成部分, 其处理信息量很大, 该题目是对学生的成绩 管理作一个简单的模拟,其中学生信息包括学号、姓名与成绩。成绩分为课程 1 成绩、课 程 2 成绩、课程 3 成绩和总成绩。要求设计一个简易的成绩管理系统,输入各门功课的成绩 后能自动求出总成绩,并通过菜单选择操作方式完成下列功能 ① 登记学生成绩; ② ②查询学生成绩; ③ 插入学生成绩; ④ ④删除学生成绩; ⑤ 按总成绩降序排序。 2. 基本要求 该题目涉及到单链表的各种操作, 包括单链表的建立、 结点的查找、 插入、 删除等基本运算。 首先建立学生成绩单链表,链表中每个结点由 4 个域组成,分别为学号、姓名、成绩、存 放下一个结点地址的 next 域。然后将要求完成的四项功能写成四个函数,登记学生成绩对 应建立学生单链表的功能,后三个功能分别对应单链表的查询、插入与删除三大基本操作。 3. 算法思想 Creat函数算法思想从 0 至 n 循环输入 n 个同学的三科成绩,并且计算总成绩。 Inquiry函数算法思想 将学号与已输入的所有学号做比较, 一旦相同则输出该学号信息, 否则显示没有该学生信息。 Insert 函数算法思想生成一个新节点,然后将其接到原有链表尾部。 Delete函数算法思想通过 ID 找到该节点,并删去该节点。 Sort函数算法思想利用排序算法对每一个节点作比较并更换其在链表中的位置顺序。 4. 模块划分 (1)LinkList CreatLinkList T,int n其功能是创造节点,录入成绩。 (2)void InquiryLinkList T其功能是查询与已知 ID 一致的学生信息并展示出来。 (3)void InsertLinkList T,int n 其功能是添加若干个学生的成绩信息。 (4)void DeleteLinkList T 其功能是删除若干个学生的成绩信息。 (5)void SortLNode *p 其功能是排序并展示若干个学生的成绩信息。 5. 数据结构 数据类型 LNode 定义如下 typedef struct LNode { int ID; char name[20]; int score1; int score2; int score3; int total; struct LNode *next; }LNode,*LinkList; 6. 源程序 源代码 //main.c include include typedef struct LNode { int ID; char name[20]; int score1; int score2; int score3; int total; struct LNode *next; }LNode,*LinkList; LinkList CreatLinkList T,int n; void DeleteLinkList T; void InquiryLinkList T; void InsertLinkList T,int n; void SortLNode *p; void InsertLinkList T,int n { int i; LNode *rT,*p; whiler-nextNULL { rr-next; } fori0;iID; printf“Please enter the student s name “; scanf“s“,p-name; printf“Please enter the student s score 1 “; scanf“d“, printf“Please enter the student s score 2 “; scanf“d“, printf“Please enter the student s score 3 “; scanf“d“, p-totalp-score1p-score2p-score3; printf“The total score is d\n“,p-total; p-nextNULL; r-nextp; rp; } printf“\nInsert is complete“; } void InquiryLinkList T { int id; printf“Pl