版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)綜合實(shí)訓(xùn)報(bào)告</b></p><p> 班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐</p><p><b> 目 錄</b></p><p><b> 第一章 緒論3</b></p><p> 1.1 課題背景3</p><p&
2、gt; 1.2 使用技術(shù)及發(fā)展4</p><p> 第二章班主任管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)5</p><p> 2.1 班主任管理系統(tǒng)的設(shè)計(jì)5</p><p> 2.1.1 系統(tǒng)框架5</p><p> 2.1.2 系統(tǒng)使用部門(mén)7</p><p> 2.1.3 系統(tǒng)使用者8</p>&l
3、t;p> 2.1.4 系統(tǒng)功能劃分與描述8</p><p> 2.2班主任管理系統(tǒng)的部分實(shí)現(xiàn)9</p><p> 2.3 核心代碼業(yè)務(wù)實(shí)現(xiàn)12</p><p><b> 總結(jié)28</b></p><p><b> 參考文獻(xiàn)29</b></p><p>
4、;<b> 第一章 緒論</b></p><p><b> 1.1 課題背景</b></p><p> 隨著現(xiàn)在教育事業(yè)的不斷發(fā)展,信息技術(shù)對(duì)社會(huì)進(jìn)步和國(guó)名經(jīng)濟(jì)發(fā)揮著越來(lái)越大的促進(jìn)作用,并對(duì)傳統(tǒng)的思想觀念、工作方式產(chǎn)生巨大的沖擊。世界已進(jìn)入信息化時(shí)代,網(wǎng)絡(luò)技術(shù)已進(jìn)入了各行各業(yè),同時(shí)也帶動(dòng)了各行業(yè)的發(fā)展。</p><p&g
5、t; 中國(guó)現(xiàn)在教育事業(yè)的發(fā)展迅猛,高等院校的數(shù)量和規(guī)模不斷的擴(kuò)大。與此同時(shí),根據(jù)時(shí)代的要求,管理,特別是對(duì)日益增多的學(xué)生的管理,對(duì)學(xué)校的發(fā)展起著不可忽視的作用。而班主任(輔導(dǎo)老師)在學(xué)生的管理中有著承上啟下的樞紐地位,這一角色的重要性也日漸突出起來(lái)。學(xué)校與學(xué)生之間溝通途徑的建立、對(duì)學(xué)生的具體管理措施的實(shí)施等都是通過(guò)班主任的工作得以體現(xiàn)和貫徹執(zhí)行的,如果班主任這個(gè)環(huán)節(jié)的工作做的好,其對(duì)學(xué)生工作的總體管理和發(fā)展都具有不可估量的好處。因此,
6、越來(lái)越多的學(xué)校對(duì)班主任這一角色也越來(lái)越重視,一些院校專(zhuān)門(mén)對(duì)班主任進(jìn)行一系列培訓(xùn),并且由原來(lái)的一個(gè)系甚至一個(gè)院配備一名輔導(dǎo)員增加至每個(gè)班級(jí)一名班主任。</p><p> 與上述管理需求不符的是:針對(duì)班主任工作的配套管理軟件嚴(yán)重缺乏。雖然,已有很多較成熟的學(xué)生管理方面的軟件,但這些軟件主要是實(shí)現(xiàn)了教學(xué)和教務(wù)兩個(gè)方面的數(shù)字化管理,而在目前國(guó)內(nèi)已有的學(xué)生管理系統(tǒng)中,具體到班主任管理班級(jí)這個(gè)方面的管理軟件基本上是一片空白
7、。</p><p> 實(shí)際上,一方面,班主任工作的特點(diǎn)是事多、瑣碎、繁雜,但工作程序是有序。因而,在當(dāng)今科技高度發(fā)達(dá)的信息社會(huì),開(kāi)發(fā)一個(gè)適合班主任工作的管理軟件,提高辦公質(zhì)量,加強(qiáng)班級(jí)管理,是適應(yīng)學(xué)校各方面發(fā)展的要求,是學(xué)生管理工作中急需解決的問(wèn)題。</p><p> 1.2 使用技術(shù)及發(fā)展</p><p> 本論文主要研究JSP技術(shù)以及JSP技術(shù)實(shí)現(xiàn)基于We
8、b的三層體系結(jié)構(gòu)的應(yīng)用,實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁(yè)對(duì)數(shù)據(jù)庫(kù)的查詢(xún)、統(tǒng)計(jì)、更新等功能。目的是應(yīng)用計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、Internet技術(shù)、以Tomcat為服務(wù)器,JSP、JAVA作為主要開(kāi)發(fā)工具,實(shí)現(xiàn)跨平臺(tái)、跨網(wǎng)絡(luò)、統(tǒng)一界面、易于擴(kuò)展和維護(hù)的大紅鷹班主任管理系統(tǒng)。 </p><p> B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這
9、種結(jié)構(gòu)下,用戶(hù)界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂3-tier結(jié)構(gòu)。B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語(yǔ)言(VBScript、JavaScript…)和ActiveX技術(shù),用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜專(zhuān)用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。隨著Windows 98/Windows
10、160;2000將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)。顯然B/S結(jié)構(gòu)應(yīng)用程序相對(duì)于傳統(tǒng)的C/S結(jié)構(gòu)應(yīng)用程序?qū)⑹蔷薮蟮倪M(jìn)步。 B/S結(jié)構(gòu)采用星形拓?fù)浣Y(jié)構(gòu)建立企業(yè)內(nèi)部通信網(wǎng)絡(luò)或利用Internet虛擬專(zhuān)網(wǎng)(VPN)。前者的特點(diǎn)是安全、快捷、準(zhǔn)確。后者則具有節(jié)省投資、跨地域廣的優(yōu)點(diǎn),須視企業(yè)規(guī)模和地理分布確定。企業(yè)內(nèi)部通過(guò)防火墻接入Internet,在整個(gè)網(wǎng)絡(luò)采用TCP/IP協(xié)議。</
11、p><p> Java 是 Sun 公司推出的一種編程語(yǔ)言。它是一種通過(guò)解釋方式來(lái)執(zhí)行的語(yǔ)言,語(yǔ)法規(guī)則和 C++ 類(lèi)似。同時(shí), Java 也是一種跨平臺(tái)的程序設(shè)計(jì)語(yǔ)言。用 Java 語(yǔ)言編寫(xiě)的程序叫做 “Applet” (小應(yīng)用程序),用編譯器將它編譯成類(lèi)文件后,將它存在 WWW 頁(yè)面中,并在 HTML 檔上作好相應(yīng)標(biāo)記,用戶(hù)端只要裝上 Java 的客戶(hù)軟件就可以在網(wǎng)上直接運(yùn)行 “Applet” 。 Java 非常
12、適合于企業(yè)網(wǎng)絡(luò)和 Internet 環(huán)境,現(xiàn)在已成為 Internet 中最受歡迎、最有影響的編程語(yǔ)言之一。 Java 有許多值得稱(chēng)道的優(yōu)點(diǎn),如簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、可靠、安全、結(jié)構(gòu)中立性、可移植性、高性能、多線程、動(dòng)態(tài)性等。 Java 擯棄了 C++ 中各種弊大于利的功能和許多很少用到的功能。 Java 可以運(yùn)行與任何微處理器,用 Java 開(kāi)發(fā)的程序可以在網(wǎng)絡(luò)上傳輸,并運(yùn)行于任何客戶(hù)機(jī)上。 </p><
13、p> JSP是JavaServer Pages的簡(jiǎn)寫(xiě)。JSP技術(shù)能讓W(xué)eb開(kāi)發(fā)員和網(wǎng)頁(yè)設(shè)計(jì)員快速地開(kāi)發(fā)容易維護(hù)的動(dòng)態(tài)Web主頁(yè)。用JSP開(kāi)發(fā)的Web應(yīng)用是跨平臺(tái)的,即能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。 </p><p> JSP技術(shù)使用Java編程語(yǔ)言編寫(xiě)類(lèi)XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于服務(wù)端的資源
14、(例如JavaBesns)的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易。JSP技術(shù)是Servlet技術(shù)的擴(kuò)展。Servlet是平臺(tái)無(wú)關(guān)的,100%純Java的Java服務(wù)端組件。</p><p> 第二章班主任管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)</p><p> 2.1 班主任管理系統(tǒng)的設(shè)計(jì)</p><p
15、> 班主任管理系統(tǒng)總的目的在于方便班主任對(duì)班級(jí)的管理,同時(shí)也提高了學(xué)生處對(duì)各個(gè)班級(jí)的評(píng)比和對(duì)班主任事務(wù)的評(píng)估與考核,為領(lǐng)導(dǎo)提供輔助決策支持,提高決策的科學(xué)性。建立學(xué)校數(shù)據(jù)庫(kù),在日常工作中自動(dòng)生成數(shù)據(jù),簡(jiǎn)化上報(bào)過(guò)程,提高辦事效率。</p><p> 2.1.1 系統(tǒng)框架</p><p> 班主任管理系統(tǒng)是學(xué)校信息系統(tǒng)的一個(gè)子系統(tǒng),相應(yīng)的系統(tǒng)框架圖見(jiàn)圖2-1:</p>
16、<p> 暫時(shí)還不存在的子系統(tǒng)</p><p><b> 已有的子系統(tǒng)</b></p><p><b> 班主任管理子系統(tǒng)</b></p><p> 班主任管理子系統(tǒng)中的模塊</p><p><b> 圖2-1</b></p><p&g
17、t; 說(shuō)明:班主任管理子系統(tǒng)和教務(wù)處、宿管科、學(xué)生處都有數(shù)據(jù)交互。</p><p> 學(xué)生基本信息表單來(lái)自教務(wù)處中的數(shù)據(jù)庫(kù)。大紅鷹學(xué)院的教務(wù)系統(tǒng)是萬(wàn)方系統(tǒng),它所使用的數(shù)據(jù)庫(kù)是ORACLE的。</p><p> 積分考核管理、班主任日常事務(wù)管理、用戶(hù)權(quán)限設(shè)置這一模塊和學(xué)生處相連。</p><p> 班主任事務(wù)管理、積分考核管理與宿管科相連。</p>
18、<p> 2.1.2 系統(tǒng)使用部門(mén)</p><p> 班主任管理系統(tǒng)是一個(gè)非常實(shí)用的系統(tǒng),在學(xué)院里面使用它的部門(mén)主要是:學(xué)生處、宿管科和班級(jí)學(xué)生、學(xué)生家長(zhǎng)以及相應(yīng)班主任。</p><p> 學(xué)生處每天對(duì)各班進(jìn)行各種檢查,針對(duì)不同的情況對(duì)相應(yīng)班級(jí)的千分制進(jìn)行增減,每月對(duì)所有班級(jí)千分制排名,并且以此作為班主任當(dāng)月工作考核內(nèi)容之一。每月學(xué)生處根據(jù)本系統(tǒng)檢查班主任日常事務(wù),這也
19、是班主任每月考核內(nèi)容之一。</p><p> 宿管科管理學(xué)生寢室住宿,有權(quán)對(duì)班級(jí)成員因住宿方面的情況進(jìn)行個(gè)人方面千分制的增減。每次班主任下寢室,都由宿管科登記。</p><p> 班級(jí)的普通學(xué)生可以查看自己的基本信息,查看自己班級(jí)以及本人的千分制情況,可以在留言板里發(fā)布信息;班委除了擁有班級(jí)普通學(xué)生的權(quán)限以外,還可以根據(jù)班級(jí)成員的具體情況對(duì)班級(jí)成員的千分制進(jìn)行相應(yīng)增扣,查看其他班級(jí)成員
20、信息;班主任可以修改班級(jí)成員的千分制,對(duì)班主任日常事務(wù)管理這一塊進(jìn)行相應(yīng)數(shù)據(jù)錄入。</p><p> 學(xué)生家長(zhǎng)可以用自己子女的用戶(hù)名、密碼登入系統(tǒng),并且可以在留言板留言。</p><p> 2.1.3 系統(tǒng)使用者</p><p> 班主任管理系統(tǒng)主要工作是方便班主任的日常工作,并且對(duì)班主任工作進(jìn)行定性定量考核的考核,系統(tǒng)使用者有:</p><
21、;p> 學(xué)生處管理者:對(duì)班級(jí)千分制進(jìn)行查詢(xún)、修改;對(duì)班主任工作進(jìn)行查詢(xún)。</p><p> 宿管科管理者:對(duì)班級(jí)成員千分制進(jìn)行增扣的錄入;對(duì)班主任下寢室時(shí)間與寢室號(hào)碼的錄入。</p><p> 班主任:對(duì)班級(jí)千分制和班級(jí)成員千分制的錄入、查詢(xún)、修改;對(duì)班級(jí)成員信息的查詢(xún);對(duì)班主任日常事務(wù)的相關(guān)錄入;留言板上留言。</p><p> 班委:對(duì)班級(jí)成員千分
22、制的錄入;對(duì)班級(jí)千分制的查詢(xún);留言板上留言。</p><p> 普通學(xué)生、學(xué)生家長(zhǎng):對(duì)本人或子女千分制的查詢(xún),班級(jí)千分制的查詢(xún),留言板留言。</p><p> 2.1.4 系統(tǒng)功能劃分與描述</p><p> 班主任管理系統(tǒng)分為學(xué)生基本信息管理、積分考核管理、班主任日常事務(wù)管理、用戶(hù)權(quán)限設(shè)置管理、登入登出管理和消息公布留言板六個(gè)模塊。</p>&
23、lt;p> 學(xué)生基本信息管理:這個(gè)模塊中的數(shù)據(jù)是教務(wù)處的方正教務(wù)系統(tǒng)中的數(shù)據(jù),在我們這個(gè)班主任管理系統(tǒng)中沒(méi)有修改權(quán)限,但是可以供班委、班主任、學(xué)生處查詢(xún)。</p><p> 積分考核管理:這個(gè)模塊是我們這個(gè)系統(tǒng)的一個(gè)重點(diǎn)模塊,班主任定性定量考核班委、學(xué)生處考核班主任、班級(jí)優(yōu)劣排名都是在這個(gè)模塊進(jìn)行。</p><p> 班主任日常事務(wù)管理:這個(gè)模塊是考核班主任所有任務(wù)完成與否的一
24、個(gè)模塊,通過(guò)這個(gè)模塊可以督促班主任和學(xué)生、學(xué)生家長(zhǎng)之間的聯(lián)系;班主任可以通過(guò)這個(gè)模塊了解自己的工作進(jìn)程;同時(shí),這個(gè)模塊也是學(xué)生處對(duì)班主任工作考核的依據(jù)之一。這個(gè)模塊只能班主任和學(xué)生處可以看到。</p><p> 用戶(hù)權(quán)限設(shè)置:可以設(shè)置用戶(hù)的權(quán)限,分為:只讀、增加和修改權(quán)限。只讀權(quán)限權(quán)限最低,除了查看之外沒(méi)有任何別的權(quán)限。增加權(quán)限可以輸入數(shù)據(jù),比如班級(jí)和個(gè)人千分制的輸入,但是不能進(jìn)行修改。修改權(quán)限權(quán)限最高,除了讀
25、寫(xiě)外,還可以修改數(shù)據(jù)。</p><p> 登入登出管理:形成一個(gè)日志文件,從該模塊可以知道進(jìn)入該模塊的人和時(shí)間。</p><p> 消息公布留言板模塊:這個(gè)模塊實(shí)際上是一個(gè)班級(jí)的BBS,所有同學(xué)都可以在上面留言,留言上面的名字顯示是登入班主任管理系統(tǒng)的名字,可以規(guī)范留言。班級(jí)有什么事情,及時(shí)在這里發(fā)布。學(xué)生有什么意見(jiàn)或建議,又不愿意和老師溝通的,可以在這里發(fā)表。同時(shí),學(xué)生家長(zhǎng)也可以通過(guò)
26、這個(gè)模塊知道班級(jí)或?qū)W校動(dòng)態(tài),并且可以發(fā)表言論。這個(gè)模塊是學(xué)生、家長(zhǎng)和老師的一個(gè)溝通平臺(tái)。</p><p> 2.2班主任管理系統(tǒng)的部分實(shí)現(xiàn)</p><p> 班主任管理系統(tǒng)的實(shí)現(xiàn)是在我們畢業(yè)實(shí)踐小組的共同努力下完成的,我所作的工作是: </p><p> 我在項(xiàng)目主要負(fù)責(zé)權(quán)限驗(yàn)證,我采用了過(guò)濾器來(lái)實(shí)現(xiàn)RBAC模式做權(quán)限這塊!權(quán)限系統(tǒng)是一個(gè)系統(tǒng)必不可少的模塊之一
27、!簡(jiǎn)單介紹以下權(quán)限系統(tǒng),</p><p> 訪問(wèn)控制是針對(duì)越權(quán)使用資源的防御措施。基本目標(biāo)是為了限制訪問(wèn)主體(用戶(hù)、進(jìn)程、服務(wù)等)對(duì)訪問(wèn)客體(文件、系統(tǒng)等)的訪問(wèn)權(quán)限,從而使計(jì)算機(jī)系統(tǒng)在合法范圍內(nèi)使用;決定用戶(hù)能做什么,也決定代表一定用戶(hù)利益的程序能做什么[1]。</p><p> 企業(yè)環(huán)境中的訪問(wèn)控制策略一般有三種:自主型訪問(wèn)控制方法、強(qiáng)制型訪問(wèn)控制方法和基于角色的訪問(wèn)控制方法(RB
28、AC)。其中,自主式太弱,強(qiáng)制式太強(qiáng),二者工作量大,不便于管理[1]?;诮巧脑L問(wèn)控制方法是目前公認(rèn)的解決大型企業(yè)的統(tǒng)一資源訪問(wèn)控制的有效方法。其顯著的兩大特征是:1.減小授權(quán)管理的復(fù)雜性,降低管理開(kāi)銷(xiāo);2.靈活地支持企業(yè)的安全策略,并對(duì)企業(yè)的變化有很大的伸縮性。</p><p> NIST(The National Institute of Standards and Technology,美國(guó)國(guó)家標(biāo)準(zhǔn)與技
29、術(shù)研究院)標(biāo)準(zhǔn)RBAC模型由4個(gè)部件模型組成,這4個(gè)部件模型分別是基本模型RBAC0(Core RBAC)、角色分級(jí)模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統(tǒng)一模型RBAC3(Combines RBAC)[1]。RBAC0模型如圖2-2所示。</p><p> 圖2-2 RBAC0模型</p><p> a. RBAC
30、0定義了能構(gòu)成一個(gè)RBAC控制系統(tǒng)的最小的元素集合。在RBAC之中,包含用戶(hù)users(USERS)、角色roles(ROLES)、目標(biāo)objects(OBS)、操作operations(OPS)、許可權(quán)permissions(PRMS)五個(gè)基本數(shù)據(jù)元素,權(quán)限被賦予角色,而不是用戶(hù),當(dāng)一個(gè)角色被指定給一個(gè)用戶(hù)時(shí),此用戶(hù)就擁有了該角色所包含的權(quán)限。會(huì)話sessions是用戶(hù)與激活的角色集合之間的映射。RBAC0與傳統(tǒng)訪問(wèn)控制的差別在于增加
31、一層間接性帶來(lái)了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴(kuò)展。</p><p> b. RBAC1引入角色間的繼承關(guān)系,角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系是一個(gè)絕對(duì)偏序關(guān)系,允許角色間的多繼承。而受限繼承關(guān)系則進(jìn)一步要求角色繼承關(guān)系是一個(gè)樹(shù)結(jié)構(gòu)。</p><p> c. RBAC2模型中添加了責(zé)任分離關(guān)系。RBAC
32、2的約束規(guī)定了權(quán)限被賦予角色時(shí),或角色被賦予用戶(hù)時(shí),以及當(dāng)用戶(hù)在某一時(shí)刻激活一個(gè)角色時(shí)所應(yīng)遵循的強(qiáng)制性規(guī)則。責(zé)任分離包括靜態(tài)責(zé)任分離和動(dòng)態(tài)責(zé)任分離。約束與用戶(hù)-角色-權(quán)限關(guān)系一起決定了RBAC2模型中用戶(hù)的訪問(wèn)許可。</p><p> d. RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關(guān)系,又提供了責(zé)任分離關(guān)系。</p><p><b> 3核心對(duì)象模型設(shè)計(jì)&
33、lt;/b></p><p> 根據(jù)RBAC模型的權(quán)限設(shè)計(jì)思想,建立權(quán)限管理系統(tǒng)的核心對(duì)象模型。如圖2所示。</p><p> 對(duì)象模型中包含的基本元素主要有:用戶(hù)(Users)、用戶(hù)組(Group)、角色(Role)、目標(biāo)(Objects)、訪問(wèn)模式(Access Mode)、操作(Operator)。主要的關(guān)系有:分配角色權(quán)限PA(Permission Assignment)
34、、分配用戶(hù)角色UA(Users Assignmen描述如下:</p><p> a .控制對(duì)象:是系統(tǒng)所要保護(hù)的資源(Resource),可以被訪問(wèn)的對(duì)象。資源的定義需要注意以下兩個(gè)問(wèn)題:</p><p> 1.資源具有層次關(guān)系和包含關(guān)系。例如,網(wǎng)頁(yè)是資源,網(wǎng)頁(yè)上的按鈕、文本框等對(duì)象也是資源,是網(wǎng)頁(yè)節(jié)點(diǎn)的子節(jié)點(diǎn),如可以訪問(wèn)按鈕,則必須能夠訪問(wèn)頁(yè)面。</p><p&g
35、t; 2.這里提及的資源概念是指資源的類(lèi)別(Resource Class),不是某個(gè)特定資源的實(shí)例(Resource Instance)。資源的類(lèi)別和資源的實(shí)例的區(qū)分,以及資源的粒度的細(xì)分,有利于確定權(quán)限管理系統(tǒng)和應(yīng)用系統(tǒng)之間的管理邊界,權(quán)限管理系統(tǒng)需要對(duì)于資源的類(lèi)別進(jìn)行權(quán)限管理,而應(yīng)用系統(tǒng)需要對(duì)特定資源的實(shí)例進(jìn)行權(quán)限管理。兩者的區(qū)分主要是基于以下兩點(diǎn)考慮:</p><p> 一方面,資源實(shí)例的權(quán)限常具有資源
36、的相關(guān)性。即根據(jù)資源實(shí)例和訪問(wèn)資源的主體之間的關(guān)聯(lián)關(guān)系,才可能進(jìn)行資源的實(shí)例權(quán)限判斷。</p><p> 例如,在管理信息系統(tǒng)中,需要按照營(yíng)業(yè)區(qū)域劃分不同部門(mén)的客戶(hù),A區(qū)和B區(qū)都具有修改客戶(hù)資料這一受控的資源,這里“客戶(hù)檔案資料”是屬于資源的類(lèi)別的范疇。如果規(guī)定A區(qū)只能修改A區(qū)管理的客戶(hù)資料,就必須要區(qū)分出資料的歸屬,這里的資源是屬于資源實(shí)例的范疇??蛻?hù)檔案(資源)本身應(yīng)該有其使用者的信息(客戶(hù)資料可能就含有營(yíng)
37、業(yè)區(qū)域這一屬性),才能區(qū)分特定資源的實(shí)例操作,可以修改屬于自己管轄的信息內(nèi)容。</p><p> 另一方面,資源的實(shí)例權(quán)限常具有相當(dāng)大的業(yè)務(wù)邏輯相關(guān)性。對(duì)不同的業(yè)務(wù)邏輯,常常意味著完全不同的權(quán)限判定原則和策略。</p><p> b.權(quán)限:對(duì)受保護(hù)的資源操作的訪問(wèn)許可(Access Permission),是綁定在特定的資源實(shí)例上的。對(duì)應(yīng)地,訪問(wèn)策略(Access Strategy)和
38、資源類(lèi)別相關(guān),不同的資源類(lèi)別可能采用不同的訪問(wèn)模式(Access Mode)。例如,頁(yè)面具有能打開(kāi)、不能打開(kāi)的訪問(wèn)模式,按鈕具有可用、不可用的訪問(wèn)模式,文本編輯框具有可編輯、不可編輯的訪問(wèn)模式。同一資源的訪問(wèn)策略可能存在排斥和包含關(guān)系。例如,某個(gè)數(shù)據(jù)集的可修改訪問(wèn)模式就包含了可查詢(xún)?cè)L問(wèn)模式。</p><p> c.用戶(hù):是權(quán)限的擁有者或主體。用戶(hù)和權(quán)限實(shí)現(xiàn)分離,通過(guò)授權(quán)管理進(jìn)行綁定。</p>&l
39、t;p> d.用戶(hù)組:一組用戶(hù)的集合。在業(yè)務(wù)邏輯的判斷中,可以實(shí)現(xiàn)基于個(gè)人身份或組的身份進(jìn)行判斷。系統(tǒng)弱化了用戶(hù)組的概念,主要實(shí)現(xiàn)用戶(hù)(個(gè)人的身份)的方式。</p><p> e.角色:權(quán)限分配的單位與載體。角色通過(guò)繼承關(guān)系支持分級(jí)的權(quán)限實(shí)現(xiàn)。例如,科長(zhǎng)角色同時(shí)具有科長(zhǎng)角色、科內(nèi)不同業(yè)務(wù)人員角色。</p><p> f.操作:完成資源的類(lèi)別和訪問(wèn)策略之間的綁定。</p&g
40、t;<p> g.分配角色權(quán)限PA:實(shí)現(xiàn)操作和角色之間的關(guān)聯(lián)關(guān)系映射。</p><p> h.分配用戶(hù)角色UA:實(shí)現(xiàn)用戶(hù)和角色之間的關(guān)聯(lián)關(guān)系映射。</p><p> 該對(duì)象模型最終將訪問(wèn)控制模型轉(zhuǎn)化為訪問(wèn)矩陣形式。訪問(wèn)矩陣中的行對(duì)應(yīng)于用戶(hù),列對(duì)應(yīng)于操作,每個(gè)矩陣元素規(guī)定了相應(yīng)的角色,對(duì)應(yīng)于相應(yīng)的目標(biāo)被準(zhǔn)予的訪問(wèn)許可、實(shí)施行為。按訪問(wèn)矩陣中的行看,是訪問(wèn)能力表CL(Acc
41、ess Capabilities)的內(nèi)容;按訪問(wèn)矩陣中的列看,是訪問(wèn)控制表ACL(Access Control Lists)的內(nèi)容。</p><p><b> 4 權(quán)限訪問(wèn)機(jī)制</b></p><p> 權(quán)限管理系統(tǒng)端:提供集中管理權(quán)限的服務(wù),負(fù)責(zé)提供用戶(hù)的鑒別、用戶(hù)信息、組織結(jié)構(gòu)信息,以及權(quán)限關(guān)系表的計(jì)算。如圖2-3所示。</p><p>
42、; 圖2-3 權(quán)限的訪問(wèn)示意圖</p><p> Fig.3 Privilege invoke </p><p> 系統(tǒng)根據(jù)用戶(hù),角色、操作、訪問(wèn)策略和控制對(duì)象之間的關(guān)聯(lián)關(guān)系,同時(shí)考慮權(quán)限的正負(fù)向授予,計(jì)算出用戶(hù)的最小權(quán)限。在業(yè)務(wù)邏輯層采用Session Bean實(shí)現(xiàn)此服務(wù),也可以發(fā)布成Web Service。采用代理Proxy模式,集中控制來(lái)自應(yīng)用系統(tǒng)的所要訪問(wèn)的權(quán)限計(jì)算服務(wù),并返
43、回權(quán)限關(guān)系表,即二元組{ObjectId,OperatorId}。</p><p> 應(yīng)用系統(tǒng)端:可以通過(guò)訪問(wèn)能力表CL和訪問(wèn)控制表ACL兩種可選的訪問(wèn)方式訪問(wèn)權(quán)限管理系統(tǒng)。以基于J2EE框架的應(yīng)用系統(tǒng)為例,說(shuō)明訪問(wèn)過(guò)程:</p><p> a.首先采用基于表單的驗(yàn)證,利用Servlet方式集中處理登錄請(qǐng)求[2]??紤]到需要鑒別的實(shí)體是用戶(hù),采用基于ACL訪問(wèn)方式。用戶(hù)登錄時(shí)調(diào)用權(quán)限管
44、理系統(tǒng)的用戶(hù)鑒別服務(wù),如果驗(yàn)證成功,調(diào)用權(quán)限計(jì)算服務(wù),并返回權(quán)限關(guān)系表,以HashMap的方式存放到登錄用戶(hù)的全局Session中;如果沒(méi)有全局的Session或者過(guò)期,則被導(dǎo)向到登錄頁(yè)面,重新獲取權(quán)限。</p><p> b.直接URL資源采用基于CL訪問(wèn)方式進(jìn)行的訪問(wèn)控制。如果用戶(hù)直接輸入U(xiǎn)RL地址訪問(wèn)頁(yè)面,有兩種方法控制訪問(wèn):1.通過(guò)權(quán)限標(biāo)簽讀取CL進(jìn)行控制;2.采取Filter模式,進(jìn)行權(quán)限控制,如果沒(méi)
45、有權(quán)限,則重定向到登錄頁(yè)面。</p><p><b> 5 權(quán)限控制機(jī)制</b></p><p> 權(quán)限所要控制的資源類(lèi)別是根據(jù)應(yīng)用系統(tǒng)的需要而定義的,具有的語(yǔ)義和控制規(guī)則也是應(yīng)用系統(tǒng)提供的,對(duì)于權(quán)限管理系統(tǒng)來(lái)說(shuō)是透明的,權(quán)限將不同應(yīng)用系統(tǒng)的資源和操作統(tǒng)一對(duì)待。應(yīng)用系統(tǒng)調(diào)用權(quán)限管理系統(tǒng)所獲得的權(quán)限關(guān)系表,也是需要應(yīng)用系統(tǒng)來(lái)解釋的。按此設(shè)計(jì),權(quán)限管理系統(tǒng)的通用性較強(qiáng)
46、,權(quán)限的控制機(jī)制則由應(yīng)用系統(tǒng)負(fù)責(zé)處理。</p><p> 由于應(yīng)用系統(tǒng)的權(quán)限控制與特定的技術(shù)環(huán)境有關(guān),以基于J2EE架構(gòu)的應(yīng)用系統(tǒng)為例來(lái)說(shuō)明,系統(tǒng)主要的展示組件是JSP頁(yè)面,采用標(biāo)記庫(kù)和權(quán)限控制組件共同來(lái)實(shí)現(xiàn)。</p><p> a. 權(quán)限標(biāo)識(shí):利用標(biāo)簽來(lái)標(biāo)識(shí)不同級(jí)別資源,頁(yè)面權(quán)限標(biāo)簽將標(biāo)識(shí)頁(yè)面對(duì)象。</p><p> b. 權(quán)限注冊(cè):遍歷JSP頁(yè)面上的權(quán)限控
47、制標(biāo)簽,讀取JSP的控制權(quán)限。通過(guò)權(quán)限注冊(cè)組件將JSP頁(yè)面上的權(quán)限控制對(duì)象以及規(guī)則注冊(cè)到權(quán)限管理信息系統(tǒng)中。</p><p> c. 權(quán)限控制:應(yīng)用系統(tǒng)用戶(hù)登錄系統(tǒng)時(shí),從權(quán)限管理系統(tǒng)獲得權(quán)限關(guān)系表之后,一方面,權(quán)限標(biāo)簽控制頁(yè)面展示;另一方面,利用權(quán)限控制組件在業(yè)務(wù)邏輯中進(jìn)行相應(yīng)的權(quán)限控制,尤其是和業(yè)務(wù)邏輯緊密聯(lián)系的控制對(duì)象實(shí)例的權(quán)限控制。</p><p><b> 6 權(quán)限存
48、儲(chǔ)機(jī)制</b></p><p> 權(quán)限管理系統(tǒng)采用了兩種可選的存儲(chǔ)機(jī)制:LDAP(Lightweight Directory Access Protocol)目錄服務(wù)數(shù)據(jù)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)。存儲(chǔ)用戶(hù)信息、組織結(jié)構(gòu)、角色、操作、訪問(wèn)模式等信息。</p><p> 其中,目錄服務(wù)系統(tǒng)基于LDAP標(biāo)準(zhǔn),具有廣泛的數(shù)據(jù)整合和共享能力。元目錄(Meta-Directory)功能允許快速
49、、簡(jiǎn)潔的與企業(yè)現(xiàn)存基礎(chǔ)結(jié)構(gòu)進(jìn)行集成,解決基于傳統(tǒng)RDBMS等用戶(hù)數(shù)據(jù)庫(kù)與LDAP用戶(hù)數(shù)據(jù)庫(kù)的同步問(wèn)題。</p><p> 2.3 核心代碼業(yè)務(wù)實(shí)現(xiàn)</p><p><b> 1,數(shù)據(jù)庫(kù)操作</b></p><p> package bean;</p><p> import java.sql.*;</p&g
50、t;<p> import java.util.*;</p><p> public class JFBean {</p><p> private Connection con = null;//數(shù)據(jù)庫(kù)連接</p><p> private ResultSet rs = null;//原始結(jié)果集</p>
51、<p> private Statement stmt = null;</p><p><b> //連接參數(shù)</b></p><p> private final String DBURL = "jdbc:odbc:bysj";</p><p> private f
52、inal String DBUSER ="sa";</p><p> private final String DBPASSWORD ="";</p><p> private ArrayList result = new ArrayList(); //存放結(jié)果集</p><p> Str
53、ing[] colName = null;</p><p> private int colLen = 0; //列數(shù)</p><p> private String empty= "";//替換結(jié)果集中的空字符</p><p> public JFBean() {</p><p><b> }<
54、;/b></p><p> public void ini() throws SQLException {</p><p><b> try {</b></p><p> Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");</p><p> if
55、 ( (con == null) || con.isClosed())</p><p> con = DriverManager.getConnection(DBURL,DBUSER, DBPASSWORD);</p><p> stmt = con.createStatement();</p><p><b> }</b></p&
56、gt;<p> catch (SQLException e) {</p><p><b> throw e;</b></p><p> }catch(Exception e){</p><p> System.out.println("load driver error");</p>&l
57、t;p><b> }</b></p><p><b> }</b></p><p> public ArrayList getRS() {</p><p> return result;</p><p><b> }</b></p><p&g
58、t;<b> /**</b></p><p> * 執(zhí)行數(shù)據(jù)查詢(xún),結(jié)果集以數(shù)組(每一行的內(nèi)容)形式存放在ArrayList中</p><p><b> *</b></p><p> * @param sqlStatement String 查詢(xún)的SQL語(yǔ)句</p><p> * @retr
59、urn rownum</p><p><b> *</b></p><p><b> */</b></p><p> public int execQuery(String sqlStatement) throws SQLException {</p><p> int recounter
60、= 0;</p><p> clearResult();</p><p><b> try {</b></p><p><b> ini();</b></p><p> rs = stmt.executeQuery(sqlStatement);</p><p> R
61、esultSetMetaData rsmd = rs.getMetaData();</p><p> String self = null;</p><p> colLen = rsmd.getColumnCount() ;</p><p> while (rs.next()) {</p><p> String[] colValue
62、 = new String[colLen];</p><p> for (int i = 0; i < colLen; i++) {</p><p> colValue[i] = ( (self = rs.getString(i + 1 )) == null ?empty :</p><p> self.trim().length() == 0 ? em
63、pty : self.trim());</p><p><b> }</b></p><p> result.add(colValue);</p><p> recounter++;</p><p><b> }</b></p><p> return recoun
64、ter;</p><p><b> }</b></p><p> catch (SQLException e) {</p><p><b> throw e;</b></p><p><b> }</b></p><p><b> f
65、inally {</b></p><p> closeConn();</p><p><b> }</b></p><p><b> }</b></p><p><b> /**</b></p><p> * 執(zhí)行數(shù)據(jù)查詢(xún),結(jié)果集以
66、HashMap(每一行的內(nèi)容)形式存放在ArrayList中</p><p><b> *</b></p><p> * @param sqlStatement String 查詢(xún)的SQL語(yǔ)句</p><p> * @retrurn rownum</p><p><b> */</b>&l
67、t;/p><p> public int execQueryName(String sqlStatement) throws SQLException {</p><p> int recounter = 0;</p><p> clearResult();</p><p><b> try {</b></p&
68、gt;<p><b> ini();</b></p><p> rs = stmt.executeQuery(sqlStatement);</p><p> ResultSetMetaData rsmd = rs.getMetaData();</p><p> String self = null;</p>
69、<p> colLen = rsmd.getColumnCount() ;</p><p> colName = new String[colLen];</p><p> for (int i = 0; i < colLen; i++) {</p><p> colName[i] = rsmd.getColumnName(i + 1);<
70、;/p><p><b> }</b></p><p> while (rs.next()) {</p><p> HashMap colValue = new HashMap();</p><p> for (int i = 0; i < colLen; i++) {</p><p>
71、 colValue.put(colName[i],</p><p> (self = rs.getString(i + 1 )) == null ? empty :</p><p> self.trim().length() == 0 ? empty : self.trim());</p><p><b> }</b></p>
72、<p> result.add(colValue);</p><p> recounter++;</p><p><b> }</b></p><p> return recounter;</p><p><b> }</b></p><p> ca
73、tch (SQLException e) {</p><p><b> throw e;</b></p><p><b> }</b></p><p><b> finally {</b></p><p> closeConn();</p><p&g
74、t;<b> }</b></p><p><b> }</b></p><p><b> /**</b></p><p> * 執(zhí)行一條沒(méi)有返回結(jié)果集的SQL</p><p><b> *</b></p><p> *
75、@param sqlStatement String SQL腳本</p><p> * @retrurn int 成功與否標(biāo)志</p><p><b> *</b></p><p><b> */</b></p><p> public int execUpdate(String sqlSt
76、atement) throws SQLException {</p><p><b> try {</b></p><p><b> ini();</b></p><p> int recounter = stmt.executeUpdate(sqlStatement);</p><p>
77、return recounter;</p><p><b> }</b></p><p> catch (SQLException e) {</p><p><b> throw e;</b></p><p><b> }</b></p><p>
78、;<b> finally {</b></p><p> closeConn();</p><p><b> }</b></p><p><b> }</b></p><p><b> /**</b></p><p>
79、* 清空自定義的結(jié)果集</p><p><b> */</b></p><p> public void clearResult() {</p><p> if (result.size() > 0)</p><p> result.clear();</p><p><b>
80、; }</b></p><p> // Release the SQL statement resources</p><p> private void closeConn() throws SQLException {</p><p><b> try {</b></p><p> if (co
81、n != null) {</p><p> stmt.close();</p><p> con.close();</p><p> stmt = null;</p><p> con = null;</p><p><b> }</b></p><p><
82、b> }</b></p><p> catch (SQLException e) {</p><p><b> throw e;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
83、t;<b> }</b></p><p> 2,核心SERVLET中央控制器</p><p> package bean;</p><p> import java.io.IOException;</p><p> import java.sql.*;</p><p> import
84、java.util.Date;</p><p> import javax.servlet.ServletException;</p><p> import javax.servlet.http.HttpServlet;</p><p> import javax.servlet.http.HttpServletRequest;</p><
85、;p> import javax.servlet.http.HttpServletResponse;</p><p> import javax.servlet.http.HttpSession;</p><p> public class servlet extends HttpServlet {</p><p> private static fi
86、nal long serialVersionUID = 1L;</p><p> public void doPost(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> respon
87、se.setContentType("text/html;charset=gb2312");</p><p> String action = request.getParameter("action");</p><p><b> // 登陸</b></p><p> if (action.equ
88、als("login")) {</p><p> logIn(request, response);</p><p><b> }</b></p><p><b> // 登出</b></p><p> if (action.equals("logout&quo
89、t;)) {</p><p> logOut(request, response);</p><p><b> }</b></p><p><b> //添加記錄</b></p><p> if (action.equals("add")) {</p>&l
90、t;p> addOper(request, response);</p><p><b> } </b></p><p><b> //更新記錄</b></p><p> if (action.equals("update")) {</p><p> update
91、Oper(request, response);</p><p><b> } </b></p><p><b> //刪除記錄</b></p><p> if (action.equals("del")) {</p><p> delOper(request, resp
92、onse);</p><p><b> }</b></p><p><b> // 留言</b></p><p> if (action.equals("message")) {</p><p> message(request, response);</p>
93、<p><b> }</b></p><p><b> }</b></p><p> public void doGet(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException
94、, IOException {</p><p> doPost(request,response);</p><p><b> }</b></p><p> // 處理字符串方法</p><p> public String getString(String s) {</p><p>
95、if (s == null)</p><p><b> s = "";</b></p><p><b> try {</b></p><p> byte a[] = s.getBytes("ISO-8859-1");</p><p> s = new
96、String(a);</p><p> } catch (Exception e) {</p><p><b> }</b></p><p><b> return s;</b></p><p><b> }</b></p><p> priv
97、ate void logIn(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> Connection con = null;</p><p> Statement sql = nul
98、l;</p><p> ResultSet rs = null;</p><p> HttpSession session = request.getSession();</p><p> String type = getString(request.getParameter("type"));</p><p>
99、 String username = getString(request.getParameter("username"));</p><p> String password = getString(request.getParameter("password"));</p><p> JFBean jf = new JFBean();<
100、/p><p><b> try {</b></p><p> Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");</p><p> } catch (ClassNotFoundException en) {</p><p> en.printStackTr
101、ace();</p><p><b> }</b></p><p><b> try {</b></p><p> con = DriverManager.getConnection("jdbc:odbc:bysj", "sa", "");</p>
102、;<p> sql = con.createStatement();</p><p><b> // 教師登陸</b></p><p> if (type.equals("teacher")) {</p><p> String condition = "select * from teach
103、er where id = '"</p><p> + username + "'AND password = '" + password + "'";</p><p> String condition1 = "select teacher.name,classlist.name,auothi
104、nfo.typename from teacher,classteacher,classlist,auothinfo where teacher.id = '"</p><p> + username</p><p> + "'AND teacher.id =classteacher.teacherid AND classteacher.classi
105、d=classlist.id AND teacher.id=auothinfo.id";</p><p> rs = sql.executeQuery(condition);</p><p> if (rs.next()) {</p><p> session.setAttribute("islog", "yes&quo
106、t;);</p><p> ResultSet rs1 = sql.executeQuery(condition1);</p><p> rs1.next();</p><p> session.setAttribute("name", rs1.getString(1));</p><p> session.set
107、Attribute("class", rs1.getString(2));</p><p> session.setAttribute("type", rs1.getString(3));</p><p> // 存入日志</p><p> String logid = getString(request.g
108、etParameter("username"));</p><p><b> ;// 登入ID</b></p><p> String logname = (String) session.getAttribute("name");// 登入姓名</p><p> Date time = new D
109、ate();</p><p> time.getTime();</p><p> String logtime = time.toString().substring(4, 20);// 登入時(shí)間</p><p> String condition2 = "insert into rzgl (rid,rname,intime) values (
110、9;"</p><p><b> + logid</b></p><p><b> + "'"</b></p><p><b> + ","</b></p><p><b> + "'
111、"</b></p><p><b> + logname</b></p><p><b> + "'"</b></p><p><b> + ","</b></p><p> + "'
112、;" + logtime + "')";</p><p> jf.execUpdate(condition2);</p><p> response.sendRedirect("Templates/index.jsp");</p><p><b> } else {</b><
113、/p><p> session.setAttribute("error", "用戶(hù)名或密碼錯(cuò)誤,請(qǐng)重新輸入!");</p><p> response.sendRedirect("Templates/index.jsp");</p><p><b> }</b></p>
114、<p><b> }</b></p><p><b> // 學(xué)生登陸</b></p><p> if (type.equals("student")) {</p><p> String condition = "select * from student where i
115、d = '"</p><p> + username + "'AND password = '" + password + "'";</p><p> String condition1 = "select student.name,classlist.name,auothinfo.typena
116、me from student,classlist,auothinfo where student.id = '"</p><p> + username</p><p> + "'AND student.classid=classlist.id AND student.id=auothinfo.id";</p><p
117、> rs = sql.executeQuery(condition);</p><p> if (rs.next()) {</p><p> session.setAttribute("islog", "yes");</p><p> ResultSet rs1 = sql.executeQuery(condit
118、ion1);</p><p> rs1.next();</p><p> session.setAttribute("name", rs1.getString(1));</p><p> session.setAttribute("class", rs1.getString(2));</p><p&g
119、t; session.setAttribute("type", rs1.getString(3));</p><p> // 存入日志</p><p> String logid = getString(request.getParameter("username"));</p><p><b>
120、 ;// 登入ID</b></p><p> String logname = (String) session.getAttribute("name");// 登入姓名</p><p> Date time = new Date();</p><p> time.getTime();</p><p>
121、 String logtime = time.toString().substring(4, 20);// 登入時(shí)間</p><p> String condition2 = "insert into rzgl (rid,rname,intime) values ('"</p><p><b> + logid</b></p>
122、;<p><b> + "'"</b></p><p><b> + ","</b></p><p><b> + "'"</b></p><p><b> + logname</b>
123、;</p><p><b> + "'"</b></p><p><b> + ","</b></p><p> + "'" + logtime + "')";</p><p> jf.e
124、xecUpdate(condition2);</p><p> response.sendRedirect("Templates/index.jsp");</p><p><b> } else {</b></p><p> session.setAttribute("error", "用
125、戶(hù)名或密碼錯(cuò)誤,請(qǐng)重新輸入!");</p><p> response.sendRedirect("Templates/index.jsp");</p><p><b> }</b></p><p><b> }</b></p><p><b> //
126、 班委登陸</b></p><p> if (type.equals("monitor")) {</p><p> String condition = "select * from student where id = '"</p><p> + username + "'AND
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 11班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 1班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任 管理 系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任 管理 系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 班主任 管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 畢業(yè)設(shè)計(jì)論文-班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 畢業(yè)設(shè)計(jì)論文-班主任管理系統(tǒng)設(shè)計(jì)與實(shí)踐
- 2015班主任工作內(nèi)容第11周
- 高一11班主任工作計(jì)劃
- 班主任兵法11
- 2019班主任班級(jí)管理計(jì)劃
- 2022年11月班主任工作計(jì)劃
- 班主任--治班方略
- 班主任治班方略
- 班主任治班理念
- 2018.3班主任總結(jié)
- 2015年班主任班級(jí)管理計(jì)劃
評(píng)論
0/150
提交評(píng)論