版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
年4月19日南昌大學(xué)畢業(yè)設(shè)計范文文檔僅供參考密級:NANCHANGUNIVERSITY學(xué)士學(xué)位論文THESISOFBACHELOR(20—20年)題目基于JAVA的宿舍管理系統(tǒng)開發(fā)學(xué)院:軟件學(xué)院系軟件工程專業(yè)班級:WEB084學(xué)生姓名:程懇學(xué)號:指導(dǎo)教師:陳練職稱:副教授起訖日期:基于JAVA的宿舍管理系統(tǒng)開發(fā)專業(yè):軟件工程 學(xué)號:學(xué)生姓名:程懇 指導(dǎo)教師:陳練摘要現(xiàn)今,隨著高校學(xué)生的增多,學(xué)生宿舍的管理問題也暴露出來,有很多學(xué)生宿舍都是初步使用,甚至尚未使用計算機進行信息處理?根據(jù)問卷調(diào)查得知,她們以前對信息管理的主要方式是基于文本?表格等紙介質(zhì)的手工處理,對于衛(wèi)生評比等很多信息都是用人工計算?手抄進行?數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找?總的來說,缺乏系統(tǒng),規(guī)范的信息管理手段?這就是宿舍管理系統(tǒng)的開發(fā)的基本環(huán)境?.經(jīng)過分析如此情況,我們使用JAVAWEB,ORACLE數(shù)據(jù)庫等開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,運用JAVA的STRUCT和SPRING這兩大框架快速建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進行需求迭代,不斷修正和改進,直到形成用戶滿意的可行系統(tǒng).關(guān)鍵詞:宿舍管理;簡單易用;JAVAWEB技術(shù)DormitoryManagementSystembasedonJAVAAbstractNowadays,withtheincreaseofcollegestudents,themanagementofstudentdormitoriesexposedtoalotofstudentdormitoriesarepreliminary,notevenusingcomputersforinformationprocessingaccordingtothequestionnairewasinformedthattheirpreviouswayofinformationmanagementwithmanualcalculationbasedonthepaperatthemanualprocessingoftext,tables,etc.,foralotofinformationsuchashealthassessmentsarethehandwrittencarriedout.dataprocessingworkload,error-prone;duetothevarietyofdata,easilylostanddifficulttofind.,thelackofthesystem,standardizedinformationmanagementtools.thisisthebasicenvironmentofthehostelmanagementsystemdevelopment.
Afteranalysisofthecase,weusetheJAVAWEBORACLEdatabasedevelopmenttool,itsuseofthevariousobject-orienteddevelopmenttools,theuseofJAVASTRUCTandSPRINGframeworktoquicklybuildaprototypeapplicationsystem,thentheinitialtheprototypesystemneedstoconstantlyrevisedandimproved,untiltheformationofaviablesystemofcustomersatisfaction.Keyword:DormitoryManagement;Convenient;JAVAWEB目錄摘要 IAbstract II第一章 前言 1第二章系統(tǒng)可行性分析 22.1技術(shù)可行性 22.2經(jīng)濟可行性 22.3社會環(huán)境 22.4人 2第三章需求分析 33.1系統(tǒng)需求分析 33.1.1登錄管理 33.1.2后臺用戶管理 33.1.3管理 33.2系統(tǒng)主要技術(shù)分析 43.2.1系統(tǒng)基于B/S的三層體系結(jié)構(gòu) 43.2.2系統(tǒng)開發(fā)使用的關(guān)鍵技術(shù) 53.3系統(tǒng)開發(fā)、運行環(huán)境分析 7第四章系統(tǒng)概要設(shè)計 94.1系統(tǒng)功能模塊設(shè)計 94.2系統(tǒng)功能結(jié)構(gòu)設(shè)計 94.3系統(tǒng)UML設(shè)計 104.3.1用例圖設(shè)計 104.3.2用例描述 11第五章系統(tǒng)數(shù)據(jù)庫設(shè)計 165.1實體分析 165.2數(shù)據(jù)庫數(shù)據(jù)表結(jié)構(gòu)圖 165.3數(shù)據(jù)庫表詳細(xì)結(jié)構(gòu)設(shè)計 17第六章系統(tǒng)詳細(xì)設(shè)計 196.1詳細(xì)設(shè)計概述 196.2程序流程圖 196.3郵件發(fā)送和接受 206.3.1郵件通信原理 206.3.2郵件地址的構(gòu)成 206.3.3常見郵件協(xié)議 216.3.4關(guān)鍵算法 21第七章系統(tǒng)實現(xiàn) 277.1總體工程架構(gòu)的實現(xiàn) 277.2具體功能實現(xiàn) 27結(jié)論 36參考文獻 37致謝 38前言隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟,其強大的功能已為人們深刻認(rèn)識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。隨著計算機技術(shù)發(fā)展,各種各樣的管理信息系統(tǒng)也蓬勃發(fā)展。學(xué)校各個部門為了提高工作效率也紛紛開發(fā)自己的系統(tǒng),而隨著住宿人數(shù)的高速膨脹,開發(fā)學(xué)生公寓管理系統(tǒng)也成為必然。近年來,我校規(guī)模不斷擴大,招生人數(shù)不斷增多,宿舍也不斷擴建增多。致使宿舍管理工作壓力增大,為了適應(yīng)未來信息化社會的需要,為了使宿舍管理工作更加科學(xué)化、規(guī)范化,減輕工作人員壓力,提高工作效率,我們需要結(jié)合我校實際工作的需要采用JAVA語言結(jié)合ORACLE數(shù)據(jù)庫開發(fā)了《學(xué)生公寓管理系統(tǒng)》?,F(xiàn)在學(xué)生公寓管理系統(tǒng)的開發(fā)設(shè)計日益呈現(xiàn)出可視化、對象化和網(wǎng)絡(luò)化的特征第二章系統(tǒng)可行性分析 可行性分析是基于客觀的、科學(xué)的,其在整個系統(tǒng)的設(shè)計與實現(xiàn)過程中有非常重要的意義,軟件可行性分析的目的是用合適的代價解決足夠的問題,其最終結(jié)果是對所設(shè)想的項目做出實施還是放棄。本宿舍管理系統(tǒng)從以下四個方面進行可行性分析:技術(shù)、經(jīng)濟、社會環(huán)境、人。2.1技術(shù)可行性 基于JAVA的WEB形式實現(xiàn)本系統(tǒng)。JAVA是由SunMicrosystems(現(xiàn)已被Oracle收購)公司于1995年5月推出的Java程序設(shè)計語言和Java平臺的總稱。JAVA編程語言經(jīng)過十多年的發(fā)展已經(jīng)形成了具備簡單的、面向?qū)ο蟮?、分布式的、解釋型的、健壯安全的、結(jié)構(gòu)中立的、可移植的、性能優(yōu)異、多線程的動態(tài)語言。JavaEE(JavaPlatform,EnterpriseEdition)是JAVA的企業(yè)級應(yīng)用,企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端Java應(yīng)用程序。JavaEE是在JavaSE的基礎(chǔ)上構(gòu)建的,它提供Web服務(wù)、組件模型、管理和通信API,能夠用來實現(xiàn)Web2.0應(yīng)用程序。2.2經(jīng)濟可行性 實現(xiàn)一套宿舍管理系統(tǒng),不論從時間、資金、人力等角度考慮都不需要太多的投入。只要嚴(yán)格按照軟件工程的實現(xiàn)方法進行系統(tǒng)的實施即可。當(dāng)其正式投入運行,其所發(fā)揮的高效率、實際效益作用是非常明顯的。2.3社會環(huán)境 在當(dāng)今的網(wǎng)絡(luò)社會時代,硬件、軟件設(shè)備環(huán)境已經(jīng)相當(dāng)成熟,要實現(xiàn)并運行一個宿舍管理系統(tǒng)是相當(dāng)輕松的。2.4人 計算機的發(fā)展,使得常人具備使用基本的電腦技術(shù)已經(jīng)非常重要,而且現(xiàn)在網(wǎng)絡(luò)教學(xué)資源也非常豐富,因此對一個郵件系統(tǒng)的操作以及使用是基本沒障礙的。綜上所述,實現(xiàn)一套宿舍管理系統(tǒng)是相當(dāng)可行的。需求分析3.1系統(tǒng)需求分析 WEB應(yīng)用技術(shù)2作為Internet最為廣泛的應(yīng)用之一,在人們的工作和生活中扮演著重要的角色,應(yīng)用的普及使電子郵件技術(shù)有了飛速的發(fā)展。不但在普通人的日常生活中,而且已經(jīng)成為現(xiàn)代企業(yè)內(nèi)外信息交流的必備工具。企業(yè)擁有自己的郵件系統(tǒng),不但能夠提升企業(yè)形象,而且更重要的是能為企業(yè)帶來實際效益。當(dāng)然作為一個郵件系統(tǒng)要考慮多方面,比如穩(wěn)定性、安全性等其它一些因素,但由于時間、及所學(xué)技術(shù)有限等原因,在此只實現(xiàn)最基本的客戶端功能及簡單后臺管理功能。Java為實現(xiàn)這種功能提供了豐富的類庫,借此,在老師的指導(dǎo)下,開始了郵件系統(tǒng)的開發(fā)。 本郵件系統(tǒng)主要有三個模塊:3.1.1登錄管理用戶,都必須從登錄界面提交用戶名和密碼,經(jīng)程序驗證正確無誤后方可登錄系統(tǒng)進行相關(guān)操作。登錄時進行用戶賬戶、密碼的有效行驗證,如果用戶的賬戶錯誤,密碼錯誤,則不能進入系統(tǒng)。之后再進行用戶權(quán)限驗證,不同權(quán)限有不同的界面,如果是普通用戶登錄則只有部分權(quán)限,如果是超級管理員登錄擁有全部權(quán)限。3.1.2后臺用戶管理超級管理員能夠經(jīng)過添加用戶來分配,開通一個賬號,也能夠?qū)ΜF(xiàn)有帳號進行查看、刪除、修改等操作。其中添加、修改用戶時,能夠指定用戶的權(quán)限和備注。3.1.3前臺管理 3.2系統(tǒng)主要技術(shù)分析3.2.1系統(tǒng)基于B/S的三層體系結(jié)構(gòu)B/S(Browser/Server)即瀏覽器/服務(wù)器。一般三層架構(gòu)就是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。區(qū)分層次有助于系統(tǒng)的“高內(nèi)聚,低耦合”。圖3.1三層系統(tǒng)的分層式結(jié)構(gòu)表現(xiàn)層:通俗講就是展現(xiàn)給用戶的界面,用戶在使用一個系統(tǒng)的時候她的所見所得,為用戶提供一種交互式操作的界面。業(yè)務(wù)邏輯層:是系統(tǒng)架構(gòu)中體現(xiàn)核心價值的部分。它的關(guān)注點主要集中在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計,也即是說它是與系統(tǒng)所應(yīng)正確領(lǐng)域邏輯有關(guān)。針對具體問題的操作,也能夠說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯處理。數(shù)據(jù)訪問層:其功能主要是負(fù)責(zé)數(shù)據(jù)庫的訪問,該層所做事務(wù)直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的增添、刪除、修改、更新、查找等。3.2.2系統(tǒng)開發(fā)使用的關(guān)鍵技術(shù)一、HTML、CSS、JAVASCRIPTHTML(HyperTextMark-upLanguage)即超文本標(biāo)記語言,是當(dāng)前網(wǎng)絡(luò)上應(yīng)用最為廣泛的語言,也是構(gòu)成網(wǎng)頁文檔的主要語言。HTML文本是由HTML命令組成的描述性文本,HTML命令能夠是說明文字、圖形、動畫、聲音、表格、鏈接等。HTML的結(jié)構(gòu)包括頭部(Head)、主體(Body)兩大部分,其中頭部描述瀏覽器所需的信息,而主體則包含所要說明的具體內(nèi)容。CSS(CascadingStyleSheet)層疊樣式表是一組格式設(shè)置規(guī)則,用于控制Web頁面的外觀。經(jīng)過使用CSS樣式設(shè)置頁面的格式,可將頁面的內(nèi)容與表現(xiàn)形式分離。頁面內(nèi)容存放在HTML文檔中,而用于定義表現(xiàn)形式的CSS規(guī)則則存放在另一個文件中或HTML文檔的某一部分,一般為文件頭部分。將內(nèi)容與表現(xiàn)形式分離,不但可使維護站點的外觀更加容易,而且還能夠使HTML文檔代碼更加簡練,縮短瀏覽器的加載時間。JAVASCRIPT是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常見來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。也是一種動態(tài)、弱類型、基于原型、內(nèi)置支持類的語言。二、JSPJSP(JavaServerPages)頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。JSP文件被編譯后是以JavaServlet形式存在,當(dāng)JSP頁面第一次被調(diào)用時,會有一個編譯成JavaServlet類的過程,因此當(dāng)?shù)谝淮握{(diào)用時會有點慢,但編譯后就會一直存儲在服務(wù)器的內(nèi)存中,這就使得在接下來的對該頁面的調(diào)用中,服務(wù)器會有非??斓捻憫?yīng)。三、Struts1Struts1是Apache組織的一個項目,像其它的Apache組織的項目一樣,它也是開放源碼項目。它提供了對開發(fā)MVC系統(tǒng)的底層支持,采用的主要技術(shù)是Servlet,JSP和customtaglibrary(自定義標(biāo)簽庫)。作為一個MVC的框架,Struts1對Model、View和Controller都提供了對應(yīng)的實現(xiàn)組件:在視圖層,除了能夠使用JSP及其標(biāo)簽庫(JSTL)以外,Struts1提供了一個強大的標(biāo)簽庫,來幫助用戶解決顯示邏輯,而且使用ActionForm組件將顯示遞交到控制器層。在控制器層,Struts1提供了一個控制器組件ActionServlet,它繼承自HttpServlet,并重載了HttpServlet的doGet()、doPost()方法,能夠接受HTTP響應(yīng),并進行轉(zhuǎn)發(fā),同時還提供了使用XML進行轉(zhuǎn)發(fā)Mapping(映射)的功能。在模型層,Struts1提供Action對象,來管理業(yè)務(wù)邏輯的調(diào)用,幫助用戶分離業(yè)務(wù)邏輯。也就是說Struts1本身不參與業(yè)務(wù)邏輯,但能夠調(diào)用已完成的業(yè)務(wù)邏輯。圖3.2Struts1基本流程結(jié)構(gòu)圖SPRINGSpring是一個開源框架,它由RodJohnson創(chuàng)立。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不但限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都能夠從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架能夠在一個大小只有1MB多的JAR文件里發(fā)布。而且Spring所需的處理開銷也是微不足道的。另外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類??刂品崔D(zhuǎn)——Spring經(jīng)過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進了松耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會經(jīng)過被動的方式傳遞進來,而不是這個對象自己創(chuàng)立或者查找依賴對象。你能夠認(rèn)為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。面向切面——Spring提供了面向切面編程的豐富支持,允許經(jīng)過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)(transaction)管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。容器——Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你能夠配置你的每個bean如何被創(chuàng)立——基于一個可配置原型(prototype),你的bean能夠創(chuàng)立一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。框架——Spring能夠?qū)⒑唵蔚慕M件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。五、數(shù)據(jù)庫JDBC(JavaDataBaseConnectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的JavaAPI,能夠為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此能夠構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。采用JDBC訪問oracle數(shù)據(jù)庫需要安裝三個驅(qū)動oraclejdbcjar。并在JSP里導(dǎo)入進去。SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。SQL語言包含4個部分:數(shù)據(jù)定義語言(DDL):CREATE、DROP、ALTER等語句。數(shù)據(jù)操作語言(DML):INSERT、UPDATE、DELETE等語句。數(shù)據(jù)查詢語言(DQL):SELECT語句。數(shù)據(jù)控制語言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等語句。3.3系統(tǒng)開發(fā)、運行環(huán)境分析操作系統(tǒng):MicrosoftWindowsXP瀏覽器:InternetExplorer6.0以上,或以此為內(nèi)核的瀏覽器應(yīng)用服務(wù)器:Apache-Tomcat-6.0.20 Tomcat是Apache軟件基金會(ApacheSoftwareFoundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其它一些公司及個人共同開發(fā)而成。因為Tomcat技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為當(dāng)前比較流行的Web應(yīng)用服務(wù)器。Tomcat是一個輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。JDK:jdk-6u20-windowsJDK(JavaDevelopmentKit)是SunMicrosystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的JavaSDK。JDK是整個Java的核心,包括了Java運行環(huán)境,Java工具和Java基礎(chǔ)的類庫。數(shù)據(jù)庫:ORACLE9I或更高版本數(shù)據(jù)庫模型設(shè)計:PowerDesigner開發(fā)工具:MyEclipse6.5或更高版本MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們能夠在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML、Struts、JSF、CSS、Javascript、SQL、Hibernate。UML設(shè)計工具:RationalRose8.2.310.2800RationalRose是Rational公司出品的一種面向?qū)ο蟮慕y(tǒng)一建模語言的可視化建模工具。用于可視化建模和公司級水平軟件應(yīng)用的組件構(gòu)造。第四章系統(tǒng)概要設(shè)計4.1系統(tǒng)功能模塊設(shè)計從模擬用戶的角度進行分析,對于一個宿舍管理系統(tǒng),首先要確定其功能是什么,也就是用戶想要系統(tǒng)做什么工作。經(jīng)過對系統(tǒng)的可行性分析、需求分析、技術(shù)分析后,結(jié)合調(diào)研的情況及用戶的使用需求,確定了本系統(tǒng)的功能模塊如下圖所示。圖4.1系統(tǒng)功能模塊圖4.2系統(tǒng)功能結(jié)構(gòu)設(shè)計圖4.2系統(tǒng)功能結(jié)構(gòu)圖4.3系統(tǒng)UML設(shè)計4.3.1用例圖設(shè)計圖4.3系統(tǒng)管理員用例圖圖4.4普通用戶用例圖4.3.2用例描述用例標(biāo)識號01用例名稱登錄參與者普通用戶,管理員簡要描述普通用戶登錄到她的個人郵箱,管理員登錄到后臺管理前置條件用戶已被添加且狀態(tài)為啟用主事件流打開登陸頁面輸入登入用戶民和密碼點擊登錄按鈕,進入自己的郵箱用例終止異常事件流提示輸入錯誤用戶確認(rèn)返回登錄界面后置條件用戶輸入信息正確,進入自己的郵箱用例標(biāo)識號02用例名稱用戶管理參與者管理員簡要描述管理員對系統(tǒng)中已存在的賬戶管理。包括添加賬戶、查看賬戶信息、修改賬戶信息、刪除賬戶。前置條件管理員已成功登陸主事件流選擇用戶管理,用例開始對所選用戶進行查看、修改、刪除或則添加新用戶相應(yīng)操作完成,用例結(jié)束異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號03用例名稱個人信息管理參與者普通用戶簡要描述用戶對當(dāng)前自己的某些信息進行查看、修改前置條件用戶已成功登陸主事件流點擊個人信息鏈接,用例開始查看當(dāng)前信息修改某些可改信息點擊更新,提交更新后的新信息返回更新后的信息,用例結(jié)束異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號04用例名稱聯(lián)系人管理參與者普通用戶簡要描述用戶對當(dāng)前自己的聯(lián)系人進行添加、查看、刪除前置條件用戶已成功登陸主事件流點擊聯(lián)系人鏈接,用例開始查看當(dāng)前聯(lián)系人列表添加或刪除聯(lián)系人返回最新聯(lián)系人列表異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號05用例名稱發(fā)送郵件參與者普通用戶簡要描述用戶發(fā)送郵件給收件人前置條件用戶已成功登陸主事件流單擊“寫信”按鈕進入發(fā)送郵件頁面用戶在文本框內(nèi)編輯收件人,主題,內(nèi)容等信息點擊“發(fā)送”按鈕,發(fā)送郵件用例終止異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號06用例名稱接收郵件參與者普通用戶簡要描述用戶接收屬于自己的郵件,而且查看郵件信息前置條件用戶已成功登陸主事件流點擊“收信”按鈕進入查看郵件列表頁面用例終止異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號07用例名稱搜索郵件參與者普通用戶簡要描述用戶搜索所有接收到的郵件,而且查看搜索到的郵件信息前置條件用戶已成功登陸主事件流在搜索框輸入需要搜索的關(guān)鍵詞點擊“搜索”按鈕,進行關(guān)鍵詞匹配搜索列出所有搜到的所有郵件用例結(jié)束異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號08用例名稱查看郵件參與者普通用戶簡要描述用戶查看接收到郵件的詳細(xì)信息前置條件用戶已成功登陸,且接收到郵件主事件流1、異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號09用例名稱回復(fù)郵件參與者普通用戶簡要描述用戶回復(fù)郵件給已發(fā)送過郵件給自己的其它用戶前置條件用戶已成功登陸,且已經(jīng)在郵件詳細(xì)信息頁面主事件流點擊“回復(fù)”按鈕,用例開始跳轉(zhuǎn)到回復(fù)郵件頁面收件人文本框自動填上被回復(fù)人郵件地址在文本框內(nèi)編輯,主題,內(nèi)容等信息點擊“發(fā)送”按鈕,回復(fù)郵件用例終止異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號10用例名稱轉(zhuǎn)發(fā)郵件參與者普通用戶簡要描述用戶轉(zhuǎn)發(fā)已收到的郵件給其它用戶前置條件用戶已成功登陸,且已經(jīng)在郵件詳細(xì)信息頁面主事件流點擊“轉(zhuǎn)發(fā)”按鈕,用例開始跳轉(zhuǎn)到轉(zhuǎn)發(fā)郵件頁面收件人文本框填上被轉(zhuǎn)發(fā)人郵件地址點擊“轉(zhuǎn)發(fā)”按鈕,轉(zhuǎn)發(fā)郵件用例終止異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無用例標(biāo)識號11用例名稱刪除郵件參與者普通用戶簡要描述用戶可刪除不需要或已無用的郵件前置條件用戶已成功登陸,且已經(jīng)在郵件列表頁面主事件流點擊“刪除”按鈕,用例開始彈出提示框,是否確認(rèn)刪除用戶確認(rèn),刪除郵件返回最新郵件列表用例終止異常事件流提示操作失敗用戶確認(rèn)返回操作前狀態(tài)后置條件無第五章系統(tǒng)數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫用于保存系統(tǒng)需要持續(xù)使用的數(shù)據(jù)對象,經(jīng)過對需求及系統(tǒng)的設(shè)計,本系統(tǒng)郵件實際上只有兩個實體對象即用戶實體和郵件實體,但由于系統(tǒng)其它實現(xiàn)的需要,本系統(tǒng)一共有六個表:5.1實體分析用戶實體用戶是系統(tǒng)的使用者,系統(tǒng)需要為每個用戶單獨保存在運行過程中用到的用戶信息,讓用戶感覺到只有自己一個人在使用系統(tǒng)。郵件實體郵件實體用于持久化郵件,把郵件的所有相關(guān)信息存儲在數(shù)據(jù)庫中。5.2數(shù)據(jù)庫數(shù)據(jù)表結(jié)構(gòu)圖圖5.1數(shù)據(jù)庫表結(jié)構(gòu)圖5.3數(shù)據(jù)庫表詳細(xì)結(jié)構(gòu)設(shè)計1.用戶表users(由james服務(wù)器自動創(chuàng)立)字段名字段類型字段長度是否可為空說明usernamevarchar640(否)用戶登錄名pwdHashvarchar501(是)登錄密碼pwdAlgorithmvarchar201(是)密碼加密算法 2.用戶信息表userInfo字段名字段類型字段長度是否可為空說明usernamevarchar640用戶名realNamevarchar501真實姓名sexint41性別powerint41權(quán)限enableint41賬戶是否啟用departmentvarchar501所屬部門jobTitlevarchar501職位phonevarchar501電話addressvarchar501地址createTimevarchar501用戶賬戶創(chuàng)立時間lastLogindatetime81用戶上次登錄時間3.聯(lián)系人表addressList字段名字段類型字段長度是否可為空說明usernamevarchar500用戶名friendNamevarchar501用戶聯(lián)系人的賬戶名4.收件箱表inbox(由james服務(wù)器自動創(chuàng)立)字段名字段類型字段長度是否可為空說明message_namevarchar2000消息名稱repository_namevarchar2550存儲名message_statevarchar300消息狀態(tài)error_messagevarchar10001錯誤消息sendervarchar2551發(fā)件人recipientstext160收件人remote_hostvarchar2550遠程主機remote_addrvarchar200遠程地址message_bodyimage160消息體message_attributesimage161消息屬性last_updateddatetime80最后一次更新5.郵件緩存表spool(由james服務(wù)器自動創(chuàng)立)字段名字段類型字段長度是否可為空說明message_namevarchar2000消息名稱repository_namevarchar2550存儲名message_statevarchar300消息狀態(tài)error_messagevarchar10001錯誤消息sendervarchar2551發(fā)件人recipientstext160收件人remote_hostvarchar2550遠程主機remote_addrvarchar200遠程地址message_bodyimage160消息體message_attributesimage161消息屬性last_updateddatetime80最后一次更新6.發(fā)件箱表outgoing字段名字段類型字段長度是否可為空說明idint40唯一標(biāo)識符,自動增長sendervarchar501發(fā)件人recepientvarchar501收件人ccvarchar501抄送收件人bccvarchar501密送收件人subjectvarchar501主題contentvarchar501內(nèi)容sentDatedatetime81發(fā)送日期attachmentntext161附件第六章系統(tǒng)詳細(xì)設(shè)計6.1詳細(xì)設(shè)計概述軟件詳細(xì)設(shè)計的任務(wù)是,是為軟件結(jié)構(gòu)圖中的每個模塊確定所采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表示工具給出清晰的描述,表示工具能夠自由選擇,但工具必須具有描述過程細(xì)節(jié)的能力,而且能夠有利于程序員在編程時便于直接翻譯成程序設(shè)計語言的源程序。程序流程圖、盒圖、PAD圖、HIPU圖、PDL語言等等都是完成詳細(xì)設(shè)計的工具,選擇合適的工具而且正確地使用是十分重要的。在概要設(shè)計階段,已經(jīng)確定了軟件系統(tǒng)的總體結(jié)構(gòu),給出了軟件系統(tǒng)中各個組成模塊的功能和模塊間的接口。作為軟件設(shè)計的第二步,軟件詳細(xì)設(shè)計就是在軟件概要設(shè)計的基礎(chǔ)上,考慮如何實現(xiàn)定義的軟件系統(tǒng),直到對系統(tǒng)中的每個模塊給出了足夠詳細(xì)的過程描述。在軟件詳細(xì)設(shè)計以后,程序員將仍舊根據(jù)詳細(xì)設(shè)計的過程編寫出實際的程序代碼。因此,軟件詳細(xì)設(shè)計的結(jié)果基本上決定了最終的程序代碼質(zhì)量。6.2程序流程圖流程圖,是一種用規(guī)定的程序框、流程線及文字說明來準(zhǔn)確、直觀地表示算法的圖形。圖6.1登錄系統(tǒng)流程圖6.3郵件發(fā)送和接受由于本系統(tǒng)是一個郵件系統(tǒng),因此郵件的發(fā)送和接受是本系統(tǒng)的核心。因郵件的通信有其自己的一套通信協(xié)議,因此有必要介紹下郵件的通信原理和一些基本協(xié)議。6.3.1郵件通信原理電子郵件的工作過程遵循客戶/服務(wù)器模式。每份電子郵件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方式構(gòu)成客戶端,而接收方構(gòu)成服務(wù)器,服務(wù)器含有眾多用戶的電子信箱。發(fā)送方經(jīng)過郵件客戶程序,將編輯好的電子郵件向郵局服務(wù)器(SMTP服務(wù)器)發(fā)送。郵局服務(wù)器識別接收者的地址,并向管理該地址的郵件服務(wù)器(POP3服務(wù)器)發(fā)送消息。郵件服務(wù)器識將消息存放在接收者的電子信箱內(nèi),并告知接收者有新郵件到來。接收者經(jīng)過郵件客戶程序連接到服務(wù)器后,就會看到服務(wù)器的通知,進而打開自己的電子信箱來查收郵件。圖6.2郵件傳輸示意圖6.3.2郵件地址的構(gòu)成E-mail象普通的郵件—樣,也需要地址,它與普通郵件的區(qū)別在于它是電子地址。所有在Internet之上有信箱的用戶都有自己的一個或幾個Emailaddress,而且這些Emailaddress都是唯一的。郵件服務(wù)器就是根據(jù)這些地址,將每封電子郵件傳送到各個用戶的信箱中,Emailaddress就是用戶的信箱地址。就象普通郵件一樣,你能否收到你的E-mai1,取決于你是否取得了正確的電子郵件地址。電子郵件地址的格式是“”,由三部分組成。第一部分“USER”代表用戶信箱的帳號,對于同一個郵件接收服務(wù)器來說,這個帳號必須是唯一的;第二部分“@”是分隔符;第三部分“SERVER.COM”是用戶信箱的郵件接收服務(wù)器域名,用以標(biāo)志其所在的位置。6.3.3常見郵件協(xié)議當(dāng)前常見的電子郵件協(xié)議有SMTP、POP3、IMAP4,它們都隸屬于TCP/IP協(xié)議簇,默認(rèn)狀態(tài)下,分別經(jīng)過TCP端口25、110和143建立連接。下面分別對她們進行簡單介紹。SMTP(SimpleMailTransferProtocol,簡單郵件傳輸協(xié)議):SMTP主要負(fù)責(zé)底層的郵件系統(tǒng)如何將郵件從一臺機器傳至另外一臺機器。POP(PostOfficeProtocol,郵局協(xié)議):當(dāng)前的版本為POP3,負(fù)責(zé)從郵件服務(wù)器中檢索電子郵件會把郵件從郵件服務(wù)器中傳輸?shù)奖镜赜嬎銠C。IMAP(InternetMessageAccessProtocol,因特網(wǎng)消息訪問協(xié)議):當(dāng)前的版本為IMAP4,是POP3的一種替代協(xié)議,可是又優(yōu)于POP的新協(xié)議。克服了POP的一些缺點,對郵件的操作能夠不需要把郵件從服務(wù)器下載到用戶的個人計算機上。6.3.4關(guān)鍵算法發(fā)送郵件程序核心代碼: /** *發(fā)送郵件,能夠有多個to,cc,bcc *@paramuser當(dāng)前登錄用戶 *@paramnewMailForm郵件表單 *@throwsException */ publicvoidsendMail(UserDTOuser,NewMailFormnewMailForm)throwsException{ Stringfrom=user.getUsername()+"@"; Stringrecepients=newMailForm.getRecepients(); String[]rec=recepients.split(";"); Address[]tos=newInternetAddress[rec.length]; for(inti=0;i<rec.length;i++){ if(rec[i].indexOf(this.domain)<0){ rec[i]=rec[i]+"@"; } tos[i]=newInternetAddress(rec[i]);} Stringcc=newMailForm.getCc(); Address[]ccs=null; if(null!=cc&&""!=cc){ String[]cc_=cc.split(";"); ccs=newInternetAddress[cc_.length]; for(inti=0;i<cc_.length;i++){ if(cc_[i].indexOf(this.domain)<0){ cc_[i]=cc_[i]+"@"; } ccs[i]=newInternetAddress(cc_[i]); } } Stringbcc=newMailForm.getBcc(); Address[]bccs=null; if(null!=bcc&&""!=bcc){ String[]bcc_=bcc.split(";"); bccs=newInternetAddress[bcc_.length]; for(inti=0;i<bcc_.length;i++){ if(bcc_[i].indexOf(this.domain)<0){ bcc_[i]=bcc_[i]+"@"; } bccs[i]=newInternetAddress(bcc_[i]); } } Stringcontent=newMailForm.getContent(); Stringsubject=newMailForm.getSubject(); StringfileName=newMailForm.getFileName(); Propertiesprops=newProperties(); props.setProperty("mail.smtp.auth","true"); props.setProperty("tocol","smtp"); props.setProperty("mail.host","localhost"); props.setProperty("mail.smtp.port","25"); props.setProperty("mail.from",from); Sessionsession=Session.getDefaultInstance(props); Messagemsg=newMimeMessage(session); msg.setFrom(newInternetAddress(from)); msg.setRecipients(Message.RecipientType.TO,tos); if(null!=cc&&""!=cc){ msg.setRecipients(Message.RecipientType.CC,ccs); } if(null!=bcc&&""!=bcc){ msg.setRecipients(Message.RecipientType.BCC,bccs); } if(subject!=null&&subject!="") msg.setSubject(subject); elseif(subject==""||subject==null) msg.setSubject("[無主題]"); msg.setSentDate(newDate()); msg.setText(content); if(fileName!=""&&fileName!=null){ Multipartpart=newMimeMultipart();//新建一個MimeMultipart對象用來存放多個BodyPart對象 BodyPartbodyText=newMimeBodyPart(); BodyPartbody=newMimeBodyPart(); FileDataSourcefds=newFileDataSource(fileName); DataHandlerdh=newDataHandler(fds); body.setFileName(MimeUtility.encodeWord(fds.getName(),"utf-8",null));//能夠和原文件名不一致,解決中文亂碼 body.setDataHandler(dh); part.addBodyPart(body); bodyText.setText(content); part.addBodyPart(bodyText); msg.setContent(part);//把part作為消息對象的內(nèi)容 } msg.saveChanges(); Transporttransport=session.getTransport(); transport.connect(from,user.getPassword()); transport.sendMessage(msg,msg.getAllRecipients()); transport.close();}接收郵件程序核心代碼:/** *接收郵件 *@paramuser當(dāng)前登錄用戶 *@returnmails返回一個郵件列表集合 *@throwsException */ publicArrayList<MailDTO>receiveMail(UserDTOuser,HttpServletRequestrequest)throwsException{ Stringusername=user.getUsername(); Stringpass=user.getPassword(); httpSession=request.getSession(); Propertiesprops=newProperties(); props.setProperty("mail.smtp.host","localhost");//smtp服務(wù)器 props.setProperty("mail.smtp.auth","true");//smtp認(rèn)證 props.setProperty("mail.smtp.port","25");//smtp端口 props.setProperty("tocol","smtp");//發(fā)郵件協(xié)議 props.setProperty("tocol","pop3");//收郵件協(xié)議 Sessionsession=Session.getDefaultInstance(props); Storestore=session.getStore("pop3"); store.connect("localhost",username,pass); Folderfolder=store.getFolder("inbox");//參數(shù)只能是inbox folder.open(Folder.READ_ONLY); //檢索所有郵件,按需填充 Message[]message=folder.getMessages(); intmsgLen=message.length; //FetchProfile類提供郵件協(xié)議提供者特有可選參數(shù),其目的是更有效地實現(xiàn)郵件組成成分的預(yù)提取 FetchProfileprofile=newFetchProfile(); profile.add(FetchProfile.Item.ENVELOPE); folder.fetch(message,profile); ArrayList<MailDTO>mails=newArrayList<MailDTO>(); MailDTOmail=null; for(inti=0;i<msgLen;i++){ mail=newMailDTO(); mail.setSender(message[i].getFrom()[0].toString()); mail.setSubject(message[i].getSubject()); mail.setSentDate(message[i].getSentDate()); mail.setId(i); //標(biāo)識郵件 //解析收件人地址 Address[]recipients=message[i].getAllRecipients(); intrecLen=recipients.length; Stringrec="["+recipients[0]+"];"; for(intj=1;j<recLen;j++) { rec+=("["+recipients[j]+"];"); } mail.setReceiver(rec); //判斷郵件類型 if(message[i].isMimeType("text/*")){ mail.setContent(message[i].getContent().toString());}else{handleMultipart(message[i],i);mail.setContent(content);mail.setAttachment(fileName);} mails.add(mail); } folder.close(false); store.close(); returnmails; } //處理Multipart郵件,包括了保存附件的功能 publicvoidhandleMultipart(Messagemsg,inti)throwsException{ Stringdisposition; BodyPartpart; Multipartmp=(MimeMultipart)msg.getContent(); intmpCount=mp.getCount();//Miltipart的數(shù)量,用于除了多個part,比如多個附件 for(intm=0;m<mpCount;m++){ part=mp.getBodyPart(m); disposition=part.getDisposition();//獲得此part的部署類型 if(disposition!=null&&disposition.equals(Part.ATTACHMENT)){//判斷是否有附件 this.getAttachName(part);//得到附件名 httpSession.setAttribute("bodyPart"+i,part); }else{ printParts(msg);//顯示帶附件郵件的正文! } } } //讀取帶附件的正文 publicvoidprintParts(Partp)throws
溫馨提示
- 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租房協(xié)議書合同簡易版
- 洛陽文化旅游職業(yè)學(xué)院《航空攝影》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度商鋪物業(yè)管理及環(huán)境維護服務(wù)協(xié)議3篇
- 2024全新專業(yè)醫(yī)療護理機構(gòu)護工雇傭合同樣本下載3篇
- 退休設(shè)計師返聘協(xié)議范例
- 動物園水地暖施工合同
- 2024年度高端智能家居紗窗定制服務(wù)合同3篇
- 公園管理處聘用合同樣本
- 聯(lián)營項目管理質(zhì)量保證
- 化肥廠地磅租賃協(xié)議
- 酒店前臺績效考核
- 《 一元線性回歸方程》示范公開課教學(xué)課件【高中數(shù)學(xué)北師大】
- 《為什么要學(xué)英語》PPT課件教案
- 真空采血管講座
- GB/T 39167-2020電阻點焊及凸焊接頭的拉伸剪切試驗方法
- GB/T 38540-2020信息安全技術(shù)安全電子簽章密碼技術(shù)規(guī)范
- GB/T 20774-2006手用1∶50錐度銷子鉸刀
- 餐廳店長工作職責(zé)流程及職責(zé)
- 最新-白內(nèi)障科普講座課件
- 《男女導(dǎo)尿術(shù)》課件共
- 高中部年級組長崗位職責(zé)
評論
0/150
提交評論