分享一個基于Python web的學(xué)生成績管理系統(tǒng)文檔,方便各位畢業(yè)學(xué)子參考。
1.1項目簡介
在學(xué)校中,教學(xué)是學(xué)校的重大職能之一,教學(xué)管理也是非常重要的管理活動,而成績管理作為教育管理的核心之一是尤為重要的。隨著時代的變化、科技的日益發(fā)展,教學(xué)工作逐步信息、科技化,學(xué)生成績管理系統(tǒng)成為了一個教育單位不可缺少的平臺,以計算機為工具的學(xué)生成績管理系統(tǒng)也進(jìn)而取代了傳統(tǒng)的成績管理方式,它的內(nèi)容對于學(xué)校教學(xué)的決策者和管理者是至關(guān)重要的,它為用戶提供充足的信息和快捷的查詢手段,課題具有一定的專業(yè)綜合性和典型性,符合計算機網(wǎng)絡(luò)技術(shù)專業(yè)培養(yǎng)目標(biāo)。
1.2課題目標(biāo)
課題主要完成的任務(wù)是一個基于web網(wǎng)頁版的學(xué)生成績管理系統(tǒng),利用了SQL小型數(shù)據(jù)庫,結(jié)合了SQL存儲數(shù)據(jù)、查詢數(shù)據(jù)。本系統(tǒng)分為學(xué)生模塊和老師模塊,學(xué)生模塊可以查看學(xué)生選課信息以及成績,老師模塊可以管理學(xué)生成績的錄入與刪除,本課題可以培養(yǎng)學(xué)生web,flask,SQLite,HTML,CSS,JavaScript等方面的專業(yè)知識,可以大幅度的提升學(xué)生的開發(fā)能力[1,3,4]。
2 設(shè)計思路
2.1開發(fā)環(huán)境與工具
系統(tǒng)開發(fā)主要框架及環(huán)境如下:
后端開發(fā)語言:Python
后端框架:Flask
數(shù)據(jù)庫交互:Flask_SQLAlchemy
數(shù)據(jù)庫:SQLite
網(wǎng)頁顯示:HTML,CSS,JavaScript
表2-1 版本選擇
環(huán)境 |
版本 |
Flask |
1.1.4 |
Flask-SQLAlchemy |
2.5.1 |
Flask-WTF |
0.15.1 |
Jinja2 |
2.11.3 |
SQLAlchemy |
1.4.25 |
WTForms |
2.3.3 |
Python |
3.6.0 |
Visual Studio Code |
1.60.1 |
2.1.1SQLite
SQLite 屬于一個軟件庫,實現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。SQLite 是在世界上最廣泛部署的 SQL 數(shù)據(jù)庫引擎。SQLite 并且其源代碼不受版權(quán)限制。
2.1.2Python
Python 是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。Python 支持程序編程和面向?qū)ο缶幊?。在程序編程中重用代碼,在面向?qū)ο蟮木幊讨谢跀?shù)據(jù)和函數(shù)使用對象,支持大規(guī)模軟件開發(fā)[2]。
2.1.3Flask
Flask是一個輕量級的可定制框架,使用Python語言編寫,較其他同類型框架更為靈活、輕便、安全且容易上手。它可以很好地結(jié)合MVC模式進(jìn)行開發(fā),開發(fā)人員分工合作,小型團隊在短時間內(nèi)就可以完成功能豐富的中小型網(wǎng)站或Web服務(wù)的實現(xiàn)。另外,F(xiàn)lask還有很強的定制性,用戶可以根據(jù)自己的需求來添加相應(yīng)的功能,在保持核心功能簡單的同時實現(xiàn)功能的豐富與擴展,其強大的插件庫可以讓用戶實現(xiàn)個性化的網(wǎng)站定制,開發(fā)出功能強大的網(wǎng)站[5]。
2.1.4Flask_sqlalcheml
Flask-SQLAlchemy是一個Flask擴展,簡化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是一個很強大的關(guān)系型數(shù)據(jù)庫框架,支持多種數(shù)據(jù)庫后臺。SQLAlchemy提供了高層ORM,也提供了使用數(shù)據(jù)庫原生SQL的低層功能。
2.1.5vscode
Visual Studio Code(以下簡稱vscode)是一個輕量且強大的跨平臺開源代碼編輯器(IDE),支持Windows,OS X和Linux。內(nèi)置JavaScript、TypeScript和Node.js支持,而且擁有豐富的插件生態(tài)系統(tǒng),可通過安裝插件來支持C++、C#、Python、PHP等其他語言。
2.1.6 Jinja2
Jinja2為Flask作者開發(fā)的一個Flask模板系統(tǒng),起初是模仿django模板的一個模板引擎,為Flask提供模板支撐,因為Jinja2模板比較靈活、快速和安全等優(yōu)點,所以很快就被廣泛使用。
2.1.7 Flask-WTF
Flask-WTF是一個關(guān)于表單的擴展庫,可以自動生成表單的HTML代碼和驗證提交的表單數(shù)據(jù)[7],并且提供跨站請求偽造(Cross-Site Request Forgery)保護(hù)的功能,使用起來非常方便[6]。
2.1.8 WTForms
在Flask內(nèi)部并沒有提供全面的表單驗證,所以當(dāng)我們不借助第三方插件來處理代碼的時候代碼會顯得很混亂,而官方推薦的一個表單驗證插件就是WTForms。WTForms是一個支持多種web框架的form組件,主要用于對用戶請求數(shù)據(jù)的進(jìn)行驗證,其驗證流程與django中的form表單驗證有些許類似。
2.2技術(shù)架構(gòu)
學(xué)生成績管理系統(tǒng)是采用前后端分離的技術(shù)實現(xiàn),其中包括前端模塊,后端模塊,其中通過頁面的點擊后端接收到命令進(jìn)行一系列的渲染,其中通過成績錄入將學(xué)生成績信息保存到SQLite數(shù)據(jù)庫中。后端模塊采用Flask的MVT模式,所謂的MVT也就是Model-Template-View,也可以理解為模型、模板、視圖。通常是用戶通過web瀏覽器點擊某一處向后端服務(wù)器發(fā)起請求,然后再由這個請求去訪問視圖函數(shù),視圖函數(shù)再去調(diào)用模型,模型去數(shù)據(jù)庫中查找數(shù)據(jù),然后逐級返回,視圖函數(shù)把返回的數(shù)據(jù)填充到模板中,最后返回頁面上。前端數(shù)據(jù)的展示是通過flask的Jinja2模板來實現(xiàn)的,具體如下:
數(shù)據(jù)庫操作:
使用SQLAlchemy進(jìn)行與SQLite數(shù)據(jù)庫的連接,通過頁面的查看課程、選課、修改密碼、查看成績等操作,后端程序接收命令進(jìn)行SQLite數(shù)據(jù)庫的操作。
前端頁面顯示:
后端Flask定義路由由render_template傳輸數(shù)據(jù)到前端代碼,前端使用jinja2模板進(jìn)行接收并渲染頁面。
數(shù)據(jù)請求:
后端使用Flask_ SQLAlchemy的方式進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的交互,通過前端頁面的點擊,接收請求,進(jìn)入數(shù)據(jù)庫進(jìn)行數(shù)據(jù)提取,列如:教師模塊中點擊界面瀏覽課程按鈕,會進(jìn)行展示該教師所教課程下的學(xué)生信息。
3 需求分析
3.1系統(tǒng)目標(biāo)
該系統(tǒng)主要是一個用于學(xué)校的的學(xué)生成績管理系統(tǒng),其中包括管理員老師用戶模塊和普通學(xué)生用戶模塊,管理員老師用戶可使用新增學(xué)生、新增課題、登記學(xué)生成績、修改成績、瀏覽課程、成績以及修改密碼功能,普通學(xué)生用戶可使用查看選課信息、退課、查看成績功能。
3.2功能需求
(1)學(xué)生用戶:普通學(xué)生用戶登入自己的賬號密碼后,可以通過頂端導(dǎo)航的切換功能進(jìn)行查看該學(xué)生的選課信息、還可以進(jìn)行課程的退課操作,以及查看該學(xué)生的成績。
(2)教師用戶:管理員教師用戶在登入自己的賬號密碼后,也是通過頂端導(dǎo)航的切換功能,進(jìn)行新增學(xué)生、新增課題、登記學(xué)生成績、修改成績、瀏覽課程、成績以及修改密碼。
系統(tǒng)功能結(jié)構(gòu)圖如下圖3-1、圖3-2:
圖3-1學(xué)生模塊結(jié)構(gòu)圖
圖3-2老師模塊結(jié)構(gòu)圖
3.3性能需求
(1)頁面渲染:使用Jinja2模板進(jìn)行頁面的渲染,相對Template來說,Jinja2更加靈活,因為它提供了控制結(jié)構(gòu),表達(dá)式和繼承等。相對Mako來說,Jinja2有控制結(jié)構(gòu),不允許在模板中編寫太多的業(yè)務(wù)邏輯,相對Django模板來說,Jinja2性能更好,頁面的DOM元素在五秒內(nèi)容即可全部加載完畢,并且正常所有瀏覽器。
(2)數(shù)據(jù)庫:使用SQLite3,因為SQLite3不需要安裝,不需要配置,不需要啟動、關(guān)閉也不需要配置數(shù)據(jù)庫實例,當(dāng)系統(tǒng)崩潰后無需做任何恢復(fù)操作,下次使用數(shù)據(jù)庫時自動恢復(fù)。
(3))數(shù)據(jù)傳輸:使用Flask_SQLAlchemy進(jìn)行數(shù)據(jù)傳輸,因為SQLALchemy 實際上是對數(shù)據(jù)庫的抽象,可以讓開發(fā)者不用直接和 SQL 語句打交道,而是通過 Python 對象來進(jìn)行操作數(shù)據(jù)庫,從而在舍棄一些性能開銷的同時,換來的是開發(fā)效率的較大提升SQLAlchemy是一個關(guān)系型數(shù)據(jù)庫框架,它提供了高層的 ORM 和底層的原生數(shù)據(jù)庫的操作[8]。
(4)頁面流暢:在頁面進(jìn)行操作跳轉(zhuǎn)的時候不會出現(xiàn)卡頓現(xiàn)象,當(dāng)進(jìn)行管理員或普通用戶登入等容易操作的時候,系統(tǒng)都會及時的做出反應(yīng)。
由于篇幅受限,詳細(xì)Word文檔,如下:文章來源:http://www.zghlxwxcb.cn/news/detail-401227.html
https://download.csdn.net/download/yw1990128/86954004文章來源地址http://www.zghlxwxcb.cn/news/detail-401227.html
到了這里,關(guān)于基于Python Web的學(xué)生成績管理系統(tǒng)--文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!