阅读量:1
需求
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<Student> 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<Student> 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<Student> 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<Student> 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 已退出学生成绩信息管理系统!