1. 程式人生 > >大學《資料庫系統》課程設計報告

大學《資料庫系統》課程設計報告

湖南科技大學電腦科學與工程學院 《資料庫系統》 課 程 設 計
題 目: 教學管理系統 專 業:電腦科學與技術
年 級: 2017級
班 級: 計科三班
學 號: 170510323
姓 名: 雨 萱
完成時間:2019年1月3日

教務管理系統的分析與實現
一.實驗目的
資料庫系統課程設計是為了配合資料庫原理及應用開發而設定的,是電腦科學與技術、 網路工程、資訊保安、物聯網工程、軟體工程等專業集中實踐的教學環節,是將關係資料庫 理論知識轉化為解決實際問題能力的重要環節。資料庫系統課程設計目的在於加深對關係數 據庫理論知識的理解,通過使用具體的 DBMS,掌握一種實際的資料庫管理系統並掌握其 操作技術,熟練掌握使用資料庫前端開發工具(如 VB、C++、Java、Delphi、PowerBuilder 等),進一步提高同學們運用資料庫技術解決實際問題的能力。
二.實驗平臺
資料庫:Mysql
頁面及朱語句:java(),開發工具eclipse。
三.實驗內容
目前市面上流行的資料庫管理系統有:適合大型企業的Oracle,適合中小型企業的SQL SERCER,以及開源的Mysql。考慮到資料庫管理系統的易操作性以及實驗的實際情況,本次課程設計使用的是開源的Mysql。使用的資料庫操作語言是java。將資料庫操作SQL語言嵌入java語句中完成資料庫各項增刪改查等操作。同時使用者操作介面也是使用java實現。Java載入MySQL的驅動,實現利用java操作資料庫。利用兩週的時間完成有關資料庫的各項原型設計以及有關資料庫的模型設計和實現。同時完成前端介面的編寫,資料庫與java的連線,資料庫的安全性的測試,java操作資料庫的測試和改善。在完成了對資料庫中資料的基本增刪改查的功能之後利用多餘的時間完成其他操作,包括模糊查詢等。本次課程設計的前端介面的編寫可以使用任意的工具。可以使用安卓的AS,也可以使用eclipse的windoubuilder外掛等等的各種工具。設計的介面採用選單或對話方塊的形式,根據自己所選的課程設計題目給出系統分析,設計出概念模型,以及實現最後的運營以及維護。 四.實驗要求經典的桌面資料庫應用開發是典型的 C/S 計算模式,即應用資料庫前端開發工具編寫客 戶端程式,通過客戶端程式來連線和訪問後臺資料庫。考慮到同學們都學習過 Java,因此, 本次選用 Java 作為前臺資料庫開發工具(也可以選用 VB、Delphi、C/C++等)。 兩週的課程設計要求同學們開發一個小型資料庫管理資訊系統。所設計的小型管理資訊 系統應包含查詢、插入、刪除、修改、統計、使用者許可權管理等基本功能,介面採用選單或對 話框的形式。根據同學們所選的設計課題,給出系統需求分析,設計出系統的概念模型、邏 輯模型,用 SQL 語言實現資料庫的建立、應用和維護,最後寫出詳細的設計說明書。 本次課程設計要求同學們充分認識資料庫系統課程設計對培養自己動手能力的重要性, 認真做好設計前的各項準備工作。虛心接受老師的指導,充分發揮自學能力和查詢資料的能 力。結合課題,獨立思考,努力鑽研,勤於實踐,勇於創新。獨立完成規定的工作任務,不 得弄虛作假,不準抄襲他人內容,否則成績以不及格計。嚴格要求自己,按時、按質、按量 完成每天的課程設計任務。
五.實驗步驟
.系統需求分析
1系統功能分析本系統主要有以下功能要求:課程設定,包括:增加、刪除、查詢和修改課程資訊。 課程時間和教室的安排,以及課程清單列印輸出。 l學生選課和學生課表的列印輸出。 l課程學生名單的列印輸出和期末成績輸入。 l成績查詢、報表。
1.2系統功能模組設計系統各功能模組的關係如圖 1 所示。 圖 1、教學管理資訊系統功能模組圖 因為使用這套系統的人員不光是教務管理人員,還包括教師和學生。不同的身份對資料 庫的操作許可權也不同。為了避免管理的混亂,需要針對不同的角色分別設計客戶端應用程式, 對同一個資料庫進行合理的修改。頁面流程圖:
1.3 與其他系統的關係教學管理資訊系統同樣是校園資訊管理系統的一個有機組成部分。需要從學生資訊管理 系統獲取學生的個人資訊,從教師資訊管理系統獲取任課教師的相關資訊。同時,提供的成 績單為其他系統提供必要的參考。
1.4資料流程圖教學資訊管理系統的資料流程如圖2.資料庫設計
2.1資料庫需求分析根據我們前面的分析,教學資訊管理系統需要以下資料項:課程:課程號、課程名稱、講課教師、學分、學時、上課時間、上課地點、簡介、 課程狀態。 l選課結果:記錄編號、選課人、所選課程。成績單:記錄編號、學生、課程、成績。所需的外部資料支援: l 學生:學號、姓名、班級。 l教師:員工號、姓名、課程院系。
2.2資料庫概念結構設計本系統所需資料的 E-R 模型圖:
2.3資料庫邏輯結構設計需要3個基本資訊表:教師資訊、學生資訊、課程資訊。其中, 教師資訊和學生資訊在實際系統中是從其它資訊管理系統的資料表中直接讀取。學生的選課 資訊需要用 1 個表來單獨儲存。由於每學期期末前都要進行選課,因此選課結束後要將這個 表的內容及時儲存到成績單資料表中。使用本系統的不光是教務處的管理人員和教師,每個 學生都需要登入到選課系統進行課程的選擇。因此,需要對不同的登入人員進行密碼認證和 許可權的限制,防止出現越權行為。使用者名稱、密碼和許可權單獨儲存在 1 個數據表中。另外需要 一個課程狀態程式碼表,這 7 個數據表的結構如表 1 到表 7 所示(請設計者完成這 7 個數據表 的邏輯結構)。
3.各個功能模組的設計與實現3.1功能說明本系統需要按照不同的使用者分別建立 3 個工程:教師課程管理應用程式、教務課程排程 應用程式和學生選課應用程式。 首先,三個模組的使用者的許可權是有很大的差異的,教務處的使用者的許可權大於教師的使用者許可權,教師的使用者許可權大於學生的使用者許可權。所以登入不同的模組對於資料的操作的允許範圍是不同的。
一.教務課程排程應用程式功能說明。 登入教務處許可權的模組,可以對所有資料進行操作,包括學生的各項學習的查詢。學生的課程的查詢,教授的資訊查詢,教師設定課程的查詢以及教師和學生的學習的的增刪改查等等。同時此使用者許可權擁有對所有資料的掌握。
二.教師課程管理應用程式功能說明。 教師登入模組主要進行的是對於教師資訊的修改查詢以及對學生資訊的查詢和學生成績的設定與查詢。以及開設課程。
三.學生選課應用程式功能說明。 學生使用者的許可權較低,他只有對自己的資訊的修改以及查詢成績,查詢教師所開設課程和選課的去權利。四.實現了使用者資料的匯入匯出。在實現了基本的增刪改查的基礎上對於自己完成的教務管理系統,新增加了資料匯出為Excel格式和從Excel中讀取資料至資料庫中的新功能。
3.2使用者介面設計根據許可權的不同,使用者介面分為三類,登入選項也為三類,各模組的介面檢視如圖所示:
1.教務管理系統使用者許可權介面如圖,使用者可以在介面內選擇相應的群像進行登入。
2.教務處使用者登入介面,選擇相應的使用者許可權之後進入相應的使用者的登入介面。其它兩個使用者許可權的登入介面與之類似,以下只展示一個登入介面。輸入密碼或者賬號錯誤會有相應的提示框。
3.教務處使用者的登入後主操作介面。教務處使用者登入後進行相應資料的操作。左側為一個樹目錄結構,點選各個子節點可以進行各個表之間的轉換。右面為各個子操作介面的展示,在子介面內進行各個資料的檢視與操作。
4.教師許可權使用者的主介面如圖所示,教師可以在主介面完成相應的操作,包括學生資訊的查詢,成績的新增修改,課程的設定與修改等。
5.學生使用者的登入主介面,進行查課,選課和成績查詢及個人資訊修改等操作。教師登入後查詢學生的成績哥資訊等,同時可以查詢和修改自己的資訊。同時在介面內設定和修改自己要開設的課程。
6.資料庫的建立。
7.資料以Excel的形式匯入匯出。連線資料庫之後可以實現資料的匯入和匯出為Excel形式。實現資料的匯入匯出要在java的驅動檔案中載入。建立相應的匯入匯出資料的類,並進行定義,再連結資料庫進行定義,就實現資料的匯入匯出。 匯入匯出的連線資料庫的部分程式碼如圖所示。其主要能容為建立一個workbook的工作部,在工作簿中完成匯入匯出的各項操作。
8.程式碼目錄結構的展示,基本檔案的分類為是按照各個頁面的分類來進行的,即一個頁面為一個java檔案,其它的輔助檔案和資料庫連線檔案為一個java檔案。
4.1實驗中的錯誤一、 寫介面遇到的錯誤
1、表格的表頭無法顯示 我一開始用的String型別的陣列儲存的表頭,表格也是用的陣列,表頭無法顯示;然後我百度發現,表格要先放入一個容器才能顯示錶頭。我按照例子改用vctor型別儲存我的表頭,但是我一開始是用的add方法把表格加入容器的,所以表頭還是無法顯示,通過百度我才知道表頭的陣列顯示方法才能讓表頭顯示,而且容器的佈局不能為null。然後表格就正常了2、登陸介面(不管我是否輸入了資訊,都可以正常地登陸)我一開始是用user.equals("")||usernull來判斷的,沒有去掉字串前後的空格,所以不管怎麼判斷字串其實是有空格的,所以不管怎麼都可以成功登陸,二、寫資料庫的錯誤1、我的資料庫一開始不能輸入中文安裝的時候沒有注意Mysql的語言型別,預設的語言不是中文,所以不能輸入中文,把每個表改成了utf8,改了之後雖然在navicat可以輸入中文,但是如果在mysql裡面開啟後,發現全部用?替代了。然後就百度,根據百度的方法,我開啟mysql檢視發現除了一部分的字元屬性改成了utf8,其餘都沒有變,然後把全部都改了以後,還是會亂碼。後來我發現是我eclipes這邊的程式碼還是之前的語言型別,然後就把全部都改了,就可以輸入了中文。六.實驗心得為期兩週的資料庫課程設計馬上結束,在這兩週裡面收穫頗豐。從課設開始的第一天,我們在老師的指導和閱讀指導書的前提下自主完成了一個簡單的資料庫系統的編寫。從系統的分析,到整體的設計,再到資料庫的建立,以及java前端頁面的編寫。資料庫驅動的載入。可以說整個的專案開發都是由一個人完成。這是在本學期學習了java課程和資料庫課程之後的第一次也是在校的一次很寶貴的實戰經驗總結。之前對兩門課程的學習只是簡單的基礎學習,沒有設計到整個系統的開發。但是在這次的實踐中對於整個系統開發有了更深的認識。從專業知識學習的角度說,首先我學會了作為一個系統的整個資料庫的建立和完善。學會將SQL語句嵌入java中,對資料庫進行操作。也學會了如何利用java的Mysql驅動連線資料庫,這為之後的java的其他開發奠定了堅實的基礎。其次資料庫可課程設計更是提升了java的實戰能力。在本次課設中,通過主函式中對其他各個累的呼叫和 其他設計,更深層次的瞭解或者說是掌握了java的面向物件這一概念。此次開發總共涉及了自己編寫的大大小小的十幾個java檔案,但正是由於面向物件的思想,對於java的操作卻沒有想象的那麼複雜。系統的維護和改動也只需要在相應的子檔案裡面做改動。本次實戰中具有突出的是在java的主介面的編寫中,為了對於各個子檔案(子頁面)的操作更加的簡便,也為了主選單格式的統一,我使用了樹目錄結構的方式,使得主介面的操作靈活方便。也使得各個操作在主介面的顯示樣式更加的統一方便好看。總體來說本次的資料庫課程設計從整體上獨立完成了一個系統的開發。為之後多項專業課的學習打下了堅實的基礎,也是一個檢驗自己java與資料庫知識掌握程度的機會,在此次課程設計中收穫頗豐,再次有類似的學習事件機會。 1.1系統功能分析本系統主要有以下功能要求:課程設定,包括:增加、刪除、查詢和修改課程資訊。 課程時間和教室的安排,以及課程清單列印輸出。 l學生選課和學生課表的列印輸出。 l課程學生名單的列印輸出和期末成績輸入。 l成績查詢、報表。1.2系統功能模組設計系統各功能模組的關係如圖 1 所示。 圖 1、教學管理資訊系統功能模組圖 因為使用這套系統的人員不光是教務管理人員,還包括教師和學生。不同的身份對資料 庫的操作許可權也不同。為了避免管理的混亂,需要針對不同的角色分別設計客戶端應用程式, 對同一個資料庫進行合理的修改。頁面流程圖: 1.3 與其他系統的關係教學管理資訊系統同樣是校園資訊管理系統的一個有機組成部分。需要從學生資訊管理 系統獲取學生的個人資訊,從教師資訊管理系統獲取任課教師的相關資訊。同時,提供的成 績單為其他系統提供必要的參考。1.4資料流程圖教學資訊管理系統的資料流程如圖2.資料庫設計2.1資料庫需求分析根據我們前面的分析,教學資訊管理系統需要以下資料項:課程:課程號、課程名稱、講課教師、學分、學時、上課時間、上課地點、簡介、 課程狀態。 l選課結果:記錄編號、選課人、所選課程。成績單:記錄編號、學生、課程、成績。所需的外部資料支援: l 學生:學號、姓名、班級。 l教師:員工號、姓名、課程院系。2.2資料庫概念結構設計本系統所需資料的 E-R 模型圖: 2.3資料庫邏輯結構設計需要3個基本資訊表:教師資訊、學生資訊、課程資訊。其中, 教師資訊和學生資訊在實際系統中是從其它資訊管理系統的資料表中直接讀取。學生的選課 資訊需要用 1 個表來單獨儲存。由於每學期期末前都要進行選課,因此選課結束後要將這個 表的內容及時儲存到成績單資料表中。使用本系統的不光是教務處的管理人員和教師,每個 學生都需要登入到選課系統進行課程的選擇。因此,需要對不同的登入人員進行密碼認證和 許可權的限制,防止出現越權行為。使用者名稱、密碼和許可權單獨儲存在 1 個數據表中。另外需要 一個課程狀態程式碼表,這 7 個數據表的結構如表 1 到表 7 所示(請設計者完成這 7 個數據表 的邏輯結構)。 表1 USER_PASS使用者密碼資訊表 欄位名稱資料型別預設值取值範圍說明ID PASSWD AUTHORITY 表2 SCORE成績資訊表字段名稱資料型別預設值取值範圍說明ID 學號(關鍵字)STUDENT 課程號(關鍵字)COURSE SCORE 表3 TEACHER教師個人資訊表字段名稱資料型別預設值取值範圍說明ID 編號(關鍵字)NAME DEPARTMENT 部門 表4 STUDENT學生個人資訊表字段名稱資料型別預設值取值範圍說明ID 學號(關鍵字)NAME CLASS 班級 3.各個功能模組的設計與實現3.1功能說明本系統需要按照不同的使用者分別建立 3 個工程:教師課程管理應用程式、教務課程排程 應用程式和學生選課應用程式。 首先,三個模組的使用者的許可權是有很大的差異的,教務處的使用者的許可權大於教師的使用者許可權,教師的使用者許可權大於學生的使用者許可權。所以登入不同的模組對於資料的操作的允許範圍是不同的。一.教務課程排程應用程式功能說明。 登入教務處許可權的模組,可以對所有資料進行操作,包括學生的各項學習的查詢。學生的課程的查詢,教授的資訊查詢,教師設定課程的查詢以及教師和學生的學習的的增刪改查等等。同時此使用者許可權擁有對所有資料的掌握。二.教師課程管理應用程式功能說明。 教師登入模組主要進行的是對於教師資訊的修改查詢以及對學生資訊的查詢和學生成績的設定與查詢。以及開設課程。三.學生選課應用程式功能說明。 學生使用者的許可權較低,他只有對自己的資訊的修改以及查詢成績,查詢教師所開設課程和選課的去權利。四.實現了使用者資料的匯入匯出。在實現了基本的增刪改查的基礎上對於自己完成的教務管理系統,新增加了資料匯出為Excel格式和從Excel中讀取資料至資料庫中的新功能。3.2使用者介面設計根據許可權的不同,使用者介面分為三類,登入選項也為三類,各模組的介面檢視如圖所示:1.教務管理系統使用者許可權介面如圖,使用者可以在介面內選擇相應的群像進行登入。2.教務處使用者登入介面,選擇相應的使用者許可權之後進入相應的使用者的登入介面。其它兩個使用者許可權的登入介面與之類似,以下只展示一個登入介面。輸入密碼或者賬號錯誤會有相應的提示框。 3.教務處使用者的登入後主操作介面。教務處使用者登入後進行相應資料的操作。左側為一個樹目錄結構,點選各個子節點可以進行各個表之間的轉換。右面為各個子操作介面的展示,在子介面內進行各個資料的檢視與操作。 4.教師許可權使用者的主介面如圖所示,教師可以在主介面完成相應的操作,包括學生資訊的查詢,成績的新增修改,課程的設定與修改等。 5.學生使用者的登入主介面,進行查課,選課和成績查詢及個人資訊修改等操作。教師登入後查詢學生的成績哥資訊等,同時可以查詢和修改自己的資訊。同時在介面內設定和修改自己要開設的課程。 6.資料庫的建立。 7.資料以Excel的形式匯入匯出。連線資料庫之後可以實現資料的匯入和匯出為Excel形式。實現資料的匯入匯出要在java的驅動檔案中載入。建立相應的匯入匯出資料的類,並進行定義,再連結資料庫進行定義,就實現資料的匯入匯出。 匯入匯出的連線資料庫的部分程式碼如圖所示。其主要能容為建立一個workbook的工作部,在工作簿中完成匯入匯出的各項操作。 8.程式碼目錄結構的展示,基本檔案的分類為是按照各個頁面的分類來進行的,即一個頁面為一個java檔案,其它的輔助檔案和資料庫連線檔案為一個java檔案。4.1實驗中的錯誤一、 寫介面遇到的錯誤1、表格的表頭無法顯示 我一開始用的String型別的陣列儲存的表頭,表格也是用的陣列,表頭無法顯示;然後我百度發現,表格要先放入一個容器才能顯示錶頭。我按照例子改用vctor型別儲存我的表頭,但是我一開始是用的add方法把表格加入容器的,所以表頭還是無法顯示,通過百度我才知道表頭的陣列顯示方法才能讓表頭顯示,而且容器的佈局不能為null。然後表格就正常了2、登陸介面(不管我是否輸入了資訊,都可以正常地登陸)我一開始是用user.equals("")||user

null來判斷的,沒有去掉字串前後的空格,所以不管怎麼判斷字串其實是有空格的,所以不管怎麼都可以成功登陸,二、寫資料庫的錯誤1、我的資料庫一開始不能輸入中文安裝的時候沒有注意Mysql的語言型別,預設的語言不是中文,所以不能輸入中文,把每個表改成了utf8,改了之後雖然在navicat可以輸入中文,但是如果在mysql裡面開啟後,發現全部用?替代了。然後就百度,根據百度的方法,我開啟mysql檢視發現除了一部分的字元屬性改成了utf8,其餘都沒有變,然後把全部都改了以後,還是會亂碼。後來我發現是我eclipes這邊的程式碼還是之前的語言型別,然後就把全部都改了,就可以輸入了中文。六.實驗心得為期兩週的資料庫課程設計馬上結束,在這兩週裡面收穫頗豐。從課設開始的第一天,我們在老師的指導和閱讀指導書的前提下自主完成了一個簡單的資料庫系統的編寫。從系統的分析,到整體的設計,再到資料庫的建立,以及java前端頁面的編寫。資料庫驅動的載入。可以說整個的專案開發都是由一個人完成。這是在本學期學習了java課程和資料庫課程之後的第一次也是在校的一次很寶貴的實戰經驗總結。之前對兩門課程的學習只是簡單的基礎學習,沒有設計到整個系統的開發。但是在這次的實踐中對於整個系統開發有了更深的認識。從專業知識學習的角度說,首先我學會了作為一個系統的整個資料庫的建立和完善。學會將SQL語句嵌入java中,對資料庫進行操作。也學會了如何利用java的Mysql驅動連線資料庫,這為之後的java的其他開發奠定了堅實的基礎。其次資料庫可課程設計更是提升了java的實戰能力。在本次課設中,通過主函式中對其他各個累的呼叫和 其他設計,更深層次的瞭解或者說是掌握了java的面向物件這一概念。此次開發總共涉及了自己編寫的大大小小的十幾個java檔案,但正是由於面向物件的思想,對於java的操作卻沒有想象的那麼複雜。系統的維護和改動也只需要在相應的子檔案裡面做改動。本次實戰中具有突出的是在java的主介面的編寫中,為了對於各個子檔案(子頁面)的操作更加的簡便,也為了主選單格式的統一,我使用了樹目錄結構的方式,使得主介面的操作靈活方便。也使得各個操作在主介面的顯示樣式更加的統一方便好看。總體來說本次的資料庫課程設計從整體上獨立完成了一個系統的開發。為之後多項專業課的學習打下了堅實的基礎,也是一個檢驗自己java與資料庫知識掌握程度的機會,在此次課程設計中收穫頗豐,再次有類似的學習事件機會。
以下為本人的資料庫課設的頁面展示。希望對讀者有所啟迪。
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述