Ⅰ 高分求一篇關於java在虛擬中的應用的論文,質料也行阿,急。求高手。
摘 要 該文介紹了如何運用WebWork、Sitemesh、Hibernate等JAVA開源技術來設計與實現電子商務實驗模擬系統,給出了系統結構、功能及實現方案。
關鍵詞 電子商務;實驗模擬系統;Java;開源技術
1 引言
目前高校電子商務專業相關課程的教學迫切需要建立電子商務實驗軟體平台,該平台應實現包括B2C、C2C、B2B、電子數據交換(EDI)、現代物流應用系統、電子金融、安全電子交易身份認證等實施電子商務必不可少的軟體功能模塊。電子商務的高速發展對軟體開發技術提出了強有力的挑戰,由於電子商務的內部邏輯復雜,安全性要求苛刻,商務業務規則的變化較快,這就要求電子商務實驗模擬系統的開發技術能夠強大、靈活以適應電子商務實驗教學的需求。
在電子商務系統的設計與開發中,迫切需要解決的問題有:易維護性、易擴充性、可測試性、可靠性、高性能和安全性。目前的N-tier軟體體系結構較好的解決了上述問題。通常將系統分成表現層、商務邏輯層、持久存儲層。
J2EE規范針對多層應用的設計、集成、性能、安全性和可靠性等諸多方面,為應用系統的開發提供了表現層、商務邏輯框架、持久化、事務、安全和日誌服務等方面的技術規范。目前符合J2EE規范的開源項目如雨後春筍般涌現,其中不乏優秀的技術。利用現有的優秀開源技術可以大大降低應用系統的開發周期和開發成本,同時也能提高整個系統的靈活性。
2 本系統所使用的開源技術
對於現有較成熟的WEB應用框架而言,其解決的主要問題無外乎下面幾部分:
1)將客戶端的WEB頁面請求中的輸入數據封裝為一個(請求)數據對象。
2)對WEB請求中的數據進行合法性驗證。
3)根據不同的WEB頁面請求,調度相應的商務邏輯對象進行處理,並將(請求)數據對象作為參數傳入。
4)商務邏輯對象完成業務規則的處理後,返回一個結果數據對象。
5)通過表現層將結果數據對象中的數據展現給用戶。
6)業務實體的持久存儲。
WebWork2、Sitemesh、Hibernate、Junit、XDoclet、Ant等開源項目都是很成熟的開源項目。本系統的設計與實現通過綜合利用以上開源技術,非常輕松地解決了上述問題。
WebWork是由OpenSymphony開源組織開發的,致力於組件化和代碼重用的J2EE Web框架。WebWork由Xwork1和WebWork2共兩個項目組成。
Xwork1簡潔、靈活功能強大,它是一個標準的Command模式實現,並且完全從web層脫離出來。Xwork提供了很多核心功能:前端攔截器(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言等。攔截器(interceptor)就好像是一張過濾網,它用來對客戶端的調用進行攔截,並對其進行一些處理,比如檢查客戶端調用的合法性、實現安全策略、對事務進行支持等。
WebWork2建立在Xwork之上,處理HTTP的響應和請求。WebWork2使用ServletDispatcher將HTTP請求的變成Action(由Action類調用商務邏輯對象完成業務處理),實現session及application范圍的映射,以及request請求參數映射。每一個Action不依賴任何層和任何容器。他們通過ActionContext來使用request和response對象,實現了WEB層和邏輯層的分離。Webwork的Action能夠通過賦予一定的屬性值來運行,而不必啟動web容器來進行測試,增強了WEB組件的可測試性。
WebWork2支持多視圖表示,視圖部分可以使用jsP、Velocity、FreeMarker、JasperReports、XML等。
Web應用開發中,我們常常面臨如何保證輸入數據合法性的頭痛問題。實現輸入數據校驗的方法無外乎兩種:頁面Java Script 校驗、伺服器端執行邏輯代碼之前進行數據校驗。前者的系統安全性難以保證,通常作為輸入數據校驗的輔助技術。
WebWork使用Xwork的驗證框架進行驗證處理,它可以通過配置interceptor(攔截器)來激活。它可以為每個需要驗證的Class指定一個xml驗證文件,也可以為一個Class在不同的情況下指定不同的xml驗證文件。WebWork可以給每個Action類指定對應的驗證文件,也可以給Action類的屬性欄位指定驗證文件。最終通過攔截器來組裝Action和其驗證文件,使得邏輯層不需要考慮額外的數據驗證,簡化了業務處理邏輯。
Sitemesh也是opensymphony開源組織開發的j2ee應用框架之一,它主要用來對Web頁面進行布局管理,並且致力於為很多頁面組成的大型網站提供統一的風格、導航和布局功能。SiteMesh通過filter截取request和response,並給原始的頁面加入一定的裝飾(Decorator),然後把結果返回給客戶端,並且被裝飾的原始頁面並不知道SiteMesh的裝飾,避免了因頁面之間互相包含造成的頁面間的耦合。
本系統採用面向對象的設計與實現,而系統使用關系型資料庫管理數據,因為系統中的持久對象需要藉助關系型資料庫存儲,從而帶來了對象和關系的映射問題。很難做到把關系表記錄完整的映射到持久對象的關繫上來,這主要體現在多表的關系映射類型多樣,關聯的數據表個數難以確定,可能是一個表映射多個持久對象,有可能是多個表映射一個持久對象,更有可能的是表的某些欄位映射到一個持久對象,但是另外一些欄位映射到別的持久對象上。對象如果使用直接的資料庫操作來存取成員以實現持久對象編程的話,對存在1:N關系的持久對象的查詢其實就是1+n次對資料庫的SQL,勢必引起資料庫存取效率的大幅下降。
Hibernate則是持久層設計的最佳技術,它優雅地解決了上述各種對象和關系的映射問題。它是開源和免費的, API開放,當其本身功能不夠用的時候,可以自己編碼進行擴展。
Junit用於類模塊的單元測試。XDoclet、Ant是支持項目自動重建和文檔自動生成的優秀開源工具,它們可以大幅提高程序員的工作效率和工作質量。
3 系統總體設計
本系統的主要目標是實現模擬電子商務系統以便提供師生進行相關實驗的軟體平台。重點在於模擬電子商務環境中的交易與管理各方的業務流程,同時便於交易各方根據需要制定相應的業務規則,因此系統的設計應能適應商務規則的變化,對部分功能的實現沒有必要真實的再現,比如安全認證子系統中認證中心的安全認證服務的實現。另外,本系統還應加強實驗過程管理的功能設計,以便師生快速掌握實驗的過程和進度,能夠對實驗的成績進行自動處理並提供相關查詢。
在一次實驗中,學生通常在多個虛擬企業中扮演多種不同的業務角色,系統應提供快速的角色轉換功能,從而便於學生了解不同業務流程相關操作之間的關系及相互影響。
基於以上目標,系統共分兩大子系統:商務系統、實驗系統。
商務系統共分五個二級子系統:電子銀行系統、認證系統、交易系統、企業業務管理系統、物流系統。實驗系統分為學生自助、實驗管理二個子系統分別供學生、教師使用。
在每個子系統中,根據不同的操作人員角色劃分子模塊,例如「交易系統」(系統結構如圖1),分成「交易大廳」、「會員企業後台管理」、「交易中心後台管理」三個子系統,在會員企業後台管理中,能夠根據當前學生所承擔的業務角色列出其涉及的多個企業供其選擇。整個系統採用單點登錄驗證,從而減少學生在使用各模塊功能時的登錄操作,避免了當前一些較流行的實驗模擬系統需要學生記憶多個密碼,同一次實驗中需要多次重復登錄的問題,讓學生更加關注業務流程,提高實驗效率。
圖1 交易系統結構圖
實驗系統分成學生自助、實驗管理兩個子系統。學生通過學生自助子系統可以查詢教師布置的實驗任務,已做實驗的成績,實驗操作步驟的主要錯誤,從而了解不足之處及時加以改進。教師通過實驗管理模塊可以布置實驗任務,查詢學生實驗進程和實驗成績,了解學生實驗過程中普遍存在的問題以便及時加以指導。
系統的分析與設計採用面向對象的UML建模語言進行。在充分的系統需求分析後,通過UML的用例圖和順序圖對系統的概念模型進行了描述,然後進行較詳細的設計,描繪出系統的類圖及類關系圖,並建立了初步的數據模型。通過使用Borland公司的Together建模工具,我們實現了系統模型與源碼、資料庫的雙向自動轉換。
為了適應本系統開發的工程化需要,將開發人員分為如下幾類:a、系統分析員;b、後台組件開發程序員(主要是Action類與業務邏輯類);c、後台組件測試人員;d、前台用戶界面程序員(主要是JSP程序員+美工);e、前台測試技術人員。通過Sitemesh和WebWork的結合,實現了各模塊的用戶界面與後台組件的獨立開發與測試,有利於人員分工,大大降低了開發人員用於信息交流的時間,提高了系統開發的效率。
4 系統實現
4.1、運行環境
為適應高校計算機系統軟體環境的多樣性,本系統可運行於任一種符合J2EE規范的WEB容器,大多數流行的關系型資料庫。本系統開發時選擇了開源項目Tomcat及Mysql。
4.2 WEB應用的配置
限於篇幅,僅列出部分關鍵配置信息。基於J2EE規范,本系統的目錄規劃如下(表1):
父目錄 子目錄 描述
/ src Java類源代碼
/ lib 系統需要的第三方類庫文件
/ docs 系統開發文檔
/ ROOT WEB應用根目錄
/ROOT WEB-INF WEB應用配置目錄
/ROOT/
WEB-INF classes Java類位元組碼文件目錄
/ROOT _decorators sitemesh裝飾器頁面
表1 系統目錄結構
在/ROOT/WEB-INF中,存放web.xml、sitemesh.xml、decorators.xml等配置文件。
WEB視圖層的配置:
本系統設計了多個裝飾頁面,下面列出主裝飾頁面在/WEB-INF/decorators.xml中的配置信息:
<decorators defaultdir="/_decorators">
<decorator name="main" page="main.jsp">
<pattern>*</pattern>
</decorator>
</decorators>
在主裝飾頁面main.jsp中進行頁面的布局,形成較為流行的「上-左中右-下」的頁面結構,上部顯示系統標識及首頁鏈接、各主要子系統鏈接,下部顯示版權申明及聯系方式,左部及右部顯示常用模塊,中部為當前頁面的主功能操作區。其JSP頁面主體部分列出如下:
<table width="100%" align="center">
<tr><td width="134" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/left.jsp"/></td></tr>
<tr><td width="488" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/middle_top.jsp"/><br>
<decorator:body /><br>
<page:applyDecorator name="simple"
page="/sitemesh/middle_bottom.jsp"/></td></tr>
<tr><td width="122" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/right.jsp"/></td></tr>
</table>
持久層Hibernate的配置:
首先通過classes/hibernate.cfg.xml文件配置Hibernate的資料庫連接信息。然後在每個需要持久化的類二進制文件的所在目錄中建立與類同名的.hbm.xml文件配置該類屬性與數據表中欄位的對應關系以及類之間的映射關系。以下是Customer.hbm.xml的內容。
<hibernate-mapping package="com.un.eclab">
<class name="Customer" table="CUSTOMER">
<id name="id" column="CID">
<generator class="increment" /></id>
<property name="strUserName" column="username" />
<property name="strPassword" column="password" />
</class>
</hibernate-mapping>
在需要將Customer對象持久化時,使用如下代碼:
SessionFactory sf =
new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Customer customer = new Customer();
customer.setUsername("customername");
customer.setPassword("customerpassword");
session.save(customer);
tx.commit();
session.close();
4.3業務邏輯層的實現
以交易系統為例,該子系統實現的主要類列出如下(表2):
類名 主要功能
IProct 產品類介面,規范產品類的主要操作,適應不同企業對產品類的要求。
Proct 產品類,實現了Iproct介面。各企業可繼承該類,實現對各自產品的管理
EccCart 交易中心購物車類,可管理多種交易類型。
EccCartItem 購物車子項類
EccOrder 訂單類
EnpOptions 企業選項類,管理業務規則
表2 交易系統主要類列表
通過以上類的協作實現了交易系統的主要業務邏輯。
5 結束語
總體上看,採用開源技術設計電子商務實驗模擬系統具有開發周期短、系統靈活性高、易於開發及維護等優點,較大程度上降低了系統開發的復雜程度和開發費用,可適應多變的用戶需求,具備廣闊的應用前景。
Ⅱ java學生信息管理 課設或論文
java學生信息管理
摘要
隨著計算機技術日漸成熟,它已經進入人類社會的各個領域並發揮著越來越重要的作用。而在我們的生活周邊,也越來越能夠感受到計算機技術給我們帶來的巨大沖擊和快捷。作為計算機應用的一部分,學校使用計算機對學校的學生的信息進行管理,與手工管理相比擁有其無可比擬的優勢。例如:檢索快速、查找方便、可靠性高、存儲量大、保密性好、信息保存時間長等。這些優點能夠極大地提高學校學生信息管理的效率,也是學校管理科學化、正規化的重要條件和標志。
學生管理系統採用現在流行的JAVA編程語言來進行開發的。在系統界面開發中採用流行的JAVA API之一JAVA SWING來對系統的界面進行設計,布局以及開發。系統界面圖形化,操作簡單明了,容易上手。在數據處理方面,此系統採用JAVABEAN來封裝對數據的操作,提高了安全性。同時,系統採用SQL SERVER 2000資料庫系統來支持該系統的數據操作,能夠更加有效地、方便地處理系統的數據。
系統的實現是多種技術的結合,圖形化的操作界面使系統設計更具人性化,適合各類管理層用戶使用。
關鍵字:學生管理系統;JAVA;JAVA SWING;JAVABEAN;圖形化操作;數據處理;SQL SERVER 2000
第一章 概述
1.1系統的特點與開發的預期目標
1.1.1系統的開發背景
學生管理系統是一個學校不可或缺的一部分,它的存在無論是對學校管理者還是學生來說都是至關重要的,所以學生管理系統應該能夠為管理者提供充足的信息和快捷的查詢手段。然而長期以來,學校基本上都是使用傳統人工的方式來管理學生課程信息。而這種傳統的管理方式隨著科學技術的發展也漸漸的顯現出效率低下、保密性差的弊端。另外,隨著時間的不斷增長將會產生大量的文件和數據,這對於查找、更新和維護都帶來了不少的困難。
隨著技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類的各個領域並發揮著越來越重要的作用。
作為計算機應用的一部分,使用計算機對人事勞資信息進行管理,具有著手工管理所無法比擬的優點,例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高人事勞資管理的效率,也是科學化、正規化管理與世界接軌的重要條件。
因此,開發這樣一套管理軟體成為每個學校很有必要的事情
1.2系統的特點與開發的預期目標
在系統管理模塊中,此模塊提供了退出系統的功能
在學生管理模塊中,此模塊提供了增加學生信息,修改學生信息和刪除學生信息等基本功能,除此之外,還具備學生選課功能
在課程管理模塊中,此模塊提供了管理員可以對課程的基本信息進行增加、修改以及刪除等基本功能
在成績管理模塊中,此模塊中具備對進行了選課的學生所選擇的的課程的成績進行增加和修改的功能
在信息查詢模塊中,此模塊包含三個方面的查詢功能,即學生查詢、課程查詢、成績查詢。其中,在學生查詢模塊中,可以按照學號、姓名、性別、學院、專業等條件來進行查詢;在課程查詢模塊中則可以按照課程名和授課老師等條件來對所需的信息進行查詢;在成績查詢模塊中則可以查詢出學生所有科目的成績
1.3可行性研究
通過調查分析,建立新的學生信息管理信息系統有其充分的必要性和可能性。可以建立該信息系統的可能性具體包含了它具有經濟可行性、技術可行性和社會可行性,新系統能達到以最小的開發成本取得最佳的經濟效益,開發中所需人員、硬軟體支持以及其它費用進行估算情況均滿意,技術條件也能保證順利完成開發工作。
1.3.1 經濟性
通過網路化的學生信息管理,大大的提高了工作效率和人才的利用率,使之創造了更大價值;減少了工作人員,同時減少了學校開支;人才利用率的提高,適應了信息時代的網路化管理要求。
1.3.2技術可行性
本系統是採用目前比較流行的JAVA語言,用Microsoft Access 2000資料庫完成。由於JAVA的與平台無關性,所以在任何有JAVA運行環境的計算機上都可以運行。
1.3.3操作可行性
對於用戶來說,本系統只要求使用者掌握一般的上網經驗,經過仔細設計和測試之後的系統具有操作簡單,方便靈活等優點,足可以滿足用戶的不同需求,同時也方便了學校的內部管理。用戶一定會在短時間內掌握並熟練使用。只要動一動滑鼠鍵盤就可以達到想要的效果。1.4開發工具
1.4.1開發工具介紹
由於的ECLIPSE3.2具有操作界面方便,簡單,美觀的特點;並且在編碼過程中如果出現語法錯誤,標點錯誤等都會有相應的提示,可以很快地發現錯誤,因此本系統的開發選用ECLIPSE3.2作為開發工具。
1.4.2相關技術介紹
本系統採用面向對象的軟體開發辦法,以Sun公司的Java語言作為主要開發語言,使用SQL 2000作為關系資料庫,配合功能強大的SQL查詢語言實現建立關系資料庫,訪問資料庫,對資料庫的更新,較好地實現了預定的需求功能。
(1) JAVA簡介
Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。
Java去掉了C++語言的許多功能,如:指針運算、結構、typedefs、#define、需要釋放內存,讓Java的語言功能很精煉,並增加了一些很有用的功能,如自動收集碎片。這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。
當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火牆,阻止非法侵入。而Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。
(2) Sql 2000簡介
SQL Server是由Microsoft開發和推廣的關系資料庫管理系統(DBMS)。特點如下:
1.真正的客戶機/伺服器體系結構。
2.圖形化用戶界面,使系統管理和資料庫管理更加直觀、簡單。
3.豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。
4.SQL Server與Windows NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。
5.具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平台使用。
6.對Web技術的支持,使用戶能夠很容易地將資料庫中的數據發布到Web頁面上。
7.SQL Server提供數據倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。
1.5運行環境
運行伺服器:JDK1.5版本或更高
資料庫支持:SQL SERVER2000
操作系統:WINDOWS系列,LINUX系列或UNIX系列
硬體要求:內存最低為256MB,硬碟空間至少20G
1.6開發環境
開發語言:JAVA
編譯程序:JDK1.5
開發工具:ECLIPSE3.2
資料庫:SQL SERVER2000
操作系統:WINDOWS XP
Ⅲ java圖書館管理系統論文
1 引言
1.1 編寫目的
編寫本文檔的目的是根據系統分析工程師和客戶溝通的結果,對用戶需求進行了全面細致的分析,深入描述《圖書管理系統》軟體的功能和性能與界面,確定該軟體設計的限制和定義軟體的其他有效性需求。
該需求規格說明書的讀者對象是XXX圖書管理系統軟體小組的研發工程師、測試工程師、銷售工程師,版權歸XXX所有,嚴禁外傳。
1.2 項目背景
隨著社會信息量的與日俱增,作為信息存儲的主要媒體之一圖書,數量、規模比以往任何時候都大的多,不論個人還是圖書管理部門都需要使用方便而有效的方式來管理自己的書籍。在計算機日益普及的今天,對個人而言若採用一套行之有效的圖書管理系統來管理自己的書籍,會方便許多。對圖書管理部門而言,以前單一的手工檢索已不能滿足人們的要求,為了便於圖書資料的管理需要有效的圖書管理軟體。
圖書管理系統軟體LMS V1.0是一套功能比較完善的數據管理軟體,具有數據操作方便高效迅速等優點。該軟體採用功能強大的資料庫軟體開發工具進行開發,具有很好的可移植性,可在應用范圍較廣的DOS、WINDOWS系列等操作系統上使用。除此以外,LMS V1.0可通過訪問許可權控制以及數據備份功能,確保數據的安全性。
1.3 定義
文檔中採用的專門術語的定義及縮略詞簡要如下:
LMS:Library Management System,圖書管理系統。
1.4 參考資料
[1]鄭人傑,殷人昆,陶永雷。《實用軟體工程》(第二版)。北京:清華大學出版社,1997。
[2]金勇華,曲俊生。《JAVA網路高級編程》。北京:人民郵電出版社,2001。
[3]Borland Software Corporation。《JBUILDER培訓教程》北京:機械工業出版社,
2002。
2 任務概述
2.1 目標
《圖書管理系統》針對的用戶是單個中小型圖書室或者個人,藏書的種類和數量較少,讀者的數量和來源受到一定的限制。相應的需求有:
1.能夠存儲一定數量的圖書信息,並方便有效的進行相應的書籍數據操作和管理,這主要包括:
1) 圖書信息的錄入、刪除及修改。
2) 圖書信息的多關鍵字檢索查詢。
3) 圖書的出借、返還和資料統計。
2.能夠對一定數量的讀者進行相應的信息存儲與管理,這其中包括:
1) 讀者信息的登記、刪除及修改。
2) 讀者資料的統計與查詢。
3.能夠對需要的統計結果提供列表顯示輸出。
4.能夠提供一定的安全機制,提供數據信息授權訪問,防止隨意刪改,同時提供信息備份的服務。
2.2 運行環境
。。。
2.3 條件與限制
一個更為完善的圖書管理系統,應提供更為便捷與強大的信息查詢功能,如相應的網路操作及服務,由於開發時間和計算機數量有限,該系統並未提供這一功能。對信息的保護手段僅限於設置用戶級別,以及提供數據文件的備份,比較簡單,不能防止惡意的破壞,安全性能有待進一步完善。
3 功能需求
3.1 功能劃分
該軟體具有如下主要功能:
1. 瀏覽功能;
2. 查詢功能;
3. 插入功能;
4. 修改功能;
5. 刪除功能;
6. 授權功能;
3.2 功能描述
1. 瀏覽功能
列出當前資料庫文件中書籍和讀者的所有記錄;
可選定一項記錄,顯示所有域;
2. 查詢功能
書目匹配查詢;
讀者匹配查詢;
書目和讀者相關匹配查詢;
3. 插入功能
增加一個書目記錄;
增加一個讀者記錄
4. 修改功能
修改某一已存在的記錄內容,提供確認機制;
5. 刪除功能
刪除一個記錄,提供確認機制;
6. 授權功能;
授權讀者訪問數據的許可權;
4 數據描述
4.1 靜態數據
圖書管理系統的靜態數據包括:
圖書(book): 圖書編號(BookID);
圖書書名(BookName);
圖書作者(Author);
圖書出版社(Publisher);
圖書單價(BookPrice);
圖書摘要(Abstract);
圖書分類(Class);
圖書狀態(BookStatus);
讀者(reader): 讀者識別號(ReaderID);
讀者姓名(Name);
讀者許可權(Level);
讀者聯系方法(Address);
讀者電話號碼(TelephoneNumber);
讀者電子郵件(Email);
圖書訪問記錄(recorder): 借閱圖書號(bookID);
借閱者證號(ReaderID);
借書日期(OutDate);
系統設置表(configuration): 記錄號(id);
最多可借圖書數(MaxBLNum);
最多借書天數(MaxBLDays);
系統操作員記錄表(administer): 記錄序號(WorkerId);
賬號(Account);
口令(Password);
許可權級別(Level);
4.2 資料庫描述
資料庫採用Microsoft Access資料庫。
4.3 數據流圖
《圖書管理系統》的總體功能如下:
圖書的出借;
圖書的返回;
圖書信息查詢;
圖書的增刪改;
讀者的增刪改;
圖書管理者查詢統計圖書和讀者信息;
圖書管理系統數據備份;
圖書管理系統數據恢復;
圖書管理者口令修改;
1. 讀者借書過程:
2. 讀者還書過程:
3. 讀者查詢瀏覽過程:
4. 圖書管理員增刪改圖書:
5. 圖書管理員增刪改讀者:
6. 圖書管理員查詢瀏覽過程:
7. 圖書管理系統數據備份:
8. 圖書管理系統數據恢復:
9. 圖書管理者口令修改:
4.4 數據採集
數據採集採用鍵盤輸入。
5 性能需求
5.1 數據精確度
查詢時應保證查全率,所有在相應域中包含查詢關鍵字的記錄都應能查到,同時保證查准率。
5.2 時間特性
一般操作的響應時間應在1-2秒內。
5.3 適應性
滿足運行環境在允許操作系統之間的安全轉換和與其它應用軟體的獨立運行要求。
6 運行需求
6.1 故障處理
正常使用時不應出錯,對於用戶的輸入錯誤應給出適當的改正提示。若運行時遇到不可恢復的系統錯誤,也必須保證資料庫完好無損。
Ⅳ 求一個關於JAVA的論文
目 錄
一、概要設計……………………………………………………………3
二、程序整體設計說明…………………………………………….…..4
三、程序部分源代碼及注釋…………………………………………….9
四、測試結果………………………………………………………….24
五、設計心得…………………………………………………………25
六、致 謝…………………………………………………………25
七、參考文獻…………………………………………………………25
【摘 要】該程序是一個圖形界面的java文檔編輯器,其界面主要採用了awt包, 程序實現了文本編輯器的基本功能有:新建文件、打開文件、文件保存、文件另存為、剪切、復制、粘貼、刪除、查找/替換、改變字體大小,另外還利用Time類的schele方法實現了文件的定時自動更新功能,並創建備份文件,由於該編輯器是用的awt包,所以在技術上沒有實現將Java的關鍵字以不同顏色顯示功能。
【關鍵字】java 編輯器
一、概要設計
Java程序編輯器是:圖形界面、線程、流與文件等技術的綜合應用。
圖形界面的實現:考慮到簡單、實用、高效等特點,就選擇了AWT來完成實現,在選擇組件上,文本編輯區就選用了TaxtArea作為主要的部件。
線程實現文件自動保存:在相關的參考書上查閱到在Time類中有一個schele方法可以在後台自動完成一定的功能,而且調用起來相當簡單,於是就用了Time類中的schele方法來實現文件自動保存及備份功能。
文件操作的實現:利用了字元文件流FileReader和FileWriter類來實現。
由於Java的特性,可能用任何一個編輯器來編輯,於是就將Windows中的記事本作為模仿對象,根據實現情況刪減了其中的一些功能,如自動換行,設置字體,列印等功能。
在設計類的時候,考慮到簡單明了,就用了兩個類,一個主類和一個默認屬性類作為程序的整體框架,所有的對象和方法都是在默認屬性類中創建和實現的,以及為各組件注冊事件監聽程序也是在默認屬性類中實現的。主類完成對象的實例化及顯示。這們設計的優點是:條理清晰,容易理解,容易修改。這樣設計的缺點是:不利於共享類中的方法。
二、程序整體設計說明
2.1、程序框架圖
2.2、程序中所用類說明
(1)用戶自定義類
類名:EditInstantiation
作用:實例化對象
繼承的父類:WindowAdapter
主要成員變數:
Frame myFrm // 定義主窗體
TextArea myText // 定義文本編輯區
Dialog myDlgFind,myDlgFindont //查找及設置字體對話框
TextField TFfind, TFreplace, TffontSize
//查找對話框和字體窗體中的文本行
Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定義和創建各按鈕
Label Lf, Lr, Ls //定義和創建各標簽
MenuBar Mbbar //定義和創建主菜單
Menu Mfile,Medit,Mformation,Mhelp //定義和創建主菜單中的選項
Toolkit toolKit
Clipboard myCB //剪切板對象
FileDialog myFDlg //定義文件對話框
Choice ChfontName //定義和創建字體選擇框
private int VIindex = 1; //構成文件名後綴變數
private String VSsubFixStr=".java"; //構成文件名擴展名變數
private String VSmyFileName = "Document1",VSmyBFileName;
//文件名及備份文件名變數
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
//文件名變數
private int VIsearchPosition=0; //查找位置指針
private Timer VTtime; //實例化一個Time類
private int VImin=1; // schele方法中的一個時間參數
private int VItype=JOptionPane.INFORMATION_MESSAGE;
//提示對話框類型
private String VStitle; //提示對話框標題
private String VSmessage; //提示對話框信息
private boolean VBchanged = true; //改變字體的一個標識
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //設置字體大小及步長
主要成員方法:
public void init() //初始化各部件菜單的定義和事件的監聽
public void displayEdit ()//顯示窗體及調用Time中的schele方法
public void windowClosing () //關閉窗體
public void save //保存文件方法
a.內部類類名:KeyEvents
作用:實現菜單的事件的響應功能
繼承的父類:KeyAdapter
主要成員變數:無
成員方法:actionPerformed()、keyPressed()
b.內部類類名:FindKeyEvent
作用:實現查找中各部件事件的響應功能
繼承的父類:無
主要成員變數:無
成員方法:actionPerformed ()
c.內部類類名:fontEvent
作用:實現字體中各部件事件的響應功能
繼承的父類:無
主要成員變數:無
成員方法:ItemListener(),ActionListener()
(2)用戶自定義類與Java類的繼承關系圖如下:
自定義類 Java 類
線程使用說明
2.3、實現介面方法
本程序用到的方法有:schele其方法描述如下:
schele(事件,啟動時間,間隔時間);
2.4、線程應用
本程序為文本編輯器,為實現自動更新,應用到了線程,每隔1分鍾對文件進行自動更新
2.5、異常處理說明
(1)打開文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常後,顯示捕獲的異常
(2)保存文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常後,顯示捕獲的異常
2.6、程序運行效果及存在的問題
(1)程序運行主要界面如下:
a、主界面
b、打開文件對話框
c、保存文件對話框
d、另存為文件對話框
e、查找/替換對話框
f.字體對話框
2.7.程序尚還存在的問題
我花費了近一個多星期的時間,查閱了許多相關的資料,終於把這個Java編輯器,程序基本實現了該課程設計的基本要求。但由於自己水平有限,使得程序還有不是很完善,首先,最重要的一點是該設計的最重要的功能自動改變java關鍵字的顏色沒有實現。
三、程序部分源代碼及注釋
//****************************************************
// class name :Edit
// implements :none
// extends :none
// attribute :public
// founction :entrance of the class
//*****************************************************
public class Edit{ //主類
public static void main(String args[]){
EditInstantiation myEdit= new EditInstantiation();
myEdit.init(); //初始化
myEdit.displayEdit(); //顯示窗體
}
//****************************************************
// class name :EditInstantiation
// implements :none
// extends :WindowAdapter
// attribute :default
// founction :EditInstantiation of the main class
//*****************************************************
class EditInstantiation extends WindowAdapter{ //默認屬性類
//define sources 定義各部件
Frame myFrm=new Frame("我的編輯器"); //定義窗體
TextArea myText=new TextArea(); //定義窗體
Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定義查找對話框
Dialog myDlgFindont=new Dialog(myFrm,"字體",true); //定義字體對話框
TextField TFfind=new TextField(30);//定義查找對話中的查找輸入框
TextField TFreplace=new TextField(30); //定義查找對話中的替換輸入框
TextField TFfontSize,TFfontDemo;//定義字體大小文本框和示例框
Choice CHfontName;//定義字體大小選擇框
List LTfontSize; //定義字體大小標簽
Button BfontOK,BfontCancel; //定義字體大小對話中的確定及取消按鈕
Button Bfind=new Button("查找");//定義查找對話中的查找按鈕
Button Breplace=new Button("替換");//定義查找對話中的替換及取消按鈕
Button Bnext=new Button("下一個");//定義查找對話中的下一個及取消按鈕
Button Bcancel=new Button("取消");//定義查找對話中的確定及取消按鈕
Label Lf=new Label("查找內容:");
Label Lr=new Label("替換為: ");
Label Ls=new Label("字體大小:");
FileDialog myFDlg;
Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板對象
Menu Mfile,Medit,Mformation,Mhelp;
MenuBar MBbar;
//define varities //定義各變數
private int VIindex = 1;
private String VSsubFixStr=".java";
private String VSmyFileName = "Document1",VSmyBFileName;
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
private int VIsearchPosition=0;
private Timer VTtime;
private int VImin=1; // parameter in time schel
private int VItype=JOptionPane.INFORMATION_MESSAGE;
private String VStitle;
private String VSmessage;
// flag of the changeing
private boolean VBchanged = true;
// the scope of the font
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;
//************************************************
//founction name:init()
//parameter :none
//attribute :public
//founction :initia all compont
//************************************************
public void init(){ //初始化各部件
//------------------ set menu ------------------
MBbar=new MenuBar();
myFrm.setMenuBar(MBbar);
Mfile=new Menu("文件");
Medit=new Menu("編輯");
Mformation=new Menu("格式");
Mhelp=new Menu("幫助");
MBbar.add(Mfile);
MBbar.add(Medit);
MBbar.add(Mformation);
MBbar.add(Mhelp);
//文件菜單 add File menu
Mfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)));
Mfile.add(new MenuItem("打開",new MenuShortcut(KeyEvent.VK_O)));
Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)));
Mfile.add(new MenuItem("另存為"));
Mfile.addSeparator();//分隔線
Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E)));
//編輯菜單 add Edit menu
Medit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X)));
Medit.add(new MenuItem("復制"));//new MenuShortcut(KeyEvent.VK_C)));
Medit.add(new MenuItem("粘貼"));//new MenuShortcut(KeyEvent.VK_V)));
Medit.add(new MenuItem("刪除"));//new MenuShortcut(KeyEvent.VK_D)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("查找/替換",new MenuShortcut(KeyEvent.VK_F)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("全選",new MenuShortcut(KeyEvent.VK_A)));
//格式菜單 add Formation menu
Mformation.add(new MenuItem("字體",new MenuShortcut(KeyEvent.VK_U)));
//幫助菜單 add Formation menu
Mhelp.add(new MenuItem("關於作者"));
//----------------- menu add end -------------------------
//add Menu Action Listener
Mfile.addActionListener(new KeyEvents());
Medit.addActionListener(new KeyEvents());
Mformation.addActionListener(new KeyEvents());
Mhelp.addActionListener(new FindKeyEvent());
//--------------------------- Find dialog-----------------
myDlgFind.setSize(350,115);
myDlgFind.setLocation(250,150);
myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER));
myDlgFind.setBackground(Color.LIGHT_GRAY);
Bfind.setEnabled(false);
Breplace.setEnabled(false);
Bnext.setEnabled(false);
myDlgFind.add(Lf);
myDlgFind.add(TFfind);
myDlgFind.add(Lr);
myDlgFind.add(TFreplace);
myDlgFind.add(Bfind);
myDlgFind.add(Breplace);
myDlgFind.add(Bnext);
myDlgFind.add(Bcancel);
myDlgFind.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
myDlgFind.setVisible(false);
}});//為查找對話框窗體注冊事件監聽
TFfind.addKeyListener(new KeyEvents());//注冊事件監聽
Bfind.addActionListener(new FindKeyEvent());
Breplace.addActionListener(new FindKeyEvent());
Bcancel.addActionListener(new FindKeyEvent());
Bnext.addActionListener(new FindKeyEvent());
//--------------- end add action listener ------------
//================set font dialog ==============
//font size text field
TFfontSize = new TextField("8",14);
TFfontSize.selectAll();
//font size list field
LTfontSize = new java.awt.List(5, false);
LTfontSize.addItemListener(new fontEvent());
for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)
LTfontSize.add(i + "");//添加字體大小
LTfontSize.select(0);
//two Button Ok Cancel
BfontOK = new Button("確定");
BfontOK.addActionListener(new fontEvent());
BfontCancel = new Button("取消");
BfontCancel.addActionListener(new fontEvent());
//a TextField for demo the font
TFfontDemo = new TextField("Java awt",37);
TFfontDemo.setEditable(false);
// my font dialog設置字體對話框
myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT));
myDlgFindont.setBackground(Color.LIGHT_GRAY);
myDlgFindont.add(Ls);
myDlgFindont.add(TFfontSize);
myDlgFindont.add(BfontOK);
myDlgFindont.add(BfontCancel);
myDlgFindont.add(LTfontSize);
myDlgFindont.add(TFfontDemo);
myDlgFindont.setSize(300,200);
myDlgFindont.setLocation(300,200);
myDlgFindont.setResizable(false);
myDlgFindont.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myDlgFindont.show(false);
}
}); //為字體對話框窗體注冊事件監聽
//=============end set font dialog
// =======set Edit frame設置編輯器窗休
myFrm.add(myText,BorderLayout.CENTER);
myFrm.setSize(500,400);
myFrm.setBackground(Color.lightGray);
myFrm.addWindowListener(this);
myFrm.setSize(500,400);
myFrm.setLocation(200,100);
myFrm.setTitle("Java編輯器");
}
//************************************************
//founction name:displayEdit()
//parameter :none
//attribute :public
//founction :initial and display the frame
//************************************************
public void displayEdit(){ //顯示窗體
myFrm.setVisible(true);
//---------------------- auto save ---------------------
VTtime = new Timer(true);
VTtime.schele(new java.util.TimerTask(){
public void run(){
if(VSmyFileName!=null){
save(VSmyFileName+".java");
VSmyBFileName=VSmyFileName+".bak";
} //添加自動保存功能
save(VSmyBFileName);
}
}, VImin*60*1000,VImin*60*1000);
//parament 1 the task
//parament 2 when to start the task
//parament 3 set the interval time }
//****************************************************
// class name :KeyEvents
// implements :ActionListener
// extends :KeyAdapter
// attribute :default
// founction :implement the mouse and key action
//*****************************************************
class KeyEvents extends KeyAdapter implements ActionListener{
//********************************************************
//founction name:actionPerformed()
//parameter :none
//attribute :public
//return :void
//founction :realize the key action in the menu
//*********************************************************
public void actionPerformed(ActionEvent e){
//完成菜單事件的功能
// File Menu
if (e.getActionCommand()=="新建"){
//remind you
JFrame aFrame=new JFrame();
aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane optionPane=new JOptionPane();
String choices[]={"是","否","取消"};
int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本編輯器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices[0]);
//保存文件後新建
if(n==0){//若文件存在,保存在原文件中,再新建文件
try{
if(VFmyFile.exists()){
save(VSmyFileName); // call the save founction
myText.setText("");
VIindex++;
}
else{//若文件不存在,則保存後再新建
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
myText.setText("");
VIindex++;
}
}
catch(Exception ne){}
}
//不保存文件新建
if(n==1){
myText.setText("");
VIindex++;
}
//取消新建
if(n==0){return;}
}
//打開菜單 Open Menu
if (e.getActionCommand()=="打開") {
myFDlg=new FileDialog(myFrm,"打開",FileDialog.LOAD);
myFDlg.show();
if (myFDlg.getFile()!="") {
VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile());
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
if( VFmyFile.exists()){
try{
FileReader fr=new FileReader(VFmyFile);
BufferedReader br=new BufferedReader(fr);
String text;
myText.setText("");
while ((text=br.readLine())!=null)
myText.append(text+"\r\n");
br.close();
fr.close();
}
catch(IOException ioe){
VStitle="提示";
VSmessage="打開文件出錯";
JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype);
}
}
}
}
//保存菜單 Save Menu
if (e.getActionCommand()=="保存"){
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//另存為菜單 SaveAs Menu
if (e.getActionCommand()=="另存為"){
myFDlg=new FileDialog(myFrm,"文件另存為",1);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//退出菜單 exit Menu
if (e.getActionCommand()=="退出")
System.exit(0);
//編輯 Edit Menu
if (e.getActionCommand()=="剪切"){
//Cut
String text =myText.getSelectedText();
StringSelection selection = new StringSelection(text);
myCB.setContents(selection, null);
myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd());
}
if (e.getActionCommand()=="復制"){
//
String text=myText.getSelectedText();
if(text!=null){
StringSelection selection=new StringSelect
Ⅳ 你好,基於java的畢業論文,有沒有新穎一點,簡單一點的選題推薦
你好, 計算機專業的畢設一般分為這兩部分: 源碼+論文
首先說選題版, 畢設課題以javaweb居多, 框架可以選用權ssm, ssh, 或者springboot, 可以選做一些管理系統, 下面是一些常見的命題
校園訂餐管理系統
健身房管理系統
扶貧電子商城
等等, 這些課題可以按照你自己的實力做, 如果技術好的化, 或者有一些成品, 可以做的復雜一些, 比如前端可以layui優化一下, 許可權系統採用shiro來做等等
論文方面比較簡單但是比較麻煩, 各種文庫都有很多javaweb的論文,但是直接拷貝的化會過不了查重系統, 需要你自己認真的重構調整一下
Ⅵ 求畢業設計及論文「基於Java的學生信息管理系統的設計與實現」
你這個需求比較艱難, 空手套白狼不太可能有人會給你
首先這個課題非常簡內單
第一容: 代碼層面就是用springmvc 或者springboot之類的框架, 數據層採用hibernate/myts, 不要想著自己手寫servlet了, 那個工作量太大, 隨便套一個主題就能用了
第二: 論文方面可以去文庫里東拼西湊一番, 畢竟本科論文講來講去都是那些東西, 寫一些每個框架的優點, 自己的業務設計, 資料庫設計, 測試樣例等等就能拼個一萬字的論文了
Look at my name ~ you will find the code