版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會議室預(yù)定系統(tǒng)摘要會議室預(yù)定系統(tǒng)是一種依靠互聯(lián)網(wǎng)平臺,構(gòu)建一個對普通用戶能夠預(yù)定會議室,對管理員能夠編輯會議室,從而使會議室可以得到充分利用,并且能夠查看預(yù)定信息,當(dāng)普通用戶預(yù)定的會議室與其他用戶發(fā)生了沖突,用戶可以通過管理員調(diào)解會議室使用的情況,避免沖突的發(fā)生。用戶也可以刪除自己預(yù)定的會議室。管理員可以添加、編輯、刪除會議室,刪除用戶預(yù)定信息,對會議室進(jìn)行操作,對會議室的使用情況進(jìn)行查詢。在多用戶同時使用時,管理員還可以通過導(dǎo)入文件、導(dǎo)入多條數(shù)據(jù),從而減少了重復(fù)的操作。管理員可以對會議室預(yù)定系統(tǒng)進(jìn)行操作,從而使會議室的利用率有大幅度提高。在這個系統(tǒng)中我綜合應(yīng)用了SQLServer、JSP等知識。網(wǎng)頁界面的結(jié)構(gòu)設(shè)計以實用性出發(fā),具有易于操作、簡潔、方便等特點。在設(shè)計中,首先,運用HTML語言對網(wǎng)站的靜態(tài)頁面進(jìn)行精細(xì)的加工并且在系統(tǒng)的美工方面取得了良好的效果。其次,對于Java編程、JSP的動態(tài)編程以及SQLServer數(shù)據(jù)庫進(jìn)行努力學(xué)習(xí)和大量實踐,并運用到了系統(tǒng)的建設(shè)中。本論文就此對會議室預(yù)訂系統(tǒng)進(jìn)行了詳細(xì)全面的論述。訪問本系統(tǒng)的用戶分為管理員、員工兩個角色,管理員的主要功能有:管理部門信息、員工信息、會議室信息及系統(tǒng)公告信息;員工的主要功能有:查看系統(tǒng)公告,預(yù)訂會議室及取消相關(guān)預(yù)訂操作。關(guān)鍵字:會議室,預(yù)訂,JSP,SQLServer前言據(jù)調(diào)查,經(jīng)理級和專業(yè)人員每周約花1/4的時間在開會上。美國權(quán)威機構(gòu)的統(tǒng)計表明,1996年美國企業(yè)因不當(dāng)?shù)臅h管理導(dǎo)致的損失高達(dá)60億美圓。另一項調(diào)查表明,企業(yè)80%的員工提升來源于其在會議上的表現(xiàn)引起上司的注意和賞識。因此如何開會,如何使會議有效益和有效率,對于企業(yè)和企業(yè)人來說,都具有重要的意義。隨著現(xiàn)代企業(yè)日益增加的溝通需要,會議室預(yù)定系統(tǒng)已經(jīng)成為企業(yè)和單位日常工作中不可或缺的一個重要環(huán)節(jié)。通過調(diào)查發(fā)現(xiàn),由于現(xiàn)代企業(yè)部門眾多,會議室資源有限,傳統(tǒng)的會議室預(yù)定方法存在很大弊端,包括缺乏靈活的調(diào)換機制,會議室占用信息傳播不過迅速,導(dǎo)致會議室利用率不高,延誤會議情況。會議室預(yù)定系統(tǒng)是一種依靠互聯(lián)網(wǎng)平臺,構(gòu)建一個對普通用戶能夠預(yù)定會議室,對管理員能夠編輯會議室,從而使會議室可以得到充分利用,并且能夠查看預(yù)定信息,當(dāng)普通用戶預(yù)定的會議室與其他用戶發(fā)生了沖突,用戶可以通過管理員調(diào)解會議室使用的情況,避免沖突的發(fā)生。用戶也可以刪除自己預(yù)定的會議室。管理員可以添加、編輯、刪除會議室,刪除用戶預(yù)定信息,對會議室進(jìn)行操作,對會議室的使用情況進(jìn)行查詢。在多用戶同時使用時,管理員還可以通過導(dǎo)入文件、導(dǎo)入多條數(shù)據(jù),從而減少了重復(fù)的操作。管理員可以對會議室預(yù)定系統(tǒng)進(jìn)行操作,從而使會議室的利用率有大幅度提高。本課題的任務(wù)是完成一款基于B/S架構(gòu)的會議室預(yù)定系統(tǒng),即一種能夠通過互聯(lián)網(wǎng)系統(tǒng)進(jìn)行注冊、登錄,實現(xiàn)普通用戶進(jìn)行會議室預(yù)定,會議室取消,會議室查詢的功能。管理員在可實現(xiàn)普通用戶功能以外,還可對會議室使用情況進(jìn)行查詢、編輯。同時,在用戶登錄該會議室預(yù)訂系統(tǒng)界面時,該系統(tǒng)會對用戶的會議做出準(zhǔn)確的提醒。
第1章系統(tǒng)概述與技術(shù)介紹作了一個信息管理系統(tǒng),首先布局一定要新穎、有特色,只有這樣才能引起用戶的關(guān)注,最大限度的滿足人們的需求,而且要有很強的易用性,易用性差的系統(tǒng)會讓用戶產(chǎn)生厭煩情緒。當(dāng)然一個好的信息管理系統(tǒng)最重要的還是要有完整的處理信息的功能,以便及時的處理龐大的數(shù)據(jù)。通過對用戶的調(diào)查和對現(xiàn)有的會議室管理的流程分析,為了滿足大多數(shù)用戶的需求,所以我的目標(biāo)是要構(gòu)建一個頁面簡單清晰但包含信息相對全面、易用性強的會議室預(yù)訂系統(tǒng)。1.1B/S結(jié)構(gòu)介紹本系統(tǒng)采用B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),就是只安裝維護(hù)一個服務(wù)器(Server),而客戶端采用瀏覽器(Browse)運行軟件。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化和改進(jìn)。主要利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合多種Script語言(VBScript、JavaScript…)和ActiveX技術(shù),是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。在B/S體系結(jié)構(gòu)系統(tǒng)中,用戶通過瀏覽器向分布在網(wǎng)絡(luò)上的許多服務(wù)器發(fā)出請求,服務(wù)器對瀏覽器的請求進(jìn)行處理,將用戶所需信息返回到瀏覽器。而其余如數(shù)據(jù)請求、加工、結(jié)果返回以及動態(tài)網(wǎng)頁生成、對數(shù)據(jù)庫的訪問和應(yīng)用程序的執(zhí)行等工作全部由WebServer完成。1.2SQLServer數(shù)據(jù)庫因為本系統(tǒng)存放的信息數(shù)據(jù)量比較大的,因此我選擇存放信息的數(shù)據(jù)庫為微軟的SQLServer數(shù)據(jù)庫。SQLServer是微軟公司推出的基于Windows的桌面關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),是Office系列應(yīng)用軟件之一。SQLServer是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,并于1988年推出了第一個OS/2版本。MicrosoftSQLServer近年來不斷更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用戶見面;SQLServer2000是Microsoft公司于2000年推出,目前最新版本是2012年3月份推出的SQLSERVER2012。1.3MyEclipse介紹本系統(tǒng)是跨越平臺限制和跨越瀏覽器限制的網(wǎng)頁。構(gòu)建會議室預(yù)訂系統(tǒng)所用的網(wǎng)頁編輯器為MyEclipse,MyEclipse,是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持十分不錯。MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。1.4JavaScrip語言Javascript是一種解釋性的,基于對象的腳本語言,Javascript主要是基于客戶端運行的,用戶點擊帶有Javascript的網(wǎng)頁,網(wǎng)頁里的Javascript就傳到瀏覽器,由瀏覽器對此作處理。它的代碼可以直接嵌入到HTML命令中,最大特點是可以方便操縱網(wǎng)站上的元素,并與Web瀏覽器交互,同時JavaScrip可以捕捉用戶操作并作出反映。JavaScript是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。JavaScript的一個重要功能就是面向?qū)ο蟮墓δ?,通過基于對象的程序設(shè)計,可以用更直觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開發(fā)。在HTML基礎(chǔ)上,使用Javascript可以開發(fā)交互式Web網(wǎng)頁。Javascript的出現(xiàn)使得網(wǎng)頁和用戶之間實現(xiàn)了一種實時性的、動態(tài)的、交互性的關(guān)系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容。在本系統(tǒng)中很多地方使用了javascript技術(shù),比如說,檢驗用戶輸入數(shù)據(jù)的有效性,是否重復(fù),是否為空等等。1.5JSP技術(shù)JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回給客戶端就是一個HTML文本,因此客戶端只要有瀏覽器能瀏覽。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Servlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點。JSP技術(shù)的優(yōu)點:(1)一次編寫,到處運行。除了系統(tǒng)之外,代碼不用做任何更改。(2)系統(tǒng)的多平臺支持。基本上可以在所有平臺上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴展。相比ASP/.net的局限性是顯而易見的。(3)強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多臺服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺Application進(jìn)行事務(wù)處理,消息處理,一臺服務(wù)器到無數(shù)臺服務(wù)器,Java顯示了一個巨大的生命力。(4)多樣化和功能強大的開發(fā)工具支持。Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費得到,并且其中許多已經(jīng)可以順利的運行于多種平臺之下(5)支持服務(wù)器端組件。web應(yīng)用需要強大的服務(wù)器端組件來支持,開發(fā)人員需要利用其他工具設(shè)計實現(xiàn)復(fù)雜功能的組件供web頁面調(diào)用,以增強系統(tǒng)性能。JSP可以使用成熟的JAVABEANS組件來實現(xiàn)復(fù)雜商務(wù)功能。內(nèi)部對象說明:request客戶端請求,此請求會包含來自GET/POST請求的參數(shù);response網(wǎng)頁傳回客戶端的響應(yīng);pageContext網(wǎng)頁的屬性是在這里管理;session與請求有關(guān)的會話;applicationservlet正在執(zhí)行的內(nèi)容;out用來傳送響應(yīng)的輸出流;config代碼片段配置對象;pageJSP網(wǎng)頁本身;exception針對錯誤網(wǎng)頁,未捕捉的例外。1.6MVC模式為了滿足系統(tǒng)對先進(jìn)性、安全性、跨平臺性、可擴展性、可移植性、分布式等方面的要求,系統(tǒng)總體架構(gòu)設(shè)計采用先進(jìn)的基于java的B/S的三層體系結(jié)構(gòu)。MVC是三個單詞的縮寫,分別為:模型(Model),視圖(View)和控制Controller)[9]。MVC模式的目的就是實現(xiàn)Web系統(tǒng)的職能分工。Model層實現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來實現(xiàn)。View層用于與用戶的交互,通常用JSP來實現(xiàn)。Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。Web瀏覽技術(shù)已經(jīng)廣泛地應(yīng)用于Internet,并被廣大用戶接受和使用。Web技術(shù)是隨http和html一起出現(xiàn)的。Web服務(wù)器利用http傳遞html文件,Web瀏覽器使用http檢索html文件。Web服務(wù)器一旦檢索到信息,Web瀏覽器就會以靜態(tài)和交互(如文本、圖像)方式顯示各種對象。在電子商務(wù)業(yè)務(wù)進(jìn)行過程中,需要在各種貿(mào)易角色之間瀏覽和交換各種信息,此時就要使用Web瀏覽技術(shù)。這種模型使系統(tǒng)結(jié)構(gòu)更加清楚,分工更加明確,有利于整個系統(tǒng)后期的維護(hù)和升級。MVC(ModelViewController)模型(model)-視圖(view)-控制器(controller)MVC本來是存在于Desktop程序中的,M是指數(shù)據(jù)模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計數(shù)據(jù)你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。模型-視圖-控制器(MVC)是XeroxPARC在八十年代為編程語言Smalltalk-80發(fā)明的一種軟件設(shè)計模式,至今已被廣泛使用。最近幾年被推薦為Oracle旗下Sun公司JavaEE平臺的設(shè)計模式,并且受到越來越多的使用ColdFusion和PHP的開發(fā)者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。三層體系結(jié)構(gòu)由瀏覽器、web服務(wù)器和數(shù)據(jù)庫組成,并結(jié)合HTML語言、jsp、JavaScript腳本語言、Ajax、ODBC等技術(shù),后臺的數(shù)據(jù)庫采用微軟的SQLServer2005,系統(tǒng)一般的MVC模型如圖1-1所示。圖1-1系統(tǒng)MVC結(jié)構(gòu)圖如圖1-1可知,用戶界面層是用戶和整個系統(tǒng)的接口,客戶端只需安裝通用的瀏覽器即可建立與本系統(tǒng)的連接。業(yè)務(wù)邏輯層負(fù)責(zé)處理用戶輸入的信息,或?qū)⑦@些信息發(fā)送給數(shù)據(jù)庫層進(jìn)行保存,或調(diào)用數(shù)據(jù)庫層中的函數(shù)再次讀出這些數(shù)據(jù)。數(shù)據(jù)訪問層是整個分層體系的最底層,它主要用來實現(xiàn)與數(shù)據(jù)庫的交互,即完成查詢、插入、刪除和修改數(shù)據(jù)庫中數(shù)據(jù)的功能MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。分層概念視圖,模型,控制器。視圖是用戶看到并與之交互的界面。對老式的Web應(yīng)用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標(biāo)識語言和Webservices。如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性。MVC一個大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusionComponents這樣的構(gòu)件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)。MVC模型還可以實現(xiàn)軟件工程的高內(nèi)聚,低耦合的終極目標(biāo)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性??刂破鹘邮苡脩舻妮斎氩⒄{(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求自己本身并不參與業(yè)務(wù)邏輯處理,然后再確定用哪個視圖來顯示返回的數(shù)據(jù)。MVC的優(yōu)點:(1)低耦合性(2)高重用性和可適用性(3)較低的生命周期成本(4)快速的部署(5)可維護(hù)性(6)有利于軟件工程化管理
第2章系統(tǒng)需求分析2.1開發(fā)環(huán)境本系統(tǒng)的開發(fā)環(huán)境為Windows7,數(shù)據(jù)庫使用的是微軟的SQLServer,發(fā)布使用MyEclipse工具。采用JSP為服務(wù)器端腳本環(huán)境,腳本語言使用JavaScript編寫的會議室預(yù)訂系統(tǒng),不需要安裝客戶端程序,客戶端只需安裝瀏覽器即可,使用方便,方便升級維護(hù),方便與Internet和Internet上的應(yīng)用程序集成。2.2需求分析需求分析是指理解用戶需求,就軟件功能與客戶達(dá)成一致,估計軟件風(fēng)險和評估項目代價,最終形成開發(fā)計劃的一個復(fù)雜過程。需求分析之所以重要,就因為他具有決策性、方向性、策略性的作用,需求分析是軟件定義的最后一個階段,它的基本任務(wù)是回答“系統(tǒng)必須做什么”這個問題。需求分析的任務(wù)不是確定系統(tǒng)怎樣完成他的工作,而僅僅是確定系統(tǒng)完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求,它在軟件開發(fā)的過程中具有舉足輕重的地位。系統(tǒng)初步調(diào)查的主要目標(biāo)是從系統(tǒng)分析人員和管理人員的角度看新項目開發(fā)有無必要和可能,其基本內(nèi)容包括:系統(tǒng)的基本情況、系統(tǒng)信息處理情況和系統(tǒng)資源情況。獨具匠心的網(wǎng)站規(guī)劃設(shè)計就像一幢宏偉的建筑前期的規(guī)劃設(shè)計一樣,要進(jìn)行認(rèn)真、科學(xué)總體規(guī)劃,之后才可以“破土動工”。2.3可行性分析(1)經(jīng)濟性服務(wù)器端的安裝簡潔明了,客戶機無需再裝任何軟件,通過瀏覽器就可以直接訪問,可以直接接入Internet,無論您身在何處,只要您可以訪問Internet都可以使用本系統(tǒng)。本系統(tǒng)對計算機配置的要求不高,企業(yè)機房更換下來的低配置電腦都可以完全滿足需要,所以在經(jīng)濟上具有完全的可行性(2)技術(shù)性本系統(tǒng)開發(fā)工具是MyEclipse和SqlServer數(shù)據(jù)庫,開發(fā)語言是Java,主要使用了J2EE的技術(shù),java是一種面向?qū)ο缶幊陶Z言,簡單易學(xué)而且靈活方便。大三時就學(xué)習(xí)了java課程,大四期間也系統(tǒng)的了解了J2EE的知識,會議室預(yù)訂系統(tǒng)總體上開發(fā)難度不高,數(shù)據(jù)庫的設(shè)計和操作是本系統(tǒng)設(shè)計的核心。在大學(xué)期間學(xué)習(xí)過軟件工程,軟件測試,UML統(tǒng)一建模語言等課程,每個學(xué)期也會完成對應(yīng)的課程設(shè)計,具備一定的系統(tǒng)分析、設(shè)計和測試能力。因此,完成系統(tǒng)實現(xiàn)在技術(shù)上完全具有可行性(3)操作性本系統(tǒng)操作簡單,輸入信息頁面大多數(shù)都是下拉框的選擇形式,在某些頁面,信息可以自動生成,無需輸入,時間的輸入也是用的日歷控件,操作簡便,對用戶的要求很低,只需對WINDOWS操作熟練,而且本系統(tǒng)可視性非常好,所以在技術(shù)上不會有很大難度。(4)法律性本系統(tǒng)是自行開發(fā)的管理系統(tǒng),是很有實際意義的系統(tǒng),開發(fā)環(huán)境軟件和使用的數(shù)據(jù)庫都是開源代碼,開發(fā)這個系統(tǒng)不同于開發(fā)普通的系統(tǒng)軟件,不存在侵權(quán)等問題,即法律上是可行的。
第3章系統(tǒng)概要設(shè)計3.1系統(tǒng)設(shè)計概述系統(tǒng)設(shè)計是在系統(tǒng)分析的基礎(chǔ)上由抽象到具體的過程,同時,還應(yīng)考慮到系統(tǒng)所實現(xiàn)的內(nèi)外環(huán)境和主客觀條件,本著實事求是的態(tài)度進(jìn)行這一階段的工作。系統(tǒng)設(shè)計階段的主要目的是將系統(tǒng)分析階段所提出的反映用戶信息需求的系統(tǒng)邏輯方案轉(zhuǎn)換成可以實施的基于計算機與通信系統(tǒng)的物理方案。這一階段的主要任務(wù)就是從管理信息系統(tǒng)的總體目標(biāo)出發(fā),根據(jù)系統(tǒng)分析階段對系統(tǒng)的邏輯功能的要求,并考慮到經(jīng)濟、技術(shù)和運行環(huán)境等方面的條件,確定系統(tǒng)的總體結(jié)構(gòu)和系統(tǒng)各組成部分的技術(shù)方案,合理選擇計算機和通信的軟、硬件設(shè)備,提出系統(tǒng)的實施計劃,確保系統(tǒng)總體目標(biāo)的實現(xiàn)[11]。系統(tǒng)設(shè)計工作的特點:(1)系統(tǒng)設(shè)計階段,大量工作是技術(shù)性的。(2)允許用戶對已提出的信息需求做非原則性的修改或補充。(3)用戶在操作使用和運行環(huán)境等方面的具體要求也要在系統(tǒng)設(shè)計階段加以明確并在系統(tǒng)的技術(shù)方案中得反映,因此系統(tǒng)設(shè)計人員還要同管理環(huán)境打交道。(4)系統(tǒng)設(shè)計工作的環(huán)境是管理環(huán)境和技術(shù)環(huán)境的結(jié)合,是系統(tǒng)設(shè)計工作的重要特點也是整個系統(tǒng)成功的一個必不可缺的環(huán)節(jié)。系統(tǒng)設(shè)計原則 (1)階段開發(fā)原則:系統(tǒng)框架和數(shù)據(jù)結(jié)構(gòu)全面設(shè)計,具體功能實現(xiàn)分階段進(jìn)行。 (2)易用性原則:方便上網(wǎng)客戶瀏覽和操作,最大限度地減輕后臺管理人員的負(fù)擔(dān),做到部分業(yè)務(wù)的自動化處理,提供良好的用戶體驗。 (3)業(yè)務(wù)完整性原則:對于業(yè)務(wù)進(jìn)行中的特殊情況能夠做出及時、正確的響應(yīng),保證業(yè)務(wù)數(shù)據(jù)的完整性,減少數(shù)據(jù)的誤讀。 (4)業(yè)務(wù)規(guī)范化原則:在系統(tǒng)設(shè)計的同時,也為將來的業(yè)務(wù)流程制定了較為完善的規(guī)范,具有較強的實際操作性,也給整個系統(tǒng)帶來安全性。 (5)可擴展性原則:系統(tǒng)設(shè)計要考慮到業(yè)務(wù)未來發(fā)展的需要,要盡可能設(shè)計得簡明,各個功能模塊間的耦合度小,便于系統(tǒng)的擴展。如果存在舊有的數(shù)據(jù)庫系統(tǒng),則需要充分考慮兼容性,比如說瀏覽器的兼容。3.2系統(tǒng)用例圖管理員的操作:(1)管理員可以進(jìn)行基礎(chǔ)信息的管理,包括部門、員工等信息。(2)管理員可以管理系統(tǒng)公告管理。(3)管理員對會議室信息進(jìn)行管理。管理員用例圖,如圖3-1所示:圖3-1管理員用例圖員工的操作:(1)員工可查看最新的系統(tǒng)公告信息。(2)員工可以發(fā)起會議室預(yù)定。(3)員工可以取消會議室預(yù)定。員工用例圖,如圖3-2所示:圖3-2員工用例圖3.3系統(tǒng)流程圖當(dāng)管理員進(jìn)入本系統(tǒng)之后,先要登錄之后,才能管理后臺。登錄失敗,給管理員相關(guān)的提示,請管理員重新登錄。登錄成功之后,管理員可以對系統(tǒng)涉及的部門、員工、公告、會議室等信息進(jìn)行管理。管理員的后臺管理的基本流程如下圖3-3所示:圖3-3管理員流程圖3.4系統(tǒng)功能分析圖3-4系統(tǒng)后臺功能圖這就是本系統(tǒng)的功能框圖(如圖3-4所示)。后臺的所有模塊的功能分析:部門信息管理:管理部門信息,包括添加、查詢等。員工信息管理:管理員工信息,包括添加、查詢等。公告信息管理:管理公告信息,包括添加、查詢等。會議室信息管理:管理會議室格式,包括添加、查詢等。修改個人密碼:管理員登錄系統(tǒng),可以修改自己的登錄密碼。
第4章數(shù)據(jù)庫設(shè)計與實現(xiàn)4.1數(shù)據(jù)庫結(jié)構(gòu)設(shè)計數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。作為網(wǎng)絡(luò)的一個重要應(yīng)用,數(shù)據(jù)庫在網(wǎng)站建設(shè)中發(fā)揮著重要的作用,與普通網(wǎng)站相對而言,具有數(shù)據(jù)庫功能的網(wǎng)站網(wǎng)頁我們通常稱為動態(tài)頁面,也就是說頁面不是一層不變的,頁面上內(nèi)容(或部分內(nèi)容)是動態(tài)生成的,它可以根據(jù)數(shù)據(jù)庫中相應(yīng)部分內(nèi)容的調(diào)整而變化,使網(wǎng)站內(nèi)容更靈活,維護(hù)更方便,更新更便捷。SQLServer數(shù)據(jù)庫作為微軟推出的以標(biāo)準(zhǔn)JET為引擎的桌面型數(shù)據(jù)庫系統(tǒng),由于具有操作簡單、界面友好等特點,具有較大的用戶群體。本系統(tǒng)數(shù)據(jù)庫采用SQLServer數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫名稱為db_yyw,下面分別給出數(shù)據(jù)表概要說明、主要數(shù)據(jù)表的結(jié)構(gòu)。4.1.1表概要說明系統(tǒng)數(shù)據(jù)庫db_lw中含有6張數(shù)據(jù)表,部門信息表t_organization、員工信息表t_yuangong、公告信息表t_gonggao、會議室信息表t_huiyishi、會議室預(yù)訂表t_yuding、管理員信息表t_admin。4.1.2數(shù)據(jù)表的結(jié)構(gòu)(1)t_organization(部門信息表)部門表主要用于保存部門的基本信息,包括部門名稱、描述、上級部門信息,該表結(jié)構(gòu)如表4-1所示。表4-1t_organization的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號namevarchar50否部門名稱descriptionvarchar50否描述p_idint4否上級部門(2)t_yuangong(員工信息表)員工信息表主要用于保存員工的基本信息,包括員工所屬部門、編號、姓名、性別、權(quán)限、登錄名、密碼,該表結(jié)構(gòu)如表4-2所示。表4-2t_yuangong的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號org_idint4否部門信息bianhaovarchar50否員工編號namevarchar50否員工姓名sexvarchar50否員工性別quanxianvarchar50否員工權(quán)限loginnamevarchar50否登錄名loginpwvarchar50否密碼(3)t_gonggao(公告信息表)公告信息表主要用于保存公告信息,包括公告標(biāo)題、內(nèi)容、時間。該表結(jié)構(gòu)如表4-3所示。表4-3t_gonggao的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號titlevarchar50否標(biāo)題contentvarchar50否內(nèi)容shijianvarchar50否發(fā)布時間(4)t_huiyishi(會議室信息表)會議室信息表主要用于保存會議室基本信息,包括會議室名稱等內(nèi)容。該表結(jié)構(gòu)如表4-4所示。表4-4t_huiyishi的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號mingchengvarchar50否回復(fù)內(nèi)容(5)t_yuding(會議室預(yù)訂表)會議室預(yù)訂表主要用于保存會議室預(yù)訂信息,包括會議室信息、預(yù)訂日期、時間段、會議開始時間、預(yù)訂員工等內(nèi)容。該表結(jié)構(gòu)如表4-5所示。表4-5t_yuding的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號huiyishi_idint4否會議室信息riqivarchar50否預(yù)訂日期shijianduanvarchar50否時間段kashishivarchar50否會議開始時間yuangong_idint4否預(yù)訂時間(6)t_admin(管理員信息表)管理員信息表主要用于保存管理員的基本信息,該表結(jié)構(gòu)如表4-6所示。表4-6t_admin的結(jié)構(gòu)字段名數(shù)據(jù)類型長度主鍵否描述idint4是自動編號userNamevarchar50否登錄賬號userPwvarchar50否登錄密碼
第5章系統(tǒng)的實現(xiàn)5.1管理員登錄頁面由于網(wǎng)站后臺是用于維護(hù)整個系統(tǒng),所以必須先要登錄系統(tǒng),才能進(jìn)校相關(guān)的管理操作,用戶進(jìn)入系統(tǒng),將首先打開后臺管理頁面的程序窗口,要求用戶輸入正確的用戶名、密碼,二者缺一不可,管理員通過后臺登錄入口進(jìn)入后臺登錄模塊,后臺登錄模塊主要用于驗證管理員的身份和密碼。后臺登錄模塊的運行效果如圖5-1:,圖5-1后臺登錄模塊的設(shè)計效果圖判斷管理員身份的相應(yīng)代碼:publicStringlogin(StringuserName,StringuserPw,intuserType){ try { Thread.sleep(700); }catch(InterruptedExceptione) { e.printStackTrace(); } Stringresult="no"; if(userType==0)//系統(tǒng)管理員登陸 { Stringsql="select*fromt_adminwhereuserName=?anduserPw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; TAdminadmin=newTAdmin(); admin.setUserId(rs.getInt("userId")); admin.setUserName(rs.getString("userName")); admin.setUserPw(rs.getString("userPw")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",0); session.setAttribute("admin",admin); } rs.close(); } catch(SQLExceptione) { System.out.println("登錄失??!"); e.printStackTrace(); } finally { mydb.closed(); } } if(userType==1) { Stringsql="select*fromt_yuangongwheredel='no'andloginname=?andloginpw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; Yuangongyuangong=newYuangong(); yuangong.setId(rs.getInt("id")); yuangong.setBianhao(rs.getString("bianhao")); yuangong.setName(rs.getString("name")); yuangong.setSex(rs.getString("sex")); yuangong.setQuanxian(rs.getString("quanxian")); yuangong.setLoginname(rs.getString("loginname")); yuangong.setLoginpw(rs.getString("loginpw")); yuangong.setOrg_id(rs.getInt("org_id")); yuangong.setDel(rs.getString("del")); yuangong.setOrganization(liuService.getOrg(rs.getInt("org_id"))); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",1); session.setAttribute("yuangong",yuangong); } rs.close(); } catch(SQLExceptione) { System.out.println("登錄失??!"); e.printStackTrace(); } finally { mydb.closed(); } } }進(jìn)入后臺后可以點擊左側(cè)部門信息管理、員工信息管理、公告信息管理、會議室信息管理、個人密碼修改等圖標(biāo),進(jìn)入相應(yīng)的管理頁面,后臺主頁面如圖5-2。圖5-2后臺主頁面運行結(jié)果圖5.2部門管理模塊管理員點擊左側(cè)的菜單“部門管理”,頁面跳轉(zhuǎn)到部門管理界面,調(diào)用后臺的servlet類查詢所有部門信息,通過樹形結(jié)構(gòu)展示出所有部門信息。點擊任意節(jié)點,可以實現(xiàn)部門信息的增加、刪除操作。部門管理模塊的運行效果如圖5-3。圖5-3部門管理運行結(jié)果圖該模塊的主要功能通過org_servlet類實現(xiàn)的,該類的主要功能是與數(shù)據(jù)交互,查詢或保存部門信息,并通過response跳轉(zhuǎn),打開相應(yīng)的jsp頁面。主要代碼是: publicvoidorgMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListorgList=newArrayList(); Stringsql="select*fromt_organizationwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { TOrganizationorganization=newTOrganization(); organization.setId(rs.getInt("id")); organization.setName(rs.getString("name")); organization.setDescription(rs.getString("description")); organization.setP_id(rs.getInt("p_id")); organization.setDel(rs.getString("del")); organization.setParenOrganization(liuService.getOrg(rs.getInt("p_id"))); orgList.add(organization); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("orgList",orgList); req.getRequestDispatcher("admin/org/orgMana.jsp").forward(req,res); } publicvoidorgAdd(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { Stringname=req.getParameter("name"); Stringdescription=req.getParameter("description"); intp_id=Integer.parseInt(req.getParameter("p_id")); Stringdel="no"; Stringsql="insertintot_organizationvalues(?,?,?,?)"; Object[]params={name,description,p_id,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","操作成功"); req.getRequestDispatcher("common/msg.jsp").forward(req,res); } publicvoidorgDel(HttpServletRequestreq,HttpServletResponseres) { intorgId=Integer.parseInt(req.getParameter("orgId")); Stringsql="updatet_organizationsetdel='yes'whereid="+orgId; Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","org?type=orgMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidorgAll(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListorgList=newArrayList(); Stringsql="select*fromt_organizationwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { TOrganizationorganization=newTOrganization(); organization.setId(rs.getInt("id")); organization.setName(rs.getString("name")); organization.setDescription(rs.getString("description")); organization.setP_id(rs.getInt("p_id")); organization.setDel(rs.getString("del")); organization.setParenOrganization(liuService.getOrg(rs.getInt("p_id"))); orgList.add(organization); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("orgList",orgList); req.getRequestDispatcher("admin/org/orgAll.jsp").forward(req,res); }5.3員工管理模塊管理員點擊左側(cè)的菜單“員工管理”,頁面跳轉(zhuǎn)到員工管理界面,調(diào)用后臺的servlet類查詢出所有的員工信息,并把這些信息封裝到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出員工信息??梢栽谠撃0鍖崿F(xiàn)員工信息的增加、刪除操作。員工管理模塊的運行效果如圖5-4。圖5-4員工管理運行結(jié)果圖該模塊的主要功能通過yuangong_servlet類實現(xiàn)的,該類的主要功能是與數(shù)據(jù)交互,查詢或保存員工信息,并通過response跳轉(zhuǎn),打開相應(yīng)的jsp頁面。主要代碼是: publicvoidyuangongAdd(HttpServletRequestreq,HttpServletResponseres) { intorg_id=Integer.parseInt(req.getParameter("org_id")); Stringbianhao=req.getParameter("bianhao"); Stringname=req.getParameter("name"); Stringsex=req.getParameter("sex"); Stringquanxian="普通員工"; Stringloginname=req.getParameter("loginname"); Stringloginpw=req.getParameter("loginpw"); Stringdel="no"; Stringsql="insertintot_yuangongvalues(?,?,?,?,?,?,?,?)"; Object[]params={org_id,bianhao,name,sex,quanxian,loginname,loginpw,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","yuangong?type=yuangongMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidyuangongDel(HttpServletRequestreq,HttpServletResponseres) { intid=Integer.parseInt(req.getParameter("id")); Stringsql="updatet_yuangongsetdel=?whereid=?"; Object[]params={"yes",id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","yuangong?type=yuangongMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidyuangongQuanxian(HttpServletRequestreq,HttpServletResponseres) { intid=Integer.parseInt(req.getParameter("id")); Stringquanxian=req.getParameter("quanxian"); Stringsql="updatet_yuangongsetquanxian=?whereid=?"; Object[]params={quanxian,id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","設(shè)置成功");StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); } publicvoidyuangongMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListyuangongList=newArrayList(); Stringsql="select*fromt_yuangongwheredel='no'orderbyorg_iddesc"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Yuangongyuangong=newYuangong(); yuangong.setId(rs.getInt("id")); yuangong.setBianhao(rs.getString("bianhao")); yuangong.setName(rs.getString("name")); yuangong.setSex(rs.getString("sex")); yuangong.setQuanxian(rs.getString("quanxian")); yuangong.setLoginname(rs.getString("loginname")); yuangong.setLoginpw(rs.getString("loginpw")); yuangong.setOrg_id(rs.getInt("org_id")); yuangong.setDel(rs.getString("del")); yuangong.setOrganization(liuService.getOrg(rs.getInt("org_id"))); yuangongList.add(yuangong); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("yuangongList",yuangongList); req.getRequestDispatcher("admin/yuangong/yuangongMana.jsp").forward(req,res); } publicvoidyuangongByOrg(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListyuangongList=newArrayList(); Stringsql="select*fromt_yuangongwheredel='no'andorg_id=?orderbyorg_iddesc"; Object[]params={Integer.parseInt(req.getParameter("org_id"))}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Yuangongyuangong=newYuangong(); yuangong.setId(rs.getInt("id")); yuangong.setBianhao(rs.getString("bianhao")); yuangong.setName(rs.getString("name")); yuangong.setSex(rs.getString("sex")); yuangong.setQuanxian(rs.getString("quanxian")); yuangong.setLoginname(rs.getString("loginname")); yuangong.setLoginpw(rs.getString("loginpw")); yuangong.setOrg_id(rs.getInt("org_id")); yuangong.setDel(rs.getString("del")); yuangong.setOrganization(liuService.getOrg(rs.getInt("org_id"))); yuangongList.add(yuangong); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("yuangongList",yuangongList); req.getRequestDispatcher("admin/yuangong/yuangongByOrg.jsp").forward(req,res); }5.4公告管理模塊管理員點擊左側(cè)的菜單“公告管理”,頁面跳轉(zhuǎn)到公告管理界面,調(diào)用后臺的servlet類查詢出所有的公告信息,并把這些信息封裝到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出公告信息??梢栽谠撃0鍖崿F(xiàn)公告信息的增加、刪除操作。公告管理模塊的運行效果如圖5-5。圖5-5公告管理運行結(jié)果圖該模塊的主要功能通過gonggao_servlet類實現(xiàn)的,該類的主要功能是與數(shù)據(jù)交互,查詢或保存公告信息,并通過response跳轉(zhuǎn),打開相應(yīng)的jsp頁面。主要代碼是: publicvoidgonggaoAdd(HttpServletRequestreq,HttpServletResponseres) { Stringid=String.valueOf(newDate().getTime()); Stringtitle=req.getParameter("title"); Stringcontent=req.getParameter("content"); Stringshijian=newDate().toLocaleString(); Stringsql="insertintot_gonggaovalues(?,?,?,?)"; Object[]params={id,title,content,shijian}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","gonggao?type=gonggaoMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidgonggaoDel(HttpServletRequestreq,HttpServletResponseres) { Stringid=req.getParameter("id"); Stringsql="deletefromt_gonggaowhereid=?"; Object[]params={id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","gonggao?type=gonggaoMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidgonggaoMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListgonggaoList=newArrayList(); Stringsql="select*fromt_gonggao"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tgonggaogonggao=newTgonggao(); gonggao.setId(rs.getString("id")); gonggao.setTitle(rs.getString("title")); gonggao.setContent(rs.getString("content")); gonggao.setShijian(rs.getString("shijian")); gonggaoList.add(gonggao); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("gonggaoList",gonggaoList); req.getRequestDispatcher("admin/gonggao/gonggaoMana.jsp").forward(req,res); }5.5會議室管理模塊管理員點擊左側(cè)的菜單“會議室管理”,頁面跳轉(zhuǎn)到會議室管理界面,調(diào)用后臺的servlet類查詢出所有的會議室信息,并把這些信息封裝到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出會議室信息??梢栽谠撃0鍖崿F(xiàn)會議室信息的增加、刪除操作。會議室管理模塊的運行效果如圖5-6。圖5-6會議室管理運行結(jié)果圖該模塊的主要功能通過huiyishi_servlet類實現(xiàn)的,該類的主要功能是與數(shù)據(jù)交互,查詢或保存會議室信息,并通過response跳轉(zhuǎn),打開相應(yīng)的jsp頁面。主要代碼是: publicvoidhuiyishiAdd(HttpServletRequestreq,HttpServletResponseres) { Stringmingcheng=req.getParameter("mingcheng"); Stringdel="no"; Stringsql="insertintot_huiyishivalues(?,?)"; Object[]params={mingcheng,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","huiyishi?type=huiyishiMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidhuiyishiDel(HttpServletRequestreq,HttpServletResponseres) { intid=Integer.parseInt(req.getParameter("id")); Stringsql="updatet_huiyishisetdel=?whereid=?"; Object[]params={"yes",id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","huiyishi?type=huiyishiMana");StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); } publicvoidhuiyishiMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListhuiyishiList=newArrayList(); Stringsql="select*fromt_huiyishiwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Huiyishihuiyishi=newHuiyishi(); huiyishi.setId(rs.getInt("id")); huiyishi.setMingcheng(rs.getString("mingcheng")); huiyishi.setDel(rs.getString("del")); huiyishiList.add(huiyishi); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("huiyishiList",huiyishiList); req.getRequestDispatcher("admin/huiyishi/huiyishiMana.jsp").forward(req,res); }5.6會議室預(yù)訂點擊會議室預(yù)訂菜單,進(jìn)入會議室預(yù)訂添加界面,輸入正確的會議室預(yù)訂信息,完成會議室預(yù)訂的添加操作。界面設(shè)計如圖5-7:圖5-7會議室預(yù)訂添加效果圖5.7會議室預(yù)訂管理管理員點擊左側(cè)的菜單“我的預(yù)訂信息”,頁面跳轉(zhuǎn)到會議室預(yù)訂管理界面,調(diào)用后臺的servlet類查詢出所有的預(yù)訂信息,并把這些信息封裝到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出預(yù)訂信息??梢栽谠撃0鍖崿F(xiàn)會議室預(yù)訂的取消操作。會議室預(yù)訂管理的運行效果如圖5-8。圖5-8會議室預(yù)訂管理效果圖該模塊的主要功能通過yuding_servlet類實現(xiàn)的,該類的主要功能是與數(shù)據(jù)交互,查詢或保存預(yù)訂信息,并通過response跳轉(zhuǎn),打開相應(yīng)的jsp頁面。主要代碼是: publicvoidyudingAdd(HttpServletRequestreq,HttpServletResponseres) { HttpSessionsession=req.getSession(); Yuangongyuangong=(Yuangong)session.getAttribute("yuangong"); inthuiyishi_id=Integer.parseInt(req.getParameter("huiyishi_id")); Stringriqi=req.getParameter("riqi"); Stringshijianduan=req.getParameter("shijianduan"); Stringkaishishi=req.getParameter("kaishishi"); intyuangong_id=yuangong.getId(); Strings=panduan_yuding_chongtu(huiyishi_id,riqi,shijianduan); if(s.equals("chongtu")) { req.setAttribute("msg","預(yù)訂沖突,請在別的時間預(yù)訂"); } else { Stringsql="insertintot_yudingvalues(?,?,?,?,?)"; Object[]params={huiyishi_id,riqi,shijianduan,kaishishi,yuangong_id}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","預(yù)訂成功"); }StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); } publicvoidyudingMana_yuangong(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { HttpSessionsession=req.getSession(); Yuangongyuangong=(Yuangong)session.getAttribute("yuangong"); ListyudingList=newArrayList(); Stringsql="select*fromt_yudingwhereyuangong_id=?"; Object[]params={yuangong.getId()}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tyudingyuding=newTyuding(); yuding.setId(rs.getInt("id")); yuding.setHuiyishi_id(rs.getInt("huiyishi_id")); yuding.setRiqi(rs.getString("riqi")); yuding.setShijianduan(rs.getString("shijianduan")); yuding.setKaishishi(rs.getString("kaishishi")); yuding.setYuangong_id(rs.ge
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 62841-2-3:2020+AMD1:2024 CSV EN Electric motor-operated hand-held tools,transportable tools and lawn and garden machinery - Safety - Part 2-3: Particular requirements f
- 2024年干部考核實施制度范例(四篇)
- 2024年員工年度工作總結(jié)范文(二篇)
- 2024年工程造價合同范本(二篇)
- 2024年外圍衛(wèi)生及綠化管理制度(四篇)
- 2024年大班上學(xué)期班工作計劃范例(四篇)
- 2024年學(xué)校貧困寄宿生生活補助工作制度范例(三篇)
- 【《淺談游戲在幼兒園教育教學(xué)中的運用與融合》5100字】
- 【《櫻花公司股利分配方案優(yōu)化研究》8900字論文】
- 2024年宣傳工作計劃樣本(二篇)
- 《百合花》《哦香雪》聯(lián)讀+探究詩化特征
- 小學(xué)道法二 我自豪 我是中國人課件
- 小學(xué)部編版五年級語文上冊教案(全)
- 高中體育與健康-足球變向運球教學(xué)課件設(shè)計
- 老人租房免責(zé)協(xié)議書
- 中印邊境自衛(wèi)反擊戰(zhàn)
- 管道試壓方案樣本
- 供電局電網(wǎng)預(yù)防雨雪冰凍災(zāi)害應(yīng)急預(yù)案
- 內(nèi)在激勵與外在激勵ppt
- 四年級下冊英語人教PEP版課件U1-A Let's spell
- fas設(shè)備應(yīng)急預(yù)案
評論
0/150
提交評論