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 + "]";
}
}