import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
/**
* 學生管理系統
* 1.添加學生(不可以重複添加,學生的學号決定是否為同一個學生,學生按照學号進行排序)
* 2.可以檢視學生資訊(包括,學号,姓名,性别,聯系電話,年齡)
* a.檢視所有學生資訊
* b.根據學号看學生資訊
* 3.可以根據學号進行學生資訊的修改(學号不能被修改)
* 4.可以删除學生(根據學号進行删除)
* 5.可以重複進行操作,也可以選擇退出系統
* @author 74471
*
*/
public class StudentSys {
// 用來存儲添加的學生
Set<Student> stus = new TreeSet<Student>();
/**
* 添加學生
* @param stu 即将被添加的學生對象
* @return true 添加學生成功,false 添加學生失敗
*/
public boolean addStu(Student stu){
// 學生對象為空或者學号為空
if (stu == null || stu.getStuNo() == null) {
return false;
}
// 添加學生
boolean flag = stus.add(stu);
return flag;
}
/**
* 顯示所有學生的資訊
*/
public void showAllStus(){
Iterator<Student> iterator = stus.iterator();
while (iterator.hasNext()) {
Student stu = iterator.next();
System.out.println(stu);
}
}
/**
* 根據學号進行查找學生
* @param stuNo 需要查找的學生對象的學号
* @return stu 查找到了該學生對象,并且将其傳回,null 沒有找到該學生
*/
public Student getStuByStuNo(String stuNo){
Iterator<Student> iterator = stus.iterator();
while (iterator.hasNext()) { // 循環周遊學生集合
Student stu = iterator.next();
// 如果周遊到的學生對象的學号與傳進來的學号相等,表示找到了該學生
if (stu.getStuNo().equals(stuNo)) {
return stu;
}
}
return null;
}
/**
* 删除學生
* @param stu 需要被删除的學生
* @return true 删除成功,false 删除失敗
*/
public boolean delStu(Student stu){
return stus.remove(stu);
}
/**
* 修改學生的資訊
* @param stu 學生老的資訊對象
* @param newStu 學生新的資訊對象
* @return true 修改成功,false 修改失敗
*/
public boolean updateStu(Student stu, Student newStu){
// 如果要修改的學生對象為空或者學生新的資訊對象為空,則修改失敗
if (stu == null || newStu == null) {
return false;
}
// 修改學生的資訊
stu.setName(newStu.getName());
stu.setAge(newStu.getAge());
stu.setGender(newStu.getGender());
stu.setTelephone(newStu.getTelephone());
return true;
}
public void init(){
Student stu = new Student("001","1891829892","dsjk",18,"男");
Student stu1 = new Student("002","1891829892","dsjk1",19,"男");
Student stu2 = new Student("003","1891829892","dsjk2",17,"女");
Student stu3 = new Student("004","1891829892","dsjk3",16,"男");
Student stu4 = new Student("005","1891829892","dsjk3",20,"女");
stus.add(stu);
stus.add(stu1);
stus.add(stu2);
stus.add(stu3);
stus.add(stu4);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
StudentSys stuSys = new StudentSys();
// 初始預設的學生資訊
stuSys.init();
while (true) {
System.out.println("**********歡迎進入學生管理系統**********");
System.out.println("\t1.添加學生");
System.out.println("\t2.檢視學生資訊");
System.out.println("\t3.修改學生資訊");
System.out.println("\t4.删除學生");
System.out.println("\t5.退出系統");
System.out.print("請選擇所需要的操作:");
int choice = scanner.nextInt();
switch(choice){
case 1: // 添加學生
// 輸入學生的資訊
System.out.print("請輸入學生學号:");
String stuNo = scanner.next();
System.out.print("請輸入學生姓名:");
String name = scanner.next();
System.out.print("請輸入學生年齡:");
int age = scanner.nextInt();
System.out.print("請輸入學生的性别:");
String gender = scanner.next();
System.out.print("請輸入學生的聯系方式:");
String telephone = scanner.next();
Student stu = new Student(stuNo, telephone, name, age, gender);
// 添加學生
boolean flag = stuSys.addStu(stu);
System.out.print("\n");
if (flag) { // 添加學生成功
System.out.println("添加學生成功!");
} else { // 添加學生失敗
System.out.println("添加學生失敗!");
}
break;
case 2: // 檢視學生資訊
System.out.println("****************************");
System.out.println("\t1.檢視所有學生資訊");
System.out.println("\t2.檢視特定學生資訊");
System.out.print("請選擇操作:");
choice = scanner.nextInt();
switch(choice){
case 1: // 檢視所有學生資訊
stuSys.showAllStus();
break;
case 2: // 檢視特定學生資訊
System.out.print("請輸入需要檢視的學生的學号:");
stuNo = scanner.next();
// 根據學号查找學生
stu = stuSys.getStuByStuNo(stuNo);
if (stu == null) { // 沒找到
System.out.println("查無此生!");
} else {
System.out.println(stu);
}
break;
default:
System.out.println("沒有此操作!");
}
break;
case 3:
System.out.print("請輸入需要修改的學生的學号:");
stuNo = scanner.next();
// 根據學号查找學生
stu = stuSys.getStuByStuNo(stuNo);
if (stu == null) { // 沒找到
System.out.println("沒有要删除的學生!");
} else {
System.out.print("請輸入學生的新名字:");
name = scanner.next();
System.out.print("請輸入學生的新年齡:");
age = scanner.nextInt();
System.out.print("請輸入學生的新性别:");
gender = scanner.next();
System.out.print("請輸入學生的新聯系方式:");
telephone = scanner.next();
// 修改學生的資訊
Student newStu = new Student(stu.getStuNo(), telephone, name, age, gender);
flag = stuSys.updateStu(stu, newStu);
if (flag) { // 修改成功
System.out.println("修改學生成功!");
} else { // 修改失敗
System.out.println("修改學生失敗!");
}
}
break;
case 4:// 删除學生
System.out.print("請輸入需要檢視的學生的學号:");
stuNo = scanner.next();
// 根據學号查找學生
stu = stuSys.getStuByStuNo(stuNo);
if (stu == null) { // 沒找到
System.out.println("沒有要删除的學生!");
} else {
// 删除學生
flag = stuSys.delStu(stu);
if (flag) { // 删除成功
System.out.println("删除學生成功!");
} else { // 删除失敗
System.out.println("删除學生失敗!");
}
}
break;
case 5:
System.out.println("退出系統成功!");
// 退出程式
System.exit(0);
break;
default:
System.out.println("選擇的操作不合法!");
}
System.out.print("\n");
}
}
}
/**
* 學生類
* @author Administrator
*
*/
public class Student implements Comparable<Student>{
// 學号,聯系電話,姓名,年齡,性别
private String stuNo;
private String telephone;
private String name;
private int age;
private String gender;
// 無參構造方法
public Student(){}
// 有參構造方法
public Student(String stuNo, String telephone, String name, int age, String gender){
this.stuNo = stuNo;
this.telephone = telephone;
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((stuNo == null) ? 0 : stuNo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (stuNo == null) {
if (other.stuNo != null)
return false;
} else if (!stuNo.equals(other.stuNo))
return false;
return true;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
/**
* 比較方法,學生對象根據學号進行比較
* @param stu 需要比較的對象
* @return 非零 目前對象和需要比較的對象不相等
* 0 目前對象和需要比較的對象相等
*/
public int compareTo(Student stu) {
// TODO Auto-generated method stub
return stuNo.compareTo(stu.stuNo);
}
@Override
public String toString() {
return "Student [stuNo=" + stuNo + ", telephone=" + telephone + ", name=" + name + ", age=" + age + ", gender="
+ gender + "]";
}
}