天天看點

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

繼續閱讀