




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、某中學(xué)網(wǎng)上選課系統(tǒng)的實(shí)現(xiàn)摘 要將計(jì)算機(jī)引入教學(xué)信息管理已經(jīng)成為高校教學(xué)管理工作的重要內(nèi)容之一,比如實(shí)行網(wǎng)上選課。與傳統(tǒng)的選課方式相比,網(wǎng)上選課提高了學(xué)生選課效率,增加了學(xué)生選課自主權(quán),使教學(xué)更加透明,同時(shí)大大提高了教務(wù)管理工作的效率。本文設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)上選課系統(tǒng)基于asp.net平臺(tái)進(jìn)行開發(fā),后臺(tái)由sql server 2000數(shù)據(jù)庫(kù)支持,通過使用c#語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的效果,達(dá)到對(duì)數(shù)據(jù)庫(kù)的操作以完成使用者的要求。本系統(tǒng)主要由以下幾個(gè)模塊組成:身份驗(yàn)證模塊;選課模塊;信息管理模塊等。用戶只需要通過瀏覽器訪問就可以實(shí)現(xiàn)選課操作,操作簡(jiǎn)單靈活。并且本系統(tǒng)登錄時(shí)使用動(dòng)態(tài)口令進(jìn)行身份認(rèn)證,解決了靜態(tài)口令所
2、遇到的很多攻擊性問題,如:網(wǎng)絡(luò)數(shù)據(jù)流竊聽、字典攻擊、窮舉攻擊等,增加了系統(tǒng)安全性。關(guān)鍵詞:網(wǎng)上選課系統(tǒng); 動(dòng)態(tài)口令;c#;asp.netdesign and implementation of web-based course selecting system with dynamic password authenticationabstractapplying computer to manage the teaching information is one of the important parts of the university management, such as cour
3、se 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 teaching more transparent, also greatly increases the efficiency of teachi
4、ng 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 of following several modules: id authenticating module; course selecting
5、 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 prevents many problems of the static password, for example sniffer, dicti
6、onary 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目 錄論文總頁(yè)數(shù):24頁(yè)1引言12理論基礎(chǔ)12.1 c#12.2 asp.net12.3動(dòng)態(tài)口令23需求分析33.1該設(shè)計(jì)要完成的功能33.2設(shè)計(jì)思路44總體設(shè)計(jì)74.1功能模塊構(gòu)造74.2功能模塊具體介紹84.2.1身份驗(yàn)證模塊84.2.2信息管理模塊84.2.3選課模
7、塊84.3 e-r圖94.4數(shù)據(jù)庫(kù)設(shè)計(jì)95詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)125.1連接數(shù)據(jù)庫(kù)125.2初始化動(dòng)態(tài)口令125.3管理員/老師/學(xué)生登錄功能135.4管理員/學(xué)生/老師密碼管理功能175.5老師信息的添加、刪除、修改175.6管理員為老師分配課程185.7學(xué)生選課195.8老師查看選課名單215.9退出系統(tǒng)22結(jié)論22參考文獻(xiàn)22231引言隨著學(xué)校的辦學(xué)規(guī)模越來越大,在校學(xué)生人數(shù)也日益增多,隨之而來的是教務(wù)管理工作日趨復(fù)雜繁重,已愈來愈成為學(xué)校日常管理工作的一個(gè)瓶頸。網(wǎng)上選課系統(tǒng)可以提高教務(wù)管理工作的效率,減輕教務(wù)管理人員的手工勞動(dòng),使教務(wù)管理工作更加規(guī)范化、信息化、制度化和科學(xué)化。本系統(tǒng)力求以更
8、加安全便捷的辦公效率,成為學(xué)校教務(wù)管理的好幫手。本系統(tǒng)是采用b/s(browser/server)結(jié)構(gòu)進(jìn)行設(shè)計(jì),使用sql server 2000構(gòu)建數(shù)據(jù)庫(kù),并在asp.net環(huán)境下使用c#語(yǔ)言開發(fā)的一個(gè)網(wǎng)上選課系統(tǒng),其具有一定的實(shí)用性。管理員在網(wǎng)上公布將開設(shè)的所有課程信息,包括:課程名稱,開課老師,學(xué)時(shí),最大人數(shù)等信息。學(xué)生通過任何一臺(tái)能進(jìn)入選課系統(tǒng)的計(jì)算機(jī),打開選課網(wǎng)站,輸入學(xué)號(hào)和自己的密碼,驗(yàn)證了身份便可輕松完成網(wǎng)上選課工作。學(xué)生通過上網(wǎng)了解課程的各項(xiàng)信息,確定自己所要選修的課程,并進(jìn)行選擇,還可以增加選課,退出已選的課程,查看個(gè)人選課等。在整個(gè)選課過程中,當(dāng)一門課程的學(xué)生人數(shù)已滿時(shí),下
9、一個(gè)學(xué)生選擇該門課時(shí),這門課便不能被選上。網(wǎng)上選課提高了學(xué)生選課效率,同時(shí)大大提高了教務(wù)管理工作的效率。為了增加系統(tǒng)的安全性,本系統(tǒng)在登錄時(shí)使用動(dòng)態(tài)口令進(jìn)行身份認(rèn)證,在密碼中引入迭代值,每次登錄時(shí)密碼的加密次數(shù)都不一樣,因此每次傳輸?shù)拿艽a都不一樣,即使被竊聽了,竊聽者也無(wú)法用竊聽到的口令來做下一次的登錄。2理論基礎(chǔ)2.1 c#c#是一種簡(jiǎn)單的、現(xiàn)代的、面向?qū)ο蟮?、類型安全的、版本控制的、兼容的、靈活的、基于組件開發(fā)的編程語(yǔ)言,它是作為visual studio中的一部分推出。c#既保持了c+中熟悉的語(yǔ)法,還包含了大量的高效代碼和面向?qū)ο筇匦裕?jiǎn)化和革新了c+中的類、名字空間、方法重載和異常處
10、理等領(lǐng)域,摒棄了c+的復(fù)雜性,更易用,更少出錯(cuò)。它不僅能應(yīng)用于web服務(wù)程序的開發(fā),并且還能開發(fā)強(qiáng)大的系統(tǒng)級(jí)程序。c#提供了方便的功能,如垃圾收集、類型安全、版本控制等等。僅有的代價(jià)就是,代碼操作默認(rèn)是類型安全,不允許指針。光是類型安全就可以搞定了。但是,如果我們需要指針,仍可以通過非安全碼使用它們,而且當(dāng)調(diào)用非安全碼時(shí),不能含有列集。2.2 asp.netasp.net 不僅僅是 active server page (asp) 的下一個(gè)版本;它還提供了一個(gè)統(tǒng)一的 web 開發(fā)模型,其中包括開發(fā)人員生成企業(yè)級(jí) web 應(yīng)用程序所需的各種服務(wù)。asp.net 的語(yǔ)法在很大程度上與 asp 兼容
11、,同時(shí)它還提供一種新的編程模型和結(jié)構(gòu),可生成伸縮性和穩(wěn)定性更好的應(yīng)用程序,并提供更好的安全保護(hù)??梢酝ㄟ^在現(xiàn)有 asp 應(yīng)用程序中逐漸添加 asp.net 功能,隨時(shí)增強(qiáng) asp 應(yīng)用程序的功能。asp.net 是一個(gè)已編譯的、基于 .net 的環(huán)境,可以用任何與 .net 兼容的語(yǔ)言(包括 visual basic .net、c# 和 jscript .net)創(chuàng)作應(yīng)用程序。另外,任何 asp.net 應(yīng)用程序都可以使用整個(gè) .net framework。開發(fā)人員可以方便地獲得這些技術(shù)的優(yōu)點(diǎn),其中包括托管的公共語(yǔ)言運(yùn)行庫(kù)環(huán)境、類型安全、繼承等等。asp.net 可以無(wú)縫地與 wysiwyg
12、html 編輯器和其他編程工具(包括 microsoft visual studio .net)一起工作。這不僅使得 web 開發(fā)更加方便,而且還能提供這些工具必須提供的所有優(yōu)點(diǎn),包括開發(fā)人員可以用來將服務(wù)器控件拖放到 web 頁(yè)的 gui 和完全集成的調(diào)試支持。當(dāng)創(chuàng)建 asp.net 應(yīng)用程序時(shí),開發(fā)人員可以使用 web 窗體或 xml web services,或以他們認(rèn)為合適的任何方式進(jìn)行組合。每個(gè)功能都能得到同一結(jié)構(gòu)的支持,使您能夠使用身份驗(yàn)證方案,緩存經(jīng)常使用的數(shù)據(jù),或者對(duì)應(yīng)用程序的配置進(jìn)行自定義。asp.net包括:頁(yè)面和控件框架、asp.net編譯器、安全基礎(chǔ)結(jié)構(gòu)、狀態(tài)管理功能、
13、應(yīng)用程序配置、監(jiān)視運(yùn)行狀況和性能功能、調(diào)試支持、xml web services框架、可擴(kuò)展的宿主環(huán)境和應(yīng)用程序生命周期管理、可擴(kuò)展的設(shè)計(jì)器環(huán)境。2.3動(dòng)態(tài)口令一次性動(dòng)態(tài)口令系統(tǒng)是關(guān)于網(wǎng)絡(luò)安全的口令系統(tǒng)。它的特點(diǎn)是用戶每次輸入的口令一樣,但傳輸?shù)椒?wù)器的口令都不一樣。每個(gè)登錄服務(wù)器的口令只使用一次,竊聽者無(wú)法用竊聽到的口令來做下一次的登錄,確保了口令的安全。動(dòng)態(tài)口令與傳統(tǒng)的靜態(tài)口令相比具有以下優(yōu)勢(shì) :(1)動(dòng)態(tài)性: 用戶的動(dòng)態(tài)口令隨設(shè)定的時(shí)間或事件等變量自動(dòng)變化,無(wú)需人工干預(yù),某一時(shí)刻的產(chǎn)生的動(dòng)態(tài)口令不能在其他時(shí)刻使用。(2)一次性:任一時(shí)刻產(chǎn)生的動(dòng)態(tài)口令在其失效前只能被用戶使用一次,否則,系
14、統(tǒng)將視其為非法行為而報(bào)警。(3)隨機(jī)性:動(dòng)態(tài)口令是隨機(jī)生成、無(wú)規(guī)律的。即使本次口令被竊聽成功,也難以由此猜出下次的口令。 (4)多重安全性:用戶的動(dòng)態(tài)口令令牌產(chǎn)生的動(dòng)態(tài)口令與用戶名、靜態(tài)口令等多因素結(jié)合實(shí)現(xiàn)多重認(rèn)證。即使電子令牌丟失,用戶仍可在應(yīng)急狀態(tài)下利用用戶名和靜態(tài)口令進(jìn)行用戶身份認(rèn)證。而其他非法持有者,單靠令牌無(wú)法實(shí)現(xiàn)登錄及認(rèn)證。 (5)可管理性:統(tǒng)一的身份認(rèn)證方式和動(dòng)態(tài)口令生成方式,能大大減小在分發(fā)密碼、支持服務(wù)、密碼丟失、密碼更改及身份管理等各個(gè)方面的開銷和成本。s/key口令序列認(rèn)證方案介紹:貝爾通信研究中心于1991年開發(fā)的s/key是opt(one-time password)
15、的首次實(shí)現(xiàn)。認(rèn)證步驟:(1) 用戶向服務(wù)器發(fā)送登錄請(qǐng)求,并將用戶id發(fā)送給服務(wù)器;(2) 服務(wù)器收到登錄請(qǐng)求和用戶id后,在認(rèn)證數(shù)據(jù)庫(kù)中查詢?cè)搃d是否存在。若id為非法id,則拒絕此次請(qǐng)求;若id為合法id,則從數(shù)據(jù)庫(kù)中取出相對(duì)應(yīng)的種子seed和迭代次數(shù)(seq-i),并將這兩個(gè)數(shù)據(jù)傳送給客戶端; (3) 客戶端收到種子數(shù)seed和迭代次數(shù)(seq-i)后,利用客戶端的計(jì)算程序計(jì)算hn(seed/pw),(其中nseq-i),并將計(jì)算結(jié)果作為認(rèn)證數(shù)據(jù)發(fā)送給服務(wù)器; (4) 服務(wù)器收到認(rèn)證數(shù)據(jù)后,用服務(wù)器端的計(jì)算程序(與客戶端計(jì)算程序使用同樣的hash算法)計(jì)算h(hseq-i(seed/pw)
16、,然后將此計(jì)算結(jié)果與數(shù)據(jù)庫(kù)中存儲(chǔ)的認(rèn)證數(shù)據(jù)hseq-i+1(seed/pw)相比較。若兩者相同,則認(rèn)證通過,用戶成功登錄;否則,認(rèn)證失敗,服務(wù)器拒絕用戶的登錄請(qǐng)求。(5) 若服務(wù)器通過了對(duì)用戶的身份認(rèn)證,將用收到的hseq-i(seed/pw)替換數(shù)據(jù)庫(kù)中保存的hseq-i+1(seed/pw),以便下一次認(rèn)證使用。3需求分析3.1該設(shè)計(jì)要完成的功能本次設(shè)計(jì)所要實(shí)現(xiàn)的功能主要有以下幾點(diǎn):(一):學(xué)生操作1.身份驗(yàn)證:輸入學(xué)生學(xué)號(hào)及密碼,然后點(diǎn)擊“登錄”進(jìn)入“選課系統(tǒng)的菜單頁(yè),開始選課。2.選課操作以及選課結(jié)果查詢操作:學(xué)生可以選課,修改已選的課程,并且查看自己選課結(jié)果。在整個(gè)選課過程中,當(dāng)一門
17、課程的學(xué)生人數(shù)已滿時(shí),下一個(gè)學(xué)生選擇該門課時(shí),這門課將不被選中。(二):管理員操作1.身份驗(yàn)證:輸入用戶名和密碼,然后點(diǎn)擊“登錄”,進(jìn)入選課系統(tǒng)后臺(tái)的管理信息系統(tǒng)。2.基本信息錄入及修改。包括課程信息,老師信息以及學(xué)生信息等。(三):老師操作1.身份驗(yàn)證:輸入用戶名和密碼,然后點(diǎn)擊“登錄”,進(jìn)入自己任課菜單頁(yè),老師可以查看自己所教課程、每門課的選課學(xué)生名單。3.2設(shè)計(jì)思路本系統(tǒng)從學(xué)生網(wǎng)上自主選課以及管理員管理信息兩個(gè)大方面進(jìn)行設(shè)計(jì),要基本實(shí)現(xiàn)學(xué)生的在線選課功能以及管理員對(duì)老師、學(xué)生、課程信息的管理等功能,并且登錄時(shí)在口令中引入不確定因數(shù),使每次登錄傳送的口令信息不同,增加系統(tǒng)安全性。登錄分三個(gè)
18、身份:學(xué)生、老師、管理員,登錄成功后分別進(jìn)入不同頁(yè)面,學(xué)生進(jìn)入“choose.aspx”頁(yè)面,老師進(jìn)入“tlview.aspx”頁(yè)面,管理員進(jìn)入“l(fā)ession.aspx”頁(yè)面。學(xué)生進(jìn)入頁(yè)面后可以選課、查看自己選課、修改密碼;老師進(jìn)入頁(yè)面后可以查看自己所任課程、選課名單、修改密碼;管理員進(jìn)入頁(yè)面后可以管理各種信息,如:管理員、老師、學(xué)生等,可以修改自己的密碼。動(dòng)態(tài)口令的主要思路是:在登錄過程中加入不確定因素,使每次登錄過程中傳送的信息都不相同,以提高登錄過程安全性。例如:登錄密碼=md5(隨機(jī)數(shù)+密碼),系統(tǒng)接收到登錄口令后做一個(gè)驗(yàn)算即可驗(yàn)證用戶的合法性。當(dāng)用戶向服務(wù)器發(fā)出連接請(qǐng)求時(shí),服務(wù)器發(fā)
19、給用戶一個(gè)challenge。challenge通常是由兩部分組成的:種子值(seed)和迭代值(iteration),它們是在添加用戶時(shí)產(chǎn)生的,用戶收到challenge后進(jìn)行加密計(jì)算:md5iteration(seed+password),并把結(jié)果作為回答返回服務(wù)器。服務(wù)器收到回答,將它再次加密后與所存密碼比較,如果相同就成功登錄,并更新密碼為md5iteration(seed+password),迭代值為(iteration-1)。 我們可以看出,用戶通過網(wǎng)絡(luò)傳給服務(wù)器的口令是種子值和密碼的加密結(jié)果,用戶本身的密碼并沒有在網(wǎng)上傳播。攻擊者很難從中提取出原始的密碼,又因?yàn)榈悼偸遣粩嘧兓?/p>
20、的,這使得下一次用戶登錄時(shí)使用的鑒別信息與上次不同,從而有效地阻止了重放攻擊??傊c靜態(tài)口令技術(shù)的單因子(口令)鑒別不同,一次性動(dòng)態(tài)口令技術(shù)是一種多因子(種子值,迭代值和密碼)鑒別技術(shù),其中引入的不確定因子使得它更為安全。管理員添加各類用戶時(shí)初始化口令流程:圖1 初始化口令流程圖用戶登錄時(shí)驗(yàn)證口令流程:圖2 登錄時(shí)驗(yàn)證口令流程4總體設(shè)計(jì)4.1功能模塊構(gòu)造動(dòng)態(tài)口令認(rèn)證的網(wǎng)上選課系統(tǒng)信息管理身份驗(yàn)證選課教師信息的添加、修改、刪除學(xué)生信息的添加、修改、刪除課程信息的添加、修改、刪除系的添加、修改、刪除專業(yè)的添加、修改、刪除學(xué)歷的添加、修改、刪除查看課程選課查看選課名單密碼修改課程分配管理員信息的添
21、加、修改、刪除圖3 系統(tǒng)功能模塊圖4.2功能模塊具體介紹4.2.1身份驗(yàn)證模塊通過登錄才可進(jìn)入選課系統(tǒng),登錄信息提交后檢驗(yàn)登錄者的身份是否合法,如果合法則轉(zhuǎn)入對(duì)應(yīng)的操作界面。在本系統(tǒng)中,只有三種身份:學(xué)生、老師、管理員。登錄時(shí)在口令中引入不確定因數(shù),使每次登錄傳送的口令信息不同。4.2.2信息管理模塊管理員管理模塊:負(fù)責(zé)管理管理員的基本信息。管理員可通過本模塊實(shí)現(xiàn)添加、刪除、修改管理員的基本信息。老師管理模塊:負(fù)責(zé)管理老師的基本信息。管理員可通過本模塊實(shí)現(xiàn)添加、刪除、修改老師的基本信息,可以選擇根據(jù)老師工作證號(hào)或姓名查找老師。在該模塊中可以實(shí)現(xiàn)對(duì)老師的管理,為排課提供老師的基本信息。學(xué)生管理模
22、塊:負(fù)責(zé)管理學(xué)生的基本信息。管理員可通過本模塊實(shí)現(xiàn)添加、刪除、修改學(xué)生的基本信息,可以選擇根據(jù)學(xué)生學(xué)號(hào)或姓名查找學(xué)生。在該模塊中可以實(shí)現(xiàn)對(duì)學(xué)生的管理。 課程管理模塊:負(fù)責(zé)管理課程的基本信息。管理員可通過本模塊實(shí)現(xiàn)課程的添加、刪除、修改,可以選擇按課程名或?qū)I(yè)查詢已經(jīng)添加的課程。系別管理模塊:負(fù)責(zé)管理系別的基本信息。管理員可通過本模塊實(shí)現(xiàn)系別的添加、刪除、修改。專業(yè)管理模塊:負(fù)責(zé)管理專業(yè)的基本信息。管理員可通過本模塊實(shí)現(xiàn)專業(yè)的添加、刪除、修改,可以按系查詢已經(jīng)添加的專業(yè)。學(xué)歷管理模塊:負(fù)責(zé)管理學(xué)歷的基本信息。管理員可通過本模塊實(shí)現(xiàn)學(xué)歷的添加、刪除、修改。 課程分配模塊:負(fù)責(zé)給老師分配課程。根據(jù)老
23、師姓名,課程所屬系、專業(yè),給老師分配課程。老師可以教不同系的課程。密碼修改模塊:管理員、老師、學(xué)生登錄成功后在各自的頁(yè)面點(diǎn)擊“修改密碼”進(jìn)行密碼修改。4.2.3選課模塊查看課程選課模塊:學(xué)生登錄后進(jìn)入選課頁(yè)面,在規(guī)定時(shí)間內(nèi)可以進(jìn)行選課、退選,選擇人數(shù)已滿的課程時(shí),該課程不能被選上,學(xué)生可以查看自己已選課程。查看選課名單模塊:老師登錄后可以根據(jù)自己所教課程查看選課名單,只有學(xué)生選擇了的課程才會(huì)顯示。4.3 e-r圖圖4 e-r圖4.4數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,對(duì)于系統(tǒng)用戶信息數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)表:表1 課程表lessions(課程)數(shù)據(jù)庫(kù)字段名中文名字段類
24、型是否為空備注lessionid(主鍵)課程idint否從1開始自動(dòng)增長(zhǎng),以后有“auto”表示grademark年級(jí)varchar(10)否lessionname課程名varchar(200)否lessionischoose是否可選bit否1表示是0表示否(默認(rèn)為0)lessionchoosestartdate選課開始時(shí)間dataetime否lessionchooseenddate選課結(jié)束時(shí)間dataetime否lessionmaxperson選課最多人數(shù)int否lessionadddate課程添加時(shí)間datetime否lessiontimelength課時(shí)int否lessiondescri
25、ption課程備注text是studydepartmentid專業(yè)idint否關(guān)系表(studydepartments)lessionismain是否為必修bit否表2 老師表teachers(老師)數(shù)據(jù)庫(kù)字段名中文名字段類型是否為空備注teacherid(主鍵)老師idint否autoteachernumber老師的工作證號(hào)varchar(20)否teachername老師名稱varchar(50)否teacheruername老師昵稱varchar(50)否teacherpassword登陸密碼varchar(100)否teacheradddate老師添加時(shí)間datetime否depart
26、menid系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ù)庫(kù)字段名中文名字段類型是否為空備注studentid(主鍵)學(xué)生idint否autostudentnumber學(xué)號(hào)varchar(20)否studentname學(xué)生名稱varchar(50)否studentuername學(xué)生昵稱varchar(50)否studentpassword登陸密碼varchar(100)否studentadddate學(xué)生入學(xué)時(shí)
27、間datetime否studentenddate學(xué)生畢業(yè)時(shí)間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é)生擴(kuò)展信息idint否默認(rèn)為0,表示沒有擴(kuò)展信息,大于0就關(guān)系到表(studentextends)表4老師 課程 聯(lián)系表lessionteachers (老師 課程 聯(lián)系表)數(shù)據(jù)庫(kù)字段名中文名字段類型
28、是否為空備注lessionteacherid(主鍵)聯(lián)系編號(hào)int否autoteacherid老師idint否關(guān)系表(teachers)lessionid課程idint否關(guān)系表(lessions)表5學(xué)生 課程 聯(lián)系表lessionstudents(學(xué)生 課程 聯(lián)系表)數(shù)據(jù)庫(kù)字段名中文名字段類型是否為空備注lessionstudentid(主鍵)聯(lián)系編號(hào)int否autostudentid學(xué)生idint否關(guān)系表(students)lessionid課程idint否關(guān)系表(lessions)管理員表(managers):存放管理員id、姓名、編號(hào)、密碼、添加時(shí)間、昵稱。學(xué)生擴(kuò)展信息表(studen
29、textends):存放擴(kuò)展id、民族id、性別、生日、照片id、身份證號(hào)、備注。系別表(departments):存放系id、系名、備注。專業(yè)表(studydepartment):存放專業(yè)id、系id、專業(yè)名、備注。年級(jí)表(grades):存放年級(jí)id、年級(jí)名、年級(jí)標(biāo)識(shí)。民族表(races):存放民族id、民族名。學(xué)歷表(studytypes):存放學(xué)歷id、學(xué)歷名、學(xué)歷標(biāo)識(shí)。學(xué)生密碼表(studentpassword):存放學(xué)生id、迭代值、隨機(jī)值。老師密碼表(studentpassword):存放老師id、迭代值、隨機(jī)值。管理員密碼表(teacherpassword):存放管理員id、迭
30、代值、隨機(jī)值。5詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)5.1連接數(shù)據(jù)庫(kù)所有頁(yè)面都要連接數(shù)據(jù)庫(kù),代碼為:在web.config里添加: 5.2初始化動(dòng)態(tài)口令5.3管理員/老師/學(xué)生登錄功能在登錄頁(yè)面對(duì)應(yīng)的地方輸入用戶名、密碼,確認(rèn)后登錄。在提交后的文件中,首先通過學(xué)號(hào)/工作證號(hào)對(duì)數(shù)據(jù)庫(kù)中的managers /students/teachers表進(jìn)行檢索,若檢索到的記錄集為空,則說明學(xué)號(hào)/工作證號(hào)錯(cuò)誤,從而轉(zhuǎn)到相應(yīng)的出錯(cuò)處理程序,若記錄集不為空,再進(jìn)行密碼判斷,通過動(dòng)態(tài)密碼算法和數(shù)據(jù)庫(kù)中的managerpassword /studentpassword/teacherpassword看密碼是否相等,不相等,做出錯(cuò)處理,相
31、等則轉(zhuǎn)入管理員/學(xué)生/老師登錄成功的操作頁(yè)面。出錯(cuò)及處理:在該模塊中可能發(fā)生的錯(cuò)誤有:(1)、用戶名或密碼錯(cuò)誤,系統(tǒng)提示“用戶名或密碼不正確!”。(2)、捕捉到異常,系統(tǒng)提示“對(duì)不起,登錄失敗,請(qǐng)重新登陸!”。學(xué)生登錄身份驗(yàn)證是在switch (rbtnllogtype.selectedvalue)中加如下代碼:case 0: /當(dāng)身份為0,即學(xué)生時(shí) try dsstudenttableadapters.studentstableadapter dsstudent = new dsstudenttableadapters.studentstableadapter(); /實(shí)例化類 dspass
32、wordtableadapters.studentpasswordtableadapter dsstudentpassword = new dspasswordtableadapters.studentpasswordtableadapter(); /實(shí)例化類 datatable dtstudentid = dsstudent.a_getstudentbystudentnumber(txtnumber.text); /通過類的實(shí)例dsstudent的方法a_getstudentbystudentnumber得到學(xué)號(hào)為txtnumber.text的學(xué)生的所有字段的值 string student
33、id = 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 = dtstudentid.rows0.itemarray.getvalue(7).
34、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 = dtstudentid.rows0.itemarray.getvalue(
35、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 studentpassword = studentseed.tostring() + txtpas
36、sword.text; /將studentseed.tostring()和txtpassword.text連接起來賦值給studentpassword,作為要加密的密碼 int studentseq1; for (studentseq1 = int.parse(studentseq); studentseq1 0; studentseq1-) studentpassword = encode.encodebymd5_32(studentpassword); /加密過程,將密碼加密int.parse(studentseq)次 dslogtableadapters.loginfotableadap
37、ter dalloginfo = new dslogtableadapters.loginfotableadapter(); datatable dtloginfo = dalloginfo.a_getloginfo(txtnumber.text, studentpassword, int.parse(rbtnllogtype.selectedvalue); /使用dalloginfo.a_getloginfo方法驗(yàn)證登錄,找到學(xué)生就寫相應(yīng)字段到表dtloginfo中 if (dtloginfo.rows.count =1) /如果行數(shù)等于1,通過驗(yàn)證 setcookie(number, tx
38、tnumber.text); setcookie(password, studentpassword); setcookie(userid, dtloginfo.rows0userid.tostring(); setcookie(realname, dtloginfo.rows0realname.tostring(); setcookie(username, dtloginfo.rows0username.tostring(); setcookie(usertype, rbtnllogtype.selectedvalue); /保存用戶信息到cookie lblinfo.visible = t
39、rue;/顯示提醒信息框 lblinfo.text = 登錄成功!;/設(shè)置要顯示的提醒信息 dsstudent.update(getcookie(number), getcookie(realname), getcookie(realname), studentpassword, datetime.parse(studentadddate), datetime.parse(studentenddate), int.parse(studydepartmentid), int.parse(studentstate), int.parse(studytypeid), int.parse(studen
40、tyearcount), int.parse(studentextendid), int.parse(studentid),int.parse(studentid); /更新students表中該學(xué)生字段值 int studentseq2 = int.parse(studentseq) - 1; dsstudentpassword.update(int.parse(studentid), studentseq2, int.parse(studentseed), int.parse(studentid);/更新studentpassword表中該學(xué)生字段值 response.redirect(c
41、hoose.aspx, false); /跳到choose.aspx頁(yè)面 else string loginfo = 用戶名或密碼不正確!; lblinfo.visible = true;/顯示提示框內(nèi)容 lblinfo.text = loginfo; /設(shè)置提示框內(nèi)容 return; /驗(yàn)證未通過,則顯示提示信息用戶名或密碼不正確! catch (exception ex) goerrorpage(ex, 對(duì)不起,登錄失敗,請(qǐng)重新登陸!); /捕獲到異常,寫錯(cuò)誤日志,并跳到出錯(cuò)頁(yè)面顯示對(duì)不起,登錄失敗,請(qǐng)重新登陸! break; /退出switch語(yǔ)句在登錄過程中實(shí)現(xiàn)了動(dòng)態(tài)口令身份認(rèn)證,通過
42、數(shù)據(jù)表中密碼的變化能得到驗(yàn)證。如下兩圖:圖5 用戶“夏雨”第4次登錄數(shù)據(jù)表截圖圖6 用戶“夏雨”第5次登錄數(shù)據(jù)表截圖5.4管理員/學(xué)生/老師密碼管理功能密碼管理的前提是用戶成功登錄,選擇密碼修改后,按照頁(yè)面上的提示,在相應(yīng)的文本框中輸入新密碼(兩次),確定后提交。轉(zhuǎn)入執(zhí)行的文件后,首先根據(jù)傳遞的學(xué)號(hào)/工作證號(hào)判斷兩次輸入的新密碼是否相等,若不等,出錯(cuò);否則,用新密碼代替舊密碼,更新managers/students/teachers中的“managerpassword”/ “studentpassword”/“teacherpassword”字段,并返回登錄頁(yè)面。出錯(cuò)及處理:在該模塊中可能發(fā)生
43、的錯(cuò)誤有:新密碼兩次輸入不同,系統(tǒng)提示“新密碼不一致,請(qǐng)重新輸入!”。5.5老師信息的添加、刪除、修改5.6管理員為老師分配課程管理員給老師分配課程,選擇老師姓名,課程名及課程所屬系、專業(yè),按添加按鈕,提示分配成功。按“刪除”彈出注意框“你確認(rèn)你要進(jìn)行這個(gè)操作嗎?”,在“確定”和“取消”間選擇。老師可以教不同系的課程。在此頁(yè)面用到了bindgvlist方法,綁定gridview,代碼如下:public void bindgvlist()/聲明方法:名稱為bindgvlist,無(wú)返回值 try dslessionteacherstableadapters.lessionteacherstable
44、adapter lessionteacherdal = new dslessionteacherstableadapters.lessionteacherstableadapter();/實(shí)例化類datatable dt= lessionteacherdal.c_selectlessionteachers();/定義內(nèi)存中數(shù)據(jù)的一個(gè)表,名字為dt,由實(shí)例化類lessionteacherdal中c_selectlessionteachers方法獲得的值填充 gvlist.datasource =dt.defaultview; gvlist.databind(); /綁定gridview catc
45、h (exception ex) goerrorpage(ex.tostring(); /捕獲到異常就跳到出錯(cuò)頁(yè)面 圖8 為老師分配課程頁(yè)面截圖5.7學(xué)生選課學(xué)生進(jìn)入選課頁(yè)面后會(huì)有該生所在專業(yè)的、選課時(shí)間包含了當(dāng)時(shí)所在時(shí)間的課程。該生已選的課程顯示藍(lán)色,在選課時(shí)間內(nèi)可以退選;人數(shù)已滿課程為紅色,不能再選;其它為白色。點(diǎn)擊“查看”按鈕可以看到自己已選課程。在該頁(yè)面用到了basepage類中驗(yàn)證是否登錄的方法checklog(),方法如下:private bool checklog() /聲明方法:名稱為checklog,返回值類型為bool(true/false) dslogtableadapters.loginfotableadapter dschecklogin = new dslogtableadapters.loginfotableadapter(); /實(shí)例化類 if (getcookie(usertype) != 1 & getcookie(usertype) != 0 & getcookie(usertype) != 2) return false; / cookie中usertype如果不等于0/1/2,返回false datatable dt = dsche
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交車火災(zāi)應(yīng)急預(yù)案(3篇)
- 2025年軟件水平技術(shù)員試題及答案深度分析
- 行政管理實(shí)際案例試題及答案
- 風(fēng)險(xiǎn)識(shí)別對(duì)公司戰(zhàn)略修訂的支持作用試題及答案
- 遺囑與繼承法的規(guī)定試題及答案
- 網(wǎng)絡(luò)管理員考試多樣化試題及答案
- 軟件設(shè)計(jì)師考試靈活應(yīng)變能力的提升與實(shí)踐試題及答案
- 2025二級(jí)VB考試要點(diǎn)試題分析
- 軟硬件協(xié)同設(shè)計(jì)試題及答案
- 《2025續(xù)簽勞動(dòng)合同 范文》
- 設(shè)備合同三方付款協(xié)議
- 《家禽的繁殖》課件
- 2025屆浙江省六校聯(lián)盟高三第五次模擬考試英語(yǔ)試卷含答案
- 鄉(xiāng)鎮(zhèn)禁毒專干培訓(xùn)課件
- 護(hù)理分級(jí)標(biāo)準(zhǔn)2023版(新舊標(biāo)準(zhǔn)對(duì)比詳解)解讀
- 建筑施工企業(yè)售后服務(wù)保障方案
- ××企業(yè)檔案分類方案
- 《測(cè)繪生產(chǎn)成本費(fèi)用定額》(2025版)
- 順豐talentq測(cè)試題及答案
- 2025年科學(xué)實(shí)驗(yàn)小試題及答案
- 2025年思政考試試題及答案職高
評(píng)論
0/150
提交評(píng)論