C语言学生成绩信息管理系统【结构体+文本】

功能描述:

1、录入成绩

2、显示不及格学生信息

3、统计每档学生数量

4、总成绩统计

代码:

#include<stdio.h>

#define N 30

//结构体:

typedef struct STUDENT

{

char  id[10];//学号

char  name[20];//姓名

float score[3];//三门成绩,分别代表:数学 英语 计算机

float sum;//用于计算总分

} Stu;

Stu stu[N];//创建一个30个数量的结构体

//打印学生信息函数

void printStuInfo(Stu st)//打印学生信息数据

{

printf("学号:%s\t姓名:%s\t数学:%3.2f\t英语:%3.2f\t计算机:%3.2f\t总分:%3.2f\n",

       //学号  //姓名  //数学成绩

       st.id, st.name, st.score[0],

       //英语成绩  //计算机成绩  //总分

       st.score[1], st.score[2], st.sum);

}

//读取文本信息函数

void readStuList()

{

int i = 0;

int k;

float sum;

FILE *fp = fopen("score.txt", "r");//以读的方式打开文件

if(fp == NULL)

{

return; /*若打不开则返回*/

}

while(!feof(fp))//逐条读取文件信息

{

fscanf(fp, "%s\t%s\t%f\t%f\t%f\n",

        //学号  //姓名  //数学成绩

        &stu[i].id, &stu[i].name, &stu[i].score[0],

        //英语成绩  //计算机成绩

        &stu[i].score[1], &stu[i].score[2]);

    //计算总分

    sum = 0;

for(k=0; k<3; k++){

sum += stu[i].score[k];

}

//存入总分

stu[i].sum = sum;

i++;

}

fclose(fp);//关闭文件

}

//写入数据到文件的函数

void writeStuInfo(Stu st) //存入一条学生信息

{

FILE *fp = fopen("score.txt", "a+");//添加一条信息到score.txt末尾

if(fp == NULL)

{

printf("打不开文件Cannot open the file\n");

return; /*若打不开则返回*/

}

//存入信息

fprintf(fp, "%s\t%s\t%3.2f\t%3.2f\t%3.2f\n",

        //学号  //姓名  //数学成绩

        st.id, st.name, st.score[0],

        //英语成绩  //计算机成绩

        st.score[1], st.score[2]);

fclose(fp);//关闭文件

}

//菜单函数

void menu() //菜单

{

printf("\n\t\t--------------1、录入成绩--------------\n");

printf("\t\t--------------2、显示不及格学生信息--------------\n");

printf("\t\t--------------3、统计每档学生数量--------------\n");

printf("\t\t--------------4、总成绩统计--------------\n");

printf("\t\t--------------0、退出程序--------------\n");

}

//统计每科的五档水平的人数的函数

void showLevel(char* score[3])

{

int i, k;

int level[3][5] = {0};//每科5档水平

for(k=0; k<3; k++)

{

printf("%s学科每档人数如下:\n", score[k]);

for(i=0; i<N; i++)

{

switch((int)(stu[i].score[k]) / 10){//除以10取整

case 9://>=90

level[k][0]++;

break;

case 8://80-89

level[k][1]++;

break;

case 7://70-79

level[k][2]++;

break;

case 6://60-69

level[k][3]++;

break;

default://<60

level[k][4]++;

break;

}

}

printf("A档学生人数有【%d】人\n", level[k][0]);

printf("B档学生人数有【%d】人\n", level[k][1]);

printf("C档学生人数有【%d】人\n", level[k][2]);

printf("D档学生人数有【%d】人\n", level[k][3]);

printf("E档学生人数有【%d】人\n\n", level[k][4]);

}

}



//主函数

int main()

{

int i, j, k, l;

Stu tempStu;

// int sort[N];

float sumAvg;//总成绩平均分

char* score[3] = {"数学", "英语", "计算机"};

while(1)

{

menu();//菜单

readStuList();//读取学生信息

printf("请输入你的选择:");

scanf("%d", &l);

if(l == 0)

{

printf("谢谢使用!程序已退出!\n");

return 0;//退出程序

}

else if(l == 1)

{

for(i=0; i<N; i++)

{

printf("输入第[%d]个学生信息:\n",i+1);

printf("学号:");

scanf("%s",stu[i].id);

printf("姓名:");

scanf("%s",stu[i].name);

for(k=0; k<3; k++)

{

printf("%s成绩:", score[k]);

scanf("%f",&stu[i].score[k]);

}

writeStuInfo(stu[i]);//保存输入的信息到score.txt文本中

//        printf("数学成绩:");

//        scanf("%f", &stu[i].score[0]);

//        printf("英语成绩:");

//        scanf("%f", &stu[i].score[0]);

//        printf("计算机成绩:");

//        scanf("%f", &stu[i].score[0]);

//        stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];

// sort[i] = i;

}

}

else if(l == 2)

{

/* 2. 统计各课及格和不及格的人数,输出对应学生的数据信息。 */

for(k=0; k<3; k++)

{

printf("%s不及格学生如下:\n", score[k]);

j = 0;

for(i=0; i<N; i++)

{

if(stu[i].score[k] < 60)

{

//学号 姓名 对应单科成绩

printf("%s\t%s\t%3.2f\n",

       stu[i].id, stu[i].name, stu[i].score[k]);

j++;//计算不及格人数

}

}

printf("%s不及格学生人数有【%d】个。\n\n", score[k], j);

}

}

else if(l == 3)

{



showLevel(score);//显示每档学生人数

}

else if(l == 4)

{

//总成绩统计

/* 1.按总分排序 */

//冒泡排序

for(i=0; i<N-1; i++)

{

for(j=0; j<N-i-1; j++)

{

if (stu[j].sum < stu[j+1].sum)//如果前一个比后一个分数小,就交换

{

tempStu = stu[j];//tempStu为交换媒介

stu[j] = stu[j+1];

stu[j+1] = tempStu;

}

}

}

printf("按总分排名的学生信息如下:\n");

for(i=0; i<N; i++)

{

sumAvg += stu[i].sum;//逐个累加总成绩

printStuInfo(stu[i]);//逐个输出学生信息

}

printf("总成绩平均分为【%3.2f】\n", sumAvg / N);//累加的总成绩除以人数

printf("总成绩最高分为【%3.2f】\n", stu[0].sum);//第一位即为最高分

printf("总成绩最低分为【%3.2f】\n", stu[N-1].sum);//最后一位即为最低分

}

else

{

printf("输入有误!请重新输入!\n");

}



}

return 0;

}

结果截图:

  1. 菜单截图:

       

2、选择1录入学生信息截图:

3、选择2显示不及格学生信息截图:

4、选择3统计每档学生数量截图:

5、选择4总成绩统计截图:

6、选择0退出。

7、选择其他数字提示错误的截图:

  • Score.txt文件内容【自己创建在代码同级目录下,内容也可以自己编写,格式是一行一条记录,每条记录里每个字段之间是一个tab键(也就是\t)】。

文档排版我是直接复制粘贴的,所以有点问题,可以自行调整,或者下载我开头挂载的文档也行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/421485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PDF文件签章,水印

首先准备好配置环境(详细参考配置PDF笔记) 生产PDF文件&#xff1a; 第一步&#xff1a; 实体类加注解&#xff1a;&#xff08;这个注解的作用是设置你pdf文件中列的名称&#xff0c;每个字段都要加&#xff09; 第二步&#xff1a; 编写后端方法, 先依赖注入 PdfService中…

Cocos Creator 3.8.x 后效处理(前向渲染)

关于怎么开启后效效果我这里不再赘述&#xff0c;可以前往Cocos官方文档查看具体细节&#xff1a;后效处理官网 下面讲一下怎么自己定义一个后处理效果&#xff0c;想添加自己的后效处理的话只需要在postProcess节点下添加一个BlitScreen 组件即可&#xff0c;然后自己去添加自…

时隔n年再度会看Vue,Git

时隔n年再度会看Vue,Git 曾经沧海难为水&#xff0c;除却巫山不是云。不知道这句话用在这里合不合适&#xff0c;好多东西在记忆中都淡化了。但是互联网确是有记忆的。研究以前项目的时候&#xff0c;翻看到gitee码云上托管的项目&#xff0c;就像是自己的孩子重新又回来了一样…

【STM32】江科大STM32学习笔记汇总(50)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM…

0基础跨考计算机|408保姆级全年计划

我也是零基础备考408&#xff01; 虽说是计算机专业&#xff0c;但是本科一学期学十几门,真的期末考试完脑子里什么都不进的...基本都是考前一周发疯学完水过考试...&#x1f605; 想要零基础跨考可以直接从王道开始&#xff01;跟教材一点一点啃完全没必要&#x1f978; 现在…

http状态,cookie、session、token的对比

http是无状态的&#xff0c;也就是说断开会话了服务器就不记得任何事情了&#xff0c;但这样对于用户会很麻烦&#xff0c;因为要不停输入用户名和密码 cookie是放在浏览器里的数据&#xff0c;第一次访问后服务器会set cookie&#xff0c;然后浏览器保存这个cookie&#xff0…

《PySide6/PyQt6快速开发与实战》P111被省略了的案例

编程环境&#xff1a;Fedora, QtCreator 见代码&#xff1a; # This Python file uses the following encoding: utf-8 import sys from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget from PySide6.QtGui import QPalette #, QColo…

CryoEM - 使用 cryoSPARC 基于单颗粒图像从头重构蛋白质三维结构

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 基于冷冻电镜单颗粒图像重构蛋白质三维结构,利用冷冻电镜技术测定生物大分子结构的方法。原理是从冷冻电镜获得大量同一种蛋白质分子的二维投影图…

什么是端点安全以及如何保护端点

什么是端点安全 端点是指可以接收信号的任何设备&#xff0c;是员工使用的一种计算设备&#xff0c;用于保存公司数据或可以访问 Internet。端点的几个示例包括&#xff1a;服务器、工作站&#xff08;台式机和笔记本电脑&#xff09;、移动设备、虚拟机、平板电脑、物联网、可…

YOLOV8介绍

原文链接&#xff1a; 1、 详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出 2、Yolov8的详解与实战 3、YOLOV8模型训练部署&#xff08;实战&#xff09;&#xff08;&#xff09;有具体部署和训练实现代码YOLOV8模型训练部署&#xff08;实战&#xff09;&…

Mac 以SH脚本安装Arthas

SH脚本安装Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安装脚本说明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…

【AI Agent系列】【MetaGPT多智能体学习】5. 多智能体案例拆解 - 基于MetaGPT的智能体辩论(附完整代码)

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第三篇笔记。主要是对课程刚开始环境搭…

AI Word Helper (Chorme Extentions) AI单词助手(谷歌浏览器插件)

AI Word Helper (Chorme Extentions) AI单词助手&#xff08;谷歌浏览器插件&#xff09; 英文网站&#xff0c;划词查单词&#xff0c;还是看不懂&#xff1f;因为单词意思那么多&#xff0c;词性搞不清&#xff0c;上下文搞不清&#xff0c;出来的意思就没法用&#xff0c;G…

【Spring整合H2内嵌数据库】

目录 H2介绍整合引入依赖配置相关参数编写sql文件启动spring boot项目&#xff0c;登录控制台 jpa实践entityservicedao 《饮酒》.&#xff08;陶渊明&#xff09; 结庐在人境&#xff0c;而无车马喧。 问君何能尔&#xff0c;心远地自偏。 采菊东篱下&#xff0c;悠然见南山…

【模型复现】自制数据集上复现目标检测域自适应 SSDA-YOLO

【模型复现】自制数据集上复现目标检测域自适应 SSDA-YOLO 1. 环境安装2. 数据集制作2.1 数据准备2.2 数据结构 3. 模型训练3.1 数据文件配置3.2 训练超参数配置3.3 模型训练 4. 模型验证4.1 验证超参数配置4.2 模型验证 5. 模型推理5.1 推理超参数配置5.2 模型推理 6. 踩坑记录…

计算机网络-典型网络组网架构

前面基本网络知识已经能够满足中小企业的需要了&#xff0c;今天来看下一些基本网络组网架构。 首先网络是分层架构&#xff0c;从接入层到汇聚层再到核心层&#xff0c;然后接入运营商出口。内部包括有线网络、无线网络&#xff0c;出口一般可以使用路由器或者防火墙进行安全防…

Docker:开启访问端口 || IDEA开发工具快速部署到服务器

参考文档&#xff1a;Docker开启远程安全访问-腾讯云开发者社区-腾讯云 一、Linux服务器环境 1.1、安装Linux 1.2、安装docker 二、Linux服务器配置docker开放端口 2.1、首先进入docker配置文件打开 /usr/lib/systemd/system/docker.service 或运行以下命令 vi /usr…

智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人(机器人大模型与具身智能挑战赛)

智能咖啡厅助手&#xff1a;人形机器人 融合大模型&#xff0c;行为驱动的智能咖啡厅机器人(机器人大模型与具身智能挑战赛) “机器人大模型与具身智能挑战赛”的参赛作品。的目标是结合前沿的大模型技术和具身智能技术&#xff0c;开发能在模拟的咖啡厅场景中承担服务员角色并…

蓝桥杯:真题讲解3(C++版)附带解析

报纸页数 来自&#xff1a;2016年七届省赛大学C组真题&#xff08;共8道题) 分析&#xff1a; --画出报纸长的样子&#xff0c;如果我们在上面多画一张报纸&#xff0c;那么就符合题意的5&#xff0c;6&#xff0c;11&#xff0c;12。 观察这张图&#xff1a;观察3&#xf…

React之数据绑定以及表单处理

一、表单元素 像<input>、<textarea>、<option>这样的表单元素不同于其他元素&#xff0c;因为他们可以通过用户交互发生变化。这些元素提供的界面使响应用户交互的表单数据处理更加容易 交互属性&#xff0c;用户对一下元素交互时通过onChange回调函数来监听…
最新文章