数据库课程设计——实验报告管理系统(超详细)
實驗報告管理系統
- 【前言】
- 1.系統需求分析
- 1.1引言
- 1.2目標與任務
- 1.2.1需求分析階段目標
- 1.2.2 需求分析階段任務
- 1.2.2.1實驗報告管理系統功能分析
- 1.2.2.2數據流程分析
- 1.2.2.3數據字典
- 1.2.2.4分析總結
- 2.概念結構設計
- 2.1概念設計任務
- 2.2概念模型設計
- 3.邏輯結構設計
- 3.1邏輯設計的目標與任務
- 3.2關系模型設計
- 3.2.1 ER圖轉換為關系模型
- 3.2.2關系模式優化
- 3.2.3用戶子模式設計
- 3.3數據處理
- 4.物理結構設計
- 4.1物理設計目標與任務
- 4.2物理存儲
- 5.數據庫實施
- 5.1建立數據庫,數據表,視圖,索引
- 5.1.1建立數據庫
- 5.1.2建立數據表
- 5.1.3建立視圖
- 6.系統調試和測試
- 6.1系統調試
- 6.2系統測試(復雜查詢)
- 7.心得與體會
- 參考文獻
【前言】
??隨著網絡技術的不斷發展,信息技術進入社會的每一個角落,手工管理操作的快速發展,正在逐步取代自動化網絡管理。教育技術中心根據教育信息化發展的趨勢, 本著面向學校教學過程, 結合學校課程特點,兼顧科研需求,在虛擬化技術及集群技術框架下,構建教學實驗軟件的個體化應用及集群高性能計算應用環境,以達到基礎性公共教學實驗軟件系統的基于校園網的普遍提供與使用。學校是接受現代化信息傳播的先行者,因此,學校管理的主體,是教學網絡管理的一個重要組成部分。
實驗教學是學生技能培表的重要環節之一,學生實驗報告的質量在一定程度上反映了實驗教學的質量,實驗報告管理水平也反映了實驗教學管理水平。目前,大部分學校所提交的實驗報告大多還停留在以紙為介質的方式上,這將嚴重制約著實驗教學的開展。首先,很多課程的實驗結果在紙質實驗報告中不能表現或不能完全表現,其次紙質實驗報告的批改和分析也是實驗授課老師的一個很重負擔,如何提高學生實驗報告的表象能力,提高教師批改實驗報告的效率并及時發現和糾正實驗報告中存在的問題是許多課程實驗授課教師所面對的一個難題。
本系統使用MySQL完成。
該系統開發由系統需求分析階段、概念設計階段、邏輯設計階段、數據庫實施階段、系統調試和測試階段、參考文獻、附錄等階段組成。
關鍵字:數據庫;實驗報告;管理系統;MySQL
1.系統需求分析
1.1引言
??各大高校每年畢業生人數眾多,學校處于接收信息的前沿地位,更是及早的進入“辦公自動化”。該系統就是辦公自動化的一項主要內容。本系統利用了方便的網絡管理系統,管理員不需要專業的知識,只需要通過界面操作就可以對教師課題和學生的選題進行管理,使得管理員管理工作變得非常方便。
1.2目標與任務
1.2.1需求分析階段目標
??本系統的目標主要是實現對一般高校的教學工作的信息管理,實現對教師的基本信息和教師的授課信息的添加,查詢,分配等功能,同時對課程信息及學生選課信息的管理,較大程度地實現學校教學工作的信息化管理(目標詳見表1)
表1 系統目標| 教研室主任 | 信息管理:學生、教師基本信息 課程管理:瀏覽、查詢、添加、分配課程,生成報表 |
| 主講教師 授課教師 | 管理課程評分 上傳課程內容 |
| 學生 | 查詢信息,登錄、查看、上傳實驗內容 |
1.2.2 需求分析階段任務
1.2.2.1實驗報告管理系統功能分析
(1)實驗報告管理系統滿足來自教研室主任,主講教師,授課教師和學生四方面人員的需求。
(2)教研室主任工作人員可以為主講教師和授課教師還有學生添加課程信息,同時并生成相應的報表給學生看和選擇,教研室主任可以瀏覽,查詢,添加課程的基本信息同時為主講教師和授課教師分配上課班級。
(3)主講教師對課程的評分標準進行管理,設定實驗評判標準和分值主講教師還可以上傳課程對應的實驗內容。
(4)學生可以通過自己的賬戶密碼來登陸實驗系統,及時查看各個課程的實驗信息,并且上傳自己的實驗內容,看可以查詢自身的相關信息。
(5)教研室主任對教師和學生信息等進行管理。
1.2.2.2數據流程分析
??學生登錄系統查看教師布置的實驗并且撰寫實驗內容,教師可以進入系統查看學生課程信息、上傳實驗、并且批閱學生提交的實驗,主講教師可以對課程的評分標準進行管理,教研室主任管理著學生、教師、課程的所有信息,可以添加課程信息,讓學生進行課程選擇,還可以安排課程主講教師和授課教師,為教師分配班級。
1.2.2.3數據字典
??數據字典是組成數據庫很重要的組成部分,包含了數據項,數據結構等內容,只有認真分析相關的業務功能,進行全面細致的分析,才有可能得到全面的數據結構。數據運行才能夠正常,不會出現缺少相應的信息等問題。數據匯總表如表2所示,數據結構如表3所示。
表2 數據項匯總表| Sno | CHAR | 10 | 學號 | |
| Sname | CHAR | 10 | 學生姓名 | |
| Sage | INT | 2 | 學生年齡 | |
| Ssex | CHAR | 3 | 學生性別 | 男,女 |
| Sclass | CAHR | 20 | 學生班級 | |
| Tno | CHAR | 10 | 教師號 | |
| Tname | CHAR | 10 | 教師姓名 | |
| Tsex | CHAR | 3 | 教師性別 | 男,女 |
| Tage | INT | 2 | 教師年齡 | |
| Cno | CHAR | 10 | 課程編號 | |
| Cname | CHAR | 20 | 課程名稱 | |
| Ccredit | DOUBLE | 2 | 課程學分 | |
| Ctime | INT | 3 | 課時 | |
| Eno | CHAR | 10 | 實驗編號 | |
| Ename | CHAR | 10 | 實驗名稱 | |
| Score | INT | 2 | 分值 | |
| Standard | CHAR | 20 | 評判標準 | |
| Dno | CHAR | 10 | 教研主任號 | |
| Dname | CHAR | 10 | 主任姓名 | |
| Password | CHAR | 10 | 密碼 | |
| Permission | CHAR | 20 | 權限 | S,t,c,st,sc,tc,stc |
| S_score | INT | 3 | 實驗成績 |
| Student | 學生信息 | 學號,姓名,性別,年齡,班級 |
| Teacher | 教師信息 | 教師號,姓名,性別,年齡 |
| Director | 主任信息 | 編號,姓名,密碼,權限 |
| Course | 課程信息 | 課程號,課程名,課時,學分,主講教師號,授課教師號 |
| Experiment | 實驗信息 | 實驗號,實驗題目,截至時間,分值,評分標準,課程號 |
| e_completion | 實驗完成情況 | 實驗號,完成內容,學號,成績 |
| T_course | 教師課程 | 課程號,主講教師號,授課教師號,班級 |
| Sc | 學生課程 | 課程號,學號 |
經需求分析,本系統的數據流有課程信息數據流、實驗信息等數據流。
數據流編號:D001
數據流名稱:課程信息
簡述:課程信息
數據流來源:教研室主任添加課程信息,并發布在系統中。
數據流去向:與課程相關數據存入數據庫
數據項組成:Cno(課程號)+Cname(課程名)+Ctime(課時)+Ccredit(學分)+Tno(教師號)
數據流量:20門/日
高峰流量:100門/日
數據流編號:D002
數據流名稱:實驗信息
簡述:實驗信息
數據流來源:教師上傳相關實驗信息
數據流去向:為學生發布實驗任務
數據項組成:Eno(實驗號)+Ename(實驗題目)+Score(分值)+Standard(評分標準)+Cno(課程號)
數據流量:200項/日
數據流編號:D003
數據流名稱:學生/主任/教師登錄信息
簡述:學生/主任/教師登錄信息
數據流來源:對學生/主任/教師分配實驗管理系統賬號
數據流去向:檢查用戶身份
數據項組成:學生:Sno(學號)+Sname(姓名)+Ssex(性別)+Sage(年齡)+Sclass(班級)
教師:Tno(教師號)+Tname(姓名)+Tsex(性別)+Tage(年齡)
主任:Dno(編號)+Dname(姓名)+Password(密碼)+Permission(權限)
數據流編號:D004
數據流名稱:實驗成績查詢
簡述:實驗信息查詢
數據流來源:學生
數據流去向:檢索處理模塊
數據項組成:Sno(學號)+Sname(姓名)+Cno(課程號)+Eno(實驗號)
數據流量:1000次/日
高峰流量:5000次/日
數據流編號:D005
數據流名稱:實驗成績查詢結果
簡述:返回給學生的查詢結果
數據流來源:檢索條件處理模塊,從系統中返回給學生的查詢結果
數據流量:學生
數據項組成:Sno(學號)+Sname(姓名)+Cno(課程號)+Eno(實驗號)+Score(分值)+S_score(實驗成績)+Tno(教師號)
數據流量:400次/日
高峰流量:3000次/日
數據流圖:(詳見圖1,2,3)
圖2 數據流圖2 圖3 數據流圖3
1.2.2.4分析總結
??通過需求分析,認真分析總結后,大致對畢業設計選題管理系統的功能有了一個更全面的認識,更深入的了解。
??通過實地考察,查閱相關資料,在基本功能的前提上,又拓展了一點新的實用功能,比如電子圖書閱讀,這也是未來發展的必然。雖然需求分析很麻煩,但是它是數據庫設計的關鍵,是基礎,是前提,如果需求分析沒有做好,那么很又可能導致數據庫的重新開始。所以,必須認真對待,仔細研究,在全面系統的分析后,得到正確的可行的實施方案,只有這樣,才有可能打好基礎,有一個良好的開端,才有可能取得好的結果。
2.概念結構設計
2.1概念設計任務
??概念設計是獨立于數據庫管理系統的設計,它的主要任務即時完成對現實事物,事物關系之間的轉化,把抽象的事物轉化成能夠被人們易于理解的圖形關系,更加直白的把現實的事物關系表達出來,從而為下一步的設計打下一個良好的基礎,概念設計的主要任務就是如此,進行歸類總結,識別畢業設計選題管理系統中的實體,識別實體的屬性,識別實體的關鍵字,識別實體間的聯系,利用實體關系圖(E—R圖)來描述選題管理系統相關實體、屬性及關系,從而達到為畢業設計選題管理系統建立良好的數據模型的目的。
2.2概念模型設計
??根據前面的設計,以及相應的數據項,數據結構之間的關系,通過分類總結,可以將實驗報告管理系統數據庫實體劃分為學生信息實體集、教師信息實體集、課程信息實體集、實驗系統實體集,各實體集里還包含不同的實體。系統功能包括:
(1)選擇課程:教研室主任添加課程信息,包括課程名,學分,課時等,同時對課程信息進行管理,能夠讓學生對課程進行選擇。
(2)分配班級:教研室主任安排課程的主講教師和授課教師,同時為主講教師和授課教師分配.上課班級。
(3)評分準則:主講教師對課程的評分標準進行管理,設定實驗評判標準和分值。
(4)實驗查看:主講教師可以上傳課程對應的實驗內容。
(5)完成實驗:學生登陸系統,完成相應的課程的實驗。
(6)信息管理:教研室主任對教師信息、學生信息等進行管理。
每個實體定義的屬性如下:
學生(學號,姓名,年齡,性別,班級)
教師(教師號,姓名,性別,年齡)
教研處主任(教研主任號,姓名,權限,密碼)
課程信息(課程號,課程名,學分,課時)
教師課程(課程號,主講教師號,授課教師號,班級)
學生課程(課程號,學號)
實驗(實驗序號,截止時間,實驗題目,班級,課程號,實驗評分標準,分值)
實驗提交(實驗序號,學號,實驗內容,實驗成績)
??以上就是概念設計的基本實體以及相關的屬性,并分別進行了主鍵的命名,確定了基本的實體之后,就是根據管理流程以及數據流圖確定他們之間的關系,進行E-R圖的設計了。E-R圖的設計是通過先分后總的設計理念進行安排的,把部分的E-R模型設計好后,在進行了總的設計,這樣的設計便于操作,易于理解、實現,但進行綜合的時候一定要注意他們之間的關系,以免發生不必要的冗余。ER圖(詳見圖4~10)
3.邏輯結構設計
3.1邏輯設計的目標與任務
??以上的概念設計階段是獨立于任何一種數據模型的,但是邏輯設計階段就與選用的DBMS產品發生關系了,系統邏輯設計的任務就是將概念設計階段設計好的基本E-R圖轉換為選用DBMS產品所支持的數據模型相符合的邏輯結構。具體內容包括數據組織(將E-R圖轉換成關系模型、模型優化、數據庫模式定義、用戶子模式設計)、數據處理(畫出系統功能模塊圖)兩大任務。其中最為關鍵的是把ER模型轉換成相應的關系表結構,同時每個關系模型之間的范式應最好滿足第三范式,只有這樣的關系模式才可能盡可能的減小冗余,達到較好的效果。
3.2關系模型設計
3.2.1 ER圖轉換為關系模型
??ER圖進行關系模型的轉化時,應根據相應的規則進行轉化,只有這樣,才能盡可能的減小冗余,達到比較好的范式,使模型更加優化,通常的轉換規則如下:
??一對一聯系 :若雙方部分的參與,則將聯系定義為一個新的關系,屬性為參與雙方的碼,若一方全部參與,則將聯系另一方的碼作為全部參與一方的屬性,
??一對多聯系:將單方參與實體的碼作為多方參與實體的屬性,
??多對多聯系:將聯系定為新的關系,屬性為參與雙方的碼。
??以上也就是基本的設計規則了,只要按照相應的規則轉換,就能夠得到所要的規范程度,得到一個良好的范式,根據得到的ER圖,進行關系模式的轉換。具體的關系模型如下
(表4~11)。
| Sno | CHAR | 10 | 學號 | 否 | 主 |
| Sname | CHAR | 10 | 姓名 | ||
| Sage | INT | 3 | 年齡 | ||
| Ssex | CHAR | 3 | 性別 | ||
| Sclass | CHAR | 20 | 班級 |
| Tno | CHAR | 10 | 教師號 | 否 | 主 |
| Tname | CHAR | 10 | 姓名 | ||
| Tsex | CHAR | 3 | 性別 | ||
| Tage | INT | 3 | 年齡 |
| Cno | CHAR | 10 | 課程 | 否 | 主 |
| Cname | CHAR | 20 | 課程名 | ||
| Ctime | INT | 3 | 課時 | ||
| Credit | DOUBLE | 10 | 學分 |
| Dno | CHAR | 10 | 主任號 | 否 | 主 |
| Dname | CHAR | 10 | 姓名 | ||
| Password | CHAR | 10 | 密碼 | ||
| Permission | CHAR | 10 | 權限 |
| Eno | CHAR | 10 | 實驗號 | 否 | 主 |
| Ename | CHAR | 10 | 實驗題目 | ||
| Eendtime | CHAR | 10 | 截至時間 | ||
| Ecredit | INT | 2 | 分值 | ||
| Estandard | CHAR | 50 | 評判標準 | ||
| Cno | CHAR | 10 | 課程號 | 否 | 外 |
| Eno | CHAR | 10 | 課程號 | 否 | 外 |
| Sno | CHAR | 10 | 學號 | 否 | 外 |
| Content | CHAR | 50 | 內容 | ||
| S_score | INT | 2 | 成績 |
| Cno | CHAR | 10 | 課程號 | 否 | 外 |
| Sno | CHAR | 10 | 學號 | 否 | 外 |
| Cno | CHAR | 10 | 課程號 | 否 | 外 |
| M_tno | CHAR | 10 | 主講教師 | 否 | 外 |
| S_tno | CHAR | 10 | 授課教師 | 否 | 外 |
| class | CHAR | 20 | 班級 |
3.2.2關系模式優化
??關系模式學生、教師、教研室主任等每一個關系不存在非主屬性對主屬性的部分函數依賴,也不存在傳遞函數依賴,已經達到了3NF,基本上都滿足應用系統的要求,只是在應用中還有一部分功能的實現過于簡單,沒有考慮周全,還有待進一步修改。已得到更好的運行效率。
(1)分析關系模式學生(學號,姓名,性別,年齡,班級)
??在關系模式學生(學號,姓名,年齡,性別,班級)中,每一個屬性都不能再分,故,屬于1NF;
??在關系模式學生(學號,姓名,年齡,性別,班級)中,主鍵為學號, 所以,姓名、年齡、性別、班級,都是非主屬性。根據候選鍵定義可知,學號完全決定姓名,性別,年齡,班級,即每一個非主屬性完全依賴于候選鍵,故,該關系模式屬于2NF;
??在關系模式學生(學號,姓名,年齡,性別,班級)中,姓名,性別,年齡,班級,都是非主屬性,且每一個非主屬性不傳遞函數依賴于候選鍵學號,即,學號決定姓名,但姓名不決定性別,不決定年齡,不決定班級。故,該關系模式屬于3NF;
??在關系模式學生(學號,姓名,性別,年齡,班級)中,候選鍵為學號,函數依賴為學號—>姓名,學號—>性別,學號—>年齡,學號—>班級,故,該關系模式屬BCNF;
??由于在關系模式學生(學號,姓名,性別,年齡,班級)中不存在多值依賴,故該關系模式不屬于4NF。
??綜上所述,關系模式學生(學號,姓名,性別,年齡,班級)為BCNF。
(2)分析關系模式教師(教師號,姓名,性別,年齡)和課程(課程號,課程名,學分,課時)
??在關系模式教師(教師號,姓名,性別,年齡)和課程(課程號,課程名,學分,課時)
中,每一個屬性都不能再分,故首先滿足1NF.主鍵分別為教師號和課程號,每一個非主屬性完全依賴于候選鍵,故這兩個關系模式首先屬于2NF。且每一個非主屬性不傳遞函數依賴于候選鍵學號,故屬于3NF。而且,候選鍵教師號和課程號決定一切非主屬性,故該關系模式屬于BCNF。由于關系模式中不存在多值依賴,故不屬于4NF。
??綜上所述,關系模式教師(教師號,姓名,性別,年齡)和課程(課程號,課程名,學分,課時)屬于BCNF。
3.2.3用戶子模式設計
??用戶子模式的建立,其功能就是方便用戶的查詢并起到了一定的保護數據庫的作用,視圖的建立應根據具體的應用情況,根據用戶的需求,進行相應的視圖建立,建立視圖的原則應在盡量滿足用戶的需求的前提下進行,并同時保護其他的數據的安全性,以免數據的泄露與破壞,數據庫視圖的建立在下面有相應的舉例及應用,這里就不再多說了。
??學生-課程-實驗(學號,姓名,性別,年齡,班級,課程號,課程名,實驗號)
??課程-實驗(實驗號,實驗名,截止時間,完成情況,課程號,課程名,課時,學分)
??教師-課程(課程號,課程名,課時,學分,授課教師號,主講教師號)
3.3數據處理
數據處理(見圖12)
4.物理結構設計
4.1物理設計目標與任務
??數據庫的物理設計通常是確定數據的相關存儲過程,它一般是依賴于相應的數據庫管理系統,幾乎是機器進行自主完成的任務,不用過多的人去考慮,但有時為了效率的問題,以及其他的要求,必須進行相應的物理設計,以達到相應的要求,這就是物理設計的根本目的,而我們在這里的物理設計一般就是建立索引的過程,所以對于用戶的要求建立什么樣的索引就成了設計者的任務,我們在這里就是進行這樣的數據庫索引設計。
4.2物理存儲
??得到系統邏輯模型后,就該進行數據庫的物理設計和實施數據庫了,物理設計主要是要確定數據庫的存儲路徑、存儲結構以及如何建立索引等,可以采用系統的默認設置。
5.數據庫實施
5.1建立數據庫,數據表,視圖,索引
5.1.1建立數據庫
Create database experiment_report_system;5.1.2建立數據表
學生數據表建立:
create table student( sno char(10) primary key, sname char(10), sage int , ssex enum('男','女')not null, sclass char(20)not null);教師信息表建立:
create table teacher( tno char(10) primary key, tname char(10), tage int , tsex enum('男','女')not null);教研主任表建立:
create table director( dno char(10) primary key, dname char(10), password char(10), permission enum(‘t’,’s’,’c’,’ts’,’tc’,’sc’,’tsc’)not null);課程表建立:
create table course( cno char(10) primary key, cname char(20), ctime int, ccredit double );實驗表的建立:
create table experiment( eno char(10) primary key, ename char(20), eendtime char(10), ecredit int, estandard char(20), cno char(10), foreign key(cno) references course(cno));實驗完成情況表:
create table e_completion( eno char(10), sno char(10), content char(50), s_score int, primary key(eno,sno) , foreign key(eno) references experiment(eno), foreign key(sno) references student(sno)););學生課程表:
create table sc( cno char(10), sno char(10), primary key(cno,sno));教師課程表:
create table t_course ( cno char(10), m_tno char (10), s_tno char(10), class char(20), primary key(cno,m_tno,s_tno), foreign key(m_tno) references teacher(tno), foreign key(cno) references course(cno), foreign key(s_tno) references teacher(tno));5.1.3建立視圖
視圖的建立:
Create view s_e as Select eno,ename,eendtime,estandard,course.cno,cname,ctime,ccredit from experiment,course where experiment.cno=course.cno;(詳見圖13)
圖13 s_e視圖 Create view t_c as select course.cno,cname,ctime,ccredit,m_tno,s_tno from t_course,course where course.cno=(m_tno or s_tno);(詳見圖14)
(詳見圖15)
6.系統調試和測試
6.1系統調試
1.已知系統的功能設計規格,進行測試證明每個實現了的功能是否符合要求;
2.已知系統的內部工作過程,通過測試證明每種內部操作是否符合設計規格要求,所有內部
成分是否通過檢驗。
(1)查看各個基本表中的數據(借助與視圖查詢)以及相應的功能查詢(詳見圖16~24):
(2)設計SQL類連接MySQL對數據庫的信息進行處理(詳見圖25~26)
# 1 導包 import pymysql # 2 建立數據庫連接 # 注意:此處user、password均為自己數據庫的用戶名和密碼,database為數據庫項目名稱 conn = pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306, autocommit=False) # 3 獲取游標 cursor = conn.cursor() # 4 執行 # 查看數據庫的版本 cursor.execute("select version();") # 注意,使用游標執行sql語句之后,不會返回我們的執行結果,要返回執行結果,必須通過cursor.fetchone()或cursor.fetchall()的方式來獲取 print("數據庫版本號:", cursor.fetchone()) # 5 關閉游標 cursor.close() # 6 關閉連接 conn.close() 圖25 Python連接數據庫 圖26 連接成功 '''插入多條數據''' import pymysql #打開數據庫連接,不指定數據庫 conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306) #conn.select_db('pythondb') #獲取游標 cur=conn.cursor()#另一種插入數據的方式,通過字符串傳入值 sql="insert into student values(%s,%s,%s,%s,%s)" insert=cur.executemany(sql,[(1007,'1號',20,'女','智能一班'),(1008,'2號',21,'男','智能二班'),(1009,'3號',22,'女','智能三班')]) print ('批量插入返回受影響的行數:',insert) cur.close() conn.commit() conn.close() print('sql執行成功') 圖27 對數據庫進行添加 '''刪除多條數據''' import pymysql #打開數據庫連接 conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)#獲取游標 cur=conn.cursor() #刪除前查詢所有數據 cur.execute("select * from sc;") print('刪除前的數據為:') for res in cur.fetchall():print (res) print ('*'*40) #刪除2條數據 sql="delete from sc where cno=%s" cur.executemany(sql,[(4),(5)]) #刪除后查詢所有數據 cur.execute("select * from sc;") print('刪除后的數據為:') for res in cur.fetchall():print (res) cur.close() conn.commit() conn.close() print('sql執行成功') 圖28 對數據庫進行刪除 '''更新多條數據''' import pymysql #打開數據庫連接 conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306) #獲取游標 cur=conn.cursor() #更新前查詢所有數據 cur.execute("select * from teacher where tname in ('張松','王靜');") print('更新前的數據為:') for res in cur.fetchall():print (res)print ('*'*40) #更新2條數據 sql="update teacher set tage=%s where tname=%s" update=cur.executemany(sql,[(40,'張松'),(55,'王靜')])#更新2條數據后查詢所有數據 cur.execute("select * from teacher where tname in ('張松','王靜');") print('更新后的數據為:') for res in cur.fetchall():print (res) cur.close() conn.commit() conn.close() print('sql執行成功') 圖29 對數據庫進行修改 #查詢表 # 1 導包 import pymysql # 2 建立連接 conn = pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306) # 3 獲取游標 cursor = conn.cursor() # 4 執行 # 查詢表數據 select_sql = "select tno, tname, tage,tsex from teacher;" cursor.execute(select_sql) print("查詢結果的總記錄數為:", cursor.rowcount) # 查詢結果的第一條數據 #print("查詢結果的第一條數據為: {}".format(cursor.fetchone())) # 獲取全部的查詢結果 # 注意:如果之前使用過fetchone或者fetchall,那么后續再使用fetchall時,會從上一個的指針位置讀取數據 print("全部查詢結果為:", cursor.fetchall()) # 要獲取全部的查詢結果,需要重新再執行查詢語句 #cursor.execute(select_sql) # 5 關閉游標 cursor.close() # 6 關閉連接 conn.close() 圖30 對數據庫進行查看6.2系統測試(復雜查詢)
(1)查詢學生及選課和實驗信息(詳見圖31)
select student.sno,sname,sage,ssex,sclass,sc.cno,eno from student,sc,experiment where student.sno='%s'and sc.cno=experiment.cno and sc.sno=student.sno; 圖31(2)查詢教師及課程實驗信息(詳見圖32)
select teacher.tno,tname,tage,tsex,t_course.cno,eno from teacher,t_course,experiment where teacher.tno='%s'and (teacher.tno=t_course.m_tno or teacher.tno=s_tno) and t_course.cno=experiment.cno; 圖32(3)查詢課程及實驗信息(詳見圖33)
Select course.cno,cname,ctime,ccredit,m_tno,s_tno,class,eno,ename from course ,t_course,experiment where course.cno='%s'and t_course.cno=course.cno and course.cno=experiment.cno; 圖337.心得與體會
??本次課程設計來說,我選的是實驗報告管理系統課程設計,難度中,上等,最重要的是需求分析,難度是各個表的之間鏈接與分析,其次是表的屬性,每一個表的屬性關系到各個表之間的聯系,所以要考慮到很多因素,就拿實驗來說,實驗要和老師和學生的實驗區分開來,教師的實驗在于上傳實驗的題目,而學生的實驗內容是上傳實驗的題目答案。通過實驗系統這個平臺,老師能夠看到學生上傳的實驗內容,學生只能看到實驗的題目,另外教師的權限不同,教師分為授課教師和主講教師,主講教師的權限是增添實驗內容,主講教師是評改這個實驗,分值也是由主講教師來設定,這個地方一定要分析好。
??通過這次課程設計,我們學到了很多,比如說分析整個表,要把他們聯系到一塊,所以說考慮一定要周到。課程設計一定要耐下心來,具體分析,不能夠一口吃成個胖子。我們選題過后通過書上的例子來一步一步分析,另外自己寫的手稿,總之努力沒有白費,學到了很多的東西。以后會更加的努力來完成課程設計。
參考文獻
王珊 薩師煊,《數據庫系統概論(第5版)》,北京:高等教育出版社,2014.9
袁國忠,《Python編程:從入門到實踐》,人民郵電出版社,2016.7
《數據庫系統概念》,機械工業出版社,2019.12
總結
以上是生活随笔為你收集整理的数据库课程设计——实验报告管理系统(超详细)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: final 在 java 中有什么作用?
- 下一篇: Sentinel介绍和Windows下安