当前位置: 首页 > 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.…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...