Java课程案例学习(3)

news2024/9/22 4:04:56

2.1 学生管理系统实现步骤

案例需求

针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:

添加学生:通过键盘录入学生信息,添加到集合中

删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

查看学生:将集合中的学生对象信息进行展示

退出系统:结束程序

实现步骤

定义学生类

Student成员变量:

学号:sid

姓名:name

年龄:age

生日:birthday

构造方法:

无参构造

带四个参数的构造成员方法:

每个成员变量对应给出get/set方法

学生管理系统主界面的搭建步骤

2.1 用输出语句完成主界面的编写

2.2 用Scanner实现键盘录入数据

2.3 用switch语句完成操作的选择

2.4 用循环完成再次回到主界面

学生管理系统的添加学生功能实现步骤

3.1 用键盘录入选择添加学生

3.2 定义一个方法,用于添加学生

显示提示信息,提示要输入何种信息

键盘录入学生对象所需要的数据

创建学生对象,把键盘录入的数据赋值给学生对象的成员变量

将学生对象添加到集合中(保存)

给出添加成功提示

3.3 调用方法

学生管理系统的查看学生功能实现步骤

4.1 用键盘录入选择查看所有学生信息

4.2 定义一个方法,用于查看学生信息

显示表头信息

将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”

4.3 调用方法

学生管理系统的删除学生功能实现步骤

5.1 用键盘录入选择删除学生信息

5.2 定义一个方法,用于删除学生信息

显示提示信息

键盘录入要删除的学生学号

调用getIndex方法,查找该学号在集合的索引

如果索引为-1,提示信息不存在

如果索引不是-1,调用remove方法删除并提示删除成功

5.3 调用方法

学生管理系统的修改学生功能实现步骤

6.1 用键盘录入选择修改学生信息

6.2 定义一个方法,用于修改学生信息

显示提示信息

键盘录入要修改的学生学号

调用getIndex方法,查找该学号在集合的索引

如果索引为-1,提示信息不存在

如果索引不是-1,键盘录入要修改的学生信息

集合修改对应的学生信息

给出修改成功提示

6.3 调用方法

退出系统

使用System.exit(0);退出JVM

Student

public class Student {
	// 学号:
	private String sid;

	// 姓名:
	private String name;

	// 年龄:
	private String age;

	// 生日:
	private String birthday;

	public Student() {
	}

	public Student(String sid, String name, String age, String birthday) {
		super();
		this.sid = sid;
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}

	public String getSid() {
		return sid;
	}

	public void setSid(String sid) {
		this.sid = sid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "Student [sid=" + sid + ", name=" + name + ", age=" + age + ", birthday=" + birthday + "]";
	}

}

StudentManagerSystem

public class StudentManagerSystem {
	public static Scanner sc = new Scanner(System.in);

	// 创建集合对象,用于存储学生数据
	static ArrayList<Student> array = new ArrayList<Student>();

	public static void main(String[] args) {
		// 用Scanner实现键盘录入数据
		boolean flag = true;
		if (flag) {
			System.out.println("----欢迎来到学校管理系统----");
			// 用循环完成再次回到主界面
			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("请输入你的选择:");
				String line = sc.nextLine();
				// 用switch语句完成操作的选择
				switch (line) {
				case "1":
					add(new Student());
					break;
				case "2":
					remove();
					break;
				case "3":
					set(new Student());
					break;
				case "4":
					showAllStudent(array);
					break;
				case "5":
					System.out.println("谢谢使用");
					System.exit(0); // JVM退出
				default:
					System.out.println("没有对应的操作,请重新选择");
				}
			}
		}
	}

	// 删除学生
	private static void remove() {
		System.out.println("输入要删除的学号:");
		String id = sc.nextLine();
		remove(getIndex(id));
	}

	// 根据索引删除学生
	private static void remove(int index) {
		if (index == -1) {
			System.out.println("学生信息不存在,返回主页面!");
			return;
		} else {
			array.remove(index);
			System.out.println("删除学生成功!");
		}
	}

	// 根据学号找到指定的索引
	private static int getIndex(String id) {
		int index = 0;
		for (int i = 0; i < array.size(); i++) {
			if (array.get(i).getSid().equals(id)) {
				index = i;
				return index;
			}
		}
		return -1;
	}

	// 添加学生
	public static void add(Student student) {
		add(array.size(), student);
	}

	// 根据索引添加学生
	public static void add(int index, Student student) {
		String id = "";
		while (true) {
			System.out.print("输入学号:");
			id = sc.nextLine();
			boolean flag = false;
			for (int i = 0; i < array.size(); i++) {
				student = array.get(i);
				if (id.equals(student.getSid())) {
					flag = true;
					break;
				}
			}
			if (flag) {
				System.out.println("学号已被使用,重新输入!");
			} else {
				break;
			}
		}
		System.out.print("请输入姓名:");
		String name = sc.nextLine();
		System.out.print("请输入年龄:");
		String age = sc.nextLine();
		System.out.print("请输入生日:");
		String birthday = sc.nextLine();
		student = new Student(id, name, age, birthday);
		array.add(index, student);
		System.out.println("添加学生成功!");

	}

	// 更新学生
	public static void set(Student student) {
		String id = "";
		System.out.println("输入要更新的学号:");
		id = sc.nextLine();
		for (int i = 0; i < array.size(); i++) {
			if (array.get(i).getSid().equals(id)) {
				student = array.get(i);
			}
		}
		System.out.print("请输入姓名:");
		String name = sc.nextLine();
		System.out.print("请输入年龄:");
		String age = sc.nextLine();
		System.out.print("请输入生日:");
		String birthday = sc.nextLine();
		student = new Student(id, name, age, birthday);
		array.set(getIndex(id), student);
		System.out.println("更新学生成功");
	}

	// 查看学生
	private static void showAllStudent(ArrayList<Student> array) {
		if (array.size() == 0) {
			System.out.println("无学生信息,请重新选择");
			return;
		}
		System.out.println();
		System.out.println("学号\t\t\t\t姓名\t\t\t\t年龄\t\t\t生日");
		System.out.println("------------");
		for (int x = 0; x < array.size(); x++) {
			Student s = array.get(x);
			System.out.println(s.getSid() + "\t\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "\t\t\t\t"
					+ s.getBirthday() + "\t\t\t\t");
		}
		System.out.println("------------");
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jcmd 虚拟机诊断利器

Jcmd 虚拟机诊断利器 Java虚拟机&#xff08;JVM&#xff09;是运行Java程序的抽象化的计算器。今天&#xff0c;来学习下如何轻松诊断正在运行的JVM。 JDK本身中提供了许多可用的工具&#xff0c;可以用于各种开发、监视和故障排除活动。推荐使用jcmd&#xff0c;简单易懂&a…

[附源码]计算机毕业设计南通大学福利发放管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ThinkPHP6综合业务管理系统

有需要请私信或看评论链接哦 可远程调试 ThinkPHP6综合业务管理系统一 介绍 综合业务管理系统基于ThinkPHP6开发&#xff0c;数据库mysql&#xff0c;前端Layui&#xff0c;后台模板ok-admin。管理员登录系统后可对场所&#xff0c;分类&#xff0c;用户&#xff0c;运营商&am…

图片扫描仪第一弹,我实现了一个办公位简笔画

来一波对比 其实我工位还有点手办&#xff0c;一个植物&#xff0c;实在不会画&#xff0c;于是画了个基础版的。 办公位简笔画 虽然&#xff0c;这个工位上没有一个动画&#xff0c;但是图形和实物神似&#xff0c;所以可以用另一个动总结这个简笔画&#xff0c;那就是生动…

量子计算(十一):常见逻辑门以及含义

文章目录 常见逻辑门以及含义 一、Hadamard&#xff08;H&#xff09;门 二、Pauli-X 门 三、Pauli-Y 门 四、Pauli-Z 门 五、旋转门&#xff08;rotation operators&#xff09; 1、RX&#xff08;θ&#xff09;门 2、RY&#xff08;θ&#xff09;门 3、RZ&#xf…

深入理解计算机系统

hi&#xff0c;大家好&#xff0c;我是大师兄&#xff0c;让我们一起复习了一遍计算机系统核心知识&#xff0c;希望大家早日掌握这些核心知识&#xff0c;打造自己坚实的基础&#xff0c;为自己目标慢慢积累&#xff0c;等到自己春天的到来。详细点击查看-> 极客星球。计算…

PDF解除密码怎么操作?教你一键解除密码

我们在处理工作文件时&#xff0c;经常会有一些文件是加密状态的&#xff0c;这种文件必须要输入密码才可以打开&#xff0c;这时候就造成了很多不便&#xff0c;如果文件需要打印&#xff0c;我们就必须先输入密码&#xff0c;而且在每次查看文件前&#xff0c;都必须输入密码…

记录一次 在linux 搭建的mysql迁移到docker容器中

上篇文章写道&#xff0c;我腾讯云被攻击了&#xff0c;然后我各种删除木马文件&#xff0c;但在这个过程中&#xff0c;有些系统文件没认到&#xff0c;以为是木马文件&#xff0c;就删除了&#xff0c;各种处理无果&#xff0c;打开腾讯云的救援模式&#xff0c;备份了些重要…

【数据库】mysql索引

DB索引&#xff1a; 如果表创建了索引&#xff0c;那么DB会维护一张关于索引和主键关系的表 好处&#xff1a;快速查找数据 缺点&#xff1a;要额外维护一张表&#xff0c;会额外占用空间&#xff0c;对于表数据的更新操作都涉及更新索引 索引的操作 创建索引&#xff1a;…

LeetCode 74. 搜索二维矩阵

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 74. 搜索二维矩阵&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 LeetCode 74.…

[Android] [ROOT] Magisk(魔术师/面具) 设置以及必装模块的安装

&#x1f341;简介 当我们给手机刷入Magisk(面具)后&#xff0c;等于获得了安卓系统的最高管理员权限&#xff0c;也就是root权限。获取root权限后的设备相对于未root的设备&#xff0c;安全性会有一定的降低。也许是基于这个原因&#xff0c;现在大部分应用都会检测你的设备是…

xcode常用功能与操作

查看target是静态还是动态库 选中target&#xff0c;点击Build Settings tag&#xff0c;然后再右上角搜索框输入 mach&#xff0c;查看Mach-O type的值即可 mach-o文件类型分为&#xff1a; Executable&#xff1a;应用的主要二进制 Dylib Library&#xff1a;动态链接库&am…

栈与队列5:逆波兰表达式求值

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;150. 逆波兰表达式求值 题目&#xff1a; 根据 逆波兰表示法&#xff0c;求表达式的值。 有效的算符包括 、-、*、…

安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】

&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;提取手机分区方法列举&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&#x1f495;&a…

mybatis-plus,sgg,杨bochao,p49完成

MyBatis-Plus (baomidou.com) 一 MyBatis-Plus简介 增强工具。只做增强不做改。 可以直接在mybatis的基础上整合mybatis-plus。此时并不会影响mybatis的功能&#xff0c;即mybatis原来的功能都在&#xff0c;该怎么用还怎么用。锦上添花的是还能使用mybatis-plus提供的&#…

修改node_modules中安装的依赖(如第三方ui组件样式)并在下次安装时保留

场景&#xff1a;需要修改安装的某个ui库的样式或者其他依赖&#xff0c;直接去node_modules中修改后&#xff0c;重新安装&#xff0c;或者其他小伙伴的电脑上并不能同时修改 方案&#xff1a;用patch-package 可以保留修改 步骤一 安装 patch-package —> npm i patch-…

jQuery - 获取内容和属性

jQuery 拥有可操作 HTML 元素和属性的强大方法。 jQuery DOM 操作 jQuery 中非常重要的部分&#xff0c;就是操作 DOM 的能力。 jQuery 提供一系列与 DOM 相关的方法&#xff0c;这使访问和操作元素和属性变得很容易。 DOM Document Object Model&#xff08;文档对象模型&a…

OpenGL 图像白平衡色温

目录 一.OpenGL 图像白平衡色温 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像白平衡色温 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenG…

MySQL小知识:为何从8.0开始取消了MySQL查询缓存

前言 缓存是对系统性能优化的重要手段。但是有经验的DBA都建议生产环境中把MySQL Query Cache关闭。MySQL8.0更是直接取消了查询缓存。 一键获取MySQL核心数据结构、底层实现原理、索引、事务、锁机制、MySQL性能优化案例、美团MySQL中间件等。 这是为什么&#xff1f;查询缓…

[附源码]Python计算机毕业设计Django微信点餐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…