这个集合做的学生管理系统功能还是很完备的
1.建一个学生实体类
public class Student implements Comparable{
//如果还有什么想加的属性,直接在这里加就行了,记得加上get与set方法
private String name;
private String id;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "学号:"+getId()+" 姓名:"+getName()+" 年龄:"+getAge();
}
@Override
public int compareTo(Object o) {
return Integer.valueOf(this.getId())-Integer.valueOf(((Student)o).getId());
}
2.建一个MainTest类(实现的代码全部都在这个类里面)
import java.util.*;
public class MainTest {
static Scanner sc = new Scanner(System.in);
//让所有方法都操作这一个集合
static ArrayList<Student> al = new ArrayList<Student>();
public static void main(String[] args) {
run();
}
//运行界面
public static void run(){
//1:添加信息 2:查询信息(学号) 3:查询信息(姓名) 4:修改信息(学号) 5:修改信息(姓名) 6:删除信息(学号) 7:删除信息(姓名) 8:查看全部 9:退出系统");
System.out.println("******************************************************欢迎进入学生管理系统******************************************************");
while(true){
System.out.println("1:添加信息 2:查询信息(学号) 3:查询信息(姓名) 4:修改信息(学号) 5:修改信息(姓名) 6:删除信息(学号) 7:删除信息(姓名) 8:查看全部 9:退出系统");
int choice = sc.nextInt();
switch(choice)
{
case 1:addMessage();break;
case 2:serMessageById();break;
case 3:serMessageByName();break;
case 4:upMessageById();break;
case 5:upMessageByName();break;
case 6:delMessageById();break;
case 7:delMessageByName();break;
case 8:serAllMessage();break;
case 9:System.out.println("谢谢使用!");System.exit(0);
}
}
}
//1.添加信息 将学号设为唯一的值
public static void addMessage(){
while(true){
Student stu = new Student();
System.out.println("请输入学生学号");
String ID = sc.next();
boolean boo = true;
//进行学号唯一性检查,如果输入的学号已经存在于集合中,就让其重新输入,直至输入一个不存在的学号
while(boo){
boo = false;
for(Student s : al){
if(s.getId().equals(ID)){
System.out.println("此学号已经存在,请重新输入学号!");
ID = sc.next();
boo = true;
}
}
}
stu.setId(ID);
System.out.println("请输入学生姓名");
stu.setName(sc.next());
System.out.println("请输入学生年龄");
stu.setAge(sc.nextInt());
if(al.add(stu)){
System.out.println("添加成功!");
System.out.println("继续添加输入y");
String chose = sc.next();
String regex = "[y]";
//利用递归来实现继续添加学生的功能
if(chose.matches(regex)){
addMessage();
}
}else{
System.out.println("添加失败!");
}
break;
}
}
//2.查询信息(学号)
public static void serMessageById()
{
//这个判断是为了检测集合里有没有学生,如果没有的话提醒添加学生
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
}else{
int i;
int count = 0;
System.out.println("请输入学生学号:");
String ID = sc.next();
//因为学号唯一,所以只会有一条信息,没有其他的情况
for(i=0;i<al.size();i++){
if(al.get(i).getId().equals(ID)){
System.out.println(al.get(i).toString());
count++;
}
}
//这个是一个标记,如果查找的学生存在的话,count不可能等于0,如果不存在这个学生,count等于0,然后报出未找到该学生的提示
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}
}
//3.查询信息(姓名)
public static void serMessageByName()
{
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
}else{
//这个是为了给集合排序,让查找出来的学生按照ID的大小来排序
Collections.sort(al);
int i;
int count = 0;
System.out.println("请输入学生姓名:");
String name = sc.next();
for(i=0;i<al.size();i++){
if(al.get(i).getName().equals(name)){
System.out.println(al.get(i).toString());
count++;
}
}
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}
}
//4.修改信息(学号)
public static void upMessageById()
{
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
return;
}
int i;
int count = 0;
System.out.println("请输入学生学号:");
String ID = sc.next();
//遍历集合
for(i=0;i<al.size();i++){
//找到该学生
if(al.get(i).getId().equals(ID)){
System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
count++;
//提供四种修改方式
System.out.println("1.修改学号 2.修改姓名 3.修改年龄 4.全部修改 5.取消修改");
switch (sc.nextInt())
{
case 1:
System.out.println("请输入新学号");
String newID = sc.next();
boolean boo = true;
//进行学号唯一性检查
while(boo){
boo = false;
for(Student s : al){
//如果输入的是自己查的那个学号,改成自己的学号是没有问题的
if(newID.equals(ID)){
//这句话删除也是没有问题的,只是提示一下
System.out.println("请注意你输入的是当前学生的学号");
al.get(i).setId(newID);
break;
}else if(s.getId().equals(newID)){
System.out.println("此学号已经存在,请重新输入学号!");
newID = sc.next();
boo = true;
}else{
al.get(i).setId(newID);
}
}
}
System.out.println("修改成功,该生此后的学号为:"+al.get(i).getId());
break;
case 2:
System.out.println("输入新姓名");
al.get(i).setName(sc.next());
System.out.println("修改成功,该生此后的姓名为:"+al.get(i).getName());
break;
case 3:
System.out.println("输入新年龄");
al.get(i).setAge(sc.nextInt());
System.out.println("修改成功,该生此后的年龄为:"+al.get(i).getAge());
break;
case 4:
System.out.println("请输入新学号");
newID = sc.next();
boo = true;
//进行学号唯一性检查
while(boo){
boo = false;
for(Student s : al){
if(newID.equals(ID)){
System.out.println("请注意你输入的是当前学生的学号");
al.get(i).setId(newID);
break;
}else if(s.getId().equals(newID)){
System.out.println("此学号已经存在,请重新输入学号!");
newID = sc.next();
boo = true;
}else{
//上面都没走的话就走这一步,不管循环几次,newID的值最终都是你输入的那个
al.get(i).setId(newID);
}
}
}
System.out.println("输入新姓名");
String name = sc.next();
System.out.println("输入新年龄");
int age = sc.nextInt();
al.get(i).setName(name);
al.get(i).setAge(age);
System.out.println("修改成功,该生此后的信息为:"+al.get(i).toString());
break;
case 5:
break;
default:
System.out.println("请输入正确的数字!");
break;
}
}
}
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}
//5.修改信息(姓名)
public static void upMessageByName()
{
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
return;
}
int i;
int count = 0;
System.out.println("请输入学生姓名:");
String name = sc.next();
//注意,学生姓名不唯一,可重复,可能有好几个同姓的
for(i=0;i<al.size();i++){
if(al.get(i).getName().equals(name)){
System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
count++;
System.out.println("1.修改学号 2.修改姓名 3.修改年龄 4.全部修改 5.取消修改");
switch (sc.nextInt())
{
case 1:
System.out.println("请输入新学号");
String ID = al.get(i).getId();
String newID = sc.next();
boolean boo = true;
//进行学号唯一性检查
while(boo){
boo = false;
for(Student s : al){
if(ID.equals(newID)){
System.out.println("请注意你输入的是当前学生的学号");
al.get(i).setId(newID);
break;
}else if(s.getId().equals(newID)){
System.out.println("此学号已经存在,请重新输入学号!");
newID = sc.next();
boo = true;
}else{
al.get(i).setId(newID);
}
}
}
System.out.println("修改成功,该生此后的学号为:"+al.get(i).getId());
break;
case 2:
System.out.println("输入新姓名");
al.get(i).setName(sc.next());
System.out.println("修改成功,该生此后的姓名为:"+al.get(i).getName());
break;
case 3:
System.out.println("输入新年龄");
al.get(i).setAge(sc.nextInt());
System.out.println("修改成功,该生此后的年龄为:"+al.get(i).getAge());
break;
case 4:
System.out.println("请输入新学号");
ID = al.get(i).getId();
newID = sc.next();
boo = true;
//进行学号唯一性检查
while(boo){
boo = false;
for(Student s : al){
if(ID.equals(newID)){
System.out.println("请注意你输入的是当前学生的学号");
al.get(i).setId(newID);
break;
}else if(s.getId().equals(newID)){
System.out.println("此学生学号已经存在,请重新输入学号!");
newID = sc.next();
boo = true;
}else{
al.get(i).setId(newID);
}
}
}
System.out.println("输入新姓名");
String nam = sc.next();
System.out.println("输入新年龄");
int age = sc.nextInt();
al.get(i).setName(nam);
al.get(i).setAge(age);
System.out.println("修改成功,该生此后的信息为:"+al.get(i).toString());
break;
case 5:
break;
default:
System.out.println("请输入正确的数字!");
break;
}
}
}
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}
//6.删除信息(学号)
public static void delMessageById()
{
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
return;
}
int i;
int count = 0;
//分两种情况来删除
System.out.println("1.删除某学生 2.清空所有学生信息");
int input = sc.nextInt();
if(input==1){
System.out.println("请输入学生学号:");
String ID = sc.next();
for(i=0;i<al.size();i++){
if(al.get(i).getId().equals(ID)){
System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
count++;
System.out.println("确认删除请输入y,否则输入n");
String chose = sc.next();
if(chose.equals("y")){
al.remove(i);
System.out.println("删除完毕!");
}
}
}
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}else if(input==2){
System.out.println("确认清空请输入y,否则输入n");
String chose = sc.next();
if(chose.equals("y")){
if(al.removeAll(al)){
System.out.println("清空完毕!");
}else{
System.out.println("清空失败!");
}
}
}
}
//7.删除信息(姓名)
public static void delMessageByName()
{
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
return;
}
int i;
int count = 0;
System.out.println("1.删除某学生 2.清空所有学生信息");
int input = sc.nextInt();
if(input==1){
System.out.println("请输入学生姓名:");
String name = sc.next();
for(i=0;i<al.size();i++){
if(al.get(i).getName().equals(name)){
System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
count++;
System.out.println("确认删除请输入y,否则输入n");
String chose = sc.next();
if(chose.equals("y")){
al.remove(i);
System.out.println("删除完毕!");
}
}
}
if(count == 0){
System.out.println("未找到这个学生,请查证后再找!");
}
}else if(input==2){
System.out.println("确认清空请输入y,否则输入n");
String chose = sc.next();
if(chose.equals("y")){
if(al.removeAll(al)){
System.out.println("清空完毕!");
}else{
System.out.println("清空失败!");
}
}
}
}
//8.查看全部学生信息
// @SuppressWarnings("unchecked")
public static void serAllMessage(){
if(al.isEmpty()){
System.out.println("还没有学生,请返回添加学生信息!");
}else{
//使之有序,看起来舒服
Collections.sort(al);
for(int i=0;i<al.size();i++){
System.out.println(al.get(i).toString());
}
}
}
}
完毕!后续还需继续努力