Java课程案例学习(3)

news/2024/11/9 4:56:44/

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;}@Overridepublic 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.ppmy.cn/news/2027.html

相关文章

Android 11及以上授予文件管理权限

背景 安卓11改变了此前安卓系统对于文件管理的规则,在安卓11上,文件读写变成了特殊权限。应用默认只能读写自己的目录/android/data/包名 gradle配置 Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。 项目中 build.gradle 的targetSdkVersion …

【元胞自动机】模拟电波在整个心脏中的传导和传播的时空动力学研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

《WEB安全漏洞100讲》(第4讲)CSRF漏洞

1.CSRF漏洞原理 CSRF(Cross-site request forgery)&#xff0c;跨站请求伪造&#xff0c;简写 CSRF/XSRF。指利用受害者尚未失效的身份认证信息&#xff08;cookie、会话等&#xff09;&#xff0c;诱骗其点击恶意链接或者访问包含攻击代码的页面&#xff0c;在受害人不知情的…

面试10分钟就完事了,问的实在是太...

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

线段树模板(Java)

线段树一、线段树概念二、线段树模板1.建树2. 单点修改3.区间查询4.完整代码及测试一、线段树概念 线段树是一种二叉搜索树&#xff0c;与区间树相似&#xff0c;它将一个区间划分成一些单元区间&#xff0c;每个单元区间对应线段树中的一个叶结点。它的主要优势是对于区间求和…

从入门到精通,收下这 22 个 Python 学习网站

今天一并给大家整理推送&#xff0c;希望能帮你在这条道路上&#xff0c;走得更顺畅&#xff0c;走得更远&#xff0c;更稳… 0. 学习整体思路 我做为一个过来人&#xff0c;有一些经验想要分享&#xff1a; 前期&#xff1a;花点时间选一门口碑上佳的入门电子文字教程&…

SM4分组密码算法

对称加密算法SM4SM4算法介绍一、SM4加密流程二、轮函数F1.合成置换T3.非线性变换τ2.线性变换L4.加密的结果总结SM4算法介绍 SM4.0于2013年3月被列为国家密码行业标准“GM/T 0002-2012《SM4分组密码算法》&#xff08;原SMS4分组密码算法&#xff09;”。2016年被列入国家标准…

【Map 和 WeakMap 的区别】

Map 1.传统对象结构 Map本质上是一个键值对的集合。和传统对象结构相比&#xff0c;传统对象只能用字符串作为键名&#xff0c;这在使用上造成了很大的限制。 const data {} //element为节点对象 const element document.querySelector(.node) console.log(element) //输…