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

Java 复习笔记 - 学生管理系统篇

文章目录

  • 学生管理系统
    • 一,需求部分
      • 需求
      • 分析
        • 初始菜单
        • 学生类
        • 添加功能
        • 删除功能
        • 修改功能
        • 查询功能
    • 二,实现部分
      • (一)初始化主界面
      • (二)编写学生类
      • (三)编写添加学生方法
      • (四)编写删除学生方法
      • (五)编写修改学生方法
      • (六)编写查询学生方法
      • (七)整合代码,集成系统


学生管理系统

一,需求部分

需求

采取控制台的方式去书写学生管理系统。

分析

初始菜单

"-------------欢迎进入学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"

学生类

属性:id、姓名、年龄、家庭住址

添加功能

键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一

删除功能

键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除
  • id不存在,需要提示不存在,并回到初始菜单

修改功能

键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并回到初始菜单

查询功能

打印所有的学生信息,需要满足以下要求

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id		姓名		年龄		家庭住址
2023001	张三		23		 南京
2023002	李四		24		 北京
2023003	王五		25		 广州
2023004	赵六	 	26		 深圳

二,实现部分

(一)初始化主界面

要初始化学生管理系统的主界面,可以按照以下思路进行操作:

  1. 创建一个学生管理系统对象,用于管理学生信息。
  2. 使用一个循环,使主界面一直显示,直到用户选择退出。
  3. 在循环中,打印主界面菜单供用户选择操作。
  4. 根据用户的选择,调用学生管理系统对象的相应方法进行操作。
  5. 根据操作结果,显示相应的反馈信息给用户。

下面是一个示例的代码片段,演示了如何初始化学生管理系统的主界面:

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 复习笔记 - 学生管理系统篇

文章目录 学生管理系统一&#xff0c;需求部分需求分析初始菜单学生类添加功能删除功能修改功能查询功能 二&#xff0c;实现部分&#xff08;一&#xff09;初始化主界面&#xff08;二&#xff09;编写学生类&#xff08;三&#xff09;编写添加学生方法&#xff08;四&#…...

【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】

一、今天我们来学习三个东西 1.UIPickerView-UIDatePicker-应用程序对象 1.首先,来看数据选择控件 数据选择控件, 大家对这个数据选择控件,是怎么理解的, 1)数据选择控件,首先,是不是得有数据, 2)然后呢,你还得让用户能够选择, 3)最后,你还得是一个控件儿 那…...

仿京东 项目笔记1

目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式&#xff1f;4.2 路由传参&#xff0c;参数有几种写法&#xff1f;4.3 路由传参相关面试题4.3.1 路由传递参数&#xff08;对象写法&#xff09;path是否可以结合pa…...

huggingface transformers库中LlamaForCausalLM

新手入门笔记。 LlamaForCausalLM 的使用示例&#xff0c;这应该是一段推理代码。 from transformers import AutoTokenizer, LlamaForCausalLMmodel LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) tokenizer AutoTokenizer.from_pretrained(PATH_TO_CONVE…...

04-过滤器和拦截器有什么区别?【Java面试题总结】

过滤器和拦截器有什么区别&#xff1f; 运行顺序不同&#xff1a;过滤器是在 Servlet 容器接收到请求之后&#xff0c;但在 Servlet被调用之前运行的&#xff1b;而拦截器则是在Servlet 被调用之后&#xff0c;但在响应被发送到客户端之前运行的。 过滤器Filter 依赖于 Servle…...

如何用selenium或pyppeteer来启动多个AdsPower窗口

前言 本文是该专栏的第57篇,后面会持续分享python爬虫干货知识,记得关注。 关于selenium或pyppeteer来启动打开adspower浏览器的方法,笔者在本专栏前面有详细介绍过,感兴趣的同学可往前翻阅《如何用selenium或pyppeteer来链接并打开指纹浏览器AdsPower》,文章内容包含完整…...

京东店铺所有商品API接口数据

​​京东平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商…...

stm32之27.iic协议oled显示

屏幕如果无法点亮&#xff0c;需要用GPIO_OType_PP推挽输出&#xff0c;加并上拉电阻 1.显示字符串代码 2.显示图片代码&#xff08;unsigned强制转换&#xff08;char*&#xff09;&#xff09; 汉字显示...

paddle 1-高级

目录 为什么要精通深度学习的高级内容 高级内容包含哪些武器 1. 模型资源 2. 设计思想与二次研发 3. 工业部署 4. 飞桨全流程研发工具 5. 行业应用与项目案例 飞桨开源组件使用场景概览 框架和全流程工具 1. 模型训练组件 2. 模型部署组件 3. 其他全研发流程的辅助…...

ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习

一、学习层面&#xff1a;ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习 1.帮助高职院校学生实现个性化自适应学习 数字技术的飞速发展引起了教育界和学术界对高职院校学生个性化自适应学习的更多关注和支持&#xff0c;其运作机制依赖于人工智能等技术&#xff0…...

如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

对于需要调用第三方支付的报名流程进行接口自动化测试&#xff0c;可以通过以下步骤来编写Python代码&#xff1a; 1. 确认API需求 首先&#xff0c;需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中&#x…...

将OSGB格式数据转换为3d tiles的格式

现有需求需要将已有的一些OSGB数据加载到CesiumJS中展示,但是CesiumJS本身不支持osbg格式的数据渲染所以我们需要将其转换一下,有两种格式可以转换一种是glTF格式,另一种是我们今天要介绍的3D Tiles格式 下载开源工具 在github上其实有好多这种工具,每个工具的用法大同小异,这…...

【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】

文章目录 说明细节一&#xff1a;首页滑动到底部&#xff0c;需要查询下一页的商品界面预览页面实现 细节二&#xff1a;当页面滑动到下方&#xff0c;出现一个回到顶端的悬浮按钮细节三&#xff1a;商品分列说明优化前后效果对比使用回溯算法实现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输入&#xff1a; "bbbab" 输出&#xff1a; 4 解释&#xff1a; 一个可能的最长回文序列为 "bbbb" 样例2输入…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...