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输入…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
