题外话
C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。
备注:
1.不同C编译器,对C语言程序编译有差别,建议大家选择相同的编译器。
2.代码手机不方便看,可以收藏使用电脑查看,注意各种标点符号。
功能要求
学生成绩管理系统常用功能一般包括:
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/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。
源代码
/*
#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"
// 定义学生信息数据结构
st