【正文】
Listen on the tenth night the peg was pull。s room. Her drawers were dumped. her closet was empty. Heaped in the middle of the room were all the possessions she could not take on a honeymoon. She had a Princess telephone extension all her ownon her windowsill Its tiny night light stared at Billy. And then it rang. Billy answered. There was a drunk on the other end. Bi 39。s partners in the New Holiday Inn. There was a full moon. Billy got out of bed in the moonlight. He felt spooky and luminous felt as though he were wrapped in cool fur that was full of static electricity. He looked down at his bare feet. They were ivory and blue. Billy now shuffled down his upstairs hallway, knowing he was about to be kidnapped by a flying saucer. The hallway was zebrastriped with darkness and moonlight. The moonlight came into the hallway through doorways of the empty rooms of Billy39。t need to be jiggled to sleep. Valencia was snoring like a bandsaw. The poor woman didn39。特此聲明! 作者簽名: 2007年 月 日This boothwn outside, each car became a single organism which ate and drank and excreted through its ventilators. It talked or sometimes yelled through its ventilators, too. In went water and loaves of blackbread and sausage and cheese, and out came shit and piss and language. Human beings in there were excreting into steel helmets, which were passed to the people at the ventilators, who dumped them. Billy was a dumper. The human beings also passed canteens, which guards would fill with water. When food came in, the human beings were quiet and trusting and beautiful. They shared. Human beings in there took turns standing or lying down. The legs of those who stood were like fence posts driven into a warm., squirming, fatting, sighing earth. The queer earth was a mosaic of sleepers who nestled like spoons. Now the train began to creep eastward. Somewhere in there was Christmas. Billy Pilgrim nestled like a spoon with the hobo on Christmas night, and he fell asleep, and he traveled in time to 1967 againto the night he was kidnapped by a flying saucer from Tralfamadore.Four Billy Pilgrim could not sleep on his daughters wedding night. He was fortyfour. The wedding had taken place that afternoon in a gaily striped tent in Billy39。(5)學(xué)校可以公布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。(3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈送和交換學(xué)位論文。關(guān)于學(xué)位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明:本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機構(gòu)的學(xué)位或證書而使用過的材料。在這里我首先感謝的是我的指導(dǎo)老師葉立軒老師,感謝他在我需求分析和設(shè)計期間給我提供的良好建議和思路,感謝他在我論文撰寫期間細心的檢查和提供良好的建議;還要感謝代碼檢查組老師對我的信任和能力的認可,這給我完成后期的開發(fā)工作提供了很大的鼓勵和信心;同時我還要感謝所有SMART系統(tǒng)開發(fā)小組的同學(xué),他們在我開發(fā)期間給予了我極大的支持和幫助。[7] Struts編程(第二版)[M].北京:中國電力出版社,2005。[5] 陳昊鵬,:第3版[M].北京:機械工業(yè)出版社,2005。[3] [M].北京:機械工業(yè)出版社,2004。參考文獻[1] Bruce Eckel[美]. Thinking in Java (3rd Edition)[M] .北京:電子工業(yè)出版社,2002。比如權(quán)限管理,我們不能夠在這個獨立的系統(tǒng)功能模塊里面直接的去實現(xiàn)對應(yīng)用系統(tǒng)功能的權(quán)限管理控制,而應(yīng)該為應(yīng)用系統(tǒng)間接的實現(xiàn)權(quán)限管理控制和提供權(quán)限設(shè)置的接口,讓他們自己動手來實現(xiàn)管理的對象目標,這樣我們可以將開發(fā)的功能模塊就很容易接入其它的應(yīng)用系統(tǒng)中,而不需要做什么改動,提高系統(tǒng)的可擴展性。該系統(tǒng)以開發(fā)的目的是做一個通用的系統(tǒng)功能管理模塊,支持盡可能多的數(shù)據(jù)庫后臺,盡最大可能方便軟件開發(fā)人員的二次開發(fā)和最終用戶使用,還要保證權(quán)限管理技術(shù)的先進性,注重靈活性和安全性。其更改了teacher用戶角色之后的結(jié)果如圖58:圖58更改teacher用戶角色后從以上結(jié)果進行分析可以看出用戶角色權(quán)限控制是正常的。通過角色設(shè)置來給teacher用戶加上STU角色。其更改后的結(jié)果圖如下:圖56 StuLife 更改權(quán)限后的更新頁面圖圖 57 teacher 更改權(quán)限后的更新頁面圖從以上的結(jié)果分析,說明教師用戶的更新權(quán)限控制正常。這個權(quán)限主要控制教師用戶是否可以更新其它用戶的信息。然后我們還要選擇一個教師用戶UIN為:StuLife該用戶也具有所有的系統(tǒng)權(quán)限。 系統(tǒng)功能權(quán)限測試現(xiàn)在我們將對系統(tǒng)中的一些功能進行測試,這里只舉兩個測試例子,一個是對教師用戶的更新權(quán)限進行測試,另一個是對用戶的角色權(quán)限進行測試。 //判斷結(jié)果 } 系統(tǒng)功能測試 系統(tǒng)菜單權(quán)限功能測試如果登錄用戶具有所有的菜單權(quán)限,那么他登錄系統(tǒng)后看到的菜單列表如圖51:圖51 菜單列表由于當前登錄用戶只具有Admin角色(可以通過角色設(shè)置查看),我們通過權(quán)限管理可以對Admin角色進行設(shè)置,我們?nèi)∠鸄dmin角色的日志管理和角色管理兩個模塊,如圖52:圖52 權(quán)限管理圖取消了日志管理和角色管理這兩個模塊的權(quán)限后,從新登錄系統(tǒng)或按F5刷新session(用戶也同樣從新登錄了一次)后,我們會看到如圖53的菜單列表。 List result = (List) (new Carrier(params, , SearchTeacherByNo))。//判斷結(jié)果 //教師用戶基于NO的搜索方法測試 public void testProcessSearchTeacherByNo() { Map params = new HashMap()。) { entity = (SearchTeacher) ()。 for (Iterator i = ()。//代理調(diào)用 List result = (List) (new Carrier(params, , SearchTeacher))。 (teacherName, )。//教師用戶搜索方法測試 (teacherNo, )。 } return obj。 try { obj = (vo)。系統(tǒng)中基于JUNIT測試的都是通過UnitTestCase類,而UnitTestCase類是繼承Junit的TestCase的一個子類,該類實現(xiàn)代碼如下: protected Object call(Carrier vo) {//代理 PublicProxy proxy = ()。 } if (j == 1) return true。 j 。)。 i 。displayMenu代碼實現(xiàn)如下: String[] str = (,)。 (())。在標簽中首先我們要獲取用戶權(quán)限CODE,主要通過代碼:Authorization permission = (Authorization) (()) .getAttribute()。 }checkPermission()方法是檢查用戶是否具有其傳入?yún)?shù)的權(quán)限功能,showButton()則是控制前臺jsp頁面的功能體現(xiàn)的。//檢查權(quán)限 if (checkPermission(SMART_AUDIT_0403) || checkPermission(SMART_AUDIT_0404)) { if (checkPermission(SMART_AUDIT_0403)) (DeleteButton)。 日志管理 用戶界面日志搜索界面設(shè)計: 圖410 系統(tǒng)日志搜索結(jié)果設(shè)計圖系統(tǒng)日志查看設(shè)計圖:圖411 系統(tǒng)日志查看設(shè)計圖 代碼實現(xiàn)日志的搜索功能和角色管理的搜索功能相同,也是通過存儲過程的方式來實現(xiàn)的。 + divId + 39。)).append(newValue) .append(/a)。,39。,39。 onClick=invokeServer(39。 (a href=39。 / /logic:iterate/display:table用戶通過點擊頁面上的“Y”和“”來相互轉(zhuǎn)換,每次轉(zhuǎn)換都是通過Ajax來執(zhí)行一個后臺方法。 sortable=39。 title=39。 % display:column property=39。其界面設(shè)置如圖49角色任務(wù)設(shè)置圖:圖48 角色任務(wù)設(shè)置界面圖要實現(xiàn)角色任務(wù)的設(shè)置,首先要搜索角色、任務(wù)對象以及角色任務(wù)對象,然后再對角色和任務(wù)這兩個對象進行關(guān)系關(guān)聯(lián),如圖49:圖49 角色任務(wù)功能詳細流程圖 代碼實現(xiàn)首先要通過輸入的參數(shù)進行角色搜索、任務(wù)搜索以及角色任務(wù)搜索,將搜索的結(jié)果放入一個叫RoleTaskSearch的對象中,并在將其如上圖的界面展現(xiàn)出來,并在展現(xiàn)中提供Ajax的角色權(quán)限設(shè)置方式,讓用戶在設(shè)置權(quán)限的時候操作簡便。用戶角色設(shè)置的傳輸方式是通過Ajax的異步刷新來實現(xiàn)。 + + 39。他們都分別是調(diào)用SP_SearchTeacherUser和SP_SearchStudent這兩個存儲過程。 result = (params)。 params[2] = ((name) != null) ? (name) : 。 if (()) {//教師用戶搜索 Object[] params = new Object[8]。 !(type) .equals()) ? (type) : )。其界面設(shè)置如圖46用戶角色設(shè)置圖:圖46 用戶角色設(shè)置界面圖其實現(xiàn)上述功能的流程圖如圖:圖47 用戶角色設(shè)置功能詳細流程圖 代碼實現(xiàn)首先根據(jù)輸入?yún)?shù)搜索要設(shè)置的相關(guān)用戶,其代碼實現(xiàn)為: String type = (String) (((type) != null amp。 return ()。 PcmRole role = (PcmRole) (entity)。 } } }同樣在用戶更新的時候也要做