基于C语言的学生成绩管理系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85697407

一、学生成绩管理系统程序设计报告

二、学生成绩管理系统设计报告

2.1 人员组成及分工

2.1.1 人员组成及分工

学号 姓名 任务 完成工作量
设计程序算法及程序主体 50%
功能测试、界面优化及文案负责 50%

2.2 开发背景

为了更好的了解学生的学习情况,以对学生进行更详细的了解,对未来的教学有相应的规划,同时为了便于期末总结,我们设计了一套学生成绩管理系统。

在本次课程设计中,操作者根据清单上的提示对于不同的学生进行分数的录入、修改、查询以及获取相应的统计结果,并支持数据的输出。

2.3 系统功能设计

2.3.1 系统功能模块图

基于C语言的学生成绩管理系统_第1张图片

图 3-1 系统功能模块图

2.3.2 系统业务流程图

基于C语言的学生成绩管理系统_第2张图片

图 3-2 业务流程图

2.4 项目创建

2.4.1 系统开发环境要求

本项目的开发及运行环境要求:

  • 操作系统:windows 7, windows 10
  • 开发工具:Code Blocks 17.12, Visual Studio Code
  • 开发语言:C 语言

2.4.2 项目创建过程

打开 Code Block

基于C语言的学生成绩管理系统_第3张图片

图 4-1 Code Block 使用界面

2.4.2 点击“open an existing project”,并选中“Console application”

基于C语言的学生成绩管理系统_第4张图片

图 4-2 工程创建界面

选择 C,并点击 next

基于C语言的学生成绩管理系统_第5张图片

图 4-3 创建 C 工程

填写项目名称以及路径。

基于C语言的学生成绩管理系统_第6张图片

图 4-4 填写项目名称和工程路径

直点击 next 默认配置,最后点击 Finish 完成工程创建。

图 4-4 完成工程创建

点击 File->Empty file,创建并命名第一个 C 文件并编写代码

基于C语言的学生成绩管理系统_第7张图片

图 4-4 创建 C 文件

2.5 预处理模块设计

2.5.4 函数声明

  • void Print(STU *head, int n, int m)
  • 输入参数:学生链表,学生数,考试科目数量
  • 输出参数:null
  • 实现功能:输出链表中所有节点
  • void AverSumofEveryStudent(STU *head)
  • 输入参数:学生链表
  • 输出参数:null
  • 实现功能:计算每门课程的总分和平均分
  • void AverSumofEveryCourse(STU *head)
  • 输入参数:学生链表
  • 输出参数:null
  • 实现功能:计算每个学生的总分和平均分
  • void StatisticAnalysis(STU *head, int n, int m)
  • 输入参数:学生链表,学生数,考试科目数量
  • 输出参数:null
  • 实现功能:按类别及比例输出
  • STU *SortbyScore(STU *head, int n)

输入参数:学生链表,学生数

输出参数:学生链表头结点

  • 实现功能:按每个学生的总分由高到低排出名次表
  • STU *SortbyScore1(STU *head, int n)
  • 输入参数:学生链表,学生数
  • 输出参数:学生链表头结点
  • 实现功能:按每个学生的总分由低到高排出名次表
  • STU *SortbyNum(STU *head)

输入参数:学生链表

输出参数:学生链表头结点

  • 实现功能:按学号由小到大排出成绩表
  • STU *SortbyName(STU *head, int n)

输入参数:学生链表,学生数,考试科目数量

输出参数:学生链表头结点

  • 实现功能:按姓名的字典顺序排出成绩表
  • STU *Create(int n, int m)
  • 输入参数:学生数,考试科目数量
  • 输出参数:学生链表头结点
  • 实现功能:创建链表并录入信息
  • void SearchbyNum(STU *head, int n, int m)

输入参数:学生链表,学生数,考试科目数量

输出参数:null

  • 实现功能:按学号查询学生排名及其考试成绩
  • void SearchbyName(STU *head, int n, int m)

输入参数:学生链表,学生数,考试科目数量

输出参数:null

  • 实现功能:按姓名查询学生排名及其考试成绩
  • void WritetoFile(STU *head, int n, int m)

输入参数:学生链表,学生数,考试科目数量

输出参数:null

  • 实现功能:将每个学生的纪录信息写入文件
  • STU *ReadfromFile(STU *head, int *n, int *m)

输入参数:学生链表,学生数,考试科目数量

输出参数:学生链表头结点

  • 实现功能:从文件中读出每个学生的纪录信息并显示
  • int DeleteFromFile(STU *head, int *n, int *m);

输入参数:学生链表,学生数,考试科目数量

输出参数:不存在数据或没有数据返回 0,成功删除返回 1

  • 实现功能:物理删除(删除在文件中的数据)
  • STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2)

输入参数:学生链表,学生数,考试科目数量

输出参数:学生链表头结点

  • 实现功能:获取文件中所有的学生成绩数据,并组成单链表
  • STU *ModifyScore(STU *head)

输入参数:学生链表,学生数,考试科目数量

输出参数:学生链表头结点

  • 实现功能:用于修改学生某个科目的成绩信息

2.6 模块详细设计

2.6.1 成绩录入模块

2.6.2 录入新的学生成绩记录(临时区)

  • 功能描述:用户在系统主界面输入数字 “1” ,进入录入成绩功能,根据提示依次输入学生数量、考试科目数量,并依次输入每个学生的学号、姓名和各科成绩,最后按下回车将成绩提交到临时区。
  • 算法流程:

基于C语言的学生成绩管理系统_第8张图片

  • 相关函数:
int Menu(void); //函数1:创建菜单函数
STU *Create(int n, int m); //函数10:创建链表并录入信息
  • 测试结果:

2.6.3 将临时区数据保存到文件中

  • 功能描述:用户在系统主界面输入数字 “12” ,即可将临时区的学生成绩信息保存到 student.txt 文件中
  • 算法流程:

基于C语言的学生成绩管理系统_第9张图片

  • 相关函数
void  WritetoFile(STU *head, int n, int m); //函数13:将每个学生的纪录信息写入文件
  • 测试结果

基于C语言的学生成绩管理系统_第10张图片

基于C语言的学生成绩管理系统_第11张图片

2.6.4 成绩导出模块

2.6.5 导出未保存的学生成绩信息(临时区)

  • 功能描述:用户在系统主界面输入数字 “11” ,进入临时区数据导出模块,此时界面会输出仍未保存的学生成绩数据,或临时区没有数据的提示信息。
  • 算法流程:

基于C语言的学生成绩管理系统_第12张图片

  • 相关函数:
void Print(STU *head, int n, int m);   //函数2:打印函数
  • 测试结果

基于C语言的学生成绩管理系统_第13张图片

2.6.6 导出已保存的学生成绩信息(文件)

  • 功能描述:用户在系统主界面输入数字 “12” ,进入文件数据导出模块,此时界面会输出保存在 student.txt 的所有学生成绩。如果文件不存在或没有数据,则会输出 “student.txt 不存在或没有数据"的提示信息。
  • 算法流程:

基于C语言的学生成绩管理系统_第14张图片

  • 相关函数:
STU *ReadfromFile(STU *head, int *n, int *m);  //函数14:从文件中读出每个学生的纪	录信息并显示
void Print(STU *head, int n, int m);   //函数2:打印函数void Print(STU *head, int n, int 	m);
  • 测试结果:

基于C语言的学生成绩管理系统_第15张图片

2.6.7 排序模块

根据成绩总分的升序、降序进行排序

  • 功能描述:用户在系统主界面输入“4”进入降序排列,输入“5”进入升序排列。
  • 算法流程:首先调用 getAllMessageFromFile 函数从文件读取已经存入的信息,获得链表的头结点,再遍历链表,将总分作为对比依据进行冒泡排序,最后输出。
  • 相关函数:
  • STU *SortbyScore(STU *head, int n); //函数 6:按每个学生的总分由高到低排出名次表
  • STU *SortbyScore1(STU *head, int n); //函数 7:按每个学生的总分由低到高排出名次表
  • 测试结果:

基于C语言的学生成绩管理系统_第16张图片

根据学号的升序进行排序

  • 功能描述:用户在系统主界面输入“6”进入。
  • 算法流程:首先调用 getAllMessageFromFile 函数从文件读取已经存入的信息,获得链表的头结点,再遍历链表,将学号作为对比依据进行冒泡排序,最后输出。
  • 相关函数:与 7.1 的算法相似
  • 测试结果:

基于C语言的学生成绩管理系统_第17张图片

根据学生姓名的字典序进行排序

  • 功能描述:用户在系统主界面输入“7”进入。
  • 算法流程:首先调用 getAllMessageFromFile 函数从文件读取已经存入的信息,获得链表的头结点,再遍历链表,将姓名首字母的字典序作为对比依据进行冒泡排序,最后输出。
  • 相关函数:
  • STU *SortbyNum(STU *head); //函数 8:按学号由小到大排出成绩表
  • 测试结果:

2.7 UI 界面设计模块

功能描述:展示操作界面

算法流程:

主界面根据序号展示相关操作,使用*作为边框

具体操作界面首先清屏,以实现更加简洁的展示便于操作,并使用*号分割

相关函数:

int Menu(void); //函数 1:创建菜单函数

测试结果:

基于C语言的学生成绩管理系统_第18张图片

2.8 条件查询模块

2.8.1 按学生学号查询排名及其考试成绩

  • 功能描述:用户在系统主界面输入数字 “8” ,进入按学生学号查询排名及其考试成绩,此时按照界面提示输入查询的学号。如果学号不存在或 student.txt 没有数据,则会输出 “抱歉,没有找到相关记录"的提示信息。
  • 算法流程:

基于C语言的学生成绩管理系统_第19张图片

  • 相关函数:
//函数11:按学号查询学生排名及其考试成绩
void SearchbyNum(STU *head, int n, int m);
//函数16:获取文件中所有的学生成绩数据,并组成单链表
STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2);
  • 测试结果

基于C语言的学生成绩管理系统_第20张图片

2.8.2 按学生姓名查询排名及其考试成绩

  • 功能描述:用户在系统主界面输入数字 “9” ,进入按学生学号查询排名及其考试成绩,此时按照界面提示输入查询的姓名。如果学号不存在或 student.txt 没有数据,则会输出 “抱歉,没有找到相关记录"的提示信息。
  • 算法流程:

基于C语言的学生成绩管理系统_第21张图片

  • 相关函数:
//函数12:按姓名查询学生排名及其考试成绩
void SearchbyName(STU *head, int n, int m);
//函数2:打印函数
void Print(STU *head, int n, int m);
  • 测试结果:

2.9 成绩修改模块

  • 功能描述:用户在系统主界面输入数字 “16” ,此时按照界面提示,输入即将修改的记录所对应的学号。如果学号不存在,则会输出 “抱歉,没有找到相关记录"的提示信息。否则,系统会打印出该学号对应的成绩记录并提示你需要修改的是学号、姓名还是科目成绩。如果是学号,则输入新的学号进行提交;如果是姓名,则输入新的姓名并进行提交;如果是科目成绩,则先输入是该科目的序号,再输入新的分数进行提交。
  • 算法流程:

基于C语言的学生成绩管理系统_第22张图片

  • 相关函数
//函数17 用于修改学生成绩信息
STU *ModifyScore(STU *head);
//函数16:获取文件中所有的学生成绩数据,并组成单链表
STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2);
  • 测试结果

基于C语言的学生成绩管理系统_第23张图片

基于C语言的学生成绩管理系统_第24张图片

基于C语言的学生成绩管理系统_第25张图片

基于C语言的学生成绩管理系统_第26张图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CM2cefbw-1655641032737)(https://www.writebug.com/myres/static/uploads/2022/6/19/92cbe3dffa2b82ba214690584c3a73a1.writebug)]

2.10 成绩删除

  • 功能描述:用户在系统主界面输入数字 “15” ,此时按照界面提示,输入即将删除的记录所对应的学号。如果学号不存在,则会输出 “抱歉,没有找到相关记录"的提示信息。否则,系统将会删除文件中该学号所在的成绩记录,并打印出删除成功的提示。
  • 算法流程:

基于C语言的学生成绩管理系统_第27张图片

  • 相关函数:
//函数15: 物理删除(删除在文件中的数据)
int DeleteFromFile(STU *head, int *n, int *m);
  • 测试结果:

基于C语言的学生成绩管理系统_第28张图片

2.11 成绩统计计算

2.11.1 计算并输出每门课程的总分和平均分

  • 功能描述:用户在系统主界面输入数字 “2” ,系统会输出每一门课程的所有学生的总分和平均分
  • 算法流程:

  • 相关函数:

函数 3:计算每门课程的总分和平均分

void AverSumofEveryStudent(STU *head);
//函数16:获取文件中所有的学生成绩数据,并组成单链表
STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2);
  • 测试结果

基于C语言的学生成绩管理系统_第29张图片

2.11.2 计算并输出每位学生的总分和平均分

  • 功能描述:用户在系统主界面输入数字 “3” ,系统会输出每一门课程的所有学生的总分和平均分
  • 算法流程:

基于C语言的学生成绩管理系统_第30张图片

  • 相关函数:
//函数4:计算每个学生的总分和平均分
void AverSumofEveryCourse(STU *head);
//函数16:获取文件中所有的学生成绩数据,并组成单链表
STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2);
  • 测试结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nwagYgWt-1655641032739)(https://www.writebug.com/myres/static/uploads/2022/6/19/75701896533ad83f3e5f0c1a66869ea3.writebug)]

2.11.3 对每门课程的成绩情况进行分段统计

  • 功能描述:用户在系统主界面输入数字 “10” ,系统会输出按课程得分为 100、90~99、80~ 89、70~79、60~69 和不及格学生的人数,以及所占百分比
  • 算法流程:

基于C语言的学生成绩管理系统_第31张图片

  • 相关函数:
//函数5:按类别及比例输出
void StatisticAnalysis(STU *head, int n, int m);
//函数16:获取文件中所有的学生成绩数据,并组成单链表
STU *getAllMessageFromFile(STU *head, int count0[], int count1[], int *count2);
  • 测试结果:

基于C语言的学生成绩管理系统_第32张图片
资源下载地址:https://download.csdn.net/download/sheziqiong/85697407

你可能感兴趣的:(c语言,成绩管理,成绩管理系统,学生成绩管理,课程设计)