# 功能要求
学生成绩管理系统常用功能一般包括:
1.学生信息包括学号、姓名、4门课成绩(语文、数学、英语、专业课),成绩百分制整数;
2.学生信息以文件形式保存;
3.可以显示所有学生信息;
4.按照姓名或学号查询显示学生信息,姓名和学号都唯一不重复;
5.按照学号删除某个学生信息;
6.按照学号修改某个学生信息;
7.计算总分和平均分,按照学生总分或平均分从高到低排序。
# 实现要点
-
- 使用链表保存学生信息,实现增删改查和排序功能;
-
- 使用文件保存学生信息;
-
- 总分和平均分是根据输入由程序计算得出,不需要手工输入;
-
- 难点:使用简单选择排序算法实现链表排序。
备注:简单选择排序算法,是每次循环选出最大值或最小值,交换到链表前面。
# 编程环境
-
- 采用Dev-C++集成开发环境;
-
- 涉及C语言知识点:结构、链表、函数、文件读写;
-
- 功能点较多,总共600行左右,很大一部分代码是错误处理,因此对于初学者可以将这部分代码精简,预计也就是200-300行左右,下一篇将提供精简版。
# 运行结果
*************欢迎使用学生成绩管理系统*************
* 1:录入成绩 2:删除成绩 *
* 3:查询成绩 4:修改成绩 *
* 5:成绩排序 6:显示所有 *
* 7:保存成绩 8:显示菜单 *
* 0:退出系统 *
*************************************************
请输出0-8,回车结束!
1
请您按提示依次输入图书信息(以空格分隔):
学号 姓名 语文 数学 英语 专业课
202001 张三 100 88 97 89
学生【202001 张三】的信息添加成功!
请输出0-8,回车结束!
1
请您按提示依次输入图书信息(以空格分隔):
学号 姓名 语文 数学 英语 专业课
202002 李四 100 100 100 100
学生【202002 李四】的信息添加成功!
请输出0-8,回车结束!
6
学号 姓名 语文 数学 英语 专业课 总分 平均分
202001 张三 100 88 97 89 374 93.50
202002 李四 100 100 100 100 400 100.00
当前系统总共有2条学生成绩记录!
请输出0-8,回车结束!
5
请选择排序方式:1.总分从高到低排序 2.平均分从低到高排序
1
学号 姓名 语文 数学 英语 专业课 总分 平均分
202002 李四 100 100 100 100 400 100.00
202001 张三 100 88 97 89 374 93.50
请输出0-8,回车结束!
3
请选择查询方式:1.学号查询 2.姓名查询
202002
请输入学生姓名:张三
学号 姓名 语文 数学 英语 专业课 总分 平均分
202001 张三 100 88 97 89 374 93.50
请输出0-8,回车结束!
4
请输入要修改的学生学号:202002
学号202002对应的学生信息如下:
学号 姓名 语文 数学 英语 专业课 总分 平均分
202002 李四 100 100 100 100 400 100.00
请依次输入修改后信息,不变的信息请同样输入:
姓名 语文 数学 英语 专业课
李四 99 100 99 100
修改成功,修改后信息如下:
学号 姓名 语文 数学 英语 专业课 总分 平均分
202002 李四 99 100 99 100 398 99.50
请输出0-8,回车结束!
6
学号 姓名 语文 数学 英语 专业课 总分 平均分
202002 李四 99 100 99 100 398 99.50
202001 张三 100 88 97 89 374 93.50
当前系统总共有2条学生成绩记录!
请输出0-8,回车结束!
0
ByeBye....~~
# 源代码
/*
==========================================
名称 :C语言课程设计 学生成绩管理系统
功能 :使用链表实现
环境 :Windows 10 + Dev-C++编译
作者 :一只会C的猫
公众号 :C语言大全(coderpointer)
时间 :2020.7.10
==========================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HEAD_INFO "学号\t姓名\t语文\t数学\t英语\t专业课\t总分\t平均分\n"
#define HEAD_INFO2 "学号\t姓名\t语文\t数学\t英语\t专业课\n"
// 定义学生信息数据结构
struct student{
// 学号
int num;
// 姓名
char name[20];
// 语文
int chinese;
// 数学
int math;
// 英语
int english;
// 专业课
int profession;
// 总分
int total;
// 平均分
double average;
};
// 定义链表结点结构类型
struct node