XXXX 大学学xxx 院 数据结构课程设计 第 2 页 共 13 页 1. 题目 利用单链表编写一个学生成绩系统。(具有查询成绩、修改成绩、删除成绩、添加成绩、全班平均。 ) 数据如下: 学生座号 学生姓名 语文成绩 英语成绩 数学成绩 6 Alan 85 90 98 15 Danie 76 70 80 17 Helen 95 98 96 20 Bill 65 60 80 23 Peter 79 65 86 32 Amy 93 86 74 2. 系统功能 ( 1)查询学生的各科成绩。 ( 2)修改学生的各科成绩。 ( 3)删除学生的各科成绩。 ( 4)添加学生的成绩。 ( 5)计算全班各科平均成绩。 3. 系统设计 4. 源代码 #include #include #define Max 5 学生成绩管理系统 添加成绩模块 查询成绩模块 删除成绩模块 修改成绩模块 各科平均成绩模块 第 3 页 共 13 页 struct Student { float s_num; float s_chinese; float s_english; float s_math; float s_total; float s_avg; char s_name[50]; struct Student *Next; }; typedef struct Student Node; typedef Node *Link; float Data[6][Max]={6,85,90,98,273,15,76,70,80,226,17,95,98,96,289,20,65,60,80,205,23,79,65,86,230,32,93,86,74,253}; char student_list[6][20]={{'A','l','a','n'},{'D','a','n','i','e'},{'H','e','l','e','n'},{'B','i','l','l'},{'P','e','t','e','r'},{'A','m','y'}}; float lastnum = 0; /*插入项*/ Link Insert_List(Link Head,Link New,int key) { Link Pointer; Link Tmp; Pointer=Head; while(1) { if(Pointer == NULL) { New->Next = Head; Head=New; break; } if(Pointer->s_num == lastnum) //根据学生坐位号插入 { New->Next=Pointer->Next; //将 Pointer 后面的值赋给New 后面 Pointer->Next=New; //在 Pointer 的 Pointer 中间插入New 值 break; } Pointer=Pointer->Next; //循环变量处理 } return Head; } 第 4 页 共 13 页 Link Edit_List(Link Head,float s_num,float s_chinese,float s_english,float s_math) { Link Pointer; Link Tmp; Pointer=Head; while(1) { if(Head == NULL) { printf("无效的学生座号\r\n"); break; } if(Pointer->s_num == s_num) //根据学生坐位号插入 { Pointer->s_chinese = ...