一、功能介紹
學生日誌內容管理系統,日誌信息主要包含日誌編號,今日學習內容,掌握程度,疑問,日誌填寫人。項目包含主要實體類:
- 學生類Student:學號,姓名,密碼
- 日誌類Daily:編號,今日學習類容,掌握程度,疑問,學生
- 實現功能如下:
- 學生添加
- 學生登錄
- 日誌提交
- 日誌編號自動生成(從1開始自動遞增)
- 查看當前登錄人提交的所有日誌列表
- 修改當前登錄人提交的日誌類容
- 退出登錄
二、功能代碼
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;
}
}