我的Java學習之路(五)-- 學生日誌管理系統

一、功能介紹

學生日誌內容管理系統,日誌信息主要包含日誌編號,今日學習內容,掌握程度,疑問,日誌填寫人。項目包含主要實體類:

  • 學生類Student:學號,姓名,密碼
  • 日誌類Daily:編號,今日學習類容,掌握程度,疑問,學生
  • 實現功能如下:
  1. 學生添加
  2. 學生登錄
  3. 日誌提交
  4. 日誌編號自動生成(從1開始自動遞增)
  5. 查看當前登錄人提交的所有日誌列表
  6. 修改當前登錄人提交的日誌類容
  7. 退出登錄

二、功能代碼

1、定義學生類

Student.java

package com.feonix;

/**
 * 學生類
 * 
 * @author FeoniX
 *
 */
public class Student {
	/** 學生編號 */
	private int id;
	/** 姓名 */
	private String name;
	/** 密碼 */
	private String passwd;

	public Student(int id, String name, String passwd) {
		this.id = id;
		this.name = name;
		this.passwd = passwd;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPasswd() {
		return passwd;
	}

	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}

}

2、定義日誌類

Daily.java

package com.feonix;

/**
 * 日誌類
 * 
 * @author FeoniX
 *
 */
public class Daily {
	/** 編號 */
	private int id;
	/** 今日學習內容 */
	private String content;
	/** 掌握程度描述 */
	private String desc;
	/** 疑問 */
	private String problem;
	/** 日誌填寫人(對應的學生) */
	private Student stu;

	public Daily(int id, String content, String desc, String problem, Student stu) {
		this.id = id;
		this.content = content;
		this.desc = desc;
		this.problem = problem;
		this.stu = stu;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getDesc() {
		return desc;
	}

	public void setDesc(String desc) {
		this.desc = desc;
	}

	public String getProblem() {
		return problem;
	}

	public void setProblem(String problem) {
		this.problem = problem;
	}

	public Student getStu() {
		return stu;
	}

	public void setStu(Student stu) {
		this.stu = stu;
	}

}

3、定義一個日誌系統類

DailySystem.java

package com.feonix;

import java.util.Scanner;

public class DailySystem {
	// 這裏面的MyArray是自定義的可變長度數組類,可以用ArrayList代替
	/** 學生列表 */
	private static MyArray<Student> stuList = new MyArray<Student>();
	/** 日誌列表 */
	private static MyArray<Daily> dailies = new MyArray<Daily>();
	/** 用於初始化模擬數據的學生名字數組 */
	private static String[] nameArray = { "安琪拉", "亞瑟", "阿珂", "后羿", "小喬", "妲己", "花木蘭", "黃忠" };
	/** 鍵盤掃描器 */
	private static Scanner key = new Scanner(System.in);
	/** 當前登錄學生的學號 */
	private static int uid;

	public static void main(String[] args) {
		boolean flag = true, flag2 = true;
		init();

		while (flag) {
			menu();
			int code = key.nextInt();
			switch (code) {
			case 1:
				addStudent();
				break;
			case 2:
				boolean isLogin = login();
				if (!isLogin) {
					continue;
				}
				flag2 = true;
				while (flag2) {
					menu2();
					code = key.nextInt();
					switch (code) {
					case 1:
						addDaily();
						break;
					case 2:
						showDaily();
						break;
					case 3:
						editDaily();
						break;
					case 0:
						flag2 = false;
						System.out.println("退出登錄成功\n");
						break;
					default:
						System.out.println("無效的指令\n");
					}
				}
				break;
			case 0:
				flag = false;
				System.err.println("歡迎下次使用,再見~\n");
				break;
			default:
				System.out.println("無效的指令\n");
			}
		}

		key.close();
	}

	/**
	 * 初始化模擬數據
	 */
	private static void init() {
		int id = 0, did = 0;
		String name, passwd;
		String content, desc, problem;

		for (int i = 0; i < 8; i++) {
			id = 1000 + i + 1;
			name = nameArray[i];
			passwd = "qwer" + id;

			stuList.add(new Student(id, name, passwd));

			content = "測試日誌 -今日學習的內容" + i;
			desc = "測試日誌-掌握程度" + i;
			problem = "測試日誌 - 疑問" + i;
			did = dailies.size() + 1;

			dailies.add(new Daily(did, content, desc, problem, stuList.get(i)));
		}

	}

	/**
	 * 未登錄時的操作菜單
	 */
	private static void menu() {
		System.out.println("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
		System.out.println("┃           歡迎使用日誌管理系統                        ┃");
		System.out.println("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫");
		System.out.println("┃ 請選擇操作                                                             ┃");
		System.out.println("┃      1、添加學生                                                 ┃");
		System.out.println("┃      2、學生登錄                                                 ┃");
		System.out.println("┃      0、退出系統                                                 ┃");
		System.out.println("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");
		System.out.println("請輸入指令(數字):");
	}

	/**
	 * 登錄後的操作菜單
	 */
	private static void menu2() {
		System.out.println("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
		System.out.println("┃           歡迎使用日誌管理系統                        ┃");
		System.out.println("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫");
		System.out.println("┃ 請選擇操作                                                             ┃");
		System.out.println("┃      1、添加日誌                                                 ┃");
		System.out.println("┃      2、查看日誌                                                 ┃");
		System.out.println("┃      3、修改日誌                                                 ┃");
		System.out.println("┃      0、退出登錄                                                 ┃");
		System.out.println("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");
		System.out.println("請輸入指令(數字):");
	}

	/**
	 * 學生登錄
	 * 
	 * @return
	 */
	private static boolean login() {
		boolean flag = true;

		while (flag) {
			System.out.println("請輸入學號:");
			uid = key.nextInt();
			flag = !isExistsUid(uid);
			if (flag) {
				System.out.println("當前學號不存在,請重新輸入\n");
			}
		}

		for (int i = 0; i < 3; i++) {
			System.out.printf("請輸入密碼(剩餘%d次機會):\n", (3 - i));
			String passwd = key.next();
			if (getStudentByUid(uid).getPasswd().equals(passwd)) {
				System.out.println("密碼正確\n");
				return true;
			} else {
				if (i == 2) {
					System.out.println("身份驗證不通過,您無權使用本系統\n");
				} else {
					System.out.println("密碼錯誤,請重試\n");
				}
			}
		}
		return false;
	}

	/**
	 * 添加學生
	 */
	private static void addStudent() {
		System.out.println("請輸入學號:");
		int id = key.nextInt();

		if (isExistsUid(id)) {
			System.out.println("學號" + id + "已存在,添加學生失敗\n");
			return;
		}

		System.out.println("請輸入學生姓名:");
		String name = key.next();
		System.out.println("請輸入密碼:");
		String passwd = key.next();

		stuList.add(new Student(id, name, passwd));

		System.out.println("添加學生成功\n");
	}

	/**
	 * 添加日誌
	 */
	private static void addDaily() {
		System.out.println("請輸入今日學習內容:");
		String content = key.next();
		System.out.println("請輸入掌握程度:");
		String desc = key.next();
		System.out.println("請輸入疑問:");
		String problem = key.next();
		Student stu = getStudentByUid(uid);
		int id = dailies.size() + 1;

		dailies.add(new Daily(id, content, desc, problem, stu));

		System.out.println("添加日誌成功\n");
	}

	/**
	 * 查看日誌
	 */
	private static void showDaily() {
		Daily daily = null;
		Student stu = null;
		for (int i = 0; i < dailies.size(); i++) {
			if (dailies.get(i).getStu().getId() == uid) {
				daily = dailies.get(i);
				stu = daily.getStu();
				System.out.printf("日誌ID:%d\n今日學習內容:%s\n掌握程度:%s\n疑問:%s\n提交人:%s\n\n", daily.getId(), daily.getContent(),
						daily.getDesc(), daily.getProblem(), stu.getName());
			}
		}
	}

	/**
	 * 修改日誌
	 */
	private static void editDaily() {
		System.out.println("請輸入要修改的日誌ID:");
		int did = key.nextInt();
		int idx = -1;
		for (int i = 0; i < dailies.size(); i++) {
			if (dailies.get(i).getStu().getId() == uid) {
				if (dailies.get(i).getId() == did) {
					idx = i;
				}
			}
		}
		if (idx < 0) {
			System.out.println("輸入的日誌ID找不到,或不屬於當前用戶\n");
			return;
		}
		System.out.println("請輸入今日學習內容:");
		String content = key.next();
		System.out.println("請輸入掌握程度:");
		String desc = key.next();
		System.out.println("請輸入疑問:");
		String problem = key.next();

		dailies.set(idx, new Daily(did, content, desc, problem, dailies.get(idx).getStu()));

		System.out.println("日誌修改成功\n");
	}

	/**
	 * 判斷學生號是否已存在
	 * 
	 * @param uid
	 * @return
	 */
	private static boolean isExistsUid(int uid) {
		for (int i = 0; i < stuList.size(); i++) {
			if (stuList.get(i).getId() == uid) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 根據學號查詢學生
	 * 
	 * @param uid
	 * @return
	 */
	private static Student getStudentByUid(int uid) {
		for (int i = 0; i < stuList.size(); i++) {
			if (stuList.get(i).getId() == uid) {
				return stuList.get(i);
			}
		}
		return null;
	}
}

三、演示效果圖

在這裏插入圖片描述

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