Java 复习笔记 - 学生管理系统篇
文章目录
- 学生管理系统
- 一,需求部分
- 需求
- 分析
- 初始菜单
- 学生类
- 添加功能
- 删除功能
- 修改功能
- 查询功能
- 二,实现部分
- (一)初始化主界面
- (二)编写学生类
- (三)编写添加学生方法
- (四)编写删除学生方法
- (五)编写修改学生方法
- (六)编写查询学生方法
- (七)整合代码,集成系统
学生管理系统
一,需求部分
需求
采取控制台的方式去书写学生管理系统。
分析
初始菜单
"-------------欢迎进入学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类
属性:id、姓名、年龄、家庭住址
添加功能
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
删除功能
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并回到初始菜单
修改功能
键盘录入要修改的学生id,需要满足以下要求
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并回到初始菜单
查询功能
打印所有的学生信息,需要满足以下要求
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
2023001 张三 23 南京
2023002 李四 24 北京
2023003 王五 25 广州
2023004 赵六 26 深圳
二,实现部分
(一)初始化主界面
要初始化学生管理系统的主界面,可以按照以下思路进行操作:
- 创建一个学生管理系统对象,用于管理学生信息。
- 使用一个循环,使主界面一直显示,直到用户选择退出。
- 在循环中,打印主界面菜单供用户选择操作。
- 根据用户的选择,调用学生管理系统对象的相应方法进行操作。
- 根据操作结果,显示相应的反馈信息给用户。
下面是一个示例的代码片段,演示了如何初始化学生管理系统的主界面:
import java.util.Scanner;public class StudentManagementSystem {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int choice = 0;while (choice != 5) {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.print("请输入您的选择: ");choice = scanner.nextInt();switch (choice) {case 1:// 添加学生逻辑break;case 2:// 删除学生逻辑break;case 3:// 修改学生逻辑break;case 4:// 查询学生逻辑break;case 5:System.out.println("感谢使用学生管理系统,再见!");break;default:System.out.println("无效的选择,请重新输入!");break;}System.out.println(); // 输出空行,增加可读性}scanner.close();}
}
在这个示例中,我们首先创建了一个StudentManagementSystem对象system,用于管理学生信息。然后,在一个无限循环中,打印主界面菜单供用户选择操作。根据用户的选择,我们调用相应的学生管理系统方法进行操作。当用户选择退出时,我们使用System.exit(0)结束程序的执行。
(二)编写学生类
学生类所含属性:id、姓名、年龄、家庭住址
要编写学生类,可以按照以下思路进行操作:
- 定义学生类,设置其属性和方法。
- 根据需求,确定学生类的属性,id、姓名、年龄、家庭地址。
- 为每个属性添加相应的访问器(getter)和修改器(setter)方法,用于获取和设置属性的值。
下面是一个示例的学生类代码片段,演示了如何编写学生类:
public class Student {private int id;private String name;private int age;private String address;public Student(int id, String name, int age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}// Getter and Setter methodspublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}
(三)编写添加学生方法
public void addStudent() { Scanner scanner = new Scanner(System.in); System.out.println("请输入学生ID:"); int id = scanner.nextInt(); scanner.nextLine(); // 消费掉换行符 System.out.println("请输入学生姓名:"); String name = scanner.nextLine(); System.out.println("请输入学生年龄:"); int age = scanner.nextInt(); scanner.nextLine(); // 消费掉换行符 System.out.println("请输入学生家庭住址:"); String address = scanner.nextLine(); Student student = new Student(id, name, age, address);students.add(student); System.out.println("学生添加成功!");
}
(四)编写删除学生方法
public void deleteStudent() { Scanner scanner = new Scanner(System.in);System.out.println("请输入要删除的学生ID:"); int id = scanner.nextInt(); boolean found = false; for (Student student : students) { if (student.getId() == id) { students.remove(student); found = true; System.out.println("学生删除成功!"); break; } } if (!found) { System.out.println("未找到匹配的学生ID!"); }
}
(五)编写修改学生方法
public void updateStudent() { Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的学生ID:"); int id = scanner.nextInt(); scanner.nextLine(); // 消费掉换行符 boolean found = false; for (Student student : students) { if (student.getId() == id) { System.out.println("请输入学生姓名:"); String name = scanner.nextLine(); student.setName(name); System.out.println("请输入学生年龄:"); int age = scanner.nextInt(); scanner.nextLine(); // 消费掉换行符 student.setAge(age); System.out.println("请输入学生家庭住址:"); String address = scanner.nextLine(); student.setAddress(address); found = true; System.out.println("学生修改成功!"); break; } } if (!found) { System.out.println("未找到匹配的学生ID!"); }
}
(六)编写查询学生方法
public void displayStudents() { if (students.isEmpty()) { System.out.println("当前无学生信息,请添加后再查询!"); } else { System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址"); for (Student student : students) { System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getAddress());} }
}
(七)整合代码,集成系统
package net.army.java.test;/*** 功能:学生管理系统* 日期:2023年09月02日* 作者:梁辰兴*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class StudentManagementSystem {private List<Student> students;public StudentManagementSystem() {students = new ArrayList<>();}public void addStudent() {Scanner scanner = new Scanner(System.in);System.out.println("请输入学生ID:");int id = scanner.nextInt();scanner.nextLine(); // 消费掉换行符System.out.println("请输入学生姓名:");String name = scanner.nextLine();System.out.println("请输入学生年龄:");int age = scanner.nextInt();scanner.nextLine(); // 消费掉换行符System.out.println("请输入学生家庭住址:");String address = scanner.nextLine();Student student = new Student(id, name, age, address);students.add(student);System.out.println("学生添加成功!");}public void deleteStudent() {Scanner scanner = new Scanner(System.in);System.out.println("请输入要删除的学生ID:");int id = scanner.nextInt();boolean found = false;for (Student student : students) {if (student.getId() == id) {students.remove(student);found = true;System.out.println("学生删除成功!");break;}}if (!found) {System.out.println("未找到匹配的学生ID!");}}public void updateStudent() {Scanner scanner = new Scanner(System.in);System.out.println("请输入要修改的学生ID:");int id = scanner.nextInt();scanner.nextLine(); // 消费掉换行符boolean found = false;for (Student student : students) {if (student.getId() == id) {System.out.println("请输入学生姓名:");String name = scanner.nextLine();student.setName(name);System.out.println("请输入学生年龄:");int age = scanner.nextInt();scanner.nextLine(); // 消费掉换行符student.setAge(age);System.out.println("请输入学生家庭住址:");String address = scanner.nextLine();student.setAddress(address);found = true;System.out.println("学生修改成功!");break;}}if (!found) {System.out.println("未找到匹配的学生ID!");}}public void displayStudents() {if (students.isEmpty()) {System.out.println("当前无学生信息,请添加后再查询!");} else {System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");for (Student student : students) {System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge() + "\t\t" + student.getAddress());}}}public static void main(String[] args) {StudentManagementSystem system = new StudentManagementSystem();// 菜单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 scanner = new Scanner(System.in);int choice = scanner.nextInt();switch (choice) {case 1:system.addStudent();break;case 2:system.deleteStudent();break;case 3:system.updateStudent();break;case 4:system.displayStudents();break;case 5:System.out.println("谢谢使用,再见!");System.exit(0);default:System.out.println("无效的选择,请重新输入!");break;}}}
}
运行效果:

相关文章:
Java 复习笔记 - 学生管理系统篇
文章目录 学生管理系统一,需求部分需求分析初始菜单学生类添加功能删除功能修改功能查询功能 二,实现部分(一)初始化主界面(二)编写学生类(三)编写添加学生方法(四&#…...
【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】
一、今天我们来学习三个东西 1.UIPickerView-UIDatePicker-应用程序对象 1.首先,来看数据选择控件 数据选择控件, 大家对这个数据选择控件,是怎么理解的, 1)数据选择控件,首先,是不是得有数据, 2)然后呢,你还得让用户能够选择, 3)最后,你还得是一个控件儿 那…...
仿京东 项目笔记1
目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式?4.2 路由传参,参数有几种写法?4.3 路由传参相关面试题4.3.1 路由传递参数(对象写法)path是否可以结合pa…...
huggingface transformers库中LlamaForCausalLM
新手入门笔记。 LlamaForCausalLM 的使用示例,这应该是一段推理代码。 from transformers import AutoTokenizer, LlamaForCausalLMmodel LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) tokenizer AutoTokenizer.from_pretrained(PATH_TO_CONVE…...
04-过滤器和拦截器有什么区别?【Java面试题总结】
过滤器和拦截器有什么区别? 运行顺序不同:过滤器是在 Servlet 容器接收到请求之后,但在 Servlet被调用之前运行的;而拦截器则是在Servlet 被调用之后,但在响应被发送到客户端之前运行的。 过滤器Filter 依赖于 Servle…...
如何用selenium或pyppeteer来启动多个AdsPower窗口
前言 本文是该专栏的第57篇,后面会持续分享python爬虫干货知识,记得关注。 关于selenium或pyppeteer来启动打开adspower浏览器的方法,笔者在本专栏前面有详细介绍过,感兴趣的同学可往前翻阅《如何用selenium或pyppeteer来链接并打开指纹浏览器AdsPower》,文章内容包含完整…...
京东店铺所有商品API接口数据
京东平台店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商…...
stm32之27.iic协议oled显示
屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(unsigned强制转换(char*)) 汉字显示...
paddle 1-高级
目录 为什么要精通深度学习的高级内容 高级内容包含哪些武器 1. 模型资源 2. 设计思想与二次研发 3. 工业部署 4. 飞桨全流程研发工具 5. 行业应用与项目案例 飞桨开源组件使用场景概览 框架和全流程工具 1. 模型训练组件 2. 模型部署组件 3. 其他全研发流程的辅助…...
ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习
一、学习层面:ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习 1.帮助高职院校学生实现个性化自适应学习 数字技术的飞速发展引起了教育界和学术界对高职院校学生个性化自适应学习的更多关注和支持,其运作机制依赖于人工智能等技术࿰…...
如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?
对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中&#x…...
将OSGB格式数据转换为3d tiles的格式
现有需求需要将已有的一些OSGB数据加载到CesiumJS中展示,但是CesiumJS本身不支持osbg格式的数据渲染所以我们需要将其转换一下,有两种格式可以转换一种是glTF格式,另一种是我们今天要介绍的3D Tiles格式 下载开源工具 在github上其实有好多这种工具,每个工具的用法大同小异,这…...
【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
文章目录 说明细节一:首页滑动到底部,需要查询下一页的商品界面预览页面实现 细节二:当页面滑动到下方,出现一个回到顶端的悬浮按钮细节三:商品分列说明优化前后效果对比使用回溯算法实现ControllerService回溯算法 优…...
素数求原根
1 模m原根的定义 1.1符号说明: Z m ∗ Z_m^* Zm∗:代表满足 1 < i < m − 1 , ( i , m ) 1 1<i<m-1,(i,m)1 1<i<m−1,(i,m)1的数字 i i i组成的集合 o r d m ( a ) ord_m(a) ordm(a):代表 a ( m o d m ) a(mod m) a(modm)在 Z m ∗ Z_m^* Zm∗中的…...
【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER
文章目录 前言PATH_ASSESSMENT_DECIDER功能简介PATH_ASSESSMENT_DECIDER相关信息PATH_ASSESSMENT_DECIDER总体流程1. 去除无效路径2. 分析并加入重要信息给speed决策SetPathInfoSetPathPointType 3. 排序选择最优的路径4. 更新必要的信息 前言 在Apollo星火计划学习笔记——Ap…...
09 mysql fetchSize 所影响的服务器和客户端的交互
前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据…...
DevEco Studio 配置
首先,打开deveco studio 进入首页 …我知道你们想说什么,我也想说 汉化配置 没办法,老样子,先汉化吧,毕竟母语看起来舒服 首先,点击软件左下角的configure,在配置菜单里选择plugins 进入到插件页面, 输入chinese,找到汉化插件,(有一说一写到这我心里真是很不舒服) 然后点击o…...
Nginx自动探活后端服务状态自动转发,nginx_upstream_check_module的使用
一、三种方案 nginx对后端节点健康检查的方式主要有3种 1. gx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/cn/docs/http/ng … proxy_next_upstream 严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通…...
CSS 一个好玩的卡片“开卡效果”
文章目录 一、用到的一些CSS技术二、实现效果三、代码 一、用到的一些CSS技术 渐变 conic-gradientbox-shadowclip-path变换、过渡 transform、transition动画 animation keyframes伪类、伪元素 :hover、::before、::after …绝对布局。。。 clip-path 生成网站 https://techb…...
lintcode 667 · 最长的回文序列【中等 递归到动态规划】
题目 https://www.lintcode.com/problem/667/ 给一字符串 s, 找出在 s 中的最长回文子序列的长度. 你可以假设 s 的最大长度为 1000.样例 样例1输入: "bbbab" 输出: 4 解释: 一个可能的最长回文序列为 "bbbb" 样例2输入…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
