学生成绩管理系统(C语言)
系统分析
具体代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 100000typedef struct tagStudent
{int n; /*顺序号*/int nNum; /*学号*/char name[10]; /*姓名*/int iCn; /*语文成绩*/int iMaths; /*数学成绩*/int iEn; /*英语成绩*/int iPhy; /*物理成绩*/int iCom; /*计算机成绩*/float fAvage; /*平均成绩*/
} Student;Student stu[SIZE];
/*录入数据*/
void Student_Input()
{ int i,p; FILE *fp;fp=fopen("studentfile.dat","wb"); for(i=0;i<SIZE;i++){ printf("\n\r请输入序号i(当输入i=-1时,返回),i=",i++);scanf("%d",&i);if(i==-1|| i ==0) {fclose(fp); return;}else { printf("\n\r请输入学号(数字型):");scanf("%d",&stu[i].nNum);printf("\n\r请输入姓名(字符型):");scanf("%s",stu[i].name);printf("\n\r请输入语文成绩(0~100):");scanf("%d",&stu[i].iCn);printf("\n\r请输入数学成绩(0~100):");scanf("%d",&stu[i].iMaths);printf("\n\r请输入英语成绩:(0~100)");scanf("%d",&stu[i].iEn);printf("\n\r请输入物理成绩:(0~100)");scanf("%d",&stu[i].iPhy);printf("\n\r请输入计算机成绩(0~100):");scanf("%d",&stu[i].iCom);stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;stu[i].n=i+1;fwrite(&stu[i],sizeof(Student),1,fp);}}fclose(fp);
}/*输出数据*/
void Student_ListOut()
{FILE *fp;int i;fp=fopen("studentfile.dat","rb"); printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");fclose(fp);
}/*查找数据*/
void Student_Search()
{FILE *fp;int i,num;fp=fopen("studentfile.dat","rb"); rewind(fp);printf("请输入要查找的学号:");scanf("%d",&num);printf("***********************************************************************\n");printf(" 查询结果\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;i<=SIZE;i++)if(stu[i].nNum==num){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");fclose(fp);
}/*增加数据*/
void Student_Add()
{int i,s;FILE *fp;fp=fopen("studentfile.dat","ab+"); rewind(fp);printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("***********************************************************************\n");s=i;for(i=s;i<SIZE;i++){printf("输入序号i(当输入i=-1时,返回),i=",i);scanf("%d",&i);if(i==-1|| i ==0) {fclose(fp);return;}else{printf("\n\r请输入学号(数字型):");scanf("%d",&stu[i].nNum);printf("\n\r请输入姓名(字符型):");scanf("%s",stu[i].name);printf("\n\r请输入语文成绩(0~100):");scanf("%d",&stu[i].iCn);printf("\n\r请输入数学成绩(0~100):");scanf("%d",&stu[i].iMaths);printf("\n\r请输入英语成绩:(0~100)");scanf("%d",&stu[i].iEn);printf("\n\r请输入物理成绩:(0~100)");scanf("%d",&stu[i].iPhy);printf("\n\r请输入计算机成绩(0~100):");scanf("%d",&stu[i].iCom);stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;stu[i].n=i+1;fwrite(&stu[i],sizeof(Student),1,fp);printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}}fclose(fp);
}
/*删除数据*/
void Student_Delete()
{ FILE *fp;int i,num,n;int total =0;int flag=0; fp=fopen("studentfile.dat","rb");printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");fclose(fp);total = i-1;printf("请输入要删除学生的学号:");scanf("%d",&num);for(i=0;i<=SIZE;i++)if(stu[i].nNum==num){printf("***********************************************************************\n");printf("要删除的学生信息\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");n=i+1;flag=1;break;}if(flag==0){printf("***********************************************************************\n");printf(" 输入错误!\n");printf(" 请返回!\n");printf("***********************************************************************\n");return;}printf("\n\n\n"); for(i=n;i<=total;i++){memcpy(&stu[i-1],&stu[i],sizeof(Student));}memset(&stu[total],0,sizeof(Student));fp=fopen("studentfile.dat","wb+");for(i=0;i<total;i++){fwrite(&stu[i],sizeof(Student),1,fp);} fclose(fp);fp=fopen("studentfile.dat","rb");printf("***********************************************************************\n");printf("当前成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");fclose(fp);
}
/*修改数据*/
void Student_Change()
{ FILE *fp;int i,num,n;int flag=0; printf("请输入要修改学生的学号:");scanf("%d",&num);for(i=0;i<=SIZE;i++)if(stu[i].nNum==num){printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");n=i+1;flag=1;break;}if(flag==0){printf("***********************************************************************\n");printf(" 输入错误!\n");printf(" 请返回!\n");printf("***********************************************************************\n");return;}printf("\n\n\n"); fp=fopen("studentfile.dat","rb+");fseek(fp,n*sizeof(Student),0);printf("\n\r请输入学号(数字型):");scanf("%d",&stu[i].nNum);printf("\n\r请输入姓名(字符型):");scanf("%s",stu[i].name);printf("\n\r请输入语文成绩(0~100):");scanf("%d",&stu[i].iCn);printf("\n\r请输入数学成绩(0~100):");scanf("%d",&stu[i].iMaths);printf("\n\r请输入英语成绩:(0~100)");scanf("%d",&stu[i].iEn);printf("\n\r请输入物理成绩:(0~100)");scanf("%d",&stu[i].iPhy);printf("\n\r请输入计算机成绩(0~100):");scanf("%d",&stu[i].iCom);stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;stu[i].n=i+1;fwrite(&stu[i],sizeof(Student),1,fp);fclose(fp);fp=fopen("studentfile.dat","rb");printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");fclose(fp);
}/*成绩排序*/
void Student_Order()
{int i,j,n;FILE *fp;Student t;fp=fopen("studentfile.dat","rb");printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);}printf("-----------------------------------------------------------------------\n");printf("***********************************************************************\n");fclose(fp);n=i;for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(stu[i].fAvage<stu[j].fAvage){t=stu[i];stu[i]=stu[j];stu[j]=t;}fp=fopen("studentfile.dats","wb");printf("\n\n\n");printf("***********************************************************************\n");printf(" 成绩列表\n");printf("-----------------------------------------------------------------------\n");printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");printf("-----------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);fwrite(&stu[i],sizeof(Student),1,fp);}printf("***********************************************************************\n");fclose(fp);
}
/*主函数*/
main()
{int n;for(;;){printf("\n");printf("/******************************************\\\n");printf("* *\n");printf("* 学生信息管理系统 *\n");printf("* 主菜单 *\n");printf("* *\n");printf("* 1.录入数据 *\n");printf("* 2.删除数据 *\n");printf("* 3.输出数据 *\n");printf("* 4.查找数据 *\n");printf("* 5.增加数据 *\n");printf("* 6.修改数据 *\n");printf("* 7.成绩排序 *\n"); printf("* 8.退出系统 *\n"); printf("* *\n");printf("\\******************************************/\n\n");printf("请输入选择项(1-8):");scanf("%d",&n);printf("\n\n\n\n");if(n>0&&n<=8){switch(n){case 1:Student_Input();break;case 2:Student_Delete();break;case 3:Student_ListOut();break;case 4:Student_Search();break;case 5:Student_Add();break;case 6:Student_Change();break;case 7:Student_Order();break; case 8:exit(0); }}else {printf("***********************************************************************\n");printf("* *\n");printf("* 按任意键 *\n");printf("* 退出! *\n");printf("* *\n");printf("***********************************************************************\n");break;}}
}
相关文章:

学生成绩管理系统(C语言)
系统分析 1. 主菜单的实现 2. 增加人员功能的实现 3. 删除数据功能的实现 4. 编辑人员功能的实现 5. 排序功能的实现 6. 输出功能 7. 查找信息功能 具体代码 #include <stdio.h> #include <string.h> #include <stdlib.h> #define SIZE 100000typedef struc…...

C语言 通讯录管理 完整代码
这份代码,是我从网上找的。目前是能运行。我正在读。有些不懂的地方,等下再记录下来。 有些地方的命名,还需要重新写一下。 比如: PersonInfo* info &address_book->all_address[address_book->size]; 应该改为: Perso…...

2024北京国际智能工厂及自动化展览会亮点前瞻
随着“工业创新,智造未来”的浪潮席卷而来,2024年度北京国际智能工厂及自动化与工业装配展览会定于8月1日至3日在中国国际展览中心(顺义新馆)盛大开幕。本次展会汇聚了智能制造与自动化技术的最新成果,通过三展联动的创…...
《网络安全等级保护制度详解》
网络安全等级保护制度是我国网络安全领域的一项重要制度,旨在保障网络安全,维护国家安全、社会秩序和公共利益。 网络安全等级保护制度主要包含以下几个关键方面: 等级划分 根据信息系统在国家安全、经济建设、社会生活中的重要程度ÿ…...

使用Wanderboat AI 来规划到巴黎的旅行计划
Wanderboat AI 平台是一个由 GPT-4 驱动的智能旅行规划工具,旨在通过自然对话和多模式互动,为用户提供个性化的旅行行程。以下是该平台的架构和使用方法: 平台架构 GPT-4 驱动:平台利用 GPT-4 的强大自然语言处理能力&#x…...

基于YOLO8的目标检测系统:开启智能视觉识别之旅
文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 target_dec_app.py 二、核心代码介绍篇2.1 target_dec_app.py2.2 scan_taskflow.py 三、结语 在线体验 基于YOLO8的目标检测系统 基于opencv的摄像头…...

实验07 接口测试postman
目录 知识点 1 接口测试概念 1.1为什么要做接口测试 1.2接口测试的优点 1.3接口测试概念 1.4接口测试原理和目的 2 接口测试内容 2.1测什么 2.1.1单一接口 2.1.2组合接口 2.1.3结构检查 2.1.4调用方式 2.1.5参数格式校验 2.1.6返回结果 2.2四大块 2.2.1功能逻辑…...
C++常用但难记的语法
模板函数的声明和定义必须在同一个文件中。 C中每一个对象所占用的空间大小,是在编译的时候就确定的,在模板类没有真正的被使用之前,编译器是无法知道,模板类中使用模板类型的对象的所占用的空间的大小的。只有模板被真正使用的时…...

Qt 快速保存配置的方法
Qt 快速保存配置的方法 一、概述二、代码1. QFileHelper.cpp2. QSettingHelper.cpp 三、使用 一、概述 这里分享一下,Qt界面开发时,快速保存界面上一些参数配置的方法。 因为我在做实验的时候,界面上可能涉及到很多参数的配置,我…...
RKE部署k8s
移除docker(非必要) rm -rf /etc/docker rm -rf /run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/docker yum list installed | grep docker yum remove ***rke部署k8s集群 cat > /etc/sysctl.conf << EFO net.ipv4.ip_forward 1 n…...

从0开始的STM32HAL库学习8
PWM控制舵机 配置环境 1. 选择TIM2时钟 2.选择内部时钟模式,打开通道二 3.分频系数PSC:72-1 自动重装寄存器ARR:20000-1 输出比较寄存器 CCR:500~2500( 后面可调整 ) 脉冲选择500后期可以改 编辑代码 调用启动函数 HAL_TIM_PWM_Start(&htim2,TIM_CHANN…...

微信小程序数组绑定使用案例(一)
微信小程序数组绑定案例,修改数组中的值 1.Wxml 代码 <view class"list"><view class"item {{item.ischeck?active:}}" wx:for"{{list}}"><view class"title">{{item.name}} <text>({{item.id}…...
Kudu节点数规划
作者:南墨 一、概述 由于Kudu是Hadoop生态的一部分(虽然它不依赖于Hadoop生态系统),因此大多数实际应用场景需要的不仅仅是Kudu;为了输入数据,可能需要Kafka、StreamSets或Spark Streaming;对…...

flutter 充电气泡
前言: 之前一直看到 有手机充电的时候 有气泡从Type-C 的位置冒泡上来 慢慢上移, 然后和上面的圆圈 会和,感觉还是挺好看的。今天试了下用 Flutter 实现了一版本。大致效果如下,而且气泡 和 气泡直接还可以粘黏 实现原理ÿ…...

【C++】deque以及优先级队列
容器适配器 deque的介绍deque的原理介绍 priority_queue的介绍与使用priority_queue的介绍priority_queue的使用constructor(构造函数)emptypushpoptopsize priority_queue的模拟实现 仿函数何为适配器容器适配器deque的缺陷选择deque作为适配器的理由ST…...

手机如何播放电脑的声音?
准备工具: 有线耳机,手机,电脑,远控软件 1.有线耳机插电脑上 2.电脑安装pc版远控软件,手机安装手机端控制版远控软件 3.手机控制电脑开启声音控制 用手机控制电脑后,打开声音控制,电脑播放视频…...

系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统(OAS)-解读
系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统(OAS) 3.6.1 办公自动化系统的概念3.6.1.1 办公活动3.6.1.1 办公自动化的概念 3.6.2 办公自动化系统的功能3.6.2.1 事务处理3.6.2.1.1 单机系统3.6.2.1.2 多机系统 3.6.2.2 信息管理3.6.2.…...
解决Element UI 表格组件懒加载数据刷新问题
一、问题描述 element ui的table组件设置成懒加载时,遇到数据表格需要更新、删除等操作,子节点不会自动更新。 二、解决思路 刷新数据,就是重新调用load(),通过map记录已展开的节点,需要刷新…...

【系统架构设计 每日一问】二 MySql主从复制延迟可能是什么原因,怎么解决
主从复制的架构设计如下图所示: 同步原理 具体到数据库之间是通过binlog和复制线程操作的: Master的更新事件(update、insert、delete)会按照顺序写入bin-log中。当Slave连接到Master的后,Master机器会为Slave开启,binlog dump线程,该线程…...
Ubuntu Grub引导优化
配置文件 sudo vim /etc/default/grub修改参数 引导菜单等待时间 GRUB_TIMEOUT3自动引导上次选择的系统 如果安装了双系统或多系统,可以考虑配置此参数。 # 此参数默认值为0,引导第一个引导项 GRUB_DEFAULTsaved# 此参数默认没有,需要手…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...