学生信息管理系统(集合版)
Student.java
package com.lanqiao.demo;
/**
* 学生类
*
* @author qichunlin
*
*/
public class Student {
private String name;// 姓名
private double[] score = new double[3];// 三门课程成绩
// get set
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double[] getScore() {
return score;
}
public void setScore(double[] score) {
this.score = score;
}
// 有参构造方法
public Student(String name2, double[] score2) {
super();
// 传入的参数跟类里定义的属性区分开
this.name = name2;
this.score = score2;
}
// 无参构造方法
public Student() {
super();
}
// 有参构造函数
public String toString() {
return "\t" + this.name + "\t" + this.score[0] + "\t" + this.score[1] + "\t" + this.score[2];
}
}
Manager.java
package com.lanqiao.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Manager {
List stuList = new ArrayList();
Scanner input = new Scanner(System.in);
public void menu() {
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("请选择:");
int num = input.nextInt();
switch (num) {
case 1:
System.out.println("添加学生");
//创建学生对象
Student stu = new Student();
//录入学生姓名
System.out.print("请输入学生姓名:");
String name = input.next();
double[] scores = stu.getScore();
for (int i = 0; i < scores.length; i++) {
System.out.print("请输入学生"+(i+1)+"门成绩:");
scores[i] = input.nextDouble();
}
//将信息保存在学生对象里面
stu.setName(name);
stu.setScore(scores);
//再把学生对象放进去集合里面
input(stu);
break;
case 2:
display();
break;
case 3:
System.out.println("修改学生");
display();
System.out.println("请输入需要修改学生的编号:");
int n = input.nextInt();
update(n);
break;
case 4:
System.out.println("删除学生");
System.out.println("请选择删除的方式(1.根据编号 2.根据姓名)");
int key = input.nextInt();
//删除操作之前显示一下学生信息
display();
//选择删除方式
switch (key) {
case 1:
System.out.println("请输入删除的编号 ");
int index = input.nextInt();
//在方法中定义了异常 数组下标越界的问题
try {
delete(index);
} catch (Exception e) {
e.printStackTrace();
}
break;
case 2:
System.out.println("请输入需要删除的学生姓名");
String delName = input.next();
delete(delName);
break;
default:
break;
}
break;
case 5:
System.exit(0);
System.out.println("Welcome to use this system Next");
break;
default:
break;
}
System.out.println("是否继续(Y/N):");
String flag = input.next();
if(flag.equalsIgnoreCase("y")) {
menu();
}else {
System.out.println("Welcome to use this system Next");
}
}
// 学生成绩录入方法,参数stus为待录入信息学生集合
public void input(Student stus) {
System.out.println();
stuList.add(stus);
}
// 学生成绩修改方法,参数index为修改的学生信息索引,另外本方法会在修改前显示该学生信息
public void update(int index) {
Student s = (Student)stuList.get(index);
System.out.println("请输入修改后的名字");
String name = input.next();
s.setName(name);
stuList.set(index, s);
System.out.println("==========修改后显示成绩信息==========");
System.out.println(s.getName()+"\t"+s.getScore()[0]+"\t"+s.getScore()[1]+"\t"+s.getScore()[2]);
}
// 显示所有学生成绩信息方法
public void display() {
System.out.println("编号\t"+"姓名\t"+"成绩1\t" +"成绩2\t" +"成绩3\t");
for (int i = 0; i < stuList.size(); i++) {
Student s = (Student) stuList.get(i);
System.out.println(i+"\t"+s.getName()+"\t"+s.getScore()[0]+"\t"+s.getScore()[1]+"\t"+s.getScore()[2]);
}
}
// 根据索引删除在集合中删除学生的方法
public void delete(int index) throws Exception {
if(index>=0 && index<stuList.size()) {
stuList.remove(index);
}else {
throw new Exception("你输入的编号有误,请重新输入!!!");
}
}
// 根据姓名删除在集合中删除学生的方法
public void delete(String name) {
for (int i = 0; i < stuList.size(); i++) {
Student st = (Student) stuList.get(i);
if(st.getName().equals(name)) {
stuList.remove(st);
}
}
}
}
Test.java
package com.lanqiao.demo;
/**
* @author qichunlin
*
*/
public class Test {
public static void main(String[] args) {
//创建管理类对象
Manager m = new Manager();
m.menu();
}
}