java控制台实现学生信息管理系统(集合版)
作者:没事多喝水w 发布时间:2023-11-11 14:16:52
标签:java,学生,管理系统
使用java语言用集合存储数据实现学生信息管理系统,在控制台上编译执行
可以实现基本的学生信息增加、删除、修改、查询功能
IO版可以参考我的另外一篇博文。
运行界面如下
欢迎界面
添加学生信息
删除学生信息
修改学生信息
查询学生信息
退出系统
系统模块结构图
系统业务流程图
代码如下
Student类
public class Student {
private String stuNo;
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String stuNo, String name, int age) {
super();
this.stuNo = stuNo;
this.name = name;
this.age = age;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
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;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((stuNo == null) ? 0 : stuNo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (stuNo == null) {
if (other.stuNo != null)
return false;
} else if (!stuNo.equals(other.stuNo))
return false;
return true;
}
@Override
public String toString() {
return "学生:学号 " + stuNo + ", 姓名 " + name + ", 年龄 " + age ;
}
}
StudentDao类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;
public class StudentDAO {
static List<Student> list = new ArrayList<>();
static String ig = "1000";
Scanner sc = new Scanner(System.in);
// 增加学生信息
public void add(List<Student> list) {
int ig = Integer.parseInt(this.ig);
while (true) {
System.out.println(ig);
System.out.println("请输入你要添加的学号为" + ig + "的学生的姓名");
String name = sc.next();
while (true) {
System.out.println("请输入你要添加的学号为" + ig + "的学生的年龄");
Scanner sc1 = new Scanner(System.in);
if (sc1.hasNextInt()) {
int age = sc1.nextInt();
list.add(new Student(String.valueOf(ig), name, age));
break;
} else {
System.out.println("请正确输入");
continue;
}
}
System.out.println("学号为" + ig + "的学生信息添加成功");
ig++;
this.ig = String.valueOf(ig);
System.out.println("添加信息后,学生的信息为:");
query(list);
System.out.println("是否继续执行添加操作(y/n)");
String result = sc.next();
if (result.equalsIgnoreCase("n") || result.equalsIgnoreCase("y")) {
if (result.equalsIgnoreCase("n")) {
break;
}
}
}
}
// 删除学生信息
public void del(List<Student> list) {
if (list.size() != 0) {
a: while (true) {
query(list);
System.out.println("请输出你要删除的学生的学号");
String str = sc.next();
Iterator<Student> it = list.iterator();
while (it.hasNext()) {
Student stu = it.next();
if (stu.getStuNo().equals(str)) {
it.remove();
System.out.println("删除成功!");
System.out.println("删除操作后,学生的信息为:");
query(list);
break a;// 跳出到指定循环外
}
}
System.out.println("查无此人……请查证后重新输入");
}
} else {
System.out.println("还没有添加学生信息,快去添加学生信息吧");
}
}
// 修改学生信息
public void update(List<Student> list) {
if (list.size() != 0) {
a: while (true) {
query(list);
System.out.println("请输入要修改学生的学号:");
String stuNo = sc.next();
ListIterator<Student> lit = list.listIterator();
while (lit.hasNext()) {
Student stu = lit.next();
if (stu.getStuNo().equals(stuNo)) {
System.out.println("请输入您要修改的学生的姓名");
String name = sc.next();
System.out.println("请输入您要修改的学生的年龄");
if (sc.hasNextInt()) {
int age = sc.nextInt();
stu.setName(name);
stu.setAge(age);
System.out.println("修改操作后,学生的信息为:");
query(list);
break a;
} else {
System.out.println("请正确输入年龄");
}
}
}
System.out.println("查无此人……请查证后重新输入");
}
} else {
System.out.println("还没有添加学生信息,快去添加学生信息吧");
}
}
// 查询学生信息
public void query(List<Student> list) {
if (list.size() != 0) {
System.out.println("=============学生信息==============");
for (Student stu : list) {
System.out.println(stu);
}
System.out.println("=================================");
} else {
System.out.println("还没有添加学生信息,快去添加学生信息吧");
}
}
}
StudentManager类
import java.util.Scanner;
/**
*
* 创建时间:2019年12月6日 上午11:40:57
*
*
*/
public class StudentManager {
public static void main(String[] args) {
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println();
System.out.println();
System.out.println("=================================");
System.out.println("=========欢迎使用学生管理系统 =========");
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("==================================");
System.out.println("请输入您的选择");
int choose;
if (sc.hasNextInt()) {
choose = sc.nextInt();
if (choose > 0 && choose < 6) {
Student st = new Student();
StudentDAO std = new StudentDAO();
switch (choose) {
case 1:
std.add(std.list);
break;
case 2:
std.del(std.list);
break;
case 3:
std.update(std.list);
break;
case 4:
std.query(std.list);
break;
case 5:
System.out.println("成功退出……");
System.out.println("欢迎下次使用");
System.exit(0);
break;
}
} else {
System.out.println("请正确输入");
}
} else {
System.out.println("请您输入正确的选项");
}
}
}
}
本系统中查询功能不是很完善,可以实现功能使用查询功能时可以选择查询全部、按学号查询、按姓名分类等不同的查询方法。
来源:https://blog.csdn.net/w_sl_code/article/details/103433965


猜你喜欢
- 前言之前看到某公司的官网的文章的浏览量刷新一次网页就会增加一次,给人的感觉不太好,一个公司的官网给人如此直白的漏洞,我批量发起请求的时候发现
- 前言这篇博客介绍Java环境的配置,主要是安装JDK,以及path、JAVA_hOME、CLASSPAT的配置,还会介绍配置这些的原因。一.
- 这篇文章写的非常好,深入浅出,关键还是一位大三学生自己剖析的心得。这是我喜欢此文的原因。下面请看正文:作为一个大三的预备程序员,我学习and
- Android 有两种方式可以设置全屏.第一种方式:在protected void onCreate(Bundle savedInstanc
- 1.pom文件导入依赖<!-- kafka --><dependency> <groupId>
- 一、概述1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换2.思路:(
- 本文实例讲述了Android基于Intent实现Activity之间数据传递的方法。分享给大家供大家参考,具体如下:MainActivity
- 1 场景启动器 starter 简介什么是 SpringMVC在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给
- java进行时间转换成unix timestamp的具体代码,供大家参考,具体内容如下import java.text.DateFormat
- 本文实例为大家分享了使用OkHttp发送post请求的具体代码,供大家参考,具体内容如下MainActivity.javapublic cl
- 自定义封装 banner 组件,供大家参考,具体内容如下1. 效果图预览 2.基本功能一个简单方便的轮播图组件,基于viewpag
- 本文实例讲述了Java基于二叉查找树实现排序功能。分享给大家供大家参考,具体如下:/** * 无论排序的对象是什么,都要实现Comparab
- 在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在<select>语句上指定resultType。这
- 本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下随机生成0~100的数字,通过控制台输入猜测数字,输出进行提示
- 记录下一个很实用的小控件EditTextWithDel,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内
- AnDroidDraw 是一个与 DroidDraw 集成的 Android 应用程序,它允许你从 DroidDraw 应用 程序下载你的
- 前言本文主要给大家介绍了关于Java中Arraylist动态扩容的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
- 前言最近参加了21天打卡活动,希望可以让自己养成写博客的习惯…ArrayList和LinkedListArrayLis
- 引言在unity中可以将不同场景的背景和道具放置在不同的Scene当中,通过对Scene的加载和卸载来实现场景之间的切换。同时创建一个基础场
- 本文实例讲述了Android编程判断SD卡是否存在及使用容量查询实现方法。分享给大家供大家参考,具体如下:1.判断SD卡是否存在 返回tru