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

丁小喜の兵器谱(学生管理系统)

我的第一个独立看需求完成项目,虽然很简单(笑)

建立一个可以增加,修改,删除,展示学生信息的系统

首先是一个界面,让你决定进行哪个操作

1.2.3.4.5分别对应不同的操作,switch与这一操作完美契合,在switch语句里调用对应操作的函数

            Scanner sc = new Scanner(System.in);String choose = sc.next();switch (choose){case "1": addStudent(list);break;case "2": deleteStudent(list);break;case "3": change(list);break;case "4": look(list);break;case "5": System.out.println("退出成功");break quit;default:System.out.println("你输入的什么玩意");}

接着考虑用什么盛装对应的学生信息,如果用数组的话不确定有多少个学生信息,所以集合ArrayList是最好的选择。

ArrayList<student> list = new ArrayList<>();

然后就是界面了很简单,想做成什么样式的就做成什么什么样式的,我就做成了百晓生,啊不,丁小喜的兵器谱(笑)

System.out.println("------------这里是丁小喜の兵器谱---------------");System.out.println("1:新晋高手");System.out.println("2:高手除名");System.out.println("3:替换高手");System.out.println("4:展示兵器谱");System.out.println("5:退出");System.out.println("请做出你的选择吧!");

再就是不能只进行一次操作吧?所以加上while true循环。那怎么退出呢?自然是用break跳出指定循环的办法了呀。所以最好main函数是长这样的:

   public static void main(String[] args) {ArrayList<student> list = new ArrayList<>();quit:while(true){System.out.println("------------这里是丁小喜の兵器谱---------------");System.out.println("1:新晋高手");System.out.println("2:高手除名");System.out.println("3:替换高手");System.out.println("4:展示兵器谱");System.out.println("5:退出");System.out.println("请做出你的选择吧!");Scanner sc = new Scanner(System.in);String choose = sc.next();switch (choose){case "1": addStudent(list);break;case "2": deleteStudent(list);break;case "3": change(list);break;case "4": look(list);break;case "5": System.out.println("退出成功");break quit;default:System.out.println("你输入的什么玩意");}}}

然后是操作的写法

3展示学生编号:

当集合里没有对象时,直接返回,没有学生信息还展示个锤子

public static void look(ArrayList<student> list){if(list.size()==0) {System.out.println("还有没有高手你心里没有点ac数?");return;}System.out.println("绰号"+'\t'+'\t'+"姓名"+'\t'+'\t'+"年龄"+'\t'+'\t'+"籍贯");for (int i = 0; i < list.size(); i++) {System.out.printf(list.get(i).getId()+"\t\t");System.out.printf(list.get(i).getName()+"\t\t");System.out.printf(list.get(i).getAge()+"\t\t");System.out.printf(list.get(i).getPlace()+"\t\t");System.out.println("");}}

1添加学生对象:

进来首先判断输入的id是否之前有过,就像武林高手不能有同一个绰号,如果之前有过就让他从新添加,判断是否相同就用list.get(i).getId().equals(id)就行了。首先list.get(i)获取编号为i的student对象。list.get(i).getId()获取该对象的id值再.equals(id)就比较了两个id是否相同。

不同就创建一个新的对象。

 public static void addStudent(ArrayList<student> list){Scanner sc = new Scanner(System.in);String id = null;re:while (true) {System.out.println("请输入高手的绰号:");id = sc.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("已经有高手起这个绰号了,给爷重新起");continue re;}}break;}System.out.println("请输入高手的姓名:");String name = sc.next();System.out.println("请输入高手的籍贯:");String place = sc.next();System.out.println("请输入高手的年龄:");int age = sc.nextInt();student a = new student(name,id,age,place);list.add(a);
}

2删除一个学生信息:

和之前一样先判断有没有学生信息。如果有直接list.remove(i)就完事了。

如果输错id怎么办呢?很简单,在for循环的过程中如果发现id相同,直接删除跑路了,那没跑路说明就没有你提供的id!!!

public static void deleteStudent(ArrayList<student> list){if(list.size()==0){System.out.println("一个高手也没,你除个锤子名");return;}System.out.println("请输入要除名的高手绰号:");Scanner sc = new Scanner(System.in);String id = sc.next();for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)) {list.remove(i);System.out.println("除名成功");return;}}System.out.println("你tm故意找茬是吧!!!");}

4修改学生编号:

和删除大差不差,简直就是删除和插入的拼接操作

public static void change(ArrayList<student> list){Scanner sc = new Scanner(System.in);if(list.size()==0){System.out.println("一个高手也没,你改个锤子名");return;}System.out.println("请输入要替换的高手绰号:");String id = sc.next();for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)) {System.out.println("请输入高手的新绰号:");id = sc.next();System.out.println("请输入高手的姓名:");String name = sc.next();System.out.println("请输入高手的籍贯:");String place = sc.next();System.out.println("请输入高手的年龄:");int age = sc.nextInt();student stu = new student(name,id,age,place);list.set(i,stu);System.out.println("替换成功");return;}}System.out.println("查无此人");}

最后别忘了写student的JavaBean类哦。

最后把相同代码段合并写成一个函数就可以了:

public class studentTest {public static void main(String[] args) {ArrayList<student> list = new ArrayList<>();quit:while(true){System.out.println("------------这里是丁小喜の兵器谱---------------");System.out.println("1:新晋高手");System.out.println("2:高手除名");System.out.println("3:替换高手");System.out.println("4:展示兵器谱");System.out.println("5:退出");System.out.println("请做出你的选择吧!");Scanner sc = new Scanner(System.in);String choose = sc.next();switch (choose){case "1": addStudent(list);break;case "2": deleteStudent(list);break;case "3": change(list);break;case "4": look(list);break;case "5": System.out.println("退出成功");break quit;default:System.out.println("你输入的什么玩意");}}}public static void addStudent(ArrayList<student> list){Scanner sc = new Scanner(System.in);String id = null;re:while (true) {System.out.println("请输入高手的绰号:");id = sc.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("已经有高手起这个绰号了,给爷重新起");continue re;}}break;}list.add(gai(list,id));}public static void deleteStudent(ArrayList<student> list){if(list.size()==0){System.out.println("一个高手也没,你除个锤子名");return;}System.out.println("请输入要除名的高手绰号:");Scanner sc = new Scanner(System.in);String id = sc.next();for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)) {list.remove(i);System.out.println("除名成功");return;}}System.out.println("你tm故意找茬是吧!!!");}public static void look(ArrayList<student> list){if(list.size()==0) {System.out.println("还有没有高手你心里没有点ac数?");return;}System.out.println("绰号"+'\t'+'\t'+"姓名"+'\t'+'\t'+"年龄"+'\t'+'\t'+"籍贯");for (int i = 0; i < list.size(); i++) {System.out.printf(list.get(i).getId()+"\t\t");System.out.printf(list.get(i).getName()+"\t\t");System.out.printf(list.get(i).getAge()+"\t\t");System.out.printf(list.get(i).getPlace()+"\t\t");System.out.println("");}}public static void change(ArrayList<student> list){Scanner sc = new Scanner(System.in);if(list.size()==0){System.out.println("一个高手也没,你改个锤子名");return;}System.out.println("请输入要替换的高手绰号:");String id = sc.next();for (int i = 0; i < list.size(); i++) {if(list.get(i).getId().equals(id)) {System.out.println("请输入高手的新绰号:");id = sc.next();list.set(i,gai(list,id));System.out.println("替换成功");return;}}System.out.println("查无此人");}public static student gai(ArrayList<student> list,String id){Scanner sc = new Scanner(System.in);System.out.println("请输入高手的姓名:");String name = sc.next();System.out.println("请输入高手的籍贯:");String place = sc.next();System.out.println("请输入高手的年龄:");int age = sc.nextInt();student a = new student(name,id,age,place);return a;}}

相关文章:

丁小喜の兵器谱(学生管理系统)

我的第一个独立看需求完成项目&#xff0c;虽然很简单&#xff08;笑&#xff09;建立一个可以增加&#xff0c;修改&#xff0c;删除&#xff0c;展示学生信息的系统首先是一个界面&#xff0c;让你决定进行哪个操作1.2.3.4.5分别对应不同的操作&#xff0c;switch与这一操作完…...

linux:字符串拷贝的五种方法:使用指针下标,指针变量加偏移量,指针变量自加等

字符串数组名做函数形参&#xff0c;会退化正指针变量&#xff0c;需要使用指针变量操作字符串 代码&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <s…...

cesium常用方法汇集(工具篇)

1.Scene.prototype.pickPositionWorldCoordinates 根据屏幕坐标获取世界坐标 2&#xff0c;Scene.prototype.pickPosition 根据屏幕坐标获取世界坐标 3&#xff0c;Scene.prototype.drillPick 通过屏幕坐标拾取多个对象 4&#xff0c;Scene.prototype.pickFromRay 通过射线拾…...

分布式一致性与共识算法(一)

这里写目录标题是什么ACIDCAP组合一致性概念共识为什么需要共识算法会如何发展列举Paxos算法ZAB&#xff08;Zookeeper Atomic Broadcast&#xff09;协议Raft 算法参考引用是什么 从实现效果上来说&#xff0c;很多人或多或少都了解或者设计过具有强一致性的系统。但是&#…...

C++---最长上升子序列模型---怪盗基德的滑翔翼(每日一道算法2023.2.27)

注意事项&#xff1a; 本题为"线性dp—最长上升子序列的长度"的扩展题&#xff0c;所以dp思路这里就不再赘述。 题目&#xff1a; 怪盗基德是一个充满传奇色彩的怪盗&#xff0c;专门以珠宝为目标的超级盗窃犯。 而他最为突出的地方&#xff0c;就是他每次都能逃脱中…...

Python 之 Pandas 文件操作和读取 CSV 参数详解

文章目录一、Pandas 读取文件二、CSV 文件读取1. 基本参数2. 通用解析参数3. 空值处理相关参数4. 时间处理相关参数5. 分块读入相关参数一、Pandas 读取文件 当使用 Pandas 做数据分析的时&#xff0c;需要读取事先准备好的数据集&#xff0c;这是做数据分析的第一步。Panda 提…...

微服务的异步通信技术RabbitMQ

文章目录前言1.WorkQueue&#xff08;工作队列&#xff09;消息预取机制2.Publish&Subscribe&#xff08;发布-订阅&#xff09;1.Fanout&#xff08;广播&#xff09;2.DirectExchange&#xff08;路由&#xff09;3.TopicExchange&#xff08;话题&#xff09;MQ的优点前…...

Word处理控件Aspose.Words功能演示:使用 C++ 在 Word (DOC/DOCX) 中添加或删除水印

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…...

chatGPT模型原理

文章目录简介BertGPT 初代GPT-2GPT-3chatGPT开源ChatGPT简介 openai 的 GPT 大模型的发展历程。 Bert 2018年&#xff0c;自然语言处理 NLP 领域也步入了 LLM 时代&#xff0c;谷歌出品的 Bert 模型横空出世&#xff0c;碾压了以往的所有模型&#xff0c;直接在各种NLP的建模…...

四、阻塞队列

文章目录基础概念生产者消费者概念JUC阻塞队列的存取方法ArrayBlockingQueueArrayBlockingQueue的基本使用生产者方法实现原理ArrayBlockingQueue的常见属性add方法实现offer方法实现offer(time,unit)方法put方法消费者方法实现原理remove方法poll方法poll(time,unit)方法take方…...

企业电子招投标采购系统源码之登录页面

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...

SQL零基础入门学习(十三)

上一篇&#xff08;SQL零基础入门学习&#xff08;十二&#xff09;&#xff09; SQL 视图&#xff08;Views&#xff09; 视图是可视化的表。 SQL CREATE VIEW 语句 在 SQL 中&#xff0c;视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列&#xff0c;就像一个…...

Java实现简单KV数据库

用Java实现一个简单的KV数据库 开发思路&#xff1a; 用map存储数据&#xff0c;再用一个List记录操作日志&#xff0c;开一个新线程将List中的操作写入日志文件中&#xff0c;再开一个线程用于网络IO服务接收客户端的命令&#xff0c;再启动时检查日志&#xff0c;如果有数据就…...

【Spark分布式内存计算框架——Spark Streaming】5. DStream(上)

3. DStream SparkStreaming模块将流式数据封装的数据结构&#xff1a;DStream&#xff08;Discretized Stream&#xff0c;离散化数据流&#xff0c;连续不断的数据流&#xff09;&#xff0c;代表持续性的数据流和经过各种Spark算子操作后的结果数据流。 3.1 DStream 是什么…...

Spring系列-9 Async注解使用与原理

背景&#xff1a; 本文作为Spring系列的第九篇&#xff0c;介绍Async注解的使用、注意事项和实现原理&#xff0c;原理部分会结合Spring框架代码进行。 本文可以和Spring系列-8 AOP原理进行比较阅读 1.使用方式 Async一般注解在方法上&#xff0c;用于实现方法的异步&#xf…...

Python自动化测试实战篇(6)用PO分层模式及思想,优化unittest+ddt+yaml+request登录接口自动化测试

这些是之前的文章&#xff0c;里面有一些基础的知识点在前面由于前面已经有写过&#xff0c;所以这一篇就不再详细对之前的内容进行描述 Python自动化测试实战篇&#xff08;1&#xff09;读取xlsx中账户密码&#xff0c;unittest框架实现通过requests接口post登录网站请求&…...

Linux 进程:父子进程

目录一、了解子进程二、创建子进程1.创建子进程2.区分父子进程三、理解子进程四、创建子进程的意义进程就是运行中的应用程序&#xff0c;如果一个程序较为庞大&#xff0c;我们可以给这个程序创建多个进程&#xff0c;每个进程负责一部分代码的运行。 A进程如果创建了B进程&am…...

Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

Unity 之 实现读取代码写进Word文档功能前言一&#xff0c;实现步骤1.1 逻辑梳理1.2 用到工具二&#xff0c;实现读写文件2.1 读取目录相关2.2 读写文件三&#xff0c;编辑器拓展3.1 编辑器拓展介绍3.2 实现界面可视化四&#xff0c;源码分享4.1 工具目录4.2 完整代码前言 之所…...

Typora图床配置:Typora + PicGo + 阿里云OSS

文章目录一、前景提要二、相关链接三、搭建步骤1. 购买阿里云对象存储OSS2. 对象存储OSS&#xff1a;创建Bucket3. 阿里云&#xff1a;添加OSS访问用户及权限4. 安装Typora5. 配置PicGo方法一&#xff1a;使用PicGo-Core (Command line)方法二&#xff1a;使用PicGo(app)6. 最后…...

二进制搭建以太坊2.0节点-2023最新详细版文档

文章目录 一、配置 JWT 认证二、部署执行节点geth2.1 下载geth二进制文件2.2 geth节点启动三、部署共识节点Prysm3.1 下载Prysm脚本3.2 Prysm容器生成四、检查节点是否同步完成4.1 检查geth执行节点4.2 检查prysm共识节点4.3 geth常用命令五、节点同步详细说明5.1 启动时日志5.…...

手把手教你配置i.MX RT1052的BOOT引脚:从HyperFlash到QSPI的启动选择实战

手把手教你配置i.MX RT1052的BOOT引脚&#xff1a;从HyperFlash到QSPI的启动选择实战 在嵌入式系统开发中&#xff0c;启动配置是硬件工程师和开发者面临的第一个关键挑战。i.MX RT1052作为一款高性能跨界处理器&#xff0c;其灵活的启动选项既带来了强大的适应性&#xff0c;也…...

别再死记硬背了!用PyTorch和TensorFlow动手实现池化层,5分钟搞懂Max Pooling和Average Pooling的区别

用PyTorch和TensorFlow实战池化层&#xff1a;5分钟可视化Max与Average Pooling差异 刚接触深度学习的开发者常被各种理论概念困扰&#xff0c;尤其是池化层这类看似简单却暗藏玄机的操作。与其死记硬背定义&#xff0c;不如打开Jupyter Notebook&#xff0c;用PyTorch和Tensor…...

作为一个网聊经常冷场的人,我试了试几款聊天回复神器

平时在线下跟人沟通还好&#xff0c;但一到微信或者Soul这种线上聊天环境&#xff0c;我就特别容易卡壳。尤其是遇到对方发来一些带有情绪的话&#xff0c;我经常不知道怎么接&#xff0c;打了一堆字又默默删掉&#xff0c;最后回个“哈哈”或者“早点休息”&#xff0c;硬生生…...

长期使用Taotoken的Token Plan套餐在项目成本控制上的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken的Token Plan套餐在项目成本控制上的实际感受 1. 项目背景与成本挑战 在持续数月的项目开发与迭代过程中&#x…...

AI小白必看:收藏这份从零入门大模型的核心概念指南

本文通过一个生动的故事&#xff0c;用通俗易懂的方式讲解了AI领域最核心的7个概念&#xff1a;LLM&#xff08;大语言模型&#xff09;、Agent&#xff08;智能体&#xff09;、Skill&#xff08;技能包&#xff09;、MCP&#xff08;模型上下文协议&#xff09;、IDE&#xf…...

现在的人为什么不焦虑了!

就拿我来说吧&#xff01;现在你努力没有方向&#xff0c;焦虑只能让自己的什么出现问题&#xff0c;晚上睡不好的&#xff0c;伴随着偏头疼&#xff0c;是在是太难了。 &#xff01;、而且回过头来看我们真的需要那么多消费吗&#xff1f;消费降一点&#xff0c;吃踏实点&…...

如何彻底修复Windows更新故障:使用Reset Windows Update Tool的完整指南

如何彻底修复Windows更新故障&#xff1a;使用Reset Windows Update Tool的完整指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool…...

【实测避坑】文科/理工科怎么选论文降AI工具?5款热门工具深度评测

最近看了一些行业报告&#xff0c;AI工具在写作方面的普及率真的已经超乎想象了。 很多大学生在写论文时也都习惯用AI来辅助寻找灵感、提高效率。 与此同时&#xff0c;相关部门针对人工智能写作出台了一系列规定&#xff0c;各大学术检测平台也都在不断升级AIGC检测算法。 现…...

别再被格式拖后腿了!Paperxie 用这招让本科论文排版一步到 “校标”

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能格式排版/文献综述/AI PPThttps://www.paperxie.cn/format/typesettinghttps://www.paperxie.cn/format/typesetting 你有没有过这种经历&#xff1a;导师只改了一句 “格式不对&#xff0c;重排”&#xff0c;你对着 Wor…...

ArcGIS标注进阶:手把手教你搞定分式标注和河流左斜体(附完整表达式)

ArcGIS标注进阶&#xff1a;分式标注与河流左斜体实战指南 在地图制图领域&#xff0c;专业标注是提升可视化效果的关键环节。许多GIS工程师在进行水文地质制图时&#xff0c;常遇到分式标注格式混乱、河流名称无法实现标准左斜体等痛点问题。本文将彻底解决这些标注难题&#…...