需求

1、 定义一个学生类 Student,包含姓名、成绩信息;

2、使用 ArrayList集合存储学生对象;

3、 对集合中的元素进行增删查改的操作。

一、定义学生类

学生类可以包含姓名、成绩、学号、年龄等等,这里只包含了前两项学生类属性。

public class Student {

//封装学生类型:

private String name; //姓名

private int score; //成绩

public Student() {

}

public Student(String name, int score) {

this.name = name;

this.score = score;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

//重写toString方法:

@Override

public String toString() {

return "Student{" +

"name='" + name + '\'' +

", score=" + score +

'}';

}

}

二、定义学生成绩信息管理类

在该类中定义了简单的增、删、查、改的方法。

其中,遍历集合元素使用到了for...each循环以及使用迭代器这两种常见的方式,

添加学生信息create方法使用了try..catch语句处理异常。

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Scanner;

public class StudentScoreManagement {

public static void main(String[] args) {

System.out.println("欢迎登录学生成绩信息管理系统!");

while(true) {

System.out.println();

System.out.println("=====================");

System.out.println("请选择操作:");

System.out.println("①查询信息\n②添加信息\n③删除信息\n④修改信息\n⑤退出系统");

System.out.println("=====================");

Scanner stu = new Scanner(System.in);

int n = stu.nextInt();//接收控制台输入

if (n == 1) {

//查询

StudentScoreManagement.read();

} else if (n == 2) {

//添加

while (true){

//使用 try...catch 捕获异常:

try {

StudentScoreManagement.create();

break;

} catch (Exception e) {

// throw new RuntimeException(e.toString()); //抛出异常,程序结束

System.out.println("输入了不合理的成绩,请重新输入!"); //程序继续执行

}

}

} else if (n == 3) {

//删除

StudentScoreManagement.delete();

} else if (n == 4) {

//修改

StudentScoreManagement.update();

} else if (n == 5) {

//退出

System.out.println("已退出学生成绩信息管理系统!");

break;

} else {

System.out.println("暂无该项指令,请重新输入!");

}

}

}

//使用ArrayList集合存放学生信息数据

static List studentList = new ArrayList<>();

/**增*/

public static void create() throws Exception{ //声明异常

/*输入成绩*/

String goon = "Y";

while ("Y".equals(goon)) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入学生姓名:");

String name = sc.next();

System.out.println("请输入学生成绩:");

int score = sc.nextInt();

//抛出异常:

if (score<0 || score>100) {

throw new Exception("输入的成绩不合理!");

}

Student stu = new Student(name,score);

studentList.add(stu);

System.out.println("是否继续录入?Y/N");

goon = sc.next();

}

}

/**删*/

public static void delete(){

Scanner sc = new Scanner(System.in);

System.out.println("请输入想要删除信息的学生姓名:");

String dname = sc.next();

//使用迭代器遍历集合元素

Iterator it = studentList.iterator();

while (it.hasNext()){

Student st=it.next();

if(st.getName().equals(dname)){

it.remove();

System.out.println("删除成功!");

}else if (st.getName().equals(dname) == true) {

System.out.println("暂不存在该学生信息,请重新输入!");

}

}

}

/**查*/

public static void read(){

if (studentList.isEmpty() == true){

System.out.println("暂无数据!");

}

else {

System.out.println("已添加的学生信息:");

//使用for...each循环语句遍历集合元素

for (Student stu : studentList

) {

System.out.println(stu);

}

}

}

/**改*/

public static void update(){

Scanner sc = new Scanner(System.in);

System.out.println("请输入想要修改的学生信息(输入 姓名/成绩): 1、姓名 2、成绩 ");

String data = sc.next(); //输入想要修改的信息

if (data.equals("姓名")) {

System.out.println("请输入将要修改姓名信息的同学:");

Scanner scanner = new Scanner(System.in);

String name = scanner.next();

//使用迭代器遍历集合元素

Iterator it = studentList.iterator();

while (it.hasNext()){

Student st = it.next();

if(st.getName().equals(name)){

System.out.println("请输入修改后的姓名:");

String newname = scanner.next();

st.setName(newname);

System.out.println("修改成功!\n已修改的学生信息:");

System.out.println(st);

}else if (st.getName().equals(name) == true) {

System.out.println("暂不存在该学生信息,请重新输入!");

}

}

}

else if (data.equals("成绩")){

System.out.println("请输入将要修改成绩信息的同学姓名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.next();

//使用迭代器遍历集合元素

Iterator it = studentList.iterator();

while (it.hasNext()){

Student st = it.next();

if(st.getName().equals(name)){

System.out.println("请输入修改后的成绩:");

int newscore = sc.nextInt(); //修改后的成绩

st.setScore(newscore);

System.out.println("修改成功!\n已修改的学生信息:");

System.out.println(st);

}else if (st.getName().equals(name) == true) {

System.out.println("暂不存在该学生信息,请重新输入!");

}

}

}

else

System.out.println("您输入的操作信息有误!请重新输入");

}

}

三、运行示例

1.添加学生信息:

欢迎登录学生成绩信息管理系统!

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

1

暂无数据!

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

2

请输入学生姓名:

张三

请输入学生成绩:

85

是否继续录入?Y/N

Y

请输入学生姓名:

李四

请输入学生成绩:

90

是否继续录入?Y/N

Y

请输入学生姓名:

王五

请输入学生成绩:

70

是否继续录入?Y/N

N

2.查询信息:

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

1

已添加的学生信息:

Student{name='张三', score=85}

Student{name='李四', score=90}

Student{name='王五', score=70}

3.删除信息

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

3

请输入想要删除信息的学生姓名:

王五

删除成功!

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

1

已添加的学生信息:

Student{name='张三', score=85}

Student{name='李四', score=90}

3.修改信息:

4

请输入想要修改的学生信息(输入 姓名/成绩): 1、姓名 2、成绩

姓名

请输入将要修改姓名信息的同学:

张三

请输入修改后的姓名:

小明

修改成功!

已修改的学生信息:

Student{name='小明', score=85}

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

4

请输入想要修改的学生信息(输入 姓名/成绩): 1、姓名 2、成绩

成绩

请输入将要修改成绩信息的同学姓名:

小明

请输入修改后的成绩:

100

修改成功!

已修改的学生信息:

Student{name='小明', score=100}

4.退出系统:

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

1

已添加的学生信息:

Student{name='小明', score=100}

Student{name='李四', score=90}

=====================

请选择操作:

①查询信息

②添加信息

③删除信息

④修改信息

⑤退出系统

=====================

5

已退出学生成绩信息管理系统!

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: