学生成绩管理系统

这是一个使用C++编程语言编写的学生成绩管理系统,包含完整的源代码。该系统可能采用了启发式算法来优化成绩处理。适合青少年编程学习者和算法爱好者研究。
摘要由CSDN通过智能技术生成

源代码传送门

学生成绩管理系统源代码-C++文档类资源-CSDN文库

1、课程设计目的

C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C语言程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。

2、课程设计任务与要求

本次课程设计利用《C语言程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。

要求:

1、对系统进行功能需求分析

2、设计合理的数据结构和系统框架

3、编程简练,程序功能齐全,能正确运行

4、说明书、流程图要清楚

5、课题完成后必须按要求提交课程设计报告

任务:

设计一个学生成绩排名系统。

实现功能

1) 具备对成绩的管理功能(添加、删除、排序)

2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)

3) 具备按学号、姓名、或课程名查询成绩的功能。

4)学生成绩应该保存在文件中。

备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。

概要设计

  1. 设计思路。

  1. 根据题目要求成绩记录以下信息:班级,学号,姓名,课程名,成绩。可以把这些信息设为结构体成员,用结构体数组来存放45个学生的信息,并且为方便输入信息可以定义一个全局变量N。

  1. 将系统功能分为五大模块:读取,管理,统计,查询和保存。另外在程序中需要增加读取文件信息的功能,以保证可以正确执行四大模块功能(此处应特别注意!)。

  1. 细化具体系统的功能,并用函数的嵌套调用来实现(注意定义函数时不能嵌套定义)。

  1. :将管理功能细化分为增添、删除和排序。

  1. :将统计功能分为求最大值、最小值、平均值和及格率。

  1. :将查询功能分为按学号、姓名、班级查询。

  1. 函数调用方法:用switch语句实现多分支选择结构。在主函数中用switch语句调用四大模块函数,在前三大模块函数中用switch语句调用细化的功能函数。各个模块的函数功能相互独立,不会影响别的函数的功能。

  1. 程序界面设计:在三大主函数中加入printf语句具体提示用户具体功能信息,以保证用户在使用时能逐步实现具体的系统功能。

  1. 学生成绩系统结构图

详细设计

  1. 声明结构体和全局变量。

①:首先声明结构体,然后定义结构体数组,数组的每一个元素都包含结构体中的所有成员即学号、姓名、班级、课程名以及分数。

②:为节省输入信息的时间,定义一个全局变量N=20。(同时为保证更接近信息真实情况,数字不能过小)。

代码如下:

struct Student

{

int num;

char name[20];

int clas;

char course[10];

float score;

}stu[45];

int N=20;

  1. 主函数模块。

  1. :先声明管理、统计、查询、读取和保存函数。

  1. :在声明函数之后,紧接着调用读取信息函数,读取文本文件中的学生信息。

  1. :输入提示信息,以保证程序在运行时,用户能够方便快速的进行操作。

  1. :用switch选择语句进行对输入的命令进行判断,并且调用相应的函数。

代码如下:

int main()

{

void manage(struct Student stu[]); //声明管理信息函数

void count(struct Student stu[]); //声明统计信息函数

void search(struct Student *p); //声明查找信息函数

void save(); //声明保存信息函数

void read(); //声明读入信息函数

read(); //调用读入信息函数(此处需特别注意read函数的位置:只有先读入文本文件信息,才能进行后续操作)

printf("*****************************学生成绩管理系统***********************************");

printf("* *");

printf("* 管理学生信息(请输入1) 统计学生信息(请输入2) *");

printf("* 查询学生信息(请输入3) 保存学生信息(请输入4) *");

printf("* *");

printf("********************************************************************************");

printf("请输入功能选项(1-manage/2-count/3-search/4-save):\n");

int order;

scanf("%d",&order);

switch(order) //用switch选择结构来调用四个不同的函数

{

case 1:

manage(stu);break;

case 2:

count(stu);break;

case 3:

search(stu);break;

case 4:

save();break;

}

return 0;

}

  1. 读取信息函数模块。

  1. :首先定义一个文件指针变量

  1. :用fopen函数,以“r”的方式打开一个文本文件(在此之前需建立好一个文本文件)

并判断是否能正常打开。

  1. :用for循环来以格式化的方式读取磁盘文件中的信息。

  1. :关闭所打开的文件。

代码如下:

void read() //定义读入函数(注意read函数在主函数中调用的位置)

{

FILE *fp;

int i;

if((fp=fopen("student.txt","r"))==NULL) //r表示为了输入数据打开一个文本文件

{

printf(&

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的托马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值