版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計(論文)動態(tài)口令認(rèn)證的網(wǎng)上選課系統(tǒng)的設(shè)計與實現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:指導(dǎo)老師姓名(職稱):論文提交日期:動態(tài)口令認(rèn)證的網(wǎng)上選課系統(tǒng)的設(shè)計與實現(xiàn)摘 要將計算機引入教學(xué)信息管理已經(jīng)成為高校教學(xué)管理工作的重要內(nèi)容之一,比如實行網(wǎng)上選課。與傳統(tǒng)的選課方式相比,網(wǎng)上選課提高了學(xué)生選課效率,增加了學(xué)生選課自主權(quán),使教學(xué)更加透明,同時大大提高了教務(wù)管理工作的效率。本文設(shè)計實現(xiàn)的網(wǎng)上選課系統(tǒng)基于ASP.NET平臺進行開發(fā),后臺由SQL Server 2000數(shù)據(jù)庫支持,通過使用C#語言實現(xiàn)動態(tài)網(wǎng)頁的效果,達(dá)到對數(shù)據(jù)庫的操作以完成使用者的要求。本系統(tǒng)主要由以下幾個模塊組成:身份驗證模
2、塊;選課模塊;信息管理模塊等。用戶只需要通過瀏覽器訪問就可以實現(xiàn)選課操作,操作簡單靈活。并且本系統(tǒng)登錄時使用動態(tài)口令進行身份認(rèn)證,解決了靜態(tài)口令所遇到的很多攻擊性問題,如:網(wǎng)絡(luò)數(shù)據(jù)流竊聽、字典攻擊、窮舉攻擊等,增加了系統(tǒng)安全性。關(guān)鍵詞:網(wǎng)上選課系統(tǒng); 動態(tài)口令;C#;ASP.NETDesign and Implementation of Web-based Course Selecting System with Dynamic Password AuthenticationAbstractApplying computer to manage the teaching information
3、 is one of the important parts of the university management, such as course selecting on internet. Comparing to the traditional course selecting method, course selecting on internet saves more resources, at the same time, it enhances the students independence when choosing courses, which makes the t
4、eaching more transparent, also greatly increases the efficiency of teaching management.This paper designs a Web-based Elective System, which bases on the platform of ASP.NET; the database is SQL Server 2000. We use C# language to achieve the front page movement effect. This system mainly is composed
5、 of following several modules: ID authenticating module; course selecting module; information management module. The user just through IE explore to realize the course selecting operation, the operation is simple and flexible. This system adopts Dynamic Password to authenticate ID when login in, it
6、prevents many problems of the static password, for example Sniffer, Dictionary attack, Brute Force and so on. The Dynamic Password improves the safety of the system.Key words: Online Course Selecting System; Dynamic Password; C#; ASP.NET目 錄論文總頁數(shù):24頁1引言12理論基礎(chǔ)12.1 C#12.2 ASP.NET12.3動態(tài)口令23需求分析33.1該設(shè)計要完
7、成的功能33.2設(shè)計思路44總體設(shè)計74.1功能模塊構(gòu)造74.2功能模塊具體介紹84.2.1身份驗證模塊84.2.2信息管理模塊84.2.3選課模塊84.3 E-R圖94.4數(shù)據(jù)庫設(shè)計95詳細(xì)設(shè)計和實現(xiàn)125.1連接數(shù)據(jù)庫125.2初始化動態(tài)口令125.3管理員/老師/學(xué)生登錄功能135.4管理員/學(xué)生/老師密碼管理功能175.5老師信息的添加、刪除、修改175.6管理員為老師分配課程185.7學(xué)生選課195.8老師查看選課名單215.9退出系統(tǒng)22結(jié)論22參考文獻22致 謝23聲 明241引言隨著學(xué)校的辦學(xué)規(guī)模越來越大,在校學(xué)生人數(shù)也日益增多,隨之而來的是教務(wù)管理工作日趨復(fù)雜繁重,已愈來愈成
8、為學(xué)校日常管理工作的一個瓶頸。網(wǎng)上選課系統(tǒng)可以提高教務(wù)管理工作的效率,減輕教務(wù)管理人員的手工勞動,使教務(wù)管理工作更加規(guī)范化、信息化、制度化和科學(xué)化。本系統(tǒng)力求以更加安全便捷的辦公效率,成為學(xué)校教務(wù)管理的好幫手。本系統(tǒng)是采用B/S(Browser/Server)結(jié)構(gòu)進行設(shè)計,使用SQL Server 2000構(gòu)建數(shù)據(jù)庫,并在ASP.NET環(huán)境下使用C#語言開發(fā)的一個網(wǎng)上選課系統(tǒng),其具有一定的實用性。管理員在網(wǎng)上公布將開設(shè)的所有課程信息,包括:課程名稱,開課老師,學(xué)時,最大人數(shù)等信息。學(xué)生通過任何一臺能進入選課系統(tǒng)的計算機,打開選課網(wǎng)站,輸入學(xué)號和自己的密碼,驗證了身份便可輕松完成網(wǎng)上選課工作。學(xué)
9、生通過上網(wǎng)了解課程的各項信息,確定自己所要選修的課程,并進行選擇,還可以增加選課,退出已選的課程,查看個人選課等。在整個選課過程中,當(dāng)一門課程的學(xué)生人數(shù)已滿時,下一個學(xué)生選擇該門課時,這門課便不能被選上。網(wǎng)上選課提高了學(xué)生選課效率,同時大大提高了教務(wù)管理工作的效率。為了增加系統(tǒng)的安全性,本系統(tǒng)在登錄時使用動態(tài)口令進行身份認(rèn)證,在密碼中引入迭代值,每次登錄時密碼的加密次數(shù)都不一樣,因此每次傳輸?shù)拿艽a都不一樣,即使被竊聽了,竊聽者也無法用竊聽到的口令來做下一次的登錄。2理論基礎(chǔ)2.1 C#C#是一種簡單的、現(xiàn)代的、面向?qū)ο蟮?、類型安全的、版本控制的、兼容的、靈活的、基于組件開發(fā)的編程語言,它是作為
10、Visual Studio中的一部分推出。C#既保持了C+中熟悉的語法,還包含了大量的高效代碼和面向?qū)ο筇匦裕喕透镄铝薈+中的類、名字空間、方法重載和異常處理等領(lǐng)域,摒棄了C+的復(fù)雜性,更易用,更少出錯。它不僅能應(yīng)用于WEB服務(wù)程序的開發(fā),并且還能開發(fā)強大的系統(tǒng)級程序。C#提供了方便的功能,如垃圾收集、類型安全、版本控制等等。僅有的"代價"就是,代碼操作默認(rèn)是類型安全,不允許指針。光是類型安全就可以搞定了。但是,如果我們需要指針,仍可以通過非安全碼使用它們,而且當(dāng)調(diào)用非安全碼時,不能含有列集。2.2 ASP.NETASP.NET 不僅僅是 Active Server
11、Page (ASP) 的下一個版本;它還提供了一個統(tǒng)一的 Web 開發(fā)模型,其中包括開發(fā)人員生成企業(yè)級 Web 應(yīng)用程序所需的各種服務(wù)。ASP.NET 的語法在很大程度上與 ASP 兼容,同時它還提供一種新的編程模型和結(jié)構(gòu),可生成伸縮性和穩(wěn)定性更好的應(yīng)用程序,并提供更好的安全保護??梢酝ㄟ^在現(xiàn)有 ASP 應(yīng)用程序中逐漸添加 ASP.NET 功能,隨時增強 ASP 應(yīng)用程序的功能。ASP.NET 是一個已編譯的、基于 .NET 的環(huán)境,可以用任何與 .NET 兼容的語言(包括 Visual Basic .NET、C# 和 JScript .NET)創(chuàng)作應(yīng)用程序。另外,任何 ASP.NET 應(yīng)用程
12、序都可以使用整個 .NET Framework。開發(fā)人員可以方便地獲得這些技術(shù)的優(yōu)點,其中包括托管的公共語言運行庫環(huán)境、類型安全、繼承等等。ASP.NET 可以無縫地與 WYSIWYG HTML 編輯器和其他編程工具(包括 Microsoft Visual Studio .NET)一起工作。這不僅使得 Web 開發(fā)更加方便,而且還能提供這些工具必須提供的所有優(yōu)點,包括開發(fā)人員可以用來將服務(wù)器控件拖放到 Web 頁的 GUI 和完全集成的調(diào)試支持。當(dāng)創(chuàng)建 ASP.NET 應(yīng)用程序時,開發(fā)人員可以使用 Web 窗體或 XML Web services,或以他們認(rèn)為合適的任何方式進行組合。每個功能都
13、能得到同一結(jié)構(gòu)的支持,使您能夠使用身份驗證方案,緩存經(jīng)常使用的數(shù)據(jù),或者對應(yīng)用程序的配置進行自定義。ASP.NET包括:頁面和控件框架、ASP.NET編譯器、安全基礎(chǔ)結(jié)構(gòu)、狀態(tài)管理功能、應(yīng)用程序配置、監(jiān)視運行狀況和性能功能、調(diào)試支持、XML Web services框架、可擴展的宿主環(huán)境和應(yīng)用程序生命周期管理、可擴展的設(shè)計器環(huán)境。2.3動態(tài)口令一次性動態(tài)口令系統(tǒng)是關(guān)于網(wǎng)絡(luò)安全的口令系統(tǒng)。它的特點是用戶每次輸入的口令一樣,但傳輸?shù)椒?wù)器的口令都不一樣。每個登錄服務(wù)器的口令只使用一次,竊聽者無法用竊聽到的口令來做下一次的登錄,確保了口令的安全。動態(tài)口令與傳統(tǒng)的靜態(tài)口令相比具有以下優(yōu)勢 :(1)動態(tài)
14、性: 用戶的動態(tài)口令隨設(shè)定的時間或事件等變量自動變化,無需人工干預(yù),某一時刻的產(chǎn)生的動態(tài)口令不能在其他時刻使用。(2)一次性:任一時刻產(chǎn)生的動態(tài)口令在其失效前只能被用戶使用一次,否則,系統(tǒng)將視其為非法行為而報警。(3)隨機性:動態(tài)口令是隨機生成、無規(guī)律的。即使本次口令被竊聽成功,也難以由此猜出下次的口令。 (4)多重安全性:用戶的動態(tài)口令令牌產(chǎn)生的動態(tài)口令與用戶名、靜態(tài)口令等多因素結(jié)合實現(xiàn)多重認(rèn)證。即使電子令牌丟失,用戶仍可在應(yīng)急狀態(tài)下利用用戶名和靜態(tài)口令進行用戶身份認(rèn)證。而其他非法持有者,單靠令牌無法實現(xiàn)登錄及認(rèn)證。 (5)可管理性:統(tǒng)一的身份認(rèn)證方式和動態(tài)口令生成方式,能大大減小在分發(fā)密碼
15、、支持服務(wù)、密碼丟失、密碼更改及身份管理等各個方面的開銷和成本。S/KEY口令序列認(rèn)證方案介紹:貝爾通信研究中心于1991年開發(fā)的S/KEY是OPT(one-time password)的首次實現(xiàn)。認(rèn)證步驟:(1) 用戶向服務(wù)器發(fā)送登錄請求,并將用戶ID發(fā)送給服務(wù)器;(2) 服務(wù)器收到登錄請求和用戶ID后,在認(rèn)證數(shù)據(jù)庫中查詢該ID是否存在。若ID為非法ID,則拒絕此次請求;若ID為合法ID,則從數(shù)據(jù)庫中取出相對應(yīng)的種子Seed和迭代次數(shù)(Seq-i),并將這兩個數(shù)據(jù)傳送給客戶端; (3) 客戶端收到種子數(shù)Seed和迭代次數(shù)(Seq-i)后,利用客戶端的計算程序計算Hn(Seed/PW),(其中
16、nSeq-i),并將計算結(jié)果作為認(rèn)證數(shù)據(jù)發(fā)送給服務(wù)器; (4) 服務(wù)器收到認(rèn)證數(shù)據(jù)后,用服務(wù)器端的計算程序(與客戶端計算程序使用同樣的Hash算法)計算H(HSeq-i(Seed/PW),然后將此計算結(jié)果與數(shù)據(jù)庫中存儲的認(rèn)證數(shù)據(jù)HSeq-i+1(Seed/PW)相比較。若兩者相同,則認(rèn)證通過,用戶成功登錄;否則,認(rèn)證失敗,服務(wù)器拒絕用戶的登錄請求。(5) 若服務(wù)器通過了對用戶的身份認(rèn)證,將用收到的HSeq-i(Seed/PW)替換數(shù)據(jù)庫中保存的HSeq-i+1(Seed/PW),以便下一次認(rèn)證使用。3需求分析3.1該設(shè)計要完成的功能本次設(shè)計所要實現(xiàn)的功能主要有以下幾點:(一):學(xué)生操作1.身份
17、驗證:輸入學(xué)生學(xué)號及密碼,然后點擊“登錄”進入“選課系統(tǒng)的菜單頁,開始選課。2.選課操作以及選課結(jié)果查詢操作:學(xué)生可以選課,修改已選的課程,并且查看自己選課結(jié)果。在整個選課過程中,當(dāng)一門課程的學(xué)生人數(shù)已滿時,下一個學(xué)生選擇該門課時,這門課將不被選中。(二):管理員操作1.身份驗證:輸入用戶名和密碼,然后點擊“登錄”,進入選課系統(tǒng)后臺的管理信息系統(tǒng)。2.基本信息錄入及修改。包括課程信息,老師信息以及學(xué)生信息等。(三):老師操作1.身份驗證:輸入用戶名和密碼,然后點擊“登錄”,進入自己任課菜單頁,老師可以查看自己所教課程、每門課的選課學(xué)生名單。3.2設(shè)計思路本系統(tǒng)從學(xué)生網(wǎng)上自主選課以及管理員管理信
18、息兩個大方面進行設(shè)計,要基本實現(xiàn)學(xué)生的在線選課功能以及管理員對老師、學(xué)生、課程信息的管理等功能,并且登錄時在口令中引入不確定因數(shù),使每次登錄傳送的口令信息不同,增加系統(tǒng)安全性。登錄分三個身份:學(xué)生、老師、管理員,登錄成功后分別進入不同頁面,學(xué)生進入“Choose.aspx”頁面,老師進入“tlview.aspx”頁面,管理員進入“Lession.aspx”頁面。學(xué)生進入頁面后可以選課、查看自己選課、修改密碼;老師進入頁面后可以查看自己所任課程、選課名單、修改密碼;管理員進入頁面后可以管理各種信息,如:管理員、老師、學(xué)生等,可以修改自己的密碼。動態(tài)口令的主要思路是:在登錄過程中加入不確定因素,使
19、每次登錄過程中傳送的信息都不相同,以提高登錄過程安全性。例如:登錄密碼=MD5(隨機數(shù)+密碼),系統(tǒng)接收到登錄口令后做一個驗算即可驗證用戶的合法性。當(dāng)用戶向服務(wù)器發(fā)出連接請求時,服務(wù)器發(fā)給用戶一個challenge。challenge通常是由兩部分組成的:種子值(seed)和迭代值(iteration),它們是在添加用戶時產(chǎn)生的,用戶收到challenge后進行加密計算:MD5iteration(seed+password),并把結(jié)果作為回答返回服務(wù)器。服務(wù)器收到回答,將它再次加密后與所存密碼比較,如果相同就成功登錄,并更新密碼為MD5iteration(seed+password),迭代值為
20、(iteration-1)。 我們可以看出,用戶通過網(wǎng)絡(luò)傳給服務(wù)器的口令是種子值和密碼的加密結(jié)果,用戶本身的密碼并沒有在網(wǎng)上傳播。攻擊者很難從中提取出原始的密碼,又因為迭代值總是不斷變化的,這使得下一次用戶登錄時使用的鑒別信息與上次不同,從而有效地阻止了重放攻擊。總之,與靜態(tài)口令技術(shù)的單因子(口令)鑒別不同,一次性動態(tài)口令技術(shù)是一種多因子(種子值,迭代值和密碼)鑒別技術(shù),其中引入的不確定因子使得它更為安全。管理員添加各類用戶時初始化口令流程:圖1 初始化口令流程圖用戶登錄時驗證口令流程:圖2 登錄時驗證口令流程4總體設(shè)計4.1功能模塊構(gòu)造動態(tài)口令認(rèn)證的網(wǎng)上選課系統(tǒng)信息管理身份驗證選
21、課教師信息的添加、修改、刪除學(xué)生信息的添加、修改、刪除課程信息的添加、修改、刪除系的添加、修改、刪除專業(yè)的添加、修改、刪除學(xué)歷的添加、修改、刪除查看課程選課查看選課名單密碼修改課程分配管理員信息的添加、修改、刪除圖3 系統(tǒng)功能模塊圖4.2功能模塊具體介紹4.2.1身份驗證模塊通過登錄才可進入選課系統(tǒng),登錄信息提交后檢驗登錄者的身份是否合法,如果合法則轉(zhuǎn)入對應(yīng)的操作界面。在本系統(tǒng)中,只有三種身份:學(xué)生、老師、管理員。登錄時在口令中引入不確定因數(shù),使每次登錄傳送的口令信息不同。4.2.2信息管理模塊管理員管理模塊:負(fù)責(zé)管理管理員的基本信息。管理員可通過本模塊實現(xiàn)添加、刪除、修改管理員的基本信息。老
22、師管理模塊:負(fù)責(zé)管理老師的基本信息。管理員可通過本模塊實現(xiàn)添加、刪除、修改老師的基本信息,可以選擇根據(jù)老師工作證號或姓名查找老師。在該模塊中可以實現(xiàn)對老師的管理,為排課提供老師的基本信息。學(xué)生管理模塊:負(fù)責(zé)管理學(xué)生的基本信息。管理員可通過本模塊實現(xiàn)添加、刪除、修改學(xué)生的基本信息,可以選擇根據(jù)學(xué)生學(xué)號或姓名查找學(xué)生。在該模塊中可以實現(xiàn)對學(xué)生的管理。 課程管理模塊:負(fù)責(zé)管理課程的基本信息。管理員可通過本模塊實現(xiàn)課程的添加、刪除、修改,可以選擇按課程名或?qū)I(yè)查詢已經(jīng)添加的課程。系別管理模塊:負(fù)責(zé)管理系別的基本信息。管理員可通過本模塊實現(xiàn)系別的添加、刪除、修改。專業(yè)管理模塊:負(fù)責(zé)管理專業(yè)的基本信息。管
23、理員可通過本模塊實現(xiàn)專業(yè)的添加、刪除、修改,可以按系查詢已經(jīng)添加的專業(yè)。學(xué)歷管理模塊:負(fù)責(zé)管理學(xué)歷的基本信息。管理員可通過本模塊實現(xiàn)學(xué)歷的添加、刪除、修改。 課程分配模塊:負(fù)責(zé)給老師分配課程。根據(jù)老師姓名,課程所屬系、專業(yè),給老師分配課程。老師可以教不同系的課程。密碼修改模塊:管理員、老師、學(xué)生登錄成功后在各自的頁面點擊“修改密碼”進行密碼修改。4.2.3選課模塊查看課程選課模塊:學(xué)生登錄后進入選課頁面,在規(guī)定時間內(nèi)可以進行選課、退選,選擇人數(shù)已滿的課程時,該課程不能被選上,學(xué)生可以查看自己已選課程。查看選課名單模塊:老師登錄后可以根據(jù)自己所教課程查看選課名單,只有學(xué)生選擇了的課程才會顯示。4
24、.3 E-R圖圖4 E-R圖4.4數(shù)據(jù)庫設(shè)計根據(jù)系統(tǒng)功能設(shè)計的要求以及功能模塊的劃分,對于系統(tǒng)用戶信息數(shù)據(jù)庫,可以列出以下數(shù)據(jù)項和數(shù)據(jù)表:表1 課程表Lessions(課程)數(shù)據(jù)庫字段名中文名字段類型是否為空備注LessionID(主鍵)課程IDInt否從1開始自動增長,以后有“Auto”表示GradeMark年級Varchar(10)否LessionName課程名Varchar(200)否LessionIsChoose是否可選Bit否1表示是0表示否(默認(rèn)為0)LessionChooseStartDate選課開始時間Dataetime否LessionChooseEndDate選課結(jié)束時間Da
25、taetime否LessionMaxPerson選課最多人數(shù)Int否LessionAddDate課程添加時間Datetime否LessionTimeLength課時Int否LessionDescription課程備注Text是StudyDepartmentID專業(yè)IDInt否關(guān)系表(StudyDepartments)LessionIsMain是否為必修bit否表2 老師表Teachers(老師)數(shù)據(jù)庫字段名中文名字段類型是否為空備注TeacherID(主鍵)老師IDInt否AutoTeacherNumber老師的工作證號Varchar(20)否TeacherName老師名稱Varchar(50
26、)否TeacherUerName老師昵稱Varchar(50)否TeacherPassword登陸密碼Varchar(100)否TeacherAddDate老師添加時間Datetime否DepartmenID系IDInt否關(guān)系表(Departmens)TeacherState老師狀態(tài)Int否0(在職)2(離職)TeacherMvaxLessionCount老師在一學(xué)期內(nèi)最多可授課門數(shù)Int否默認(rèn)為5門表3 學(xué)生表Students(學(xué)生)數(shù)據(jù)庫字段名中文名字段類型是否為空備注StudentID(主鍵)學(xué)生IDInt否AutoStudentNumber學(xué)號Varchar(20)否StudentNa
27、me學(xué)生名稱Varchar(50)否StudentUerName學(xué)生昵稱Varchar(50)否StudentPassword登陸密碼Varchar(100)否StudentAddDate學(xué)生入學(xué)時間Datetime否StudentEndDate學(xué)生畢業(yè)時間Datetime否StudyDepartmentID專業(yè)IDInt否關(guān)系表(StudyDepartments)StudentState學(xué)生狀態(tài)Int否1(休學(xué)1年)2(休學(xué)2年)3(休學(xué)3年)4(在校)5(畢業(yè))6(開除學(xué)籍)StudyTypeID系IDInt否StudentYearCount學(xué)年數(shù)Int否StudentExtendID學(xué)生
28、擴展信息IDInt否默認(rèn)為0,表示沒有擴展信息,大于0就關(guān)系到表(StudentExtends)表4老師 課程 聯(lián)系表LessionTeachers (老師 課程 聯(lián)系表)數(shù)據(jù)庫字段名中文名字段類型是否為空備注LessionTeacherID(主鍵)聯(lián)系編號Int否AutoTeacherID老師IDInt否關(guān)系表(Teachers)LessionID課程IDInt否關(guān)系表(Lessions)表5學(xué)生 課程 聯(lián)系表LessionStudents(學(xué)生 課程 聯(lián)系表)數(shù)據(jù)庫字段名中文名字段類型是否為空備注LessionStudentID(主鍵)聯(lián)系編號Int否AutoStudentID學(xué)生IDIn
29、t否關(guān)系表(Students)LessionID課程IDInt否關(guān)系表(Lessions)管理員表(Managers):存放管理員ID、姓名、編號、密碼、添加時間、昵稱。學(xué)生擴展信息表(StudentExtends):存放擴展ID、民族ID、性別、生日、照片ID、身份證號、備注。系別表(Departments):存放系ID、系名、備注。專業(yè)表(StudyDepartment):存放專業(yè)ID、系ID、專業(yè)名、備注。年級表(Grades):存放年級ID、年級名、年級標(biāo)識。民族表(Races):存放民族ID、民族名。學(xué)歷表(StudyTypes):存放學(xué)歷ID、學(xué)歷名、學(xué)歷標(biāo)識。學(xué)生密碼表(Stud
30、entPassword):存放學(xué)生ID、迭代值、隨機值。老師密碼表(StudentPassword):存放老師ID、迭代值、隨機值。管理員密碼表(TeacherPassword):存放管理員ID、迭代值、隨機值。5詳細(xì)設(shè)計和實現(xiàn)5.1連接數(shù)據(jù)庫所有頁面都要連接數(shù)據(jù)庫,代碼為:在Web.Config里添加:<add name="ACLConnectionString" connectionString="Data Source=(Local); Initial Catalog=ACL;user id=sa;password=123456;" prov
31、iderName="System.Data.SqlClient"/> 5.2初始化動態(tài)口令在管理員添加用戶時初始化動態(tài)口令。老師的口令初始化代碼如下:DsTeacherTableAdapters.TeachersTableAdapter dsTeacher = new DsTeacherTableAdapters.TeachersTableAdapter(); DsPassWordTableAdapters.TeacherPasswordTableAdapter dsTeacherPassword = new DsPassWordTableAdapters.Teach
32、erPasswordTableAdapter();int TeacherSeq = 10000;Random rm = new Random(); int TeacherSeed = rm.Next(1, 99999); string Password = TeacherSeed.ToString() + txtTeacherNumber.Text; for (; TeacherSeq > 0; TeacherSeq-) Password = Encode.EncodeByMD5_32(Password); dsTeacher.Insert(txtTeacherNumber.Text.T
33、rim(), txtTeacherName.Text, txtTeacherName.Text, Password, DateTime.Now, int.Parse(ddlDepartment.SelectedValue), int.Parse(ddlTeacherState.SelectedValue), int.Parse(txtTeacherMvaxLessionCount.Text); DataTable testdt = dsTeacher.A_GetTeacherByNumber(txtTeacherNumber.Text); string id = testdt.Rows0.It
34、emArray.GetValue(0).ToString(); dsTeacherPassword.Insert(int.Parse(id), 9999, TeacherSeed);5.3管理員/老師/學(xué)生登錄功能在登錄頁面對應(yīng)的地方輸入用戶名、密碼,確認(rèn)后登錄。在提交后的文件中,首先通過學(xué)號/工作證號對數(shù)據(jù)庫中的Managers /Students/Teachers表進行檢索,若檢索到的記錄集為空,則說明學(xué)號/工作證號錯誤,從而轉(zhuǎn)到相應(yīng)的出錯處理程序,若記錄集不為空,再進行密碼判斷,通過動態(tài)密碼算法和數(shù)據(jù)庫中的ManagerPassword /StudentPassword/TeacherP
35、assword看密碼是否相等,不相等,做出錯處理,相等則轉(zhuǎn)入管理員/學(xué)生/老師登錄成功的操作頁面。出錯及處理:在該模塊中可能發(fā)生的錯誤有:(1)、用戶名或密碼錯誤,系統(tǒng)提示“用戶名或密碼不正確!”。(2)、捕捉到異常,系統(tǒng)提示“對不起,登錄失敗,請重新登陸!”。學(xué)生登錄身份驗證是在switch (rbtnlLogType.SelectedValue)中加如下代碼:case "0": /當(dāng)身份為0,即學(xué)生時 try DsStudentTableAdapters.StudentsTableAdapter dsStudent = new DsStudentTableAdapter
36、s.StudentsTableAdapter(); /實例化類 DsPassWordTableAdapters.StudentPasswordTableAdapter dsStudentPassword = new DsPassWordTableAdapters.StudentPasswordTableAdapter(); /實例化類 DataTable dtStudentID = dsStudent.A_GetStudentByStudentNumber(txtNumber.Text); /通過類的實例dsStudent的方法A_GetStudentByStudentNumber得到學(xué)號為t
37、xtNumber.Text的學(xué)生的所有字段的值 string StudentID = dtStudentID.Rows0.ItemArray.GetValue(0).ToString(); /得到該學(xué)生的ID,并賦值給StudentID string StudentAddDate = dtStudentID.Rows0.ItemArray.GetValue(5).ToString(); string StudentEndDate = dtStudentID.Rows0.ItemArray.GetValue(6).ToString(); string StudyDepartmentID = dt
38、StudentID.Rows0.ItemArray.GetValue(7).ToString(); string StudentState = dtStudentID.Rows0.ItemArray.GetValue(8).ToString(); string StudyTypeID = dtStudentID.Rows0.ItemArray.GetValue(9).ToString(); string StudentYearCount = dtStudentID.Rows0.ItemArray.GetValue(10).ToString(); string StudentExtendID =
39、 dtStudentID.Rows0.ItemArray.GetValue(11).ToString(); DataTable dtStudent = dsStudentPassword.C_GetStudentPasswordByID(int.Parse(StudentID); string StudentSeq = dtStudent.Rows0.ItemArray.GetValue(1).ToString(); string StudentSeed = dtStudent.Rows0.ItemArray.GetValue(2).ToString(); string StudentPass
40、word = StudentSeed.ToString() + txtPassWord.Text; /將StudentSeed.ToString()和txtPassWord.Text連接起來賦值給StudentPassword,作為要加密的密碼 int StudentSeq1; for (StudentSeq1 = int.Parse(StudentSeq); StudentSeq1 > 0; StudentSeq1-) StudentPassword = Encode.EncodeByMD5_32(StudentPassword); /加密過程,將密碼加密int.Parse(Stude
41、ntSeq)次 DsLogTableAdapters.LogInfoTableAdapter dalLogInfo = new DsLogTableAdapters.LogInfoTableAdapter(); DataTable dtLogInfo = dalLogInfo.A_GetLogInfo(txtNumber.Text, StudentPassword, int.Parse(rbtnlLogType.SelectedValue); /使用dalLogInfo.A_GetLogInfo方法驗證登錄,找到學(xué)生就寫相應(yīng)字段到表dtLogInfo中 if (dtLogInfo.Rows.C
42、ount =1) /如果行數(shù)等于1,通過驗證 SetCookie("Number", txtNumber.Text); SetCookie("Password", StudentPassword); SetCookie("UserID", dtLogInfo.Rows0"UserID".ToString(); SetCookie("RealName", dtLogInfo.Rows0"RealName".ToString(); SetCookie("UserName
43、", dtLogInfo.Rows0"UserName".ToString(); SetCookie("UserType", rbtnlLogType.SelectedValue); /保存用戶信息到Cookie lblInfo.Visible = true;/顯示提醒信息框 lblInfo.Text = "登錄成功!"/設(shè)置要顯示的提醒信息 dsStudent.Update(GetCookie("Number"), GetCookie("RealName"), GetCookie(&
44、quot;RealName"), StudentPassword, DateTime.Parse(StudentAddDate), DateTime.Parse(StudentEndDate), int.Parse(StudyDepartmentID), int.Parse(StudentState), int.Parse(StudyTypeID), int.Parse(StudentYearCount), int.Parse(StudentExtendID), int.Parse(StudentID),int.Parse(StudentID); /更新Students表中該學(xué)生字段
45、值 int StudentSeq2 = int.Parse(StudentSeq) - 1; dsStudentPassword.Update(int.Parse(StudentID), StudentSeq2, int.Parse(StudentSeed), int.Parse(StudentID);/更新StudentPassword表中該學(xué)生字段值 Response.Redirect("Choose.aspx", false); /跳到Choose.aspx頁面 else string LogInfo = "用戶名或密碼不正確!" lblInfo.
46、Visible = true;/顯示提示框內(nèi)容 lblInfo.Text = LogInfo; /設(shè)置提示框內(nèi)容 return; /驗證未通過,則顯示提示信息"用戶名或密碼不正確!" catch (Exception ex) GoErrorPage(ex, "對不起,登錄失敗,請重新登陸!"); /捕獲到異常,寫錯誤日志,并跳到出錯頁面顯示"對不起,登錄失敗,請重新登陸!" break; /退出switch語句在登錄過程中實現(xiàn)了動態(tài)口令身份認(rèn)證,通過數(shù)據(jù)表中密碼的變化能得到驗證。如下兩圖:圖5 用戶“夏雨”第4次登錄數(shù)據(jù)表截圖圖6 用
47、戶“夏雨”第5次登錄數(shù)據(jù)表截圖5.4管理員/學(xué)生/老師密碼管理功能密碼管理的前提是用戶成功登錄,選擇密碼修改后,按照頁面上的提示,在相應(yīng)的文本框中輸入新密碼(兩次),確定后提交。轉(zhuǎn)入執(zhí)行的文件后,首先根據(jù)傳遞的學(xué)號/工作證號判斷兩次輸入的新密碼是否相等,若不等,出錯;否則,用新密碼代替舊密碼,更新Managers/Students/Teachers中的“ManagerPassword”/ “StudentPassword”/“TeacherPassword”字段,并返回登錄頁面。出錯及處理:在該模塊中可能發(fā)生的錯誤有:新密碼兩次輸入不同,系統(tǒng)提示“新密碼不一致,請重新輸入!”。5.5老師信息的
48、添加、刪除、修改老師信息的添加、刪除、修改由管理員完成,老師無權(quán)操作。在管理員登錄成功后點擊“老師管理”即進入老師信息頁面。添加老師:具體操作為對數(shù)據(jù)庫添加新記錄。點擊“添加老師”按鈕進入添加老師頁面,在添加頁面輸入新老師的信息。當(dāng)添加的記錄已經(jīng)存在時,提示框顯示“已經(jīng)有相同的工作號存在!”;若為新記錄,則進行新記錄的添加,添加到表的最后。出錯及處理:重復(fù)添加,彈出提示框:“已經(jīng)有相同的工作號存在!”。圖7 添加老師頁面截圖修改老師信息:在老師信息頁面中點擊該老師后面的“修改”進入修改頁面(實際同添加老師頁面),在文本框中輸入完整信息后進行覆蓋寫入,操作與添加大致相同。刪除老師:在老師信息頁面
49、中點擊該老師后面的“刪除”,彈出注意框“你真的要刪除嗎?”,在“確定”和“取消”間選擇。學(xué)生信息、課程信息、系、專業(yè)、學(xué)歷的添加、刪除、修改與老師信息的添加、刪除、修改相同,不再贅述。5.6管理員為老師分配課程管理員給老師分配課程,選擇老師姓名,課程名及課程所屬系、專業(yè),按添加按鈕,提示分配成功。按“刪除”彈出注意框“你確認(rèn)你要進行這個操作嗎?”,在“確定”和“取消”間選擇。老師可以教不同系的課程。在此頁面用到了BindGvlist方法,綁定GridView,代碼如下:public void BindGvlist()/聲明方法:名稱為BindGvlist,無返回值 try dsLessionT
50、eachersTableAdapters.LessionTeachersTableAdapter lessionteacherDAL = new dsLessionTeachersTableAdapters.LessionTeachersTableAdapter();/實例化類DataTable dt= lessionteacherDAL.C_SelectLessionTeachers();/定義內(nèi)存中數(shù)據(jù)的一個表,名字為dt,由實例化類lessionteacherDAL中C_SelectLessionTeachers方法獲得的值填充 gvlist.DataSource =dt.Default
51、View; gvlist.DataBind(); /綁定GridView catch (Exception ex) GoErrorPage(ex.ToString(); /捕獲到異常就跳到出錯頁面 圖8 為老師分配課程頁面截圖5.7學(xué)生選課學(xué)生進入選課頁面后會有該生所在專業(yè)的、選課時間包含了當(dāng)時所在時間的課程。該生已選的課程顯示藍(lán)色,在選課時間內(nèi)可以退選;人數(shù)已滿課程為紅色,不能再選;其它為白色。點擊“查看”按鈕可以看到自己已選課程。在該頁面用到了BasePage類中驗證是否登錄的方法CheckLog(),方法如下:private bool CheckLog() /聲明方法:名稱為CheckL
52、og,返回值類型為bool(true/false) DsLogTableAdapters.LogInfoTableAdapter dsCheckLogin = new DsLogTableAdapters.LogInfoTableAdapter(); /實例化類 if (GetCookie("UserType") != "1" && GetCookie("UserType") != "0" && GetCookie("UserType") != "2&q
53、uot;) return false; / Cookie中UserType如果不等于0/1/2,返回false DataTable dt = dsCheckLogin.A_GetLogInfo(GetCookie("Number") ,GetCookie("Password"), int.Parse( GetCookie("UserType"); /當(dāng) Cookie中UserType等于0/1/2,取出保存的Cookie中Number、Password、UserType的值,放入數(shù)據(jù)表dt中 if (dt.Rows.Count = 1) return true; /如果值存在,返回true,已經(jīng)登錄 return false; /否則,返回false,未登錄 public void CheckLogin()/聲明方法:名稱為CheckLogin,返回值類型為void,即不返回值 if (!CheckLog() TimeOut();/方法TimeOut,無返回值,用作銷毀Cookie變量,使用戶信息為空 Logout();/方法Logout,無返回值,用戶退出系統(tǒng) /如果沒有登錄
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際勞務(wù)輸出合同管理與勞動權(quán)益保障
- 2025年度廣州科技創(chuàng)新園區(qū)建設(shè)工程施工合同參考范本
- 2025年度城市更新改造工程監(jiān)理服務(wù)合同
- 長春2024年吉林長春市市直事業(yè)單位招聘13人筆試歷年參考題庫附帶答案詳解
- 貴州2025年貴州省殘疾人聯(lián)合會直屬事業(yè)單位招聘13人筆試歷年參考題庫附帶答案詳解
- 西雙版納2025年云南西雙版納州婦幼保健院第一批非在編護理人員招聘筆試歷年參考題庫附帶答案詳解
- 舟山浙江舟山岱山縣司法局招聘編外工作人員(二)筆試歷年參考題庫附帶答案詳解
- 綏化2025年黑龍江肇東市急需緊缺高中教師招聘6人筆試歷年參考題庫附帶答案詳解
- 湖北2025年湖北醫(yī)藥學(xué)院專項招聘90人筆試歷年參考題庫附帶答案詳解
- 河南2025年河南財政金融學(xué)院招聘高層次人才筆試歷年參考題庫附帶答案詳解
- 銷售培訓(xùn)合同范例
- 財務(wù)工作總結(jié)與計劃-財務(wù)經(jīng)理總結(jié)與計劃
- 四川省成都市2023年中考道德與法治真題試卷(含答案)
- 企業(yè)愿景和未來三年規(guī)劃
- 中華護理學(xué)會團體標(biāo)準(zhǔn)-氣管切開非機械通氣患者氣道護理
- YAMAHA(雅馬哈)貼片機編程培訓(xùn)教材
- 事故隱患內(nèi)部舉報獎勵制度
- 工程可行性研究報告編寫實施計劃方案
- 公司解散清算的法律意見書、債權(quán)處理法律意見書
- 城市防洪排澇規(guī)劃
- 中華小廚神(教學(xué)設(shè)計)-五年級下冊勞動人教版1
評論
0/150
提交評論