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--查询:按姓名 4--查询:按班级 5--查询:按学号 0--退出 请选择操作序号(0—5):1 请输入新学生的学号:1 请输入新学生的…...
【独家】华为OD机试 C 语言解题 - 交换字符
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

网络安全平台测试赛 easyphp(phar脏数据处理)
昨天的比赛,14.00-17.00.时间有点紧张,比赛期间没拿下来这道 😭非常痛苦,很顺畅的思路 一步步想下来,卡在最后一步末尾脏数据处理了,最后时间到了 没打通,还需多练 这里本地复现一下࿱…...

【python】XML格式文件读写详解
注:最后有面试挑战,看看自己掌握了吗 文章目录XML介绍格式XML与AJAX与HTML区别联系生成XML文件案例用SAX模块处理XML用DOM模块处理XML🌸I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢:…...

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

蓝桥杯 时间显示
题目 输入输出样例 示例 1 输入 46800999输出 13:00:00示例 2 输入 1618708103123输出 01:08:23评测用例规模与约定 对于所有评测用例,给定的时间为不超过 10^{18}1018 的正整数。 运行限制 最大运行时间:1s最大运行内存: 512M 基础知识 时间的转换…...
qt中设置菜单高度
如题所示,我建立一个菜单,代码如下,但是菜单项的高度太小了, { popupMenu new QMenu(this); QAction *action1 new QAction(tr(“&New1”), this); QAction *action2 new QAction(tr(“&New2”), this); QA…...

测开:前端基础-css页面布局-定位
一 、传统网页布局的三种方式 网页布局的本质–用CSS来摆放盒子,把盒子摆放到相应的位置,css提供了三种传统布局方式,分别是标准流,浮动和定位三种。 二、 定位 2.1 啥是定位 我的理解,就是要把这个元素,…...
Servlet中八个监听器介绍
一、监听对象创建的监听器 1、ServletContextListener /*** 用于监听ServletContext对象创建和销毁的监听器* since v 2.3*/public interface ServletContextListener extends EventListener {/*** 对象创建时执行此方法。该方法的参数是ServletContextEvent事件对象…...

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

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

javaScript基础面试题 ---宏任务微任务
宏任务微任务一、为什么JS是单线程语言?二、JS是单线程,怎样执行异步代码?1、JS是单线程语言 2、JS代码执行流程,同步执行完,再进行事件循环(微任务、宏任务) 3、清空所有的微任务,再…...

基于JSP的网上书城
技术:Java、JSP等摘要:随着科技的迅速发展,计算机技术已应用到社会的各个领域。随着计算机技术和通信技术的迅速发展,网络的规模也逐渐增大,网络的元素也随之不断增加,有的利用其通信,有的利用其…...
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”——为冒泡排序升级赋能!😎前言🙌冒泡排序升级赋能之境界一!冒泡排序升级赋能之境界二!qsort库函数的运用和认识总结撒花💞😎博客昵称:博客小梦 😊最喜欢的…...

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

抓包技术(浏览器APP小程序PC应用)
P1 抓包工具 01. Fidder 首先第一个Fiddler它的优势,独立运行,第二个支持移动设备(是否能抓移动APP的包,)在这一块的话wireshark、httpwatch就不支持,因此在这一块就可以排除掉前连个,因为我们…...

linux笔记(10):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4
文章目录1.ubuntu安装ffmpeg1.1 源码安装1.1 克隆ffmpeg源码1.2 配置编译条件,编译,安装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专题之类型判断(下)
参考原文:JavaScript专题之类型判断(下) 前言 在上篇《JavaScript专题之类型判断(上)》中,我们抄袭 jQuery 写了一个 type 函数,可以检测出常见的数据类型,然而在开发中还有更加复杂的判断,比如 plainObject、空对象…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

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() …...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...