Student类
x
package ch5;//学生类public class Student { //学号 private String sid; //姓名 private String name; //年龄 private String age; //居住地 private String address;
//无参构造方法 public Student(){}
public Student(String sid, String name, String age, String address){ this.sid = sid; this.name = name; this.age = age; this.address = address; }
//---------------------------------------------------------------------------------------------
public String getSid() {//alt+insert,选getter and setter,按住shift全选再下一步,就生成下面的了 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) {//alt+insert,选getter and setter,按住shift全选再下一步,就生成上面的了 this.address = address; }
}
StudentManager类
x
package ch5;
import java.util.ArrayList;import java.util.Scanner;
//学生管理系统public class StudentManager { public static void main(String[] args) { //创建集合对象,用于存储所有的学生数据 ArrayList<Student> array = new ArrayList<Student>();
//把整体用循环包起来,用于再次回到主界面 while (true) { //用输出语句完成主界面的编写 System.out.println("--------Welcome Student Administration--------"); System.out.println("1 addStudent"); System.out.println("2 deleteStudent"); System.out.println("3 changeStudent"); System.out.println("4 lookStudent"); System.out.println("5 leave"); System.out.println("please input your choose?");
//使用Scanner实现键盘录入数据 Scanner sc = new Scanner(System.in); String line = sc.nextLine();
//使用Switch语句完成操作的选择 switch (line) { case "1": //System.out.println("addStudent"); addStudent(array);//把数据放到array这个集合里面 break; case "2": //System.out.println("deleteStudent"); deleteStudent(array);//调用下面写好的删除方法 break; case "3": //System.out.println("changeStudent"); updateStudent(array);//调用下面写好的修改方法 break; case "4": //System.out.println("lookStudent"); findAllStudent(array); break; case "5": System.out.println("thank you! leave"); //break; 最后一步退出不要这样写,写法如下 System.exit(0);//JVM即java虚拟机退出 } } }
//--------------------------------------------------------------------------------------------- //定义一个方法,用于添加学生信息(建议学号录入规范为3个数字+3个英文) public static void addStudent(ArrayList<Student> array){
//键盘录入学生对象所需要的数据 Scanner sc = new Scanner(System.in);
String sid;//定义在循环外面 //为了让程序能够回到这里,就需要使用循环实现 while (true) { //提示信息 System.out.println("need input Student id_num:"); //String sid = sc.nextLine(); //把这一行的定义放到循环外面,避免this指针问题 sid = sc.nextLine();//外面已经定义了,直接赋值就好
boolean flag = isUsed(array, sid);//判断学号是否被使用过 if (flag) {//如果被使用过 System.out.println("this id_num already exist! please again input:"); } else{ break; } }
System.out.println("need input Student name:"); String name = sc.nextLine(); System.out.println("need input Student age:"); String age = sc.nextLine(); System.out.println("need input Student address:"); String address = sc.nextLine();
//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量 Student s = new Student(); //赋值采用set方法 s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address);
//将学生对象添加到集合中 array.add(s);
//给出添加成功提示 System.out.println("addStudent success");
//记得还去main方法里面调用这个添加学生的方法
}
//-------------------------------------------------------------------------------------------- //定义一个方法,用于判断学号是否被使用 public static boolean isUsed(ArrayList<Student> array,String sid){ //如果与集合中的某一个学生学号相同,返回true,不相同则返回false boolean flag = false;
for(int i=0; i<array.size(); i++){ Student s = array.get(i); if(s.getSid().equals(sid)){//如果学号被使用 flag = true; break; } } return flag;
//要在main方法里面调用这个方法 }
//--------------------------------------------------------------------------------------------- /*定义一个方法,用于查看学生信息 public static void findAllStudent(ArrayList<Student> array){ //显示表头信息 System.out.println("id_num\t\tname\t\tage\t\taddress");//\t相当于空出tab键的距离 //将集合里的数据取出,按照对应格式提示学生信息,注意显示年龄时要补充'岁' for(int i=0; i<array.size(); i++){ Student s = array.get(i);//得到每一个学生 //System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress()); System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getAddress()); }
//注意,还要在main方法里调用这里的方法
} */
//-------------------------------------------------------------------------------------------- //定义一个方法,用于查看学生信息(升级版) public static void findAllStudent(ArrayList<Student> array){ //判断集合中是否有数据,如果没有就显示提示信息 if(array.size() == 0){ System.out.println("you can add message! please again try"); return;//终止程序 }
//显示表头信息 System.out.println("id_num\t\tname\tage\t\taddress");//\t相当于空出tab键的距离 //将集合里的数据取出,按照对应格式提示学生信息,注意显示年龄时要补充'岁' for(int i=0; i<array.size(); i++){ Student s = array.get(i);//得到每一个学生 //System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress()); System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getAddress()); }
}
//-------------------------------------------------------------------------------------------- /*定义一个方法,用于删除学生信息 public static void deleteStudent(ArrayList<Student> array){ //键盘录入要删除的学生学号,显示提示信息 Scanner sc = new Scanner(System.in);
System.out.println("delete need input Student id_num:"); //接收键盘录入的数据 String sid = sc.nextLine();
//遍历集合将对应学生对象从集合中删除 for(int i=0; i<array.size(); i++){ Student s = array.get(i);//把得到的所有学生对象赋值给s if(s.getSid().equals(sid)){//s.getSid()里面是字符串,字符串比较用equals()方法 array.remove(i);//如果遍历到的s跟键盘录入的sid相同,就删除集合里的s break;//结束这个循环 } } //给出删除成功的提示 System.out.println("delete success");
//要在main方法里调用这个方法
}*/
//------------------------------------------------------------------------------------------- //定义一个方法,用于删除学生(升级版) public static void deleteStudent(ArrayList<Student> array) { //键盘录入要删除的学生学号,显示提示信息 Scanner sc = new Scanner(System.in);
System.out.println("delete need input Student id_num:"); //接收键盘录入的数据 String sid = sc.nextLine();
//判断键盘输入的学号在集合里是否存在 int index = -1;//一开始给初始值为-1, for (int i = 0; i < array.size(); i++) { Student d = array.get(i);//得到集合里的所有对象 if (d.getSid().equals(sid)) {//如果存在该学号 //删除之前记录一下索引,定义写在外面比较好,避免this指向问题 //int index = i; index = i;//给索引赋值 break; } } //for循环外面判断一下索引 if (index == -1) {//如果索引还是-1,说明上面的for循环没执行,即这个学号不存在 System.out.println("error! again input id_sum:"); } else { //否则则说明学号存在 array.remove(index);//根据索引删除 //给出删除成功的提示 System.out.println("delete success"); } } //------------------------------------------------------------------------------------------ //定义一个方法,用于修改学生信息 public static void updateStudent(ArrayList<Student> array){ //键盘录入要修改的学生学号,提示显示信息 Scanner sc = new Scanner(System.in);
System.out.println("input need update student id_num:"); //接收键盘录入的学号 String sid = sc.nextLine();
//键盘录入要修改的学生信息 System.out.println("input student new id_num:"); String sid2 = sc.nextLine(); System.out.println("input student new name:"); String name = sc.nextLine(); System.out.println("input student new age:"); String age = sc.nextLine(); System.out.println("input student new address:"); String address = sc.nextLine();
//把上面键盘录入的新信息,创建成一个学生对象 Student s = new Student(); s.setSid(sid); s.setSid(sid2); s.setName(name); s.setAge(age); s.setAddress(address);
//遍历集合修改对应的学生信息 for(int i=0; i< array.size(); i++){ Student student = array.get(i);//得到所有学生对象,赋值给左边的student if(student.getSid().equals(sid)){//getSid()里面是字符串,字符串比较用equals()方法 array.set(i,s);//根据索引,把新的数据s换上去 break;//结束这个循环 } } //给出修改成功的提示 System.out.println("update success");
//要在main方法里调用这个方法 }
}