學生教務系統【java實作版附原始碼】
🍅 作者:程式員小王
🍅 程式員小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF
🍅 掃描主頁左側二維碼,加我微信 一起學習、一起進步
🍅 歡迎點贊 👍 收藏 ?留言 📝
🍅 如有編輯錯誤聯系作者,如果有比較好的文章歡迎分享給我,我會取其精華去其糟粕
一、需求背景
《學生教務系統》 系統設計以方便快捷和安全為出發點,放棄傳統的人工記錄對學生資訊管理的缺陷和不足, 采用全新的方式使學校對學生資訊進行存盤和維護,增加管理效率,
本系統大體為教務學生管理系統 、并且賦予了管理員很多功能來操作這個系統,包括:學生管理,小組管理,班級管理等功能;通過這些功能模塊的設計,滿足了老師對學生的資訊進行管控所需的功能,
系統采用 c/s 三層結構 ,對動態頁面的制作采用了 JSP+Ajax 技術,為了實作管理系統的安全可靠以及對有些代碼可以進行重復使用考慮, 對程式的重要代碼進行封裝時采用 Java Bean,本系統貫徹以人為本的思想,實用性高,
二、產品目標
? 學生資訊的管理作業變得越來越龐大和繁冗,效率也低,為了充分利用互聯網帶給人們的便利,更好地提高教學管理管理作業的效率,使學生和教職員工能更方便地進行資訊查詢活動,特開發此教學管理系統,本軟體通過權限識別登錄到該系統,權限不同享有的功能就又說差異,來實作日常的學生資訊的管理,
三、《學生教務系統》專案介紹:
1、開發環境
| 分類 | 名稱 | 語種 |
|---|---|---|
| 作業系統 | windows10 | 簡體中文 |
| 資料庫平臺 | MySQL Server 8.0+ | |
| 應用服務器 | apache-tomcat-8.5.71 | |
| java開發工具 | idea | |
| 框架 | mybatis/Struts2 | |
| 專案名稱 | 《學生教務系統》 | |
| 實作技術 | struts2+mybatis+mysql+Servlet+jquery+ajax+js+Maven 等技術 |
2、《TJCU教務系統》的總體功能
| 序號 | 模塊名稱 | 主要功能 |
|---|---|---|
| 1 | 學生管理模塊 | 添加學生資訊,洗掉學生資訊,修改學生資訊,查詢學生資訊,下載學生新,分頁顯示學生資訊 |
| 2 | 小組管理模塊 | 添加小組資訊,洗掉小組資訊,展示小組具體資訊 |
| 3 | 班級管理模塊 | 添加班級資訊,洗掉班級資訊,展示班級資訊 |
| 4 | 標簽管理模塊 | 添加標簽,洗掉標簽,展示標簽 |
| 5 | 城市管理模塊 | 添加城市,洗掉城市 |
| 6 | 登錄注冊模塊 | 登陸與注冊(權限識別 ) |
(3)用戶角色描述
| 角色名稱 | 角色描述 | 使用頻率 |
|---|---|---|
| 用戶 | 主要為每班班長、班主任(只能查看學生,沒有其他功能操作權限) | 中 |
| 管理員 | 為系統管理員 | 高 |
四、具體需求
1、功能劃分
本系統總體功能上是C/S 結構的Windows應用程式!
2、專案整體功能框架

3、概念資料模型CMD
CMD是物體與物體之間關系的模型(使用PowerShell 設計)

五、主要功能截圖
**「用戶登錄」 **
用戶登錄是選擇角色進行登錄:管理員、用戶

「用戶注冊」
1. 用戶登錄之前用戶名必須是在注冊時通過郵箱激活后的,否則不能登錄, 回傳提示資訊:用戶名輸入錯誤~~
2. 如果用戶名輸入錯誤 回傳提示資訊:用戶名輸入錯誤~~
3. 如果驗證碼輸錯 回傳提示資訊: 驗證碼輸入錯誤~~~
4. 如果用戶名,驗證碼正確 回傳提示資訊: 密碼輸入錯誤~~

「用戶激活模塊」
1.注冊進行提交后,會跳轉到請去郵箱激活用戶頁面
3.激活成功后會跳轉到登錄



「學生管理模塊」
1. 添加學生資訊(城市表,班級表,標簽表,小組表有資料之后才能添加)
2. 功能是修改學生,洗掉學生
3. 展示內容(分頁實作)
4. 以Json形式下載資訊
5. 以QQ或者姓名或者手機號查詢學生資訊

** 「小組管理模塊」**
1. 添加小組功能:會添加組名稱,然后選擇班級(小組是班級的外鍵,需要先建班級表才能創建小組表)
(其中包含student外鍵:添加組名稱時:本組學生的標簽會自動增加到小組標簽上,并且統計本組學生人數)
2. 洗掉小組功能: 洗掉小組之前需要將本小組的studnet洗掉或者修改帶其他組,否則無法洗掉
(使用Ajax判斷是否洗掉)
3.頁面展示功能中的學生標簽和學生人數,將從外鍵Student中獲取,班級名稱名班級表中獲取

「班級管理模塊」
班級的增刪查功能

「標簽管理模塊」
1. 添加標簽: 添加標簽注意添加標簽名稱,標簽型別(標簽型別包含:學生/班級兩種型別)
2. 洗掉標簽: 洗掉標簽名字欄位之前之前,我們得把對應的學生表,
班級表中選中相關標簽的班級和班級資訊進行修改或者洗掉
(使用Ajax判斷是否洗掉)

「城市管理模塊」

六、主要代碼展示
「學生分頁展示相關」
- 兩張資料庫表連接分頁查詢sql陳述句:
SELECT s.s_id,
s.s_name,
s.s_phone,
s.s_qq,
s.s_age,
s.s_birthday,
s.s_stars,
s.s_attribute,
clazz.clazz_id,
clazz.c_name,
g.g_id,
g.g_name,
c.c_id,
c.c_name,
m.m_id,
m.m_name
FROM (select *
from t_student limit #{page} , #{rows}
) as s
LEFT JOIN t_clazz clazz ON s.clazz_id = clazz.clazz_id
LEFT JOIN t_city c ON s.c_id = c.c_id
LEFT JOIN t_group g ON s.g_id = g.g_id
LEFT JOIN m_s_fk ms ON s.s_id = ms.s_id
LEFT JOIN t_mark m ON ms.m_id = m.m_id
「通過學生生日計算年齡,生肖,星座展示相關」
public class BirthdayUtil {
//根據生日計算生肖,年齡,星座
private final static int[] dayArr = new int[] { 20, 19, 21, 20, 21, 22, 23,
23, 23, 24, 23, 22 };
private final static ArrayList<String> constellationList = new ArrayList<>();//存放星座的集合
static {
constellationList.add(0, "水瓶座");
constellationList.add(1, "雙魚座");
constellationList.add(2, "白羊座");
constellationList.add(3, "金牛座");
constellationList.add(4, "雙子座");
constellationList.add(5, "巨蟹座");
constellationList.add(6, "獅子座");
constellationList.add(7, "處女座");
constellationList.add(8, "天秤座");
constellationList.add(9, "天蝎座");
constellationList.add(10, "射手座");
constellationList.add(11, "魔羯座");
}
//獲得年齡
public static Integer getAge(Date birthday){
int year1 = birthday.getYear();
Date date = new Date();
int year2 = date.getYear();
return year2-year1;
}
//獲得生肖
public static String getChineseZodiac(Date birthday) {
int year = birthday.getYear();
//0代表1900年
if (year < 0) {
return "未知";
}
int start = 0;
String[] years = new String[] { "鼠", "牛", "虎", "兔", "龍", "蛇", "馬", "羊",
"猴", "雞", "狗", "豬" };
return years[(year - start) % 12];
}
//獲得星座
/**
* 傳入日期,回傳星座
*/
public static String getConstellation(Date date) {
String constellation = "";
Calendar birthday = Calendar.getInstance();
birthday.setTime(date);
int month = birthday.get(Calendar.MONTH) + 1;
int day = birthday.get(Calendar.DAY_OF_MONTH);
switch (month) {
case 1:
//Capricorn 摩羯座(12月22日~1月20日)
constellation = day <= 20 ? constellationList.get(11) : constellationList.get(0);
break;
case 2:
//Aquarius 水瓶座(1月21日~2月19日)
constellation = day <= 19 ? constellationList.get(0) : constellationList.get(1);
break;
case 3:
//Pisces 雙魚座(2月20日~3月20日)
constellation = day <= 20 ? constellationList.get(1) : constellationList.get(2);
break;
case 4:
//白羊座 3月21日~4月20日
constellation = day <= 20 ? constellationList.get(2) : constellationList.get(3);
break;
case 5:
//金牛座 4月21~5月21日
constellation = day <= 21 ? constellationList.get(3) : constellationList.get(4);
break;
case 6:
//雙子座 5月22日~6月21日
constellation = day <= 21 ? constellationList.get(4) : constellationList.get(5);
break;
case 7:
//Cancer 巨蟹座(6月22日~7月22日)
constellation = day <= 22 ? constellationList.get(5) : constellationList.get(6);
break;
case 8:
//Leo 獅子座(7月23日~8月23日)
constellation = day <= 23 ? constellationList.get(6) : constellationList.get(7);
break;
case 9:
//Virgo 處女座(8月24日~9月23日)
constellation = day <= 23 ? constellationList.get(7) : constellationList.get(8);
break;
case 10:
//Libra 天秤座(9月24日~10月23日)
constellation = day <= 23 ? constellationList.get(8) : constellationList.get(9);
break;
case 11:
//Scorpio 天蝎座(10月24日~11月22日)
constellation = day <= 22 ? constellationList.get(9) : constellationList.get(10);
break;
case 12:
//Sagittarius 射手座(11月23日~12月21日)
constellation = day <= 21 ? constellationList.get(10) : constellationList.get(11);
break;
}
return constellation;
}
### 「注冊郵箱發送相關源代碼」
/*
* 1.首先需要獲取發送郵件的Session物件
* Session session = Session.getDefaultInstance(Properties prop)
* 2.使用session物件 獲取待發送的郵件資訊
* MimeMessage mime = new MimeMessage(session)
* 3.設定發件人 收件人 標題 郵件內容 附件 發送時間等等
* 4.利用Transport 發送郵件
* */
public class EmailUtils {
public static void sendEmail(User user){
//發送方
String myAccount = "15120308630@163.com";
//授權碼
String myPass = "VBRMIRUBJXIERYNH";
//發件人 郵箱的 SMTP 服務器地址
String SMTPHost = "smtp.163.com";
//組成 properties
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp");//設定協議型別
prop.setProperty("mail.smtp.host", SMTPHost);//定義發件人的郵箱服務器地址
prop.setProperty("mail.smtp.auth", "true");//設定請求驗證
//1.Session物件 創建會話 用于和郵箱服務器進行互動
Session session = Session.getDefaultInstance(prop);
//設定debug模式 可以查看詳細發送資訊 可略
session.setDebug(true);
//2.創建方法 用來組成一封完整的郵件
//引數 session(引數配置), myAccount 發送方 , user.getEmail() 接收方
MimeMessage message = createMsg(session,myAccount,user);
//4.利用Transport 發送郵件
try {
Transport tran = session.getTransport();
//連接服務器 確認發送方 是否授權
tran.connect(myAccount, myPass);
//發送郵件 將message 物件 傳給 Transport 物件 將郵件發送出去
//引數1 要發的內容 引數2 要給哪些人發
//message.getAllRecipients() 獲取到所有的收件人 | 抄送 | 密送
tran.sendMessage(message, message.getAllRecipients());
//關閉連接
tran.close();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static MimeMessage createMsg(Session session, String myAccount, User user) {
//使用session物件 獲取待發送的郵件資訊
MimeMessage message = new MimeMessage(session);
//3.設定發件人 收件人 標題 郵件內容 附件 發送時間等等
try {
//3.1發件人 from
message.setFrom(new InternetAddress(myAccount, "百知教務系統", "utf-8"));
//3.2收件人 to 支持可以添加多個收件人 | 抄送 | 密送 如果想要發送給多個人 可以重復下面代碼多次
/*
* MimeMessage.RecipientType.TO 發送
* MimeMessage.RecipientType.CC 抄送
* MimeMessage.RecipientType.BCC 密送
* */
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(user.getEmail(), user.getUsername(), "utf-8"));
//3.3生成郵件主題
message.setSubject("教務管理系統賬號激活郵件","utf-8");
String ip = Inet4Address.getLocalHost().getHostAddress();
String url = "http://"+ip+":8080/student_system/user/active?c="+Base64Utils.encode(user.getCode());
//設定郵件正文 setContent 可以使用html標簽
message.setContent(user.getUsername()+",你好<br>歡迎注冊教務管理系統! 請點擊鏈接進行激活:<a href='"+url+"'>點擊此處進行激活!</a>","text/html;charset=utf-8");
//設定郵件的發送時間 是立即發送
message.setSentDate(new Date());
//保存設定
message.saveChanges();
} catch (UnsupportedEncodingException | MessagingException | UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return message;
}
}
七、主要資料庫表
-
表的數量 和模塊有關 6表
-
確認欄位
????用戶表:id 用戶名 密碼 角色
????城市表:id 地址名
????標簽表: id 標簽名,標簽創建時間,標簽型別
????班級表: id 班級名稱,班級Logo(圖片路徑)
????小組表: id 小組名稱,創建時間
????學生表: id 名字,生日,QQ,電話,星座,生肖
- 確認關系
????關系:
????????學生-班級: 多對一 外鍵列加在學生表 clazz_id
????????學生-小組: 多對一 外鍵列加在學生表 gropu_id
????????學生-就業城市: 多對一 外鍵列加在學生表 city_id
????????學生-標簽: 多對多 中間表(關系表)
????????班級-標簽: 多對一 外鍵列加在班級表 clazz_id
????????班級-小組: 一對多 外鍵列加在小組表 group_id
八、原始碼獲取
今天分享這個基于java+Struts2+mybatis+jquery、用來作為java畢設和課程以及學習使用,都是不錯的選擇,該專案我已經全部開源到gitee上面了,如果需要研究一下的同學可以參考
《學生教務系統》原始碼:https://gitee.com/wanghengjie563135/student_system.git


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354619.html
標籤:java
