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直…

C语言实用算法系列之学生管理系统_单向链表内操作_选择排序

单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SNode* pNext; }; SNode* g_pHead NULL;void AddHead(DATA data) {SNode* p (SNode*)malloc(sizeof(SNode));p->data data;p->pNext g_pHead;g_pHead p…

如何从过滤器中排除URL

默认情况下&#xff0c;过滤器不支持排除特定的URL模式&#xff0c;每当您为过滤器定义URL模式时&#xff0c;任何与该模式匹配的请求都将由过滤器无例外处理。 从过滤器中排除URL的最简单方法是将过滤器映射到非常特定的模式。 在早期开发阶段完成此操作是可行的&#xff0c;…

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

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

C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则

代码 后续文章的排序均采用速度较快的选择排序算法。 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <stdlib.h>enum {READ_ONLY,HIDE,SYSTEM 55,TEST };typedef struct SUser {int nNumb;char sName[20];float fMath…

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

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

C语言实用算法系列之学生管理系统_单向链表外排序_栈内数组存储链表节点指针

代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <stdlib.h>enum {READ_ONLY,HIDE,SYSTEM 55,TEST };typedef struct SUser {int nNumb;char sName[20];float fMath; }DATA;typedef struct SNode {DATA data;SNode*…

基于触摸屏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…

同网段PC通讯的过程

第一步&#xff1a;判断对方是否在同一个网段 如何判断&#xff1f; ①IP地址包括网络号和主机号&#xff0c;网络号相同就在同一个网段。 ②IP地址和子网掩码进行与运算可以得到网络号。 ③子网掩码与IP地址成对出现&#xff0c;就是用来指明IP地址哪些位是网络号。 第二步&a…

C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针

代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <stdlib.h>enum {READ_ONLY,HIDE,SYSTEM 55,TEST };typedef struct SUser {int nNumb;char sName[20];float fMath; }DATA;typedef struct SNode {DATA data;SNode*…

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…