學生信息管理系統是一種用于管理學生信息的軟件系統,旨在提高學校管理效率和服務質量。本課程設計報告旨在介紹設計和實現學生信息管理系統的過程。報告首先分析了系統的需求,包括學生基本信息管理、成績管理等功能。接著介紹了系統的設計方案,包括系統架構、數據庫設計和界面設計等內容。在實現部分,報告詳細描述了系統的開發過程和關鍵技術,如數據庫連接等。最后,報告總結了系統的特點和優勢,并提出了進一步改進和發展的建議。通過本課程設計,我們深入理解了學生信息管理系統的設計與實現,提高了軟件開發能力和團隊合作能力。
1 ?引言
隨著信息技術的飛速發展,學校管理也逐漸轉向數字化和信息化方向。學生信息管理系統作為學校管理的重要組成部分,承擔著學生信息錄入、查詢、統計等功能,為學校管理者提供了便捷高效的工具。本課程設計旨在通過設計和實現一個全功能的學生信息管理系統,深入理解數據庫設計、編程開發等相關知識,提升學生的信息管理能力和實踐能力。本課程設計將采用intelij idea、Navicat作為開發平臺,以信息錄入與管理、信息查詢為設計目標,結合學生信息管理的實際需求,設計并實現一個易用可靠的學生信息管理系統。通過本課程設計,學生將深入了解數據庫設計與管理、編程開發等相關技術,提升自身信息管理和系統開發能力。本報告將圍繞學生信息管理系統的設計與實現展開,首先介紹系統的需求分析,然后詳細闡述系統的設計思路和功能模塊,最后給出系統的實現和測試情況,并總結本次課程設計的收獲和不足之處。通過本報告的撰寫,旨在全面展示學生信息管理系統課程設計的全過程和成果,為今后的學習和實踐積累經驗,提供參考和借鑒。
1.1 ?研究背景和意義
1.1.1研究背景
信息化教育發展: 隨著信息技術的迅速發展,教育管理也逐步向數字化、信息化轉變。學生信息管理系統作為教育信息化建設的重要組成部分,受到了廣泛關注和重視。
教育管理需求: 高效、準確地管理學生信息對于教育管理工作至關重要。學校管理者和教師需要一個功能完備、易用可靠的學生信息管理系統來支持學校的日常教學和管理工作。
技術發展趨勢: 數據庫技術、網絡技術、軟件工程等方面的不斷發展,為學生信息管理系統的設計與實現提供了技術保障和支持。
1.1.2研究意義
提高管理效率: 學生信息管理系統的建立可以使學校管理者和教師更加便捷地進行學生信息的錄入、查詢和統計,提高管理效率和工作質量。
信息共享與交流: 學生信息管理系統可以促進學校內部各部門之間的信息共享和交流,提升教育教學工作的整體協調性和效率。
1.?2??國內外現狀發展及趨勢?
國內:中國的學生信息管理系統在不斷提升數據管理和教務管理的效率,越來越多的學校采用數字化、網絡化的管理方式,以滿足日益增長的學生數量和復雜的管理需求。國外:國外學生信息管理系統也經歷了類似的發展過程,許多國家的學校和教育機構都使用自己定制的系統或者商用系統,以支持學生信息管理、教學計劃和成績跟蹤等功能。
趨勢:智能化和個性化:未來學生信息管理系統將更加智能化,利用人工智能和大數據技術為學生提供個性化的學習支持和建議。云端化和移動化:越來越多的學校將信息管理系統遷移到云端,以提高系統的可訪問性和可擴展性,并且系統將更加注重移動端的用戶體驗,支持學生、教師和家長隨時隨地訪問和管理信息。數據安全和隱私保護:隨著數據泄露和隱私問題的日益突出,學生信息管理系統將更加注重數據安全和隱私保護,采取更加嚴格的措施保護學生和教育機構的數據安全。
2 系統需求分析
2.1系統總體需求目標
信息記錄與管理:系統能夠有效地記錄和管理學生的基本信息,如姓名、性別、年齡、聯系方式、成績等。
用戶權限管理:對用戶登錄設置權限。
查詢:提供查詢學生信息的功能。
易用性與界面友好:界面簡潔直觀,操作方便。
性能優化:系統能夠穩定運行,響應速度快。
2.2系統業務流程分析
學生信息錄入:管理員通過系統錄入新生或轉入學生的基本信息。
成績錄入與管理:管理員將學生的成績錄入系統。系統會根據錄入的學生的成績進行評測。
信息查詢:管理員可以通過系統查詢學生信息、成績信息等。
2.3系統功能需求分析
2.3.1學生管理功能:
學生信息錄入與修改:添加學生信息,修改、刪除、更新學生信息。
學生信息查詢:根據姓名、學號等條件查詢學生信息。
學生信息統計:統計學生人數、男女比例、年齡分布等信息。
2.3.2 成績管理功能:
成績錄入與修改:教師錄入學生的考試成績或作業成績。
成績查詢:學生查詢自己的成績,教師查詢所教授課程學生成績。
成績統計:統計班級或課程的平均成績、及格率等信息。
2.4系統性能分析
響應時間:系統對用戶請求的響應時間,包括頁面加載、查詢、修改等操作的耗時情況,以確保用戶體驗良好。
并發處理能力:系統在高并發情況下的穩定性和性能表現,確保能夠同時處理多個用戶的請求而不降低性能。
數據庫性能:數據庫的讀寫速度、索引效率、連接池管理等方面的性能表現,對系統整體性能有重要影響。
系統資源利用率:監控系統的 CPU、內存、磁盤等資源利用率,避免資源瓶頸影響系統性能。
3 系統總體設計
3.1系統功能結構設計
學生信息管理系統:由登陸子系統、查詢子系統、管理子系統。功能結構圖如圖3-1。
(1)登錄子系統分為超級管理員登錄、管理員登錄以及學生端登錄。它主要提供用戶登錄功能,并按各用戶的權限使用本系統。
(2)查詢子系統包含根據相應的條件進行模糊查詢查詢到其想要的學生信息。
(3)管理子系統包括學生信息的增加、刪除等管理學生信息。
圖3-1
3.2數據庫設計
3.2.1 概念結構設計
(1)學生管理子系統:
在進入頁面之前需要進行登錄,在學生在學號和密碼正確的情況下進入系統。學生可以修改個人的密碼,查詢選修課程、學習成績,還可以查詢、選擇課程。各實體之間的關系:學生和課程:多對多,學生和老師:多對多,學生和專業:多對一。
- 管理員管理子系統:
老師在工號和密碼對應的情況下進入系統。
老師可以查詢老師的個人信息和修改個人密碼,可以查詢授課課程信息,可以查詢選修課程的學生,可以對學生的成績進行錄入、修改和查詢。修改個人的密碼
查詢授課課程,查詢選修課程的學生信息,對學生的成績進行錄入、修改和查詢。各實體之間的關系:老師和課程:多對多,老師和專業:多對一。
E-R圖:
圖3-2
3.2.2 邏輯結構設計
關系模型
班級(編號,班級名稱,備注)
學生(編號,姓名,學號,性別,所在院系,班級id,成績等級)
用戶(編號,用戶名,密碼)
學院(編號,學院名稱)
關系模式
t_school_class(id,className,classDesc)
t_student(id,name,sn,sex,dept,classld,score)
t_user(id,userName,password)
dept(id,dept)
基礎數據處理
1. t_school_class班級
2. t_student學生表
3. t_user用戶表
4.dept學院表
3.2.3 物理結構設計
數據庫存儲:在數據庫服務器上,可以創建多個數據庫實例來存儲不同類型的數據,如學生信息、課程信息、成績信息等。每個數據庫實例包含多個表,每個表包含相應的字段來存儲具體的數據。
3.2.4 數據庫建設?
1.建立數據庫
2.使用數據庫
3.創建表
DROP TABLE IF EXISTS `dept`;CREATE TABLE `dept` (`id` int(11) NOT NULL COMMENT '編號',`dept` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '學院',PRIMARY KEY (`id`) USING BTREE,INDEX `dept`(`dept` ASC) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;DROP TABLE IF EXISTS `t_school_class`;CREATE TABLE `t_school_class` (`id` int(11) NOT NULL AUTO_INCREMENT,`className` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`classDesc` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;DROP TABLE IF EXISTS `t_student`;CREATE TABLE `t_student` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`sn` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`sex` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`dept` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`classId` int(11) NULL DEFAULT NULL,`score` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `classId`(`classId` ASC) USING BTREE,INDEX `t_student_ibfk_2`(`dept` ASC) USING BTREE,CONSTRAINT `t_student_ibfk_1` FOREIGN KEY (`classId`) REFERENCES `t_school_class` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;DROP TABLE IF EXISTS `t_user`;CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
3.3?系統安全性設計
在系統功能的安全性需求上,應該從保密性、完整性、身份可認性、可用性以及可控性等多個角度進行分析。具體有!
(1)保密性。對于系統中涉及的信息對沒有授權的實體,不可進行對信息的查看與修改。
(2)完整性。信息在存儲和上傳過程中不會發生改變。
(3)身份可認性。在使用系統時應對用戶信息進行確認,避免信息混亂,導致信息泄露
(4)可用性。保證授權的用戶在使用時不會發生不能使用的情況。
3.4?本章小結
系統總體設計主要由系統功能結構設計,數據庫設計和系統安全性設計組成,以此來滿足用戶在使用時的體驗感,提高系統使用時的穩定性。
4 系統實現
?4.1 系統架構實現
本系統主要包括三種業務流程:登陸業務流程、學生個人信息業務流程、班級業務流程。該系統采用多層架構,視圖類用作表示層。除了向客戶提供信息之外,它還獲得管理員或教師或學生輸入的信息。用戶輸入的簡單控制。表單獲得用戶輸入信息后,提交給視圖,在這里首先轉換獲得的數據,然后將相應的數據封裝為數據傳輸對象。視圖將封裝的數據提交給模型,并使用提交給視圖的數據對象來執行復雜的業務邏輯操作。對數據庫的訪問是在DAO級別。DAO層實現特定的數據庫操作方法,服務層調用DAO層方法來實現數據庫操作。通過應用這種多層體系結構,提高了系統的可維護性、可擴展性和可移植性。
登陸業務流程概述:輸入用戶名、密碼,登錄到系統,對相關信息進行增、刪、改、查以及導入和導出。進行完操作之后,點擊安全退出,退出系統。管理員業務流程圖如圖3-2所示。
圖4.1.1業務流程圖
從功能模塊上可以分為如下幾大模塊:學生信息的導入、導出模塊、刪除學生信息模塊、修改學生信息模塊、查詢學生信息模塊、添加學生信息模塊。主要功能模塊如圖4.1.2所示。
?
?
???
圖4.1.2?學生個人信息模塊圖
班級信息模塊類似有刪除班級信息模塊、修改班級信息模塊、查詢班級信息模塊、添加班級信息模塊。主要功能模塊如圖4.1.3所示。?
圖4.1.3?班級信息模塊圖
4.2 系統功能實現
4.2.1登錄界面實現
首先新建用戶登錄所對應的實體user類,一個user對象代表一個用戶,此外,用戶表中有的字段,都需要在這個類中反應出來,并且創建空參和滿參構造方法,以及set、get和toString方法。
用戶實體類:
public class User {private int id; // 編號private String userName; // 用戶名private String password; // 密碼public User() {super();// TODO Auto-generated constructor stub}public User(String userName, String password) {super();this.userName = userName;this.password = password;}
(set和get方法以及同toString方法省略)
第二步就是對登錄的邏輯處理,首先是登陸名以及密碼的非空校驗,兩者有一個為空就不繼續訪問數據庫,直接返回給用戶錯誤的信息,提醒用戶更正登錄信息。
圖4.2.1.1登錄界面圖
當用戶名或者密碼為空的時候點擊登錄就會出現提示信息,如圖4.2.1.2
圖4.2.1.2登錄界面提示信息圖
代碼部分的實現是使用了awt框架中的事件處理函數
private void loginActionPerformed(ActionEvent evt) {String userName=this.userNameTxt.getText();String password=new String(this.passwordTxt.getPassword());if(StringUtil.isEmpty(userName)){JOptionPane.showMessageDialog(null, "用戶名不能為空!");return;}if(StringUtil.isEmpty(password)){JOptionPane.showMessageDialog(null, "密碼不能為空!");return;}User user=new User(userName,password);Connection con=null;try {con=dbUtil.getCon();User currentUser=userDao.login(con, user);if(currentUser!=null){dispose();new MainFrm().setVisible(true);}else{JOptionPane.showMessageDialog(null, "用戶名或者密碼錯誤!");}} catch (Exception e) {e.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {e.printStackTrace();}}}
4.2.2 班級信息模塊設計
首先新建班級所對應的實體studentClass類,一個studentClass對象代表一個班級,此外,班級表中有的字段,都需要在這個類中反應出來,并且創建空參和滿參構造方法,以及set、get和toString方法。
班級實體類:
public class SchoolClass {private int id; // 編號private String className; // 班級名稱private String calssDesc; // 備注public SchoolClass() {super();}public SchoolClass(String className, String calssDesc) {super();this.className = className;this.calssDesc = calssDesc;}public SchoolClass(int id, String className, String calssDesc) {super();this.id = id;this.className = className;this.calssDesc = calssDesc;}
(set和get方法以及同toString方法省略)
第二步就是對班級信息邏輯部分的實現了,包括增加刪除修改查詢,其中添加是單獨放在了一個界面,而查詢、修改以及刪除放在了同一個界面,這樣便于維護,如圖所示
圖4.2.2.1班級信息界面圖
點擊添加則會調用添加部分的界面函數,彈出信息添加的界面如圖所示,可以輸入班級的名稱,以及對班級的詳細描述進行添加,在輸入錯誤的情況下也可以點擊重置,就會清空所有填寫的信息,這樣便于操作。
圖4.2.2.2班級信息界面圖
點擊維護則會調用維護部分的界面函數,彈出信息維護的界面如圖所示,可以修改班級的名稱,以及對班級的詳細描述進行修改。
圖4.2.2.2班級信息界面圖
實現班級信息維護的代碼如下,其中也是使用了awt中的事件處理函數,以及swing中的函數實現界面的顯示跳轉彈框等交互的操作。
private void bookTypeAddActionPerformed(ActionEvent evt) {String className=this.classNameTxt.getText();String classDesc=this.classDescTxt.getText();if(StringUtil.isEmpty(className)){JOptionPane.showMessageDialog(null, "班級信息名稱不能為空!");return;}SchoolClass schoolClass=new SchoolClass(className,classDesc);Connection con=null;try{con=dbUtil.getCon();int n=schoolClassDao.add(con, schoolClass);if(n==1){JOptionPane.showMessageDialog(null, "班級信息添加成功!");resetValue();}else{JOptionPane.showMessageDialog(null, "班級信息添加失敗!");}}catch(Exception e){e.printStackTrace();JOptionPane.showMessageDialog(null, "班級信息添加失敗!");}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
4.2.3 學生信息模塊設計
首先新建學生所對應的實體student類,一個student對象代表一個用戶,此外,用戶表中有的字段,都需要在這個類中反應出來,并且創建空參和滿參構造方法,以及set、get和toString方法。
用戶實體類:
public class Student {private int id; // 編號private String name; // 姓名private String sn; // 學號private String sex; // 性別private String dept; // 所在院系private Integer classId; // 班級Idprivate String className; // 班級名稱private String score; // 成績等級public Student() {super();}public Student(String name, String sn, String sex, String dept, Integer calssId, String address) {super();this.name = name;this.sn = sn;this.sex = sex;this.dept = dept;this.classId = calssId;this.score = score;}
(set和get方法以及同toString方法省略)
第二步就是對學生個人信息邏輯部分的實現了,包括增加刪除修改查詢,其中添加是單獨放在了一個界面,而查詢、修改以及刪除放在了同一個界面,這樣便于維護,如圖所示
圖4.2.3.1學生信息界面圖
其中手工填寫學生的姓名學號、所在院系和成績等級,性別通過單選框選擇,班級通過下拉菜單進行選擇。
圖4.2.3.2學生信息添加界面圖
在學生信息維護的界面可以對學生信息進行檢索,可以通過學生的姓名、學生的編號、學生所在的班級進行篩選,點擊選擇某位學生的信息,就可以對該學生的信息進行操作了,可以修改其名字、性別、所在的學院、學生的學號、所屬的班級以及家庭住址。也可以點擊刪除、刪除該學生的信息。
圖4.2.3.3學生信息修改/刪除界面圖
實現個人信息維護的代碼如下,其中也是使用了awt中的事件處理函數,以及swing中的函數實現界面的顯示跳轉彈框等交互的操作,學生信息的字段信息比較多需要注意要對應字段賦值。
private void studentUpdateActionPerformed(ActionEvent evt) {String id=this.idTxt.getText();if(StringUtil.isEmpty(id)){JOptionPane.showMessageDialog(null, "請選擇要修改的記錄");return;}String sname=this.nameTxt.getText();String sn=this.snTxt.getText();String dept=this.deptTxt.getText();String address=this.addressTxt.getText();if(StringUtil.isEmpty(sname)){JOptionPane.showMessageDialog(null, "學生信息名稱不能為空!");return;}if(StringUtil.isEmpty(sn)){JOptionPane.showMessageDialog(null, "學生學號不能為空!");return;}if(StringUtil.isEmpty(dept)){JOptionPane.showMessageDialog(null, "學生學院不能為空!");return;}String sex="";if(manJrb.isSelected()){sex="男";}else if(femaleJrb.isSelected()){sex="女";}SchoolClass schoolClassTmp=(SchoolClass) schoolClassJcb.getSelectedItem();int scId=schoolClassTmp.getId();Student book=new Student(Integer.parseInt(id), sname, sn, sex, dept, scId, address);Connection con=null;try{con=dbUtil.getCon();int addNum=studentDao.update(con, book);if(addNum==1){JOptionPane.showMessageDialog(null, "學生信息修改成功!");resetValue();this.fillTable(new Student());}else{JOptionPane.showMessageDialog(null, "學生信息修改失敗!");}}catch(Exception e){e.printStackTrace();JOptionPane.showMessageDialog(null, "學生信息修改失敗!");}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
學生的編號是信息維護邏輯操作的關鍵所在,首先需要通過學生的編號id查出該學生的各類信息反顯在前臺界面,然后根據前臺更新后的信息,先映射到學生的實體類然后通過數據庫dao層同步更新數據庫的信息,最后達到學生信息的維護。
5 測試
5.1.1數據一致性測試
本次測試主要檢測添加和修改班級信息的功能部分是否符合預期,通過輸入不同的班級信息確認表的建立
表5.1.1 添加和修改班級信息
班級名稱 | 班級信息 | 是否成功 |
計科1班 | 某個班級 | 是 |
計科2班 | 老師帶的最好班級 | 是 |
null | 某個班級 | 否 |
本次測試主演檢測添加班級功能部分是否符合預期,通過輸入班級名稱為空的情況,如表5.1.2所示,若班級名稱為空都能添加成功,所以這個系統的數據庫在后期的維護中要進行修改,不符合實際情況,實際情況就是,在學校內,班級名稱是必不可少的。當然,本小組成員在后期維護中會不定期檢查系統,完善系統。
表5.1.2 添加和修改班級測試表
班級名稱 | 班級信息 | 是否通過 |
計科1班 | 某個班級 | 是 |
計科2班 | 最好的班級 | 是 |
null | 某個班級 | 是 |
本次測試主要檢測學生信息添加部分是否符合預期,通過輸入不同的名字和學號,包括兩者為空的情況,如表5.1.3所示,當學號、名字、學院有一者為空時,均無法實現信息的添加,符合實際情況,而當輸入的成績為空時,這段信息符合部分考生因缺考等原因無成績,符合預期。
表5.1.3 輸入學生成績信息測試表
名字 | 學號 | 學生學院 | 成績等級 | 是否通過 |
小鳴 | 20209054 | 信工院 | A | 是 |
null | 12345678 | 傳藝院 | B | 否 |
陳哥 | null | 信工院 | A | 否 |
張三 | 23145678 | null | A | 否 |
李四 | 45678912 | 經管院 | null | 是 |
本次測試主要檢測學生信息的查詢功能部分是否符合預期,通過輸入不同的姓名、學號、班級包括為空的情況,測試它的實體完整性。如表5.1.4所示,當輸入學生姓名,學號,班級為空時,可以出現該學生的相關信息;輸入學生學號。而姓名班級為空時,同樣可以出現該學生信息,而姓名學號為空時,輸入如班級,則顯示為2班全班信息,當姓名、學號、班級全為空時,則顯示所有數據。符合預期。
表5.1.4 學生信息查詢測試
姓名 | 學號 | 班級 | 學院 | 是否通過 |
陳璆鳴 | null | null | null | 是 |
null | 12345678 | null | null | 是 |
null | null | 計科2班 | null | 是 |
null | null | null | 信工院 | 是 |
null | null | null | null | 是 |
本次測試主要檢測管理員操作修改學生信息功能部分是否符合預期,在選擇相應的信息后,在相關內容里進行修改,測試實體完整性。如表5.1.7所示,若沒有選擇相應的信息則無法進行修改。所以,只有當數據庫內有相應的信息,并且選擇了相應信息并進行輸入才能判斷正確,通過測試。
表5.1.7 修改學生成績信息測試表
選擇 | 姓名 | 性別 | 學院 | 學號 | 班級 | 成績 | 是否通過 |
是 | 陳璆鳴 | 男 | 信工 | 12345678 | 計科1班 | A+ | 是 |
否 | null | null | null | null | null | null | 否(未選擇內容) |
5.1.2數據庫的性能測試
應用軟件除了功能外,很重要的一部分就是軟件的性能,而對于數據庫系統,數據庫性能的好壞會直接影響應用軟件的性能,這部分的測試,一般手工測試就顯得無能為力了,這時就要借助自動化的測試軟件,例如:DataFactory,DataFactory 是一種強大的數據產生器,它允許開發人員和測試人員很容易產生百萬行有意義的正確的測試數據庫,該工具支持DB2、Oracle、Sybase、SQL Server 數據庫。這樣,就可以模擬出應用軟件長期使用后,海量數據存儲的數據庫的性能狀況。從而盡早發現問題,進行數據庫性能的優化。(未來的設想和維護)