C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序

代码

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
void Save();struct SUser // 结构体定义
{int nNumb; // 学号char sName[20]; // 姓名float fMath; // 数学成绩
}g_user[100];void Print() // 打印子函数
{puts("\n学号\t姓名\t数学");int i = 0;while (g_user[i].nNumb){if(g_user[i].nNumb>0)printf("%d\t%s\t%0.1f\n", g_user[i].nNumb, g_user[i].sName, g_user[i].fMath);++i;}printf("\n\t总共有%d条学生信息\n\n", i);
}int Check(int nNumb) // 查找
{int i = 0;while (g_user[i].nNumb){if (nNumb == g_user[i].nNumb)return 1;++i;}return 0;
}void Add() // 增加
{int nNumb;printf("请输入学号:");scanf_s("%d", &nNumb);while (Check(nNumb)){printf("该学号已存在,请重新输入(0取消输入):");scanf_s("%d", &nNumb);if (nNumb == 0)return;}int i = 0;while (g_user[i].nNumb>0)++i;//scanf("%d%s%f",&g_user[i].nNumb,)g_user[i].nNumb = nNumb;printf("请输入姓名:");scanf_s("%s", g_user[i].sName,sizeof(g_user[i].sName));printf("请输入成绩:");scanf_s("%f", &g_user[i].fMath);Save();Print();
}void Delete() // 删除
{printf("请输入要删除的学号:");int nNumb;scanf_s("%d", &nNumb);int i = 0;//int flag = 0;while (g_user[i].nNumb){if (g_user[i].nNumb == nNumb){//flag = 1;g_user[i].nNumb = -1;break;}++i;}//if (flag == 0)if (g_user[i].nNumb!=-1)//if (g_user[i].nNumb==0)puts("你输入的学号不存在!");else{Save();Print();}
}void Modify() // 修改
{printf("请输入要修改的学号:");int nNumb;scanf_s("%d", &nNumb);int i = 0;while (g_user[i].nNumb){if (g_user[i].nNumb == nNumb){printf("%d\t%s\t%0.1f\n", g_user[i].nNumb, g_user[i].sName, g_user[i].fMath);printf("请输入新的姓名:");scanf_s("%s", g_user[i].sName, sizeof(g_user[i].sName));printf("请输入新的成绩:");scanf_s("%f", &g_user[i].fMath);return;}++i;}Save();Print();
}void Load() // 加载保存的数据文件
{FILE* pf = fopen("data.lv", "r");if (!pf)return;int i = 0;while (fread(&g_user[i], 1, sizeof(SUser), pf) == sizeof(SUser))++i;fclose(pf);
}void Save() // 保存结构体数据到文件
{FILE* pf = fopen("data.lv", "w");if (!pf){puts("保存数据时失败!");return;}int i = 0;while (g_user[i].nNumb){if (-1 != g_user[i].nNumb)fwrite(&g_user[i], 1, sizeof(SUser), pf);++i;}fclose(pf);
}void SortByNumb() // 按学号排序
{int i = 0, n = 0;while (g_user[i++].nNumb > 0)++n;i = 0;while (i < n - 1){int j = 0;while (j < n - 1 - i){if (g_user[j].nNumb > g_user[j + 1].nNumb){SUser t = g_user[j];g_user[j] = g_user[j + 1];g_user[j + 1] = t;}++j;}++i;}
}void SortByName() // 按姓名排序
{int i = 0, n = 0;while (g_user[i++].nNumb)++n;i = 0;while (i < n - 1){int j = 0;while (j < n - 1 - i){if (strcmp(g_user[j].sName , g_user[j + 1].sName)>0){SUser t = g_user[j];g_user[j] = g_user[j + 1];g_user[j + 1] = t;}++j;}++i;}
}void SortByMath() // 按数学成绩排序
{int i = 0, n = 0;while (g_user[i++].nNumb)++n;i = 0;while (i < n - 1){int j = 0;while (j < n - 1 - i){if (g_user[j].fMath < g_user[j + 1].fMath){SUser t = g_user[j];g_user[j] = g_user[j + 1];g_user[j + 1] = t;}++j;}++i;}
}int DispMenu()
{puts("1.按学号排序");puts("2.按姓名排序");puts("3.按成绩排序");puts("0.返回主菜单");printf("请选择:");int i = 0;scanf_s("%d", &i);switch (i){case 1:SortByNumb();Print();break;case 2:SortByName();Print();break;case 3:SortByMath();Print();break;}return i;
}int Menu()
{int i = 0;puts("1.浏览所有信息");puts("2.添加信息");puts("3.删除信息");puts("4.修改信息");puts("5.查找信息");puts("0.退出");printf("请选择:");scanf_s("%d", &i);switch (i){case 0:break;case 1:while (DispMenu());Print();break;case 2:Add();break;case 3:Delete();break;case 4:Modify();break;}return i;
}int main()
{Load();while (Menu());return 0;
}

运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLC 控制三相异步电动机正反转实验

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;plc3…

功能Java示例 第4部分–首选不变性

这是称为“ Functional Java by Example”的系列文章的第4部分。 在上一部分中&#xff0c;我们讨论了一些副作用&#xff0c;并且我想进一步详细说明如何通过将不可变性引入代码中来防止以意外的方式操纵数据。 如果您是第一次来&#xff0c;最好是从头开始阅读。 它有助于…

C语言实用算法系列之学生管理系统_对整个结构体操作_选择排序_提取排序规则

代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <stdlib.h> void Save();struct SUser {int nNumb;char sName[20];float fMath; }g_user[100];void Print() {puts("\n学号\t姓名\t数学");int i 0;while…

Altium Designer19(AD19)

微信公众号&#xff1a;创享日记 发送关键词&#xff1a;Altium 免费获取Altium Designer19 1、解压文件 2、解压后打开安装文件&#xff08;AD19 setup.exe&#xff09; 3、点击next 4、选择中文并接受协议 5、选择功能&#xff0c;Next 6、选择文件保存路径与安装路径&…

仿真proteus8.7安装

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;prot…

C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序_提取排序规则

代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <stdlib.h> void Save();struct SUser {int nNumb;char sName[20];float fMath; }g_user[100];void Print() {puts("\n学号\t姓名\t数学");int i 0;while…

servlet 异常处理_Servlet异常和错误处理示例教程

servlet 异常处理有时候我写了一篇有关Java异常处理的文章&#xff0c;但是当涉及到Web应用程序时&#xff0c;我们需要的不仅仅是Java中的异常处理。 Servlet异常 如果您注意到&#xff0c;doGet&#xff08;&#xff09;和doPost&#xff08;&#xff09;方法将抛出ServletE…

基于51单片机直流电机PWM控制器设计

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 由STC89C52单片机、LCD1602液晶显示屏、霍尔测速传感器、3V直…

大林算法控制仿真实验(计控实验六simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;计控…

振铃的消除仿真实验(计控实验七simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;计控…

基于触摸屏PLC的温度采集及简单控制

微信公众号&#xff1a;创享日记 发送关键词&#xff1a;plc4 免费获取完整无水印实验报告及源文件 一、实验目的 1、掌握模拟量输入输出的编写方法&#xff1b; 2、了解触摸屏画面编辑及组态的方法。 二、实验设备 三、实验步骤 1、如图所示&#xff0c;编辑触摸屏画面并定义…

OSI模型七层

OSI将计算机网络体系结构(architecture&#xff09;划分为以下七层&#xff1a; 一、应用层&#xff08;快递物品本身&#xff09; 网络服务接口&#xff0c;定义程序间通信标准&#xff0c;应用层协议&#xff08;HTTP…&#xff09; 二、表示层&#xff08;打包&#xff09…

内存heap_哪个内存更快?Heap或ByteBuffer或Direct?

内存heapJava正在成为新的C / C &#xff0c;它被广泛用于开发高性能系统。 对像我这样的数百万Java开发人员来说非常好&#xff01; 在这个博客中&#xff0c;我将分享我可以用Java完成的不同类型的内存分配的实验&#xff0c;以及从中获得什么好处。 Java中的内存分配 Java…

Java EE 8的前5个新功能

备受期待的Java Enterprise Edition 8版本拥有两个激动人心的新API&#xff08;JSON绑定1.0和Java EE Security 1.0&#xff09;以及对当前API的改进&#xff08;JAX-RS 2.1&#xff0c;Bean Validation 2.0&#xff0c;JSF 2.3&#xff0c;CDI 2.0&#xff0c;JSON-P&#xff…

C语言实用算法系列之二级指针用法简介

一、几个知识点 内存四区&#xff1a;栈、全局&#xff08;静态&#xff09;&#xff0c;常量区&#xff0c;除此以外剩余的空间暂时不能随意使用&#xff1b;除此以外剩余的空间只要通过malloc函数申请一下&#xff0c;就可以使用了&#xff1b;申请一个堆上的单个int变量的方…

C语言实用算法系列之行指针

代码 #include <stdio.h>void Test(double (*a)[3]) {printf("sizeof(a)%d\n", sizeof(a));printf("sizeof(*a)%d\n", sizeof(*a));printf("sizeof(a[1])%d\n", sizeof(a[1])); }void main() {double ar[2][3] { {1.0,2.1,3.2},{4.3,5.4…

C语言实用算法系列之DOS传参“加减乘除计算器”

简介 主要采用str族函数实现字符检测&#xff0c;只能用DOS传参进行计算&#xff0c;详见运行结果。 代码 #include <stdio.h> #include <string.h> #include <stdlib.h>/* int main(int argc, char** argv) { int i0; printf("总共有%d条有效字符串…

ARP地址解析协议(深信服X计划)

文章目录一、ARP需求背景二、ARP概述及工作原理三、免费ARP概述及案例四、代理ARP概述及案例一、ARP需求背景 在以太网中&#xff0c;一个主机和另一个主机进行直接通信&#xff0c;必须要知道目标主机的MAC地址。单这个目标MAC地址是如何获得的呢&#xff1f;它就是通过ARP&a…

grails框架_Play和Grails Java框架的优缺点

grails框架框架通过为程序员提供一些有用的功能来简化应用程序开发过程。 由于开发人员的普遍使用&#xff0c;Java框架经常被开发人员使用。 您可以在市场上找到各种Java开发框架。 新手开发人员经常在论坛上发布一个常见问题&#xff1a;“哪种Java框架是最好的&#xff1f;”…

TCP和UDP协议(深信服X计划)

文章目录一、TCP协议概述二、TCP三次握手和四次挥手三、UDP协议概述四、TCP和UDP对比及应用场景一、TCP协议概述 TCP (Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由ETF的RFC 793定义。在简化的计算机网络O…