學生管理系統-用數組做

這裏用靜態段來初始化數據,充當數據庫的功能

public class Student {
	private int sid;
	private String name;
	private int age;
	private float score;

	public Student(int sid, String name, int age, float score) {
		super();
		this.sid = sid;
		this.name = name;
		this.age = age;
		this.score = score;
	}
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	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 float getScore() {
		return score;
	}
	public void setScore(float score) {
		this.score = score;
	}
	@Override
	public String toString() {
		return "sid=" + sid + ", name=" + name + ", age=" + age + ", score=" + score ;
	}
	
}

public interface StudentDao {
	abstract public Student[] findAll();//查詢所有信息

	abstract public Student findBySid(int sid);// 根據學號查找學生

	abstract boolean delete(int sid);// 根據sid刪除學生

	abstract boolean add(Student stu);// 添加學生

	abstract Student[] findBySname(String sname);// 含有sname的算模糊匹配
}

public class StudentDB {
	static Student[] students = new Student[10];
	static {
		students[0] = new Student(1, "aa", 12, 90);
		students[1] = new Student(2, "bb", 13, 80);
		students[2] = new Student(3, "cc", 14, 70);
		students[3] = new Student(4, "dd", 15, 60);
		students[4] = new Student(5, "ee", 16, 50);
		students[5] = new Student(6, "ff", 17, 40);
		students[6] = new Student(7, "gg", 18, 30);
		students[7] = new Student(8, "hh", 19, 20);
		students[8] = new Student(9, "ii", 20, 10);
		students[9] = new Student(10, "jj", 21, 100);
	}
}
public class StudentDaoImpl implements StudentDao {
	// 查詢所有信息
	@Override
	public Student[] findAll() {
		return StudentDB.students;
	}

	// 根據學號查找學生
	@Override
	public Student findBySid(int sid) {
		// TODO Auto-generated method stub
		Student[] st = findAll();// 先查詢所有信息
		for (Student s : st) {
			if (s.getSid() == sid) {// 查找sid
				return s;
			}
		}
		return null;
	}

	// 根據sid刪除學生
	@Override
	public boolean delete(int sid) {
		// TODO Auto-generated method stub
		Student[] st = findAll();
		Student[] sss = new Student[st.length];// 定義一個臨時數組
		int j = 0;
		boolean flag = false;
		for (Student s : st) {
			if (s.getSid() != sid) {
				sss[j++] = s;
			} else {// 找到sid
				flag = true;
			}
		}
		if (flag) {// 刪除成功
			StudentDB.students = Arrays.copyOf(sss, st.length - 1);
		} else {// 找不到sid
			StudentDB.students = Arrays.copyOf(sss, st.length);
		}
		return flag;
	}

	// 添加學生
	@Override
	public boolean add(Student stu) {
		Student[] st = findAll();// 先查找全部信息
		boolean flag = true;
		for (Student s : st) {
			if (s.getSid() == stu.getSid()) {
				System.out.println("sid已經存在,添加失敗");
				flag = false;
			}
		}
		if (flag) {
			StudentDB.students = Arrays.copyOf(st, st.length + 1);
			StudentDB.students[st.length] = stu;
			System.out.println("添加成功!");
		}
		return flag;
	}

	// 含有sname的算模糊匹配
	@Override
	public Student[] findBySname(String sname) {
		Student[] st = findAll();// 先查詢所有信息
		Student[] x = new Student[st.length];// 臨時數組
		int i = 0;
		boolean flag=false;
		for (Student s : st) {
			if (s.getName().contains(sname)) {// 如果包含,就添加進去
				x[i++] = s;
				flag=true;
			}
		}
		if(flag){//如果包含
			x = Arrays.copyOf(x, i);// 再次轉換
			return x;
		}else{//找不到
			return null;
		}
		
	}

}

public class GUI {
	static StudentDaoImpl sdi = new StudentDaoImpl();

	static void showGui() {
		Scanner sc = new Scanner(System.in);
		while (true) {
			
			System.out.println("1 查詢全部:");
			System.out.println("2 按學號查詢");
			System.out.println("3 按名字查找");
			System.out.println("4 添加");
			System.out.println("5 刪除");
			System.out.println("6 退出");
			System.out.println("請輸入選項:");
			int n = sc.nextInt();
			switch (n) {
			case 1:
				Student[] s=sdi.findAll();
				for(Student x:s){
					System.out.println(x.toString());
				}
				break;
			case 2:
				System.out.println("請輸入需要查找的學號:");
				int sid=sc.nextInt();
				Student ss=sdi.findBySid(sid);
				System.out.println(ss.toString());
				break;
			case 3:
				System.out.println("請輸入需要查找的名字:");
				String name=new Scanner(System.in).nextLine();
				Student[] s1=sdi.findBySname(name);
				for(Student z:s1){
					if(z==null){
						System.out.println("沒有找到與之相匹配的信息!");
					}else{
						System.out.println(z.toString());
					}
				}
				break;				
			case 4:
				System.out.println("請輸入需要添加人的學號:");
				int sid3=sc.nextInt();
				System.out.println("請輸入需要添加人的姓名:");
				sc.nextLine();
				String sname=sc.nextLine();
				System.out.println("請輸入需要添加人的年齡:");
				int age=sc.nextInt();
				System.out.println("請輸入需要添加人的分數:");
				float ff=sc.nextFloat();
				Student stu=new Student(sid3, sname, age, ff);
				boolean flag=sdi.add(stu);
				break;
			case 5:
				System.out.println("請輸入需要刪除的學號:");
				int sid4=sc.nextInt();
				boolean flag2=sdi.delete(sid4);
				if(flag2){
					System.out.println("刪除成功!");
				}else{
					System.out.println("刪除失敗!");
				}
				break;
			default:
				System.out.println("退出成功!");
				System.exit(0);
				break;
				
			}
		}
	}
}

public class StudentDemoTest {
	public static void main(String[] args) {
	//啓動
	GUI.showGui();
	}
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章