其实不管是网上或者培训班,都会有学生管理系统的最基础版本,本人也不过是照猫画虎,在某些细节方面进行了一些渲染,使这个最基本的小程序更加人性化和便于利于操作一点,个人愚见,大牛勿喷,欢迎转载(请注明出处,谢谢合作!)。

  个人写的小东西,欢迎大家指出其中的不足之处,本人一定虚心接受并改正,入门小白,写些小东西为了自己能印象更深刻,纪念一下自己的劳动成果,也希望能对其中一些对于IT行业有憧憬的新人有些许帮助。

这是程序主类:

 import java.util.ArrayList;
import java.util.Scanner; public class BestStuManagerArrayList {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Student> array = new ArrayList<Student>(); while (true) {// 为的是每次操作之后都能回到这个页面
System.out.println("********欢迎使用学生管理系统********");
System.out.println("请选择您要进行的操作:1.查询 2.添加 3.修改 4.删除 5.退出");
String choiceNum = scanner.nextLine();
switch (choiceNum) {
case "1":
// 查询学生信息
findStudent(array);
break;
case "2":
// 添加学生信息
addStudent(array);
break;
case "3":
// 修改学生信息
updateStudent(array);
break;
case "4":
// 删除学生信息
deleteStudent(array);
break;
case "5":
// 退出
// 因为选择退出跟选择除了1234是一样的,所以用case穿透
default:
System.out.println("谢谢您的使用,再见!");
System.exit(0);// 退出系统,同时也退出了整个while无限循环
break;
}
}
} /**
* 这是删除学生的方法
* @param array
*/
public static void deleteStudent(ArrayList<Student> array) {
Scanner scanner = new Scanner(System.in);
boolean flag = true; while (flag) {
System.out.println("请输入你想删除信息学生的学号");
String id = scanner.nextLine(); // 这里需要讨论到底有没有输入的这个学号的这个学生 int index = -1;// 定义变量index为-1
for (int i = 0; i < array.size(); i++) {
Student stu = array.get(i);
if (id.equals(stu.getSid())) {// 如果输入的id跟集合中学生的id有一样的,那么把这个学生的id赋值给index
index = i;
break;
}
}
if (index != -1) {// 如果不等于-1,说明进去过上面的判断条件,也就是有输入的id的学生,所以我们修改这个学生的信息就行了
System.out.println("有你需要的学生信息,请问是否确认删除? 1.(是) 2.(否,重新选择操作) 其他.(退出)");
String choice = scanner.nextLine();
if (choice.equals("1")) {
array.remove(index);
System.out.println("学生信息删除成功");
} else if (choice.equals("2")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
flag = false;
} else {
System.out.println("您想删除信息的学生不存在,您可以选择:1.(重新输入) 2.(重新选择操作) 其他:(退出系统)");
String choice = scanner.nextLine();
if (choice.equals("1")) { } else if (choice.equals("2")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
}
} } /**
* 这是修改集合内学生信息的方法
*
* @param array
*/
public static void updateStudent(ArrayList<Student> array) {
Scanner scanner = new Scanner(System.in);
boolean flag = true; while (flag) {
System.out.println("请输入你想修改信息学生的学号");
String id = scanner.nextLine(); // 这里需要讨论到底有没有输入的这个学号的这个学生 int index = -1;// 定义变量index为-1
for (int i = 0; i < array.size(); i++) {
Student stu = array.get(i);
if (id.equals(stu.getSid())) {// 如果输入的id跟集合中学生的id有一样的,那么把这个学生的id赋值给index
index = i;
break;
}
}
if (index != -1) {// 如果不等于-1,说明进去过上面的判断条件,也就是有输入的id的学生,所以我们修改这个学生的信息就行了
System.out.println("有你查找的学生信息,请问需要修改哪一项:1.(全部) 2.(姓名) 3.(年龄) 4.(居住地) 5.(放弃修改,重新选择操作) 6.(退出)");
String choice = scanner.nextLine();
if (choice.equals("1")) {
Student sNew = new Student();
System.out.println("请输入学生姓名");
String name = scanner.nextLine();
System.out.println("请输入学生年龄");
String age = scanner.nextLine();
System.out.println("请输入学生居住地 ");
String address = scanner.nextLine();
sNew.setSid(id);
sNew.setName(name);
sNew.setAge(age);
sNew.setAddress(address);
array.set(index, sNew);
System.out.println("学生信息全部更新成功");
} else if (choice.equals("2")) {
Student s = array.get(index);
System.out.println("请输入修改后的姓名");
String name = scanner.nextLine();
s.setName(name);
System.out.println("学生姓名信息更新成功");
} else if (choice.equals("3")) {
Student s = array.get(index);
System.out.println("请输入修改后的年龄");
String age = scanner.nextLine();
s.setAge(age);
System.out.println("学生年龄信息更新成功");
} else if (choice.equals("4")) {
Student s = array.get(index);
System.out.println("请输入修改后的居住地");
String address = scanner.nextLine();
s.setAddress(address);
System.out.println("学生居住地信息更新成功");
} else if (choice.equals("5")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
flag = false;
} else {
System.out.println("您想修改的学生不存在,您可以选择:1.(重新输入) 2.(重新选择操作) 其他:(退出系统)");
String choice = scanner.nextLine();
if (choice.equals("1")) { } else if (choice.equals("2")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
}
}
} /**
* 这是查询所有学生信息的方法
*
* @param array
* 需要被查询的学生信息的集合
*/
public static void findStudent(ArrayList<Student> array) {
Scanner scanner = new Scanner(System.in);
// 如果现在没有录入学生信息
if (array.size() <= 0) {
System.out.println("现在还没有学生信息,您可以选择:1.(重新选择操作) 其他.(退出系统)");
String choice = scanner.nextLine();
if (choice.equals("1")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
} System.out.println("学号\t姓名\t年龄\t居住地");
for (int i = 0; i < array.size(); i++) {
Student stu = array.get(i);
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress()); }
} /**
* 这是向ArrayList集合中添加学生的方法
*
* @param array
* 需要被操作的ArrayList集合
*/
public static void addStudent(ArrayList<Student> array) {
Student stu = new Student();
Scanner scanner = new Scanner(System.in);
String id;
while (true) {
boolean flag = false;// 定义flag标记学号是否冲突
System.out.println("请输入学生学号:");
id = scanner.nextLine();
for (int i = 0; i < array.size(); i++) {
if (id.equals(array.get(i).getSid())) {
System.out.println("您添加的学号已经存在,您可以选择:1.(重新输入学号) 2.(重新选择操作) 其他.(退出系统)");
String choice = scanner.nextLine();
if (choice.equals("1")) {
flag = true;
break;
} else if (choice.equals("2")) {
return;
} else {
System.out.println("谢谢使用,再见");
System.exit(0);
}
}
}
if (flag == false) {
break;
}
}
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
String age = scanner.nextLine();
System.out.println("请输入学生居住地:");
String address = scanner.nextLine();
stu.setSid(id);
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
array.add(stu);
System.out.println("添加学生信息成功");
}
}

学生类(其实自己可以往里面添加很多字段,本人只是做个演示而已):

 public class Student {
private String sid;
private String name;
private String age;
private String address; public Student() {
super();
} public Student(String sid, String name, String age, String address) {
super();
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
} 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 getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} }

史上最强学生管理系统之ArrayList版的更多相关文章

  1. 史上最强学生管理系统之IO版

    既上一博发布的ArrayList版本之后,新一版的IO版又来了,其实只是在上一个版本里面添加了IO流的内容,将存入更改的信息更新到了文件中而已,这个版本网上仍然很多,本人只是在某些方面稍加修改,因为自 ...

  2. 一文深入了解史上最强的Java堆内缓存框架Caffeine

    它提供了一个近乎最佳的命中率.从性能上秒杀其他一堆进程内缓存框架,Spring5更是为了它放弃了使用多年的GuavaCache 缓存,在我们的日常开发中用的非常多,是我们应对各种性能问题支持高并发的一 ...

  3. Webbrowser控件史上最强技巧全集

    原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click ...

  4. 史上最强php生成pdf文件,html转pdf文件方法

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 史上最强Java NIO入门:担心从入门到放弃的,请读这篇!

    本文原题“<NIO 入门>,作者为“Gregory M. Travis”,他是<JDK 1.4 Tutorial>等书籍的作者. 1.引言 Java NIO是Java 1.4版 ...

  6. 史上最强maven配置详情

    史上最强maven配置详情 优点 对第三方依赖库进行了统一的版本管理 统一了构建过程 统一了项目的目录结构 构建 清理 : mvn clear 编译 : mvn compile 测试 : mvn te ...

  7. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

  8. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  9. Android, IOS 史上最强多语言国际化,不仅第一次会尾随系统,并且会保存用户的语言设置

    劲爆消息,我提供源代码了.你能够先看完再下载.也能够先下载再看完, android源代码地址: https://github.com/hebiao6446/------Bluetooth-Androi ...

随机推荐

  1. MSSQL查询数据分页

    这几天刚好碰到数据的分页查询,觉得不错,Mark一下,方法有两种,都是使用select top,效率如何就不在这讨论 方法1:利用select top配合not in(或者not exists),查询 ...

  2. Asp.Net MVC4 系列--进阶篇之路由 (2)

    上一篇介绍了Asp.Net MVC 中,从Http Pipeline上接收到请求如何匹配,匹配限制,以及如何控制在指定命名空间查找,解析出controller和action,并传参. 这篇主要介绍如何 ...

  3. C#用SerialPort实现串口通讯

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. 【原创】修复ios输入框获取焦点时不支持fixed的bug

    前些日子,做了一个手机站的项目,有一个页面是这样的, 有一个固定(position:fixed)的头部和底部导航,中间是一些表单内容,没啥特别的.但是到了ios中,正常滚动页面没有问题,一旦触发了文本 ...

  5. 初识SQL Server2017 图数据库(一)

    背景: 图数据库对于表现和遍历复杂的实体之间关系是很有效果的.而这些在传统的关系型数据库中尤其是对于报表而言很难实现.如果把传统关系型数据库比做火车的话,那么到现在大数据时代,图数据库可比做高铁.它已 ...

  6. Django(二)

    QuerySet与惰性机制: 所谓惰性机制:Publisher.objects.all()或者所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个Que ...

  7. hdu 4117 -- GRE Words (AC自动机+线段树)

    题目链接 problem Recently George is preparing for the Graduate Record Examinations (GRE for short). Obvi ...

  8. gridContro使用随记

    gridControl设置列宽自动适应内容:绑定数据后调用如下代码即可设置.gridControl1.DataSource = m_pTablegridView1.BestFitColumns(); ...

  9. Linux文档的压缩与打包

    linux系统中的后缀名其实要不要无所谓,但是对于压缩文件来讲必须要带上.这是为了判断压缩文件是由哪种压缩工具所压缩,而后才能去正确的解压缩这个文件.Linux压缩文件常见的后缀名所对应的压缩工具: ...

  10. MongoDB索引限制

    1. 额外开销: 每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作.所以,如果你很少对集合进行读取操作,建议不使用索引. 2. 内存使用: 由于索引是存储在内存(RAM)中 ...