内存上的学生信息管理系统
时间:2021-07-16
本文章向大家介绍内存上的学生信息管理系统,主要包括内存上的学生信息管理系统使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
完成一个学生(姓名、年龄、性别、学号)管理系统:
1、可以添加学生.
2、可以按照学号修改学生信息.
3、可以按照学号删除学生信息.
4、可以通过学号查询学生信息.
实体节点类
package com.csoracle.练习;
import java.util.Objects;
public class StudentNode {
private String name;
private Integer age;
private String sex;
private Integer number;
public StudentNode(String name, Integer age, String sex, Integer number) {
this.name = name;
this.age = age;
this.sex = sex;
this.number = number;
}
public StudentNode() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StudentNode that = (StudentNode) o;
return Objects.equals(name, that.name) &&
Objects.equals(age, that.age) &&
Objects.equals(sex, that.sex) &&
Objects.equals(number, that.number);
}
@Override
public int hashCode() {
return Objects.hash(name, age, sex, number);
}
@Override
public String toString() {
return "StudentNode{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", number=" + number +
'}';
}
}
实现方法类
package com.csoracle.练习;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class StudentSystem {
private static final HashMap students = new HashMap();
private static final Scanner sc = new Scanner(System.in);
public void start() {
System.out.println(">>>>>>>>>>>>>>>>>欢迎来到J09的学生管理系统<<<<<<<<<<<<<<<<<<");
wecome();
}
public void wecome() {
System.out.println("请你选择需要执行的操作:");
System.out.print("0、按学号查询学生信息,");
System.out.print("1、添加学生的个人信息,");
System.out.print("2、按学号删除学生信息" + "\n");
System.out.print("3、按学号更改学生信息,");
System.out.print("4、查看所以的学生信息,");
System.out.println("5、退出信息管理系统..");
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
choose();
}
public void choose() {
System.out.print("请选择操作:");
int i = sc.nextInt();
while (true) {
change(i);
}
}
public void change(int i) {
switch (i) {
case 0:
System.out.println("按学号查询学生信息");
showIndex();
wecome();
case 1:
System.out.println("添加学生的个人信息");
add();
wecome();
break;
case 2:
System.out.println("按学号删除学生信息");
remove();
wecome();
break;
case 3:
System.out.println("按学号更改学生信息");
changeStu();
wecome();
break;
case 4:
System.out.println("查看所以的学生信息");
showAll();
wecome();
break;
case 5:
System.out.println("退出信息管理系统中..");
System.out.println("退出成功!");
System.exit(0);
break;
default:
System.out.println("输入不合法");
wecome();
break;
}
}
public void add() {
StudentNode student = new StudentNode();
System.out.print("输入学号:");
student.setNumber(sc.nextInt());
System.out.print("输入名字:");
student.setName(sc.next());
System.out.print("输入年龄:");
student.setAge(sc.nextInt());
System.out.print("输入性别:");
student.setSex(sc.next());
if (students.containsKey(student.getNumber())) {
System.out.print("该学号已有学生,是否继续:(y/n)");
String isContinue = sc.next();
if ("n".equals(isContinue)) {
System.out.println("添加失败");
return;
}
}
students.put(student.getNumber(), student);
System.out.println("添加成功:" + student);
}
public void changeStu() {
StudentNode student = new StudentNode();
System.out.print("输入要更改学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
student.setNumber(index);
System.out.print("输入名字:");
student.setName(sc.next());
System.out.print("输入年龄:");
student.setAge(sc.nextInt());
System.out.print("输入性别:");
student.setSex(sc.next());
students.put(student.getNumber(), student);
System.out.println("修改成功!");
}
// fast-tail
public void remove() {
System.out.print("输入要删除学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
/*Set set = students.keySet();
for (Object o : set) {
if(o.equals(index)){
students.remove(index);
}
}*/
//很大的可能报错,因为在迭代的时候,不允许增加删除操作,会引起线程异常、不安全
students.remove(index);
System.out.println("删除成功");
}
public void showAll() {
Set set = students.entrySet();
for (Object o : set) {
System.out.println(o);
}
}
public void showIndex() {
System.out.print("输入要查询学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
Object o = students.get(index);
System.out.println(o);
}
public void StudentNumberJudgment(int index) {
if (!students.containsKey(index)) {
System.out.println("您输入的学号不存在");
wecome();
} else {
return;
}
}
}
测试类
package com.csoracle.练习;
public class Test01 {
public static void main(String[] args) {
StudentSystem studentSystem = new StudentSystem();
studentSystem.start();
}
}
测试结果
原文地址:https://www.cnblogs.com/Gzh001007/p/15021406.html
- 使用“空”对象替代引用是否为空判断
- 真是绝了!史上最详细的Jupyter Notebook入门教程
- 10.socket网络编程
- BZOJ1269: [AHOI2006]文本编辑器editor
- 开发人员为何需要企业服务总线?
- 搭建Visual Studio Code+Python开发环境1.对象简介2. 搭建步骤3.小结
- 洛谷P3835 【模板】可持久化平衡树
- 17.HTML
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- Numpy 修炼之道 (13)—— 将python函数向量化
- 洛谷P1887 乘积最大3
- 18.CSS
- R语言可视化——ggplot图表系统中的形状
- [机器学习Lesson 1 Introduction] 机器学习的动机与应用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python实现卷积神经网络】激活层实现
- django实战(三)--删除和批量删除
- 【python实现卷积神经网络】定义训练和测试过程
- 最短路径算法java
- django实战(四)--修改数据
- Shiro框架学习笔记(三)与web集成之后进行简单的身份验证
- 【python实现卷积神经网络】卷积层Conv2D实现(带stride、padding)
- reduce学习笔记
- 【python实现卷积神经网络】开始训练
- django实战(五)--增加数据
- 实战django(一)--(你也能看懂的)注册与登录(带前端模板)
- 【python-leetcode23-多路归并】合并k个排序链表
- 实战django(二)--登录实现记住我
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.gong.mybatis.da
- 【python-leetcode378-二分查找】有序矩阵中的第k小元素