天天看点

java---面向对象:学生管理系统

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