欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)

上傳人:仙*** 文檔編號:28059018 上傳時間:2021-08-23 格式:DOC 頁數(shù):29 大小:974.50KB
收藏 版權(quán)申訴 舉報 下載
基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
第1頁 / 共29頁
基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
第2頁 / 共29頁
基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
第3頁 / 共29頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、基于LAMP平臺的中學(xué)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn) 摘 要:成績管理作為中學(xué)教務(wù)管理的主要任務(wù),其自動化的實現(xiàn)將對中學(xué)信息化建設(shè)有極大推動作用。本系統(tǒng)考慮到基層中學(xué)的實際情況,基于LAMP平臺對系統(tǒng)各功能模塊進(jìn)行設(shè)計,使用PHP結(jié)合MysQL數(shù)據(jù)庫,建立用戶身份驗證機(jī)制,實現(xiàn)成績錄入、修改和查詢等成績管理基本功能。著重設(shè)計了成績分析功能,實現(xiàn)對班級整體成績的分析,能快速統(tǒng)計并顯示各分?jǐn)?shù)段學(xué)生名單,并以直觀的條形圖形式展示總體成績情況。針對個人成績分析,系統(tǒng)利用PHP動態(tài)生成圖像技術(shù)生成學(xué)生個人成績波動折線圖,對學(xué)生個人某一學(xué)科多次考試成績進(jìn)行縱向比較。系統(tǒng)能有效幫助教師或?qū)W生根據(jù)成績數(shù)

2、據(jù)調(diào)整教學(xué)方法或?qū)W習(xí)方法。運(yùn)行結(jié)果表明,系統(tǒng)穩(wěn)定、安全、可靠,基本實現(xiàn)預(yù)先設(shè)計的功能。 關(guān)鍵詞:成績管理 PHP MySQL 數(shù)據(jù)分析 教學(xué)輔助 1 引言 辦公自動化在信息時代已成為必然趨勢,近幾年隨著硬件成本降低,個人計算機(jī)普及,使得越來越多基層中學(xué)有條件由傳統(tǒng)手工辦公方式轉(zhuǎn)為電子自動化辦公的新方式。教務(wù)管理是學(xué)校日常管理的重要組成部分,據(jù)筆者調(diào)研發(fā)現(xiàn),學(xué)生成績管理是中學(xué)教務(wù)管理的主要任務(wù),成績管理自動化能使教務(wù)管理工作更加高效,方便各職能部門協(xié)同作業(yè)[1],加快校園信息化建設(shè)步伐;能更加準(zhǔn)確、科學(xué)的反映學(xué)生學(xué)習(xí)情況,為學(xué)校課程的調(diào)整和設(shè)置提供有效數(shù)據(jù);能讓基層中學(xué)教師更

3、方便管理和分析學(xué)生成績;能讓學(xué)生通過查看分析圖表更直觀了解自己成績的變化情況。 Excel等數(shù)據(jù)管理分析軟件能為中學(xué)成績管理提供較好的解決方案。但處于由手工到自動化的轉(zhuǎn)型期的很多基層中學(xué)教師,由于計算機(jī)基礎(chǔ)較差,未能使用Excel在數(shù)據(jù)管理分析方面出色的功能。而Excel等軟件由于桌面軟件固有的局限性,不方便學(xué)校對學(xué)生成績進(jìn)行統(tǒng)一管理。 當(dāng)前,全國各高?;旧隙加凶约旱慕虅?wù)管理軟件,為學(xué)校統(tǒng)一管理學(xué)生成績提供有效的解決方案。如筆者所在的陜西師范大學(xué)所使用的由某軟件公司開發(fā)的教務(wù)管理系統(tǒng),該系統(tǒng)由校方向軟件公司定制,由專業(yè)團(tuán)隊負(fù)責(zé)開發(fā)并維護(hù)。系統(tǒng)基于B/S架構(gòu),有豐富的教務(wù)管理功能,實現(xiàn)了高

4、校適用的選課管理、學(xué)分管理、成績管理等功能。但高校所使用的教務(wù)管理軟件相對基層中學(xué)而言成本太高,又因系統(tǒng)過于龐大導(dǎo)致維護(hù)工作量大,而一般基層中學(xué)地處偏遠(yuǎn),沒有專業(yè)人員負(fù)責(zé)維護(hù)。另一方面,這類系統(tǒng)所實現(xiàn)的功能如選課管理等在當(dāng)前中學(xué)并不需要,中學(xué)教務(wù)管理的主要任務(wù)是成績管理,高校的教務(wù)管理系統(tǒng)普遍沒有對成績管理和分析功能進(jìn)行深入研究。 一些硬件設(shè)施條件較好的中學(xué)已經(jīng)部署教務(wù)管理相關(guān)軟件,這類系統(tǒng)軟件大多由當(dāng)?shù)匾?guī)模較小的軟件公司開發(fā),沒有遵循基本的軟件工程方法,隨意堆積代碼,以最快的開發(fā)方式(無論系統(tǒng)設(shè)計是否符合規(guī)范)低價格出售給基層中學(xué)使用,有數(shù)據(jù)安全隱患[2],可能會導(dǎo)致不可預(yù)知的、難以維護(hù)的

5、錯誤。在成績分析方面這類系統(tǒng)沒有實現(xiàn)或沒有做深入研究,只有成績錄入、修改等基本功能,未對學(xué)生成績數(shù)據(jù)進(jìn)行挖掘研究[3],不能實現(xiàn)對學(xué)生成績進(jìn)行科學(xué)分析后,以科學(xué)的數(shù)據(jù)幫助教師改進(jìn)教學(xué)方法,幫助學(xué)生改進(jìn)學(xué)習(xí)方法。 本系統(tǒng)基于LAMP平臺,即使用Apache作為Web服務(wù)器,在Linux環(huán)境下,以MysQL為后臺數(shù)據(jù)庫支持,以PHP為后臺腳本語言,嚴(yán)格遵從軟件工程開發(fā)方法,為中學(xué)學(xué)生成績管理提出有針對性的解決方案。系統(tǒng)基于B/S架構(gòu),可多地域任意時間段訪問,方便學(xué)校和教師統(tǒng)一管理成績。對系統(tǒng)界面進(jìn)行優(yōu)化,加強(qiáng)人機(jī)交互,方便計算機(jī)水平較低的教師使用。因LAMP平臺開源技術(shù)[4]特點,系統(tǒng)具有開發(fā)成

6、本及硬件成本低、穩(wěn)定可靠、跨平臺等特點。使用功能模塊化設(shè)計,后期維護(hù)方便,有良好的可擴(kuò)展性,可作為中學(xué)教務(wù)管理系統(tǒng)的子系統(tǒng)[5]。系統(tǒng)實現(xiàn)了有安全訪問控制[6]的用戶身份驗證機(jī)制,分為教師管理后臺和學(xué)生瀏覽前臺界面。在實現(xiàn)基本的成績錄入、修改和查詢等基本功能的前提下,對成績分析模塊進(jìn)行了深入研究,實現(xiàn)從數(shù)據(jù)庫獲取數(shù)據(jù)并動態(tài)生成相應(yīng)成績分析圖表,一方面能直觀反映整體成績情況,另一方面能以圖表的方式更直觀的反映各個學(xué)生的個人成績波動情況[7]。 2 系統(tǒng)開發(fā)的關(guān)鍵技術(shù) 2.1 LAMP平臺 LAMP是Linux+Apache+MySQL+PHP網(wǎng)站架構(gòu)的通用縮寫,是目前國際流行的Web框架

7、,該框架包括:Linux操作系統(tǒng),Apache網(wǎng)絡(luò)服務(wù)器,MySQL數(shù)據(jù)庫,PHP后臺腳本編程語言,框架所有組成產(chǎn)品均是開源軟件。與微軟的.NET架構(gòu)相比,LAMP具有通用、跨平臺、高性能、低價格等優(yōu)勢,與Java/J2EE架構(gòu)相比,LAMP具有Web資源豐富、輕量、快速開發(fā)等特點,因此無論是從性能、質(zhì)量還是開發(fā)成本上考慮,LAMP平臺都是實現(xiàn)中學(xué)學(xué)生成績管理系統(tǒng)的首選[8],以下對該平臺各個組成部分作簡要介紹。 (1)GPL版權(quán)聲明:GPL授權(quán)是開源技術(shù)得以發(fā)展壯大的原因之一,LAMP平臺的組成軟件幾乎都使用GPL版權(quán)聲明。GPL全稱為General Public License,即通用公

8、共許可證,有GPL版權(quán)聲明的軟件即是通常所說的“自由軟件”,GPL的創(chuàng)立者史托曼(Richard Mathew Stallman)對“自由”的定義是:用戶可以自由執(zhí)行、復(fù)制、再發(fā)行、學(xué)習(xí)、修改與強(qiáng)化自由軟件。正是因為這一開放精神,使得遍布世界各地的工程師們組成一個技術(shù)力量雄厚的“虛擬團(tuán)隊”,不斷對自由軟件源碼查找漏洞進(jìn)一步完善,使得自由軟件具有安全性好、執(zhí)行效率高等顯著特點。當(dāng)然,并不是任何自由軟件都是完全免費,事實上自由軟件是可以銷售的,只是不能僅僅銷售軟件,還需搭配相應(yīng)的售后服務(wù)。如目前有很多Linux開發(fā)商在銷售各種Linux發(fā)行版,但他們不能僅僅銷售Linux系統(tǒng),還需給用戶提供特定的

9、技術(shù)升級服務(wù)。 (2)Linux:Linux是類Unix開源系統(tǒng),內(nèi)核原型是由托瓦茲(Linus Torvalds)于1991年基于GPL版權(quán)聲明發(fā)布。由于使用GPL授權(quán),自Linux發(fā)行以來很多優(yōu)秀工程師不斷對其核心進(jìn)行改善,對硬件的兼容性比Unix系統(tǒng)好,且很好繼承了Unix系統(tǒng)良好性能,使Linux擁有很高的穩(wěn)定性、完全性,是當(dāng)前眾多企業(yè)搭建Web站點服務(wù)器的首選平臺。Linux有很多發(fā)行版本,本系統(tǒng)所選用的CentOS(Community Enterprise Operating System)是Linux發(fā)行版之一,CentOS源代碼與著名的商業(yè)Linux系統(tǒng)RHEL(Red Ha

10、t Enterprise Linux)相同,擁有與RHEL相當(dāng)?shù)母叻€(wěn)定性。RHEL、SUSE LE等Linux企業(yè)版,提供的后期升級服務(wù)均是收費,無法免費在線升級,而CentOS是由開源社區(qū)開發(fā),免費提供升級服務(wù),因此成績管理系統(tǒng)用CentOS替代RHEL做服務(wù)器。 (3)Apache:Apache是目前世界使用最多的Web服務(wù)器,使用率超過60%。它是自由軟件,開發(fā)人員可以根據(jù)自己的需要對相關(guān)模塊進(jìn)行改寫,有良好的可擴(kuò)展性。另外,Apache可以兼容Linux和Windows等主流平臺,以其輕量、運(yùn)行速度快和穩(wěn)定[9-10]等特點深受Web開發(fā)人員喜愛。 (4)MySQL:MySQL是使

11、用GPL授權(quán)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),兼容Windows和Linux系統(tǒng)。在GPL許可下,可以免費使用,在商業(yè)許可下,其費用也很少。相比于價格昂貴的Mircrosoft SQL Server、Orcal等關(guān)系數(shù)據(jù)庫管理系統(tǒng),MySQL大大減少了系統(tǒng)成本,而它擁有高性能、可跨平臺、使用和管理方便、運(yùn)行速度快、安全可靠性高等優(yōu)點,可以高效地存儲、搜索、排序和檢索數(shù)據(jù)[11]。本系統(tǒng)使用MySQL作后臺數(shù)據(jù)庫支持軟件,在降低系統(tǒng)成本的同時,能方便、高效的對學(xué)生成績數(shù)據(jù)進(jìn)行管理和分析[12]。 (5)PHP:PHP是服務(wù)器端解釋腳本編程語言,是開放源代碼的自由軟件,專門為Web開發(fā)設(shè)計,是

12、目前最流行的Web編程腳本語言之一,與JSP、ASP、ASP.NET相比具有簡易性、高安全性、開發(fā)速度快和執(zhí)行靈活等優(yōu)點[13]。由于PHP是自由軟件,其網(wǎng)絡(luò)資源豐富,基于PHP的開發(fā)框架[14]眾多,如較為成熟的Smarty,Yii和Zend Framework等。本系統(tǒng)的實現(xiàn)主要使用PHP作為后臺腳本編寫語言,結(jié)合MySQL數(shù)據(jù)庫實現(xiàn)了成績管理和分析等相關(guān)功能[15]。 2.2 框架與布局 系統(tǒng)嚴(yán)格遵循軟件工程方法,使用分層設(shè)計[16],保證系統(tǒng)安全性,方便系統(tǒng)維護(hù)及擴(kuò)展。頁面布局全部采用DIV+CSS技術(shù),便于系統(tǒng)重構(gòu)。 2.2.1 系統(tǒng)框架 為了使開發(fā)更加高效,系統(tǒng)安全穩(wěn)定,

13、后期維護(hù)簡單、方便,系統(tǒng)綜合采用多種分層技術(shù)構(gòu)造框架。在目錄結(jié)構(gòu)上,按照組件、邏輯、內(nèi)容和源代碼庫將目錄分成多個部分,目錄結(jié)構(gòu)圖如圖1所示。整個系統(tǒng)包含于SRMS目錄,其它組件存放于SRMS的子目錄。公共可訪問的文件如系統(tǒng)登錄首頁login.php等頁面存放在pulic_files目錄,另外,在public_files專門下創(chuàng)建css、img和js分別存放樣式代碼、系統(tǒng)使用的圖像及Javascript文件。lib文件存放系統(tǒng)運(yùn)行過程中會調(diào)用的庫文件,sql是使用SQL語句操作數(shù)據(jù)庫的相關(guān)文件。 圖 1 系統(tǒng)目錄結(jié)構(gòu) Fig.1 System’s Directory Structure

14、 除了目錄結(jié)構(gòu)分層設(shè)計外,代碼也使用了代碼分解技術(shù)。將各個功能模塊的代碼分解,構(gòu)造相關(guān)函數(shù),再通過函數(shù)調(diào)用實現(xiàn)相關(guān)功能。這樣避免了單段代碼過長,使代碼容易閱讀,易于理解,方便代碼重用,避免重復(fù)編寫大量代碼,提高系統(tǒng)開發(fā)速度。系統(tǒng)在實現(xiàn)過程中多處使用該技術(shù)。例如,在系統(tǒng)中多處需要連接數(shù)據(jù)庫,可以在lib目錄下創(chuàng)建專門連接數(shù)據(jù)庫的函數(shù)db_fns.php,代碼如下:

15、nnect() { $result = new mysqli(localhost, srmsuser, 120587, srms); if (!$result) { throw new Exception(連接數(shù)據(jù)庫失??!); } else { return $result; } } ?> 該函數(shù)能拋出錯誤信息,在需要連接數(shù)據(jù)庫的頁面使用require_once(db_fns.php);包含該函數(shù),再使用$conn = db_connect();便能取得數(shù)據(jù)庫連接句柄。為了更加便于函數(shù)調(diào)用,把常用的函數(shù)全部包含于functions.

16、php文件,如下所示:

17、er_auth_fns.php); //用戶身份驗證相關(guān)函數(shù) require_once(db_fns.php); //數(shù)據(jù)庫連接函數(shù) require_once(teacher/teacher.php); //教師后臺管理界面 require_once(student/student.php); //學(xué)生瀏覽界面 ?> 在其它頁面只需寫一行代碼:require_once(functions.php);就能實現(xiàn)在頁面中調(diào)用特定函數(shù)。 在設(shè)計系統(tǒng)框架時還使用了邏輯和內(nèi)容分離技術(shù),即PHP與HTML分離。將邏輯從內(nèi)容分離、內(nèi)容從外觀分離可以使系統(tǒng)更易于長期使用和維護(hù)

18、。系統(tǒng)把常用的顯示內(nèi)容的HTML代碼存放于output.php文件里,其中代碼類似于下面代碼:

在需要輸出內(nèi)容的頁面以如下代碼所示的方式直接調(diào)用函數(shù)即可:

19、; //主體的頭部 do_text($e->getMessage()); //獲取錯誤信息 do_html_url(../public_files/login.php, 重新登錄); //創(chuàng)建超鏈接 do_html_url(../public_files/register_form.php, 注冊); do_html_main_footer(); //主體內(nèi)容結(jié)束 do_html_footer1(); //顯示頁面頁腳信息 ?> 2.2.2 用DIV+CSS布局頁面 傳統(tǒng)的網(wǎng)頁布局方式一般采用表格,但層疊樣式表CSS出現(xiàn)后,以其在Web頁面外觀控制上的

20、優(yōu)越性能迅速取代了傳統(tǒng)的布局方式,目前幾乎所有站點都使用CSS布局頁面。使用CSS技術(shù)能將內(nèi)容和外觀分離,使得開發(fā)人員可以更加專注于后臺內(nèi)容開發(fā),外觀由專門負(fù)責(zé)界面設(shè)計的前端設(shè)計師設(shè)計,這有利于系統(tǒng)的邏輯和內(nèi)容研發(fā),而由專業(yè)界面設(shè)計人員負(fù)責(zé)外觀,人機(jī)交互會更好。即便如這個系統(tǒng)一樣開發(fā)和布局都由一個人完成,也容易系統(tǒng)的后期維護(hù)和長期使用。在布局頁面時使用HTML的塊元素div配合CSS使用,還能達(dá)到傳統(tǒng)表格無法完成的效果。本系統(tǒng)專門建立存放CSS文件的目錄,在目錄下為不同頁面的布局創(chuàng)建不同的布局文件。如系統(tǒng)登錄首頁的布局文件為login.css,在login.php頁面的頭部標(biāo)簽

21、head>里加上一行代碼:即可配合使用login.css文件定義的布局。系統(tǒng)利用CSS,使首頁的登錄框于頁面居中,如圖2所示。 圖 2 系統(tǒng)登錄首頁界面 Fig.2 System’s Login Page 該頁面能在瀏覽器窗口大小調(diào)動情況下始終居中,實現(xiàn)該功能的主要CSS代碼如下: #login_form { width:280px; height:170px; position:absolute

22、; /*隨著瀏覽器大小的改變,頁面始終居中*/ left:50%; top:50%; margin-left:-140px; margin-top:-85px; } 3 系統(tǒng)設(shè)計 在確定系統(tǒng)框架及頁面布局使用的技術(shù)后,對系統(tǒng)進(jìn)行總體設(shè)計。本系統(tǒng)設(shè)計分為兩個部分:系統(tǒng)功能模塊設(shè)計和數(shù)據(jù)庫設(shè)計。它們在系統(tǒng)流程圖(圖3)框架下進(jìn)行設(shè)計。 圖 3 系統(tǒng)流程圖 Fig.3 System’s Flowchart 3.1 系統(tǒng)功能模塊設(shè)計 使用模塊化設(shè)計,按功能將系統(tǒng)分為幾個模塊分別進(jìn)行編碼,各模塊編碼實現(xiàn)后再整合調(diào)試,提高代碼重用,使系統(tǒng)邏輯更為清晰,便于后期

23、維護(hù)和功能擴(kuò)展。系統(tǒng)最主要的兩個模塊分別是教師管理后臺和學(xué)生可瀏覽的前臺。這兩個模塊均使用HTML的frame框架布局,利用用戶身份驗證機(jī)制為特定用戶顯示個性化界面,模塊與模塊之間存在相互調(diào)用關(guān)系。 3.1.1 前臺功能模塊 系統(tǒng)前臺包括系統(tǒng)登錄首頁、用戶注冊、重置密碼、修改密碼及錯誤提示頁面,這些頁面都使用DIV+CSS控制外觀,除登錄頁面單獨使用login.css進(jìn)行布局外,其它頁面都通過給各自的div塊元素定義不同的id或class來使用同一個CSS文件layout.css進(jìn)行布局,便于維護(hù)。還通過命名相同的class,共用某個樣式,使界面風(fēng)格統(tǒng)一,減少編寫CSS樣式代碼工作量。前臺

24、功能模塊中最重要的是學(xué)生用戶可以瀏覽的成績管理模塊。該模塊的框架如圖4所示: 圖 4 學(xué)生界面框架 Fig.4 The Frame of Student’s Page 學(xué)生從首頁登錄系統(tǒng),由身份識別系統(tǒng)對學(xué)生的身份屬性進(jìn)行識別,系統(tǒng)自動導(dǎo)向?qū)W生界面。 學(xué)生界面由兩大模塊及大模塊下的相關(guān)小模塊組成。用戶識別模塊可識別學(xué)生身份,針對不同的學(xué)生顯示與“歡迎陳建康同學(xué)”相類似的個性化信息,該模塊還將集成注銷登錄及修改密碼功能。成績管理模塊有查詢成績功能和分析成績功能。在查詢功能中,學(xué)生用戶可按學(xué)科快速查詢該學(xué)科總體成績。在分析成績功能中,學(xué)生可按學(xué)科和考

25、試時間查看班級整體成績分析情況,包括平均分、各分?jǐn)?shù)段人數(shù)及該分?jǐn)?shù)段學(xué)生名單,能通過圖表直觀查看分析結(jié)果。通過整體分析功能進(jìn)行成績橫向比較,讓學(xué)生了解自己當(dāng)次考試成績在班級的位置,及時調(diào)整自己的學(xué)習(xí)計劃和心態(tài)。另外,作為本系統(tǒng)最重要的功能,學(xué)生可通過分析成績模塊中的個人分析功能對自己某學(xué)科的成績進(jìn)行縱向比較,通過查看系統(tǒng)自動生成的有數(shù)據(jù)描點的折線圖了解自己幾次考試成績的波動情況,以數(shù)據(jù)為依據(jù),聯(lián)系學(xué)生生活實際,分析自己在某一時間段內(nèi)成績上升或下滑的具體原因,為保持一個良好的學(xué)習(xí)狀態(tài)制定周詳?shù)膶W(xué)習(xí)計劃。 3.1.2 后臺功能模塊 教師管理后臺模塊與學(xué)生的前臺界面相類似,在系統(tǒng)開發(fā)時通過代碼復(fù)用

26、及函數(shù)調(diào)用實現(xiàn)相同功能。教師管理后臺模塊的框架圖如圖5所示: 圖 5 教師管理后臺框架 Fig.5 The Teacher Admin Frame 系統(tǒng)對教師身份進(jìn)行識別后,將在用戶識別模塊顯示“歡迎盧俊嶺老師”一類個性化信息。其它模塊功能與學(xué)生前臺界面相似。在教師管理后臺模塊中,主要增加了錄入成績和修改成績功能。只允許教師從后臺對成績進(jìn)行錄入和修改操作,學(xué)生沒有修改成績的權(quán)限,這保證了系統(tǒng)的可靠性。在錄入成績模塊中,教師能夠非常直觀的、簡便的按照學(xué)科及考試月份對全班學(xué)習(xí)成績進(jìn)行錄入工作,錄入成功后系統(tǒng)立即返回錄入結(jié)果,如果發(fā)現(xiàn)有錄入錯誤,使用修改成績功能修改。在修改成績模塊中,同樣

27、按照學(xué)科及相應(yīng)考試月份進(jìn)行修改,修改時,系統(tǒng)可顯示成績修改前的數(shù)據(jù),方便修改,修改成功后立即返回修改后的成績表。 教師通過使用教師管理后臺,能便捷的對學(xué)生成績進(jìn)行錄入、修改和查詢等基本管理。系統(tǒng)還能幫助教師實現(xiàn)對學(xué)生成績的分析。通過對本班整體成績的分析,了解各個分?jǐn)?shù)段的人數(shù),針對不同分?jǐn)?shù)段的學(xué)生采取不同的指導(dǎo)方式,以求取得更好的成績。對比多次考試平均分,了解教師在某段時間教學(xué)上的狀態(tài),以科學(xué)的數(shù)據(jù)指導(dǎo)自己教學(xué)方法的改進(jìn)。另外,還可通過分析學(xué)生個人成績波動情況,對個別學(xué)生進(jìn)行有針對性的指導(dǎo)。 3.2 數(shù)據(jù)庫設(shè)計 系統(tǒng)中所使用的數(shù)據(jù)全部使用數(shù)據(jù)庫存儲,方便統(tǒng)一管理數(shù)據(jù),結(jié)合PHP和MysQL

28、數(shù)據(jù)庫,可以實現(xiàn)對數(shù)據(jù)進(jìn)行分析。系統(tǒng)以功能為驅(qū)動,遵行數(shù)據(jù)庫設(shè)計規(guī)范,對該系統(tǒng)需要使用的教師和學(xué)生數(shù)據(jù)建模,系統(tǒng)的分析各個數(shù)據(jù)之間的關(guān)系,避免數(shù)據(jù)庫保存冗余數(shù)據(jù),為每個表選擇有意義的主鍵。最后構(gòu)造的數(shù)據(jù)庫模型圖如圖6所示: 圖 6 SRMS數(shù)據(jù)庫模型 Fig.6 SRMS Database Moduel 在SRMS數(shù)據(jù)庫里創(chuàng)建如模型所示的7張數(shù)據(jù)表。teacher和student表分別記錄教師和學(xué)生的id(學(xué)號或工號)、名字、密碼和email,兩張數(shù)據(jù)表的結(jié)構(gòu)如圖7所示。用id字段作為表的主鍵,id,name,passwd和email

29、的值均不能缺省,如果允許缺省可能會導(dǎo)致數(shù)據(jù)冗余,因為只有學(xué)號沒有學(xué)生姓名或只有教師名字沒有別的相關(guān)信息這種情況是不允許存在。 圖7 student和teacher表結(jié)構(gòu) Fig.7 The Structure of Student and Teacher’s Database Table yw、sx、yy、wl、hx分別存放學(xué)生語文、數(shù)學(xué)、英語、物理、化學(xué)成績數(shù)據(jù)。為了把更多精力放在分析功能的設(shè)計上,系統(tǒng)僅以5個學(xué)科4次考試成績這個簡單的模型作為系統(tǒng)開發(fā)的測試數(shù)據(jù),作為測試模型,該方法是可行的。這5個表的結(jié)構(gòu)如圖8所示,sid是學(xué)生學(xué)號,是其所處關(guān)系的外鍵,當(dāng)查詢數(shù)據(jù)

30、時,可利用外鍵,引用student表的數(shù)據(jù),達(dá)到同時顯示學(xué)生學(xué)號、姓名和成績目的,避免了空間的浪費。記錄成績的字段皆設(shè)置為float浮點型數(shù)據(jù),以中學(xué)實際成績?yōu)橐罁?jù),設(shè)置為5位有效數(shù)字,精確到小數(shù)后兩位,在教師錄入數(shù)據(jù)時,對錄入數(shù)據(jù)的最大值做限定。 圖 8 成績表結(jié)構(gòu) Fig.8 The Structure of Score’s Database Table 4 系統(tǒng)功能模塊的實現(xiàn) 系統(tǒng)所有功能模塊以成績管理模塊為核心,為提供安全、穩(wěn)定、方便可用、可維護(hù)性好的成績管理模塊而進(jìn)行設(shè)計并實現(xiàn)。 4.1 成績管理模塊的實現(xiàn) 成績管理模塊是本系統(tǒng)的核心,該模塊的

31、實現(xiàn)分為成績的錄入、修改和查詢基本操作部分及對成績分析功能的深度研發(fā)部分。模塊的實現(xiàn)主要是利用PHP腳本語言結(jié)合MySQL對數(shù)據(jù)進(jìn)行查詢和分析。此外,對該模塊使用界面優(yōu)化技術(shù),使教師和學(xué)生更容易使用本系統(tǒng)。 4.1.1 成績管理的基本操作 成績管理的基本操作分為錄入、修改和查詢3個部分,在教師管理后臺可使用全部功能,學(xué)生界面去掉錄入、修改成績功能,查詢功能為教師管理后臺和學(xué)生前臺界面所共用。 (1)錄入成績:錄入成績需按學(xué)科和考試月份進(jìn)行錄入,通過表單傳遞學(xué)科和月份信息,創(chuàng)建insert_form.php文件作為學(xué)科和月份信息選擇頁面,主要代碼如下:

請選擇學(xué)科: 請選擇考試月份:

33、 name="month">

頁面顯示結(jié)果如圖9所示: 圖9 成績錄入選擇表單 Fig.9 The Select Form of Insert Score Page 點擊“開始錄入”后,表單將以post

34、方式向insert.php頁面?zhèn)鬟fcourse和month相對應(yīng)的值。在insert.php頁面中,使用: $course = $_POST[course]; $month = $_POST[month]; 從全局?jǐn)?shù)組$_POST里接受數(shù)據(jù),并分別創(chuàng)建短變量名$course和$month,便于程序中其它地方使用。 在insert.php頁面中,首先使用require_once(../db_fns.php);包含數(shù)據(jù)庫連接函數(shù),在頁面中以$conn = db_connect();實例化php的mysqli類,創(chuàng)建到數(shù)據(jù)庫的連接。成績的錄入以表格形式(見圖10)顯示錄入框,該系統(tǒng)在創(chuàng)建這類

35、表格時大量使用了動態(tài)顯示表格技術(shù),根據(jù)數(shù)據(jù)庫記錄的實際數(shù)據(jù)顯示表格的行數(shù)。實現(xiàn)這一功能的主要代碼如下: $conn = db_connect(); $result = $conn->query("select * from student order by id asc"); fetch_object()) { ?>

36、stu->id;?> name;?> 圖10 成績錄入表格 Fig.10 The Table of Insert Score Page 循環(huán)條件里的$result->fetch_object()在每次循環(huán)時以給$

37、stu賦值,在每個循環(huán)體里使用對象屬性值生成特定的表格行。另外,在表單中還設(shè)置一些標(biāo)簽的type設(shè)置為“hidden”以隱藏的方式向insert.php頁面?zhèn)髦?,從而使在前端如圖10的頁面中并沒有看到使用hidden的input元素,但能夠向指定頁面?zhèn)鬟f數(shù)據(jù)。insert.php頁面僅僅完成成績數(shù)據(jù)收集工作,真正往數(shù)據(jù)庫里寫入數(shù)據(jù)的操作是在insert_fns.php,主要的代碼如下: if ($month == "ks1") { $sql = "insert into ".$course." (sid,".$month.") values "; //構(gòu)造插入SQ

38、L語句 for ($i=0;$i<$count;$i++) { if($sid[$i]!= and $result[$i]!= ) { $sql .= "(".$sid[$i].", ".$result[$i]."),"; $rows++; } } //去掉原$sql后的","符號,query()里最后不能有“,” if ($rows>0) { $sql = substr($sql,0,strlen($sql)-1); $conn->query($sql); } 當(dāng)選擇的月份是1月份時會執(zhí)行上述代

39、碼,使用for循環(huán)創(chuàng)建SQL查詢語句,使用insert關(guān)鍵字把學(xué)生成績插入到數(shù)據(jù)庫中。該技術(shù)結(jié)合循環(huán)實現(xiàn)批量查詢數(shù)據(jù),這一技術(shù)在本系統(tǒng)其它地方也多次使用,能利用數(shù)組及程序控制,實現(xiàn)批量向數(shù)據(jù)庫錄入數(shù)據(jù)。導(dǎo)入完數(shù)據(jù)后,使用select語句,立即返回錄入結(jié)果。 (2)修改成績:修改成績的實現(xiàn)方法與錄入成績大致類似,使用SQL里的update關(guān)鍵字對數(shù)據(jù)進(jìn)行修改。從update_form.php頁面選擇需要修改的學(xué)科及考試月份,使用表單的post方式向update.php頁面?zhèn)鬟fcourse和month兩個變量信息,update.php根據(jù)變量的不同,自動生成相應(yīng)行數(shù)的成績修改表格,最后再由upd

40、ate_fns.php更新數(shù)據(jù)庫中相應(yīng)數(shù)據(jù)表的數(shù)據(jù),并返回修改后的成績。在生成修改成績輸入表時,update.php使用了一個關(guān)鍵技術(shù),使得教師可以看到未修改前的成績,如圖11所示: 圖11 修改成績表格 Fig.11 The Table of Update Score Page 該技術(shù)實現(xiàn)的關(guān)鍵代碼如下: 使input元素有默認(rèn)值,即當(dāng)教師進(jìn)行修改時,表格會顯示數(shù)據(jù)庫中記

41、錄的原來的成績值,當(dāng)往表單元素input重新賦值時,新值會更新到數(shù)據(jù)庫中,這大大方便了教師進(jìn)行成績的修改。 (3)查詢成績:成績錄入和修改的實現(xiàn)已經(jīng)涉及成績查詢功能,查詢功能的實現(xiàn)較為簡單,單獨以功能模塊的形式來完成該功能其一是為了便于教師更快速的查詢到相應(yīng)成績,其二是學(xué)生前臺可以通過查詢的方式查看成績。無論是教師管理后臺還是學(xué)生的前臺,默認(rèn)的顯示頁面就是查詢功能,如圖12所示。 圖12 系統(tǒng)默認(rèn)顯示界面 Fig.12 The Default Display Interface 4.1.2 成績分析

42、成績分析是成績管理模塊的核心,分為整體分析和個人分析兩部分。系統(tǒng)使用PHP調(diào)用MySQL中的成績數(shù)據(jù),分別對班級總體成績情況和各個學(xué)生的成績波動情況進(jìn)行了分析,并將所獲取的數(shù)據(jù)動態(tài)生成圖表,直觀明了的表現(xiàn)整體及個人的成績水平,以方便快捷的方式為教師改進(jìn)教學(xué)方法和學(xué)生調(diào)整學(xué)習(xí)計劃提供科學(xué)的數(shù)據(jù)。 (1)整體分析:整體分析是以班級為研究對象,按學(xué)科按考試月份分析。如圖13所示,在顯示各分?jǐn)?shù)段學(xué)生名單的同時,整體分析功能還列出了班級該學(xué)科當(dāng)次考試總體成績情況表。分?jǐn)?shù)段劃分為不及格(小于60分)、60以上、70以上、80以上、90以上共5個分?jǐn)?shù)段,在選定學(xué)科及考試月份情況下,系統(tǒng)自動顯示5個分?jǐn)?shù)段學(xué)

43、生名單,便于教師查看處在某一分?jǐn)?shù)段的學(xué)生群體,對不同分?jǐn)?shù)段的學(xué)生群體根據(jù)實際情況作有針對性的輔導(dǎo)和幫助。學(xué)生也可通過該功能了解與自己同處一分?jǐn)?shù)段的同學(xué)都是哪些,比自己成績更出色的還有哪些同學(xué),找準(zhǔn)自己在班級里成績水平的位置,通過與那些相對自己處在更高分?jǐn)?shù)段的同學(xué)對比,評估自己成績應(yīng)該能夠達(dá)到的高度,進(jìn)而調(diào)整學(xué)習(xí)計劃,實現(xiàn)自己的預(yù)期目標(biāo)。此外,系統(tǒng)還通過自動生成總體成績情況表,列出平均分及各分?jǐn)?shù)段學(xué)生人數(shù),讓教師和學(xué)生更易把握該學(xué)科當(dāng)次考試的總體情況,該情況分析表還可以選擇以如圖14所示的條形圖方式顯示,這個條形圖比表格更直觀的反應(yīng)了各分?jǐn)?shù)段人數(shù)所占的比例。 圖

44、13 整體分析圖 Fig.13 The Overall’s Analysis Chart 圖14 總體情況條形圖 Fig.14 The Overall’s Bar Chart 整體分析功能的實現(xiàn)重用了部分成績管理的基本操作模塊里的功能,學(xué)科和考試月份的選擇功能與基礎(chǔ)操作部分相似,都是利用表單向服務(wù)器傳遞數(shù)據(jù)。整體分析的具體實現(xiàn)在all_analyse.php頁面完成。首先創(chuàng)建相應(yīng)的SQL查詢語句,從數(shù)據(jù)庫中獲取對應(yīng)分?jǐn)?shù)段的學(xué)生名單,如取得某學(xué)科1月份考試成績大于等于80的學(xué)生名單的主要代碼如下: $conn = db_conne

45、ct(); $sql = "select id , name , ".$month." from student , ".$course." where student.id = ".$course.".sid and ".$course.".".$month." >= 80 order by ".$month." desc" ; $result = $conn->query($sql); 在這段代碼中,創(chuàng)建SQL查詢語句時使用外鍵關(guān)聯(lián)兩個數(shù)據(jù)表,從student表和選定的學(xué)科course對應(yīng)的表中獲取數(shù)據(jù),在查詢數(shù)據(jù)時使用相關(guān)SQL子句獲取特定條件的數(shù)據(jù),如and

46、 ".$course.".".$month." >= 80使所獲取的成績數(shù)據(jù)必須大于或等于80。然后還需對所獲取的數(shù)據(jù)進(jìn)行排序,order by ".$month." desc表示結(jié)果以成績值的大小遞減排序。最后,以表格的形式動態(tài)顯示數(shù)據(jù)來顯示最終結(jié)果,效果如圖15所示。其它分?jǐn)?shù)段實現(xiàn)的方法與此類似。 圖15 在某一分?jǐn)?shù)段學(xué)生名單 Fig.15 List of Students in A Fraction of The Segment 另外,在使用SQL語句查詢數(shù)據(jù)并獲得特定分?jǐn)?shù)段的名單后,可調(diào)用數(shù)據(jù)對象$result的num_rows成員

47、獲取當(dāng)前分?jǐn)?shù)段的記錄行數(shù),即學(xué)生總數(shù)。如使用$totalNum = $result->num_rows;把符合條件的學(xué)生總數(shù)記錄在變量$totalNum中,然后把所有統(tǒng)計出來的各分?jǐn)?shù)段人數(shù)據(jù)制作成如圖16所示的表格。 圖16 總體情況表格 Fig.16 Overall Form 點擊圖16中的“查看圖表”,可顯示如圖14所示的條形圖,該條形圖是由PHP創(chuàng)建的動態(tài)圖像,相關(guān)技術(shù)實現(xiàn)見個人分析功能。 (2)個人分析:個人分析功能是以學(xué)生個人為研究對象,對其在某學(xué)科多次考試成績的波動情況進(jìn)行分析。使用整體分析功能可以實現(xiàn)對學(xué)生個人成績在班級中位置的橫向

48、比較,但整體分析未能反應(yīng)個人成績的波動情況,不利于掌握學(xué)生個人學(xué)習(xí)狀態(tài)的變化。個人分析功能利用GD2函數(shù)庫與數(shù)據(jù)庫,動態(tài)繪制反應(yīng)學(xué)生個人多次考試成績波動情況的折線圖,如圖17所示。 圖17 學(xué)生成績波動折線圖 Fig.17 The Line of Student Chievement 學(xué)生成績波動圖能根據(jù)學(xué)生的不同,動態(tài)生成以學(xué)生自己名字命名的圖表標(biāo)題,并將該學(xué)生在幾次考試的成績作為圖像有關(guān)坐標(biāo)的數(shù)據(jù),最終繪制成折線圖。實現(xiàn)該功能,首先連接數(shù)據(jù)庫,獲取學(xué)生的成績數(shù)據(jù)并以數(shù)組變量$ks存放,主要代碼如下: $conn = db_con

49、nect(); $sql = "select id, name, ks1, ks2, ks3 from student,".$course." where student.id = ".$course.".sid and student.id = ".$id.""; $result = $conn->query($sql); $rows = $result->fetch_row(); $stuNam = $rows[1]; //獲得學(xué)生姓名 $ks[] = $rows[2]; //1月份考試成績 $ks[] = $rows[3]; //2月份考試成績

50、 $ks[] = $rows[4]; //3月份考試成績 $ks[] = $rows[5]; //3月份考試成績 取得數(shù)據(jù)后,將進(jìn)行繪制圖像步驟。在實際繪圖之前,提倡先預(yù)定義在繪圖過程中需要經(jīng)常使用的參數(shù),如圖形尺寸、字體和顏色值等,這方便后期調(diào)整和修改,使用有意義的變量名,能夠使代碼更容易閱讀。在準(zhǔn)備工作做完后,使用$im = imagecreatetruecolor($width, $height);創(chuàng)建一個圖像標(biāo)識符,利用GD2圖像函數(shù)繪制圖像時必須有一個圖像標(biāo)識符。接著可以開始繪制圖像的框架: //繪制有背景顏色的畫布--給指定大小的矩形填充顏色 imagefill

51、edrectangle($im, 0, 0, $width, $height, $bg_color); //給畫布繪制外邊框 imagerectangle($im, 0,0, $width-1, $height-1, $line_color); //繪制Y軸 imageline($im, $x, $y, $x, $height-$bottom_margin, $line_color); //繪制X軸 imageline($im, $x, $height-$bottom_margin, $width-$right_margin, $height

52、-$bottom_margin, $line_color); //繪制圖表標(biāo)題 $title = $stuNam."成績變化表"; //取得文字外面的虛框。這一步主要是為了準(zhǔn)確定位標(biāo)題的位置 $title_dimensions = imagettfbbox($title_size, 0, $font, $title); $title_length = $title_dimensions[2] - $title_dimensions[0]; $title_x = ($width - $title_length) / 2; //X軸居中 $title_y = $y

53、 / 2 + 10; //Y軸居中 imagettftext($im, $title_size, 0, $title_x, $title_y, $text_color, $font, $title); //把X軸的標(biāo)識寫入X軸末端靠下位置 $title_x = "月份"; //X軸標(biāo)識 imagettftext($im, $main_size, 0, $width-$right_margin, $height-($bottom_margin/2), $text_color, $font, $title_x); //把Y軸的標(biāo)識寫入Y

54、軸頂端偏左位置 $title_y = "成績"; //Y軸標(biāo)識 //起始坐標(biāo)要對照圖形慢慢調(diào), //$left_margin/2 $y是基本的值,所加減的數(shù)字只是為了更加美觀、合理 imagettftext($im, $main_size, 0, $left_margin/2 +10, $y-18, $text_color, $font, $title_y); 以上主要完成了繪制畫布外邊框、坐標(biāo)軸和相關(guān)標(biāo)題,至此圖像的大致輪廓已經(jīng)繪制完畢。為了所繪制的折線圖更容易閱讀,表現(xiàn)更為細(xì)致,系統(tǒng)為圖像繪制了網(wǎng)格,標(biāo)出在坐標(biāo)軸上坐標(biāo)的值。在該圖像的繪制過程中,最重要的

55、是部分是折線圖的繪制,主要代碼如下: $y_length = ($height-$bottom_margin) - $y; //Y軸的總長度 for ($i=1; $i<4; $i++) { //設(shè)置前一點的Y坐標(biāo)值 $y_begin = $height-$bottom_margin - ($ks[$i-1]*$y_length)/100; //設(shè)置后一點的Y坐標(biāo)值 $y_end = $height-$bottom_margin - ($ks[$i]*$y_length)/100; imageline($im, $x

56、+ ($i-1)*200, $y_begin, $x + $i*200, $y_end, $zhexian_color); imagettftext($im, $small_size, 0, $x+($i-1)*200 + 5, $y_begin - 5, $miaodian_color, $font, $ks[$i-1]); } //補(bǔ)上最后一個描點,因為循環(huán)里沒有實現(xiàn) $i = 4; $y_begin = $height-$bottom_margin - ($ks[$i-1]*$y_length)/100; i

57、magettftext($im, $small_size, 0, $x+($i-1)*200 + 5, $y_begin - 5, $miaodian_color, $font, $ks[$i-1]); 根據(jù)圖像的尺寸及位置計算出坐標(biāo)軸原點的位置,再根據(jù)成績占滿分100分的比例與在圖像中每一點縱坐標(biāo)占總長度$y的比例相等這一原理,計算得出的數(shù)據(jù)點的縱坐標(biāo),橫坐標(biāo)以當(dāng)次成績所對應(yīng)的月份為數(shù)據(jù)。然后以該點為線段的起始坐標(biāo),以下一次考試成績數(shù)據(jù)點作為線段的終止坐標(biāo),結(jié)合循環(huán),便能繪制出折線圖,在循環(huán)里還實現(xiàn)了在數(shù)據(jù)點的右上方動態(tài)打印相對應(yīng)的成績值,便于查看圖表時理解數(shù)據(jù)。

58、通過折線圖,學(xué)生個人能清楚的看到自己成績的變化情況,結(jié)合生活實際,分析成績上升或下降的原因,總結(jié)成績上升時段自己的學(xué)習(xí)方法,以及導(dǎo)致自己成績下降時的原因,綜合得出個人提高成績的有效途徑,及時調(diào)整個人的學(xué)習(xí)計劃和狀態(tài)。教師也可以通過該功能了解學(xué)生成績,及時關(guān)心到成績波動較大的學(xué)生,幫助學(xué)生找出成績不正常波動的原因。個人分析功能無論對學(xué)生還是老師,都是有益的幫助。 4.1.3 界面優(yōu)化 為使系統(tǒng)便于使用及美觀,在實現(xiàn)成績管理各模塊過程中結(jié)合CSS對界面進(jìn)行優(yōu)化,例如在功能選擇窗口,對功能選擇菜單進(jìn)行了優(yōu)化,正常情況下功能選擇菜單如圖18所示,而當(dāng)把鼠標(biāo)移動到某一菜單上面時,字體顏色變成藍(lán)色,并

59、有向右下方輕微下沉的效果,顯示如圖19所示。 圖19 已選擇菜單 Fig.19 The Menu is Selected 圖18 未選擇菜單 Fig.18 The Menu is Not Selected 該優(yōu)化的效果使用CSS中的偽類元素:hover來控制當(dāng)鼠標(biāo)放置到a標(biāo)簽上的樣式實現(xiàn): a:hover { position:relative; top:1px; left:1px; color:blue; } 在系統(tǒng)的其它模塊也使用了該技術(shù),使系統(tǒng)美觀的同時給用戶一些提示,便于使用。 4.2 系統(tǒng)的安全性 能安全、穩(wěn)定的

60、運(yùn)行是WEB應(yīng)用程序的基本要求,同時也是非常復(fù)雜的工程,本文討論的安全性僅包括兩個方面:系統(tǒng)服務(wù)器環(huán)境和數(shù)據(jù)的安全性,其它方面的安全性考慮已超出本文的討論范圍。 4.2.1 用戶身份驗證機(jī)制和個性化設(shè)置 為防止非法用戶入侵本系統(tǒng),導(dǎo)致系統(tǒng)功能的不正常運(yùn)行,系統(tǒng)建立了較為嚴(yán)格的用戶身份驗證機(jī)制,針對不同身份的用戶,系統(tǒng)能進(jìn)行識別,把用戶導(dǎo)向教師后臺管理界面或?qū)W生界面。另外,考慮用戶未注冊或忘記密碼的情況,系統(tǒng)提供注冊新用戶及密碼重置功能,保證了系統(tǒng)的安全運(yùn)行和完整性。 圖20 系統(tǒng)登錄頁面 Fig.20 System Login Page 用戶在如圖20所示的登錄界面輸入相關(guān)信息并

61、提出登錄請求后,系統(tǒng)利用login()函數(shù)對用戶信息進(jìn)行匹配,如果數(shù)據(jù)庫中有該用戶名,并且密碼相匹配,登錄成功,否則登錄失敗,系統(tǒng)給出如圖21所示提示頁面: 圖21 登錄出錯提示頁面 Fig.21 Login Error Message Page Login()函數(shù)的實現(xiàn)代碼如下: function login($identity, $username, $passwd) { $conn = db_connect(); $db_table = identity($identity); // 檢查用戶名和

62、密碼是否匹配 $result = $conn->query("select * from ".$db_table." where name=".$username." and passwd = sha1(".$passwd.")"); if ($result->num_rows>0) { return true; } else { throw new Exception(用戶名或密碼不正確,請重新登錄); } } 在驗證用戶密碼時,為提高數(shù)據(jù)的安

63、全性,使用PHP內(nèi)置sha1()函數(shù),該函數(shù)使用哈希算法對指定字符串生成固定長度的字符串,該字符串無法使用軟件破解。用戶注冊時使用sha1()函數(shù)生成密碼字符串存儲于數(shù)據(jù)庫中,用戶登錄驗證時先將用戶輸入的密碼利用sha1()函數(shù)再次生成密碼字符串與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行匹配。如果登錄成功,使用會話控制技術(shù),用$_SESSION[valid_user] = $username;為該用戶注冊一個會話變量,利用這個會話變量對用戶進(jìn)行個性化設(shè)置,在系統(tǒng)的用戶識別模塊中顯示個人登錄信息,如圖22所示: 圖22 個性化信息 Fig.22 Personalized Informati

64、on 同樣利用會話控制技術(shù),在系統(tǒng)的其它界面中使用check_valid_user()函數(shù)檢查用戶是否登錄,函數(shù)原型如下: function check_valid_user() { if (isset($_SESSION[valid_user])) { } else { // 沒有登錄 do_html_header1(錯誤); do_html_main(你還未登錄, ../public_files/login.php, 重新登錄); do_html_footer1(); exit; } } 在這個用戶身份

65、驗證機(jī)制下,系統(tǒng)能保證為不同用戶顯示不同界面的同時,避免非法用戶使用系統(tǒng)。此外,如果出現(xiàn)用戶忘記密碼的情況,系統(tǒng)提供重置密碼功能,解決的方法是根據(jù)用戶提供的用戶名及對應(yīng)的身份在數(shù)據(jù)庫中進(jìn)行匹配,如果用戶確實已經(jīng)存在,那么利用隨機(jī)函數(shù)生成新的密碼字符串,并調(diào)用mail()函數(shù)通過用戶注冊時登記的郵箱通知用戶。實現(xiàn)的主要代碼如下: function notify_password($identity, $username, $password) { $conn = db_connect(); //連接數(shù)據(jù)庫 $db_table = identity($identity); //判

66、斷身份 $query = "select email from ".$db_table." where name=".$username.""; $result = $conn->query($query); if (!$result) { throw new Exception(沒有找到E-mail地址。); } else if ($result->num_rows == 0) { throw new Exception(用戶未注冊。); } else { $row = $result->fetch_object(); //返回當(dāng)前行 $email = $row->email; $from = "From: 學(xué)生成績管理系統(tǒng)--陳建康畢業(yè)設(shè)計作品 admin@ \r\n";

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!