当前位置: 首页 > news >正文

C语言 学生记录管理系统

                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):1
请输入新学生的学号:1
请输入新学生的姓名:1
请输入新学生的班级:1
请输入新学生的性别:1
请输入新学生的出生日期:1
请输入新学生的家庭住址:1
成功加入一条记录
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):3
请输入要查找记录的姓名:1
1        1       1       1       1       1
查找完毕
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):1
请输入新学生的学号:1
此学号已经存在,不可以使用。
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):1
请输入新学生的学号:2
请输入新学生的姓名:1
请输入新学生的班级:1
请输入新学生的性别:1
请输入新学生的出生日期:1
请输入新学生的家庭住址:1
成功加入一条记录
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):3
请输入要查找记录的姓名:1
1        1       1       1       1       1
2        1       1       1       1       1
查找完毕
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):2
请输入要删记录的学号:3
没有查到相关信息。
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):2
请输入要删记录的学号:2
要删除的记录信息是:
2        1       1       1       1       1
成功删除一条记录
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):4
请输入要查找记录的班级(1 2 3):1
1        1       1       1       1       1
查找完毕
===================================


                学生记录管理系统

                1--添加
                2--删除
                3--查询:按姓名
                4--查询:按班级
                5--查询:按学号
                0--退出
请选择操作序号(0—5):0

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINE "==================================="
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2typedef int Status; //状态 比如找到或没找到,插入成功或不成功typedef struct stu {int no;           //学号char name[20];    //姓名int clas;         //班级char sex[6];      //性别int birth;        //出生日期 20201011char address[50]; //住址
} stu_t;typedef struct {stu_t* elem;int length;int listsize;
} SqList;
SqList L; //全局变量//构造一个空的线性表。
void InitList() {L.elem = (stu_t*)malloc(3 * 3 * 40 * sizeof(stu_t));if (!L.elem)exit(OVERFLOW);L.length = 0;L.listsize = 3 * 3 * 40;
}void DestroyList() { /* 操作结果:销毁顺序线性表L */free(L.elem);L.elem = NULL;L.length = 0;L.listsize = 0;
}int ListFind(int no) {//根据学号查找记录是否存在 没找到返回-1int i;for (i = 0; i < L.length; i++) {if (L.elem[i].no == no)return i;}return -1;
}void PrintOne(stu_t s) {//显示一条学生记录printf("%d\t %s\t %d\t %s\t %d\t %s\n", s.no, s.name, s.clas, s.sex,s.birth, s.address);
}void FindStudent(const char* szName) {//根据姓名查找记录是否存在没找到返回-1int i;int pos = -1;for (i = 0; i < L.length; i++) {if (strcmp(L.elem[i].name, szName) == 0) {pos = i;PrintOne(L.elem[pos]);}}if (pos == -1)puts("没有查到相关信息。");elseputs("查找完毕");
}void FindStudentByClas(const int clas) {//根据班级查找记录是否存在没找到返回-1int i;int pos = -1;for (i = 0; i < L.length; i++) {if (L.elem[i].clas == clas) {pos = i;PrintOne(L.elem[pos]);}}if (pos == -1)puts("没有查到相关信息。");elseputs("查找完毕");
}void ListPush_back() {//表后加入新记录stu_t s;int pos;printf("请输入新学生的学号:");scanf("%d", &s.no);pos = ListFind(s.no);if (pos != -1) {puts("此学号已经存在,不可以使用。");return;}printf("请输入新学生的姓名:");scanf("%s", s.name);printf("请输入新学生的班级:");scanf("%d", &s.clas);printf("请输入新学生的性别:");scanf("%s", s.sex);printf("请输入新学生的出生日期:");scanf("%d", &s.birth);printf("请输入新学生的家庭住址:");scanf("%s", s.address);L.elem[L.length++] = s;puts("成功加入一条记录");
}void ListDel(int no) {int pos = ListFind(no);int i;if (pos == -1)puts("没有查到相关信息。");else {puts("要删除的记录信息是:");PrintOne(L.elem[pos]);for (i = pos; i < L.length - 1; i++)L.elem[i] = L.elem[i + 1];L.length -= 1;puts("成功删除一条记录");}
}
void FindStudentByNo(int no) {int pos = ListFind(no);if (pos == -1)puts("没有查到相关信息。");else {PrintOne(L.elem[pos]);puts("查找完毕");}
}unsigned menu() {unsigned a;printf("\n\n\t\t学生记录管理系统\n\n");printf("\t\t1--添加\n");printf("\t\t2--删除\n");printf("\t\t3--查询:按姓名\n");printf("\t\t4--查询:按班级\n");printf("\t\t5--查询:按学号\n");printf("\t\t0--退出\n");printf("请选择操作序号(0—5):");scanf("%d", &a); /*选择操作项*/while (a < 0 || a > 5) {printf("输入错误,请重新选择操作序号(0—5):");scanf("%d", &a);}return a;
}int main() {unsigned select;int no;char name[20];int cls;InitList(); //初始化表while (1) {select = menu();switch (select) {case 1:ListPush_back();break;case 2:printf("请输入要删记录的学号:");scanf("%d", &no);ListDel(no);break;case 3:printf("请输入要查找记录的姓名:");scanf("%s", name);FindStudent(name);break;case 4:printf("请输入要查找记录的班级(1 2 3):");scanf("%d", &cls);FindStudentByClas(cls);break;case 5:printf("请输入要查找记录的学号:");scanf("%d", &no);FindStudentByNo(no);break;case 0:DestroyList(); //程序退出之前销毁表puts("程序已经结束退出");return 0;}puts(LINE);}    return 0;
}

相关文章:

C语言 学生记录管理系统

学生记录管理系统 1--添加 2--删除 3--查询&#xff1a;按姓名 4--查询&#xff1a;按班级 5--查询&#xff1a;按学号 0--退出 请选择操作序号(0—5):1 请输入新学生的学号:1 请输入新学生的…...

【独家】华为OD机试 C 语言解题 - 交换字符

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

网络安全平台测试赛 easyphp(phar脏数据处理)

昨天的比赛&#xff0c;14.00-17.00.时间有点紧张&#xff0c;比赛期间没拿下来这道 &#x1f62d;非常痛苦&#xff0c;很顺畅的思路 一步步想下来&#xff0c;卡在最后一步末尾脏数据处理了&#xff0c;最后时间到了 没打通&#xff0c;还需多练 这里本地复现一下&#xff1…...

【python】XML格式文件读写详解

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录XML介绍格式XML与AJAX与HTML区别联系生成XML文件案例用SAX模块处理XML用DOM模块处理XML&#x1f338;I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢&#xff1a;…...

理解js的精度问题

参考博客&#xff1a;js精度丢失问题-看这篇文章就够了(通俗易懂)、探寻 JavaScript 精度问题以及解决方案、JavaScript 浮点数陷阱及解法 1 为什么 JavaScript 中所有数字包括整数和小数都只有一种类型 即 Number类型&#xff0c;它的实现遵循 IEEE 754 标准。 符号位S&#…...

蓝桥杯 时间显示

题目 输入输出样例 示例 1 输入 46800999输出 13:00:00示例 2 输入 1618708103123输出 01:08:23评测用例规模与约定 对于所有评测用例&#xff0c;给定的时间为不超过 10^{18}1018 的正整数。 运行限制 最大运行时间&#xff1a;1s最大运行内存: 512M 基础知识 时间的转换…...

qt中设置菜单高度

如题所示&#xff0c;我建立一个菜单&#xff0c;代码如下&#xff0c;但是菜单项的高度太小了&#xff0c; &#xff5b; popupMenu new QMenu(this); QAction *action1 new QAction(tr(“&New1”), this); QAction *action2 new QAction(tr(“&New2”), this); QA…...

测开:前端基础-css页面布局-定位

一 、传统网页布局的三种方式 网页布局的本质–用CSS来摆放盒子&#xff0c;把盒子摆放到相应的位置&#xff0c;css提供了三种传统布局方式&#xff0c;分别是标准流&#xff0c;浮动和定位三种。 二、 定位 2.1 啥是定位 我的理解&#xff0c;就是要把这个元素&#xff0c…...

Servlet中八个监听器介绍

一、监听对象创建的监听器 1、ServletContextListener /*** 用于监听ServletContext对象创建和销毁的监听器* since v 2.3*/public interface ServletContextListener extends EventListener {/*** 对象创建时执行此方法。该方法的参数是ServletContextEvent事件对象&#xf…...

LicenseBox Crack,对服务器的要求最低

LicenseBox Crack,对服务器的要求最低 LicenseBox是用于管理基于PHP的软件、WordPress插件或主题、主题、插件和WordPress的更新和许可的完整软件。它易于安装&#xff0c;对服务器的要求最低&#xff0c;用户友好的界面&#xff0c;无限脚本的使用为您的创造力打开了大门。 Li…...

css中重难点整理(vertical-align)

一、vertical-align 在学习vertical-align的时候&#xff0c;可能会很困惑。即使网上有一大推文章讲veitical-align,感觉看完好像懂了&#xff0c;等自己布局的时候用到vertical-align的时候好像对它又很陌生。这就是我在布局的时候遇到的问题。 本来vertical-align就很不好理…...

javaScript基础面试题 ---宏任务微任务

宏任务微任务一、为什么JS是单线程语言&#xff1f;二、JS是单线程&#xff0c;怎样执行异步代码&#xff1f;1、JS是单线程语言 2、JS代码执行流程&#xff0c;同步执行完&#xff0c;再进行事件循环&#xff08;微任务、宏任务&#xff09; 3、清空所有的微任务&#xff0c;再…...

基于JSP的网上书城

技术&#xff1a;Java、JSP等摘要&#xff1a;随着科技的迅速发展&#xff0c;计算机技术已应用到社会的各个领域。随着计算机技术和通信技术的迅速发展&#xff0c;网络的规模也逐渐增大&#xff0c;网络的元素也随之不断增加&#xff0c;有的利用其通信&#xff0c;有的利用其…...

C#教程 05 常量

文章目录 C# 常量整数常量浮点常量字符常量字符串常量定义常量C# 常量 常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 常量可以被当作常规的变量,只是它们的值在定义后不能被修改。 整数…...

【华为OD机试真题java、python】基站维修工程师【2022 Q4 100分】(100%通过)

代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python两种代码 题目描述 小王是一名基站维护工程师,负责某区域的基站维护。 某地方有 n 个基站( 1<n<10 ),已知各基站之间的距离 s( 0<s<500 ), 并且基站 x 到基站 y 的距离,与基站 y …...

你是真的“C”——为冒泡排序升级赋能!

你是真的“C”——为冒泡排序升级赋能&#xff01;&#x1f60e;前言&#x1f64c;冒泡排序升级赋能之境界一&#xff01;冒泡排序升级赋能之境界二&#xff01;qsort库函数的运用和认识总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的…...

【JavaEE】基于mysql与servlet自制简易的表白墙程序

文章目录1 表白墙页面构建2 Servlet 回顾3 表白墙后端程序实现3.1 我们需要做什么&#xff1f;3.2 实现细节4 实现结果写在最后1 表白墙页面构建 该页面由标题、文本、三个 input 输入框与一个提交按钮构成&#xff0c;整体比较简单&#xff0c;相关样式文件和页面代码会在后面…...

抓包技术(浏览器APP小程序PC应用)

P1 抓包工具 01. Fidder 首先第一个Fiddler它的优势&#xff0c;独立运行&#xff0c;第二个支持移动设备&#xff08;是否能抓移动APP的包&#xff0c;&#xff09;在这一块的话wireshark、httpwatch就不支持&#xff0c;因此在这一块就可以排除掉前连个&#xff0c;因为我们…...

linux笔记(10):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4

文章目录1.ubuntu安装ffmpeg1.1 源码安装1.1 克隆ffmpeg源码1.2 配置编译条件&#xff0c;编译&#xff0c;安装1.2 直接安装依赖包2.下载lvgl源码2.1 测试原始代码2.2 运行lv_example_ffmpeg_2()例程2.2.1 配置 LV_USE_FFMPEG 为 12.2.2 lv_example_ffmpeg_2()替换lv_demo_wid…...

JavaScript专题之类型判断(下)

参考原文&#xff1a;JavaScript专题之类型判断(下) 前言 在上篇《JavaScript专题之类型判断(上)》中&#xff0c;我们抄袭 jQuery 写了一个 type 函数&#xff0c;可以检测出常见的数据类型&#xff0c;然而在开发中还有更加复杂的判断&#xff0c;比如 plainObject、空对象…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...