第一篇:Java課程設(shè)計(jì)心得體會(huì)
Java課程設(shè)計(jì)心得體會(huì)
仿QQ交友網(wǎng)站是為了適應(yīng)網(wǎng)絡(luò)時(shí)代人們交友,交流等而創(chuàng)建的一個(gè)網(wǎng)站。通過本次課程設(shè)計(jì),我對(duì)web開發(fā)有了更深刻的認(rèn)識(shí)。
仿QQ交友網(wǎng)站的每一個(gè)模塊實(shí)現(xiàn)的功能簡(jiǎn)單,JSP頁(yè)面主要實(shí)現(xiàn)頁(yè)面展示的功能,而servlet則負(fù)責(zé)頁(yè)面請(qǐng)求的跳轉(zhuǎn)以及對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的更新操作。
回顧起此課程設(shè)計(jì),感慨頗多,從選題到定稿,從理論到實(shí)踐,在這些日子里,我們付出了很多的辛苦和精力,但是學(xué)到很多很多的東西,不僅鞏固了以前學(xué)過的知識(shí),還學(xué)到了很多書本上沒有的知識(shí)。通過這次課程設(shè)計(jì),我懂得了理論與實(shí)際相結(jié)合的重要性,只有把學(xué)的理論知識(shí)與實(shí)踐相結(jié)合,才能提高自己的實(shí)際動(dòng)手能力和思考的能力。
其次,這次課程設(shè)計(jì)讓我們系統(tǒng)學(xué)習(xí)數(shù)據(jù)庫(kù)知識(shí),這對(duì)我們的編程能力有很大的提高。更為重要的是,這次課程設(shè)計(jì)是我們小組6人一起合力完成的,讓我們深刻體會(huì)到團(tuán)隊(duì)合作的重要性。當(dāng)然程序中依然有很大的不足,望老師加以批評(píng)和指正。
第二篇:Java課程設(shè)計(jì)
統(tǒng)一要求:
設(shè)計(jì)成品(按難度自選一個(gè)到兩個(gè)完成)
可分組或單獨(dú)完成,每組最多兩人,19周前交 1設(shè)計(jì)報(bào)告
(1)本程序的功能描述
(2)程序設(shè)計(jì)思想(數(shù)據(jù)結(jié)構(gòu)和各功能的實(shí)現(xiàn)辦法)(3)核心程序清單(應(yīng)有必要說明)2結(jié)果分析
(1)本程序的局限性及改進(jìn)方法
(2)應(yīng)用本程序的設(shè)計(jì)方法可以編寫哪些類似的程序 一:小型通訊管理系統(tǒng)
通訊錄管理系統(tǒng)含有:輸入 顯示 查找 刪除
要求
1通訊錄的每一條信息包括姓名,單位,電話!(可用數(shù)組或數(shù)據(jù)庫(kù))2輸入功能:可以一次完成若干條信息的輸入.3顯示功能:完成全部通訊錄信息的顯示(一屏最多顯示10條,超過十條應(yīng)能夠自動(dòng)分屏顯示)4查找功能:完成按姓名查找通訊信息.5刪除功能:完成按姓名刪除通訊信息.6應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀!
二:個(gè)人簡(jiǎn)歷程序:(參照中華英才網(wǎng)http://004km.cn的創(chuàng)建個(gè)人簡(jiǎn)歷的選項(xiàng))
通過文本框輸入姓名,通過單選按鈕設(shè)置性別,通過組合框選擇籍貫(列出省、市),文化程度、出生日期、現(xiàn)居住地。以及填寫教育經(jīng)歷、語(yǔ)言及方言等。
請(qǐng)按自行安排界面排版方式,注意美觀性。
三:多小球運(yùn)動(dòng)程序:
請(qǐng)編寫一個(gè)多小球運(yùn)動(dòng)的程序,要求可以設(shè)置每個(gè)小球的半徑,初始書度,加速度。
當(dāng)用戶點(diǎn)擊發(fā)射按鈕時(shí),程序按指定的彈出一個(gè)小球,當(dāng)小球碰到邊界線時(shí),碰撞為完全碰撞。
要求每個(gè)小球?yàn)橐粋€(gè)線程,不考慮小球之間的碰撞。
四:打字小程序。
從屏幕頂端隨機(jī)落下不同的英文。如果在字符下落的過程中,用戶正確輸入對(duì)應(yīng)字符,字符消失,加1分;到字符落到底端還沒正確輸入,扣一分。
給出最宗成績(jī)。程序可設(shè) 重新開始,暫停,練習(xí)時(shí)間,字符出現(xiàn)的數(shù)量,速度等。
五:龜兔賽跑
龜兔在同一個(gè)圓賽跑,要求可以設(shè)置龜兔跑一周的時(shí)間,兔比龜快。龜兔同時(shí)其跑,當(dāng)兔快龜一圈時(shí),計(jì)算器加1,并顯示在屏幕上。六:學(xué)生成績(jī)管理系統(tǒng)。
完成一個(gè)班學(xué)生的成績(jī)管理。為完成程序功能,至少要有兩個(gè)這樣的功能模塊:
l 輸入成績(jī) 2 查詢成績(jī)
因?yàn)椴樵兡K中又分為:
l 按學(xué)生查詢 2 按課程查詢
所以為它們分別編寫函數(shù)。因?yàn)樯鲜鲞@些操作中要輸入某位學(xué)生和某門課程,所以再編寫兩個(gè)函數(shù)來輸出數(shù)組中的學(xué)生信息和課程信息并請(qǐng)用戶從中選擇:
1顯示學(xué)生信息從中進(jìn)行選擇 2顯示課程信息從中進(jìn)行選擇
系統(tǒng)管理員需要管理系統(tǒng)所有用戶的信息,包括用戶編號(hào)、名稱、備注等,可以對(duì)其添加刪除修改和啟用停用等操作。
還需要為系統(tǒng)用戶劃分角色和權(quán)限,保證不同身份的用戶進(jìn)入后可以有不同的權(quán)限,如某科目的老師可以錄入本科目的成績(jī),學(xué)生只可以有查詢權(quán)限等。
七:使用ServerSocket和Socket實(shí)現(xiàn)服務(wù)器支持多客戶機(jī)通信。當(dāng)有多個(gè)客戶向服務(wù)器提出時(shí)請(qǐng)求時(shí),服務(wù)器一端會(huì)分別為每個(gè)客戶從一個(gè)包含多行文字的文本文件中讀取一行文字,發(fā)送給每個(gè)客戶,直到文件讀完文件中所有行,服務(wù)器一端發(fā)出“bye”并停止運(yùn)行,客戶端也都停止運(yùn)行。
八:編寫一個(gè)圖形用戶界面的應(yīng)用程序,在窗口中,有一個(gè)圖片循環(huán)地從窗口的左面移動(dòng)到窗口的右邊。當(dāng)鼠標(biāo)點(diǎn)擊窗口時(shí),圖片停止運(yùn)動(dòng),再次點(diǎn)擊圖片恢復(fù)運(yùn)動(dòng)。九:編寫程序,在文件中輸入若干個(gè)單詞(每個(gè)單詞可重復(fù)一次或多次)。編程實(shí)現(xiàn)統(tǒng)計(jì)每個(gè)單詞重復(fù)次數(shù),并對(duì)非重復(fù)的單詞進(jìn)行排序,將排序結(jié)果輸出到文件中。十. JDBC技術(shù)的應(yīng)用
——校園卡信息/學(xué)生信息/教師信息/圖書信息/宿舍信息/學(xué)生會(huì)/成績(jī)/課程/教室管理/公務(wù)員招考系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)
以校園卡信息管理、學(xué)生信息管理、教師信息管理、圖書信息管理、宿舍信息管理、學(xué)生會(huì)活動(dòng)管理、成績(jī)管理、教室管理等為例,使用JDBC-ODBC數(shù)據(jù)庫(kù)接口,完成對(duì)后臺(tái)數(shù)據(jù)庫(kù)的插入、刪除、修改、查詢等操作。數(shù)據(jù)庫(kù)系統(tǒng)可采用Sql Server、Access等,要根據(jù)完成的不同功能在數(shù)據(jù)庫(kù)系統(tǒng)中定義有關(guān)的各種信息表:如在教師信息管理系統(tǒng)中要設(shè)計(jì)教師基本信息表、教師學(xué)習(xí)進(jìn)修情況表、教師獎(jiǎng)懲情況表、教師上課情況表等。其他幾個(gè)子系統(tǒng)中數(shù)據(jù)表的設(shè)計(jì)由同學(xué)們根據(jù)實(shí)際的需求自主完成設(shè)計(jì)。十一.文本編輯器的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)一個(gè)類似于Windows記事本(Notepad)的Java程序??梢源蜷_、新建、保存一個(gè)文本文件;對(duì)選中的文本進(jìn)行各種編輯操作(設(shè)置字體、字號(hào)、字型、對(duì)齊方式、背景、前景色、復(fù)制、粘貼、剪切、查找、替換等);在文本中能夠插入對(duì)象。十二..計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)一個(gè)能實(shí)現(xiàn)計(jì)算器功能的Java程序,可以進(jìn)行加、減、乘、除(另外可適當(dāng)加上階乘、正弦、余弦和指數(shù))運(yùn)算。十三.圖象瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)一個(gè)能實(shí)現(xiàn)圖象瀏覽與編輯功能的Java程序,包括如下功能:
1)從已有的圖象文件列表中選擇某一個(gè),即可顯示該圖象,并可做旋轉(zhuǎn)等變換。2)在畫布區(qū)域上可以進(jìn)行各種規(guī)則圖形的繪制(如:線段、矩形、多邊形、圓等),還可通過鼠標(biāo)的拖動(dòng)自由繪圖。
3)可以連續(xù)播放所選文件夾下的所有圖象。十四: 媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)
利用JMF(Java Media Framework)提供的API,實(shí)現(xiàn)圖像瀏覽、音頻播放、視頻播放功能。
十五:局域網(wǎng)聊天程序的設(shè)計(jì)與實(shí)現(xiàn)
該程序?qū)崿F(xiàn)局域網(wǎng)內(nèi)的聊天功能,包括服務(wù)器端程序和客戶端程序兩部分??蛻舳顺绦颍嚎蛇B接到服務(wù)器,并將消息發(fā)送到服務(wù)器端和接受服務(wù)器端發(fā)送來的信息。服務(wù)器端程序:可將消息發(fā)送到客戶端和接受客戶端發(fā)送來的信息 十六:基于Web的應(yīng)用
——網(wǎng)上超市/網(wǎng)上書店/網(wǎng)上花店/網(wǎng)上物流/網(wǎng)上招聘/同學(xué)錄/網(wǎng)上選課/網(wǎng)上考試系統(tǒng)的設(shè)計(jì)
應(yīng)用JSP技術(shù),設(shè)計(jì)一個(gè)類似電子商務(wù)、電子政務(wù)類的簡(jiǎn)單應(yīng)用系統(tǒng),可以在網(wǎng)上動(dòng)態(tài)展示各類信息,并根據(jù)相應(yīng)的業(yè)務(wù)流程進(jìn)行必要的邏輯處理,系統(tǒng)信息可以進(jìn)行后臺(tái)維護(hù)。需要?jiǎng)討B(tài)顯示的信息要存放數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)可以用Sql Server、Access;后臺(tái)管理要提供對(duì)數(shù)據(jù)庫(kù)中信息進(jìn)行動(dòng)態(tài)維護(hù)(包括添加、刪除、修改)的頁(yè)面。十七:益智類小游戲的設(shè)計(jì)與實(shí)現(xiàn)
運(yùn)用多線程和多媒體技術(shù)設(shè)計(jì)一個(gè)簡(jiǎn)單的益智類小游戲,游戲內(nèi)容自行構(gòu)思,不得直接利用網(wǎng)上現(xiàn)有游戲程序,要求有人機(jī)交互和界面動(dòng)畫,游戲過程中有聲音效果,游戲成績(jī)能記錄、顯示。
第三篇:JAVA課程設(shè)計(jì)
JAVA程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
目 錄
一、項(xiàng)目背景及意義:...............................................2
二、系統(tǒng)描述...............................................................2
三、分析與設(shè)計(jì)...........................................................3 1.分析.......................................................................3 2.功能模塊劃分.......................................................3 3.功能模塊流程圖...................................................5 4.各模塊的關(guān)鍵代碼...............................................5
四、系統(tǒng)測(cè)試...............................................................5
五、課程設(shè)計(jì)進(jìn)度.....................................................13
六、心得體會(huì).............................................................13
七、參考文獻(xiàn).............................................................14
八、附錄.....................................................................14
一、項(xiàng)目背景及意義:
記事本千百年來都在人類的工作生活中起到重要的作用,計(jì)算機(jī)革命電子產(chǎn)品未出現(xiàn)之前,人們的記事都是基于紙質(zhì)加筆兩者的簡(jiǎn)單記事,也即單純的文本記錄。直到計(jì)算機(jī)的出現(xiàn)和更新?lián)Q代,高科技電子產(chǎn)品大行其道,人們?nèi)找鎸⒃诩堎|(zhì)上的記事轉(zhuǎn)移到將事件記錄在個(gè)人電子設(shè)備如PC上,現(xiàn)在基于電子移動(dòng)設(shè)備如手機(jī)和平板等的記事本app開發(fā)更是迅猛,功能更加豐富多彩,能記錄的不單純是文本了,人們能將聲音和圖片甚至視頻結(jié)合起來,將一件事“有聲有色”地記錄下來,保存在個(gè)人電子設(shè)備產(chǎn)品中。近年來產(chǎn)生的采用云存儲(chǔ)技術(shù)的“云筆記”,更是能讓人們隨時(shí)隨地將集文本、語(yǔ)音、圖像和視頻于一體的事件記錄保存在所謂的“云端”,能同步到個(gè)人其他設(shè)備中,解決了個(gè)人資料和信息跨平臺(tái)跨地點(diǎn)的管理問題。
現(xiàn)在我們以有限的資源以及智慧力量,用Java語(yǔ)言編寫一個(gè)可以在裝有jar模擬器的個(gè)人電子移動(dòng)設(shè)備上使用的簡(jiǎn)單記事本軟件,沒視頻記錄功能和基于網(wǎng)絡(luò)功能但卻能集文本、聲音和圖像于一起記錄的功能的記事本,我們將輕便和簡(jiǎn)潔走向極致!所以此記事本軟件操作起來簡(jiǎn)單易上手,能給帶來同學(xué)簡(jiǎn)單便捷的記事體驗(yàn)。另外,這不單純是個(gè)人人都可以打開的記事本,使用時(shí)需要賬號(hào)密碼登陸,因此能較好地保障個(gè)人隱私。
二、系統(tǒng)描述
Java的前身是Oak,它一開始只是被應(yīng)用于消費(fèi)性電子產(chǎn)品中。后來它的開發(fā)者們發(fā)現(xiàn)它還可以被用于更大范圍的Internet上。1995年,Java語(yǔ)言的名字從Oak編程了Java。1997年J2SE1.1發(fā)布。1998年J2SE1.2發(fā)布,標(biāo)志Java2的誕生。十多年來,Java編程語(yǔ)言及平臺(tái)成功地運(yùn)用在網(wǎng)絡(luò)計(jì)算及移動(dòng)等各個(gè)領(lǐng)域。Java的體系結(jié)構(gòu)由Java語(yǔ)言、Java class、Java API、Java虛擬機(jī)組成。它具有簡(jiǎn)單、面向?qū)ο?、健壯、安全、結(jié)構(gòu)中立、可移植和高效能等眾多優(yōu)點(diǎn)。Java支持多線程編程,Java運(yùn)行時(shí)系統(tǒng)在多線程同步方面具有成熟的解決方案。Java的平臺(tái)標(biāo)準(zhǔn)有Java ME,Java SE和Java EE。Java發(fā)展到今天,它的卓越成就及在業(yè)界的地位毋庸置疑。目前在眾多的支持Java的開發(fā)工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 簡(jiǎn)稱JDK是大多開發(fā)工具的基礎(chǔ)。以上的每種開發(fā)工具都有優(yōu)缺點(diǎn),對(duì)于開發(fā)者來說,重要的是要根據(jù)自己的開發(fā)規(guī)模、開發(fā)內(nèi)容和軟硬件環(huán)境等因素來選擇一種合適的開發(fā)工具。
在本程序設(shè)計(jì)中,因?yàn)樾枰_發(fā)的是記事本程序,規(guī)模較小,內(nèi)容較少,所以選擇了適合初學(xué)者使用的eclipse開發(fā)工具。
三、分析與設(shè)計(jì)
1.分析
現(xiàn)在網(wǎng)絡(luò)上各種文檔編輯器數(shù)不勝數(shù),有EmEditor,UEStudio,GridinSoft Notepad,Notepad++,win32pad,SkimEdit,UniRed,xint。功能也是應(yīng)有盡有,有能改變字體的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵或問題:有的文件體積相對(duì)于一般文字編輯來說太大;有的功能太繁雜,使初級(jí)使用者一時(shí)難以掌握。僅從日常應(yīng)用方面來說,一個(gè)文本編輯器只需一些簡(jiǎn)單實(shí)用的功能就夠了。本程序設(shè)計(jì)就是依照這樣一種使用需要設(shè)計(jì)了一個(gè)簡(jiǎn)單的筆記本程序。2.功能模塊劃分
程序構(gòu)建的記事本程序具有Windows系統(tǒng)記事本工具基本功能,并且能夠創(chuàng) 建多個(gè)不同的用戶和保存圖片功能。以下是具體說明: 第一部 登陸界面
(1)用戶名和密碼輸入文本框,供已注冊(cè)的用戶輸入用戶名和密碼。(2)登陸控件,在用戶名和密碼正確的前提下,進(jìn)入軟件主界面。
(3)注冊(cè)控件,點(diǎn)擊此按鈕,將進(jìn)入用戶創(chuàng)建,創(chuàng)建之后用戶名和密碼會(huì)自動(dòng)保存在電腦的相應(yīng)文件中。第一部分 菜單欄
(1)菜單中有“新健”,“刪除”,“顯示”,“菜單”,“幫助”五個(gè)主菜單。(2)“新建”有“新建筆記”“新建筆記本”二個(gè)子菜單:分別用于創(chuàng)建新的筆記和新的筆記本。
(3)“刪除”中有“刪除筆記”和“刪除筆記本”二個(gè)子菜單,和“新建”相對(duì)應(yīng)。
(4)“顯示”中可以選擇界面的風(fēng)格,有Metal風(fēng)格、Windows風(fēng)格、Motif風(fēng)格、Nimbus風(fēng)格;還有界面排版的選擇,可以選擇水平顯示或垂直顯示。(5)“幫助”菜單中有關(guān)于筆記本程序的說明,作者等信息。第二部分 筆記本排列區(qū)
顯示用戶創(chuàng)建的所有筆記本。第三部分 筆記顯示排列區(qū)
此處主要顯示選中筆記本中的所有筆記,并且可以在此區(qū)右擊來創(chuàng)建、刪除筆記、查看筆記,當(dāng)然也可以在菜單欄中的“新建”和“刪除”菜單中創(chuàng)建和刪除筆記。
第四部分 筆記編輯區(qū)
此部分為用戶設(shè)計(jì)選擇操作和右鍵操作,可以在筆記中插入圖片、更改字體顏色、和插入時(shí)間;方便用戶進(jìn)行一系列的編輯操作,增強(qiáng)本記筆記本的用戶體驗(yàn)性能。
3.功能模塊流程圖
4.各模塊的關(guān)鍵代碼
1構(gòu)造函數(shù)創(chuàng)建窗口界面 主菜單,子菜單
public MainFrame(String name){
this.name=name;
this.setUser_path(“Users/”+name);
this.setBook_Path(this.getUser_path()+“/默認(rèn)筆記本”);
this.setNote_Path(this.getBook_Path()+“/默認(rèn)筆記”);//
一、菜單界面
menu=new Menu(this);
/**
二、創(chuàng)建三個(gè)JPanel *1.l筆記正文 TextPanel
*2.筆記名目錄及查找方式 DirectoryPanel *3.筆記類型目錄及排序方式選擇 NoteTypePane */
/*筆記正文部分*******/ TextPanel=new JPanel();rightPanel=new RightPanel(TextPanel,this);
} /*文件名目錄部分******/
DirectoryPanel=new JPanel();midPanel =new MidPanel(DirectoryPanel,this);/*筆記類型目錄部分*****/
NoteTypePanel =new JPanel();leftPanel=new LeftPanle(NoteTypePanel,this);leftPanel.update_Left_view();
//
三、處理拆分窗格
splitM_R =new JSplitPane(1,DirectoryPanel,TextPanel);splitM_R.setOneTouchExpandable(true);splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R);splitL_M.setOneTouchExpandable(true);this.add(splitL_M);
//
四、設(shè)置標(biāo)題等
this.setTitle(name+“ 的筆記本”);this.setLocation(200,100);this.setSize(1000,600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);2 添加右鍵菜單并為其添加監(jiān)聽器
public RightPanel(JPanel panel,MainFrame mainFrame)
{ this.mainFrame=mainFrame;this.panel=panel;
//創(chuàng)建一個(gè) 文本域存放文字 JTextArea textPane =new JTextPane();//設(shè)置自動(dòng)換行
textPane.setFont(new Font(“", 1, 12));jsp_Pane=new JScrollPane(textPane);//滾輪
//設(shè)置鼠標(biāo)右擊彈框效果
//cut
cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“));
cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設(shè)置快捷鍵 ”ctrl x“
cutItem.addActionListener(this);
//copy
copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“));
copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設(shè)置快捷鍵 ”ctrl O“
copyItem.addActionListener(this);
//paste
pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“));
pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//設(shè)置快捷鍵 ”ctrl v“
pasteItem.addActionListener(this);
saveItem=new JMenuItem(”Save“,new ImageIcon(”image/save.png“));
saveItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl s“));
saveItem.addActionListener(this);
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(e.getActionCommand()==”Cut“){//剪切
textPane.cut();}else if(e.getActionCommand()==”Copy“){//復(fù)制
textPane.copy();}else if(e.getActionCommand()==”Paste“){//粘貼
textPane.paste();}else if(e.getActionCommand()==”Save“){//保存
this.book_Save();}else if(e.getSource()==image_Button){//插入圖片
String temp=Tools.open_Choose();if(!temp.equals(”not“)){
textPane.insertIcon(new ImageIcon(temp));}
}else if(e.getSource()==font_Button){//修改字體顏色
Color c=JColorChooser.showDialog(this, ”Color“, Color.black);textPane.setForeground(c);}else if(e.getSource()==timeButton){//插入時(shí)間
Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss“);//可以方便地修改日期格式
String hehe = dateFormat.format(now);
textPane.replaceSelection(hehe);
} 設(shè)為Document類型
public static void setDocument(File file){
try {
} JTextPane tempPane=new JTextPane();FileOutputStream outputStream=new FileOutputStream(file);ObjectOutputStream oos=new ObjectOutputStream(outputStream);oos.writeObject(tempPane.getDocument());
oos.close();} catch(FileNotFoundException e){ // TODO Auto-generated catch block
e.printStackTrace();} catch(IOException e){ // TODO Auto-generated catch block
e.printStackTrace();} 系統(tǒng)測(cè)試
1、筆記本登陸、用戶注冊(cè)
3、菜單欄 a.總菜單
b.新建菜單
c.刪除菜單
d.顯示菜單
e.“菜單”菜單
f.幫助 4.導(dǎo)入筆記、導(dǎo)出筆記、及插入圖片選擇
5.字體顏色選擇
6.插入時(shí)間
7、插入圖片
四、課程設(shè)計(jì)進(jìn)度
我們進(jìn)行了若干階段的部署,令課題研究可以在每個(gè)階段有條不紊地進(jìn)行。具體如下:
(一)理論學(xué)習(xí)和開題論證
1.瀏覽相關(guān)網(wǎng)站,查閱與課題研究的相關(guān)理論、研究方法; 2.運(yùn)用文獻(xiàn)研究法,深入學(xué)習(xí)java理論,對(duì)要有關(guān)課題研究的知識(shí)進(jìn)行理論上的研究和探討。3,制訂研究計(jì)劃和方案。
(二)第一階段
1.以調(diào)查法為主開展研究。(1)對(duì)有關(guān)java的課題設(shè)計(jì)進(jìn)行調(diào)查,查閱網(wǎng)絡(luò)上java應(yīng)用的設(shè)計(jì)案例,并分析和總結(jié),尋找思路。(2)對(duì)更新頻率快的java應(yīng)用進(jìn)行追蹤,采取觀察,評(píng)價(jià)、討論的方式分析和總結(jié)。
2.制訂第二階段實(shí)驗(yàn)方案,為下階段實(shí)驗(yàn)做準(zhǔn)備。
(三)第二階段
1.按計(jì)劃在繼續(xù)第一階段實(shí)驗(yàn)的基礎(chǔ)上,進(jìn)一步加強(qiáng)java應(yīng)用的實(shí)施和研究。采用實(shí)驗(yàn)法對(duì)上一階段的總結(jié)的結(jié)論進(jìn)行驗(yàn)證和拓展。
2.讓同學(xué)體驗(yàn)一下我們初步完成的作品,根據(jù)他們用完之后的感受,進(jìn)一步修正作品存在的問題,完善作品。
(四),總結(jié)階段
1.收集和整理研究資料,參照相關(guān)書籍分析和研究實(shí)驗(yàn)情況 2.制訂總結(jié)階段計(jì)劃 3.總結(jié)和提煉研究成果 4.全面總結(jié)實(shí)驗(yàn)工作 5.解題論證
6.成果展示(課題報(bào)告)(五)總結(jié)階段(2013.12)整理材料,撰寫課題報(bào)告。
五、心得體會(huì)
此次課程設(shè)計(jì)由我們小組一起共同合作完成,花費(fèi)了差不多兩個(gè)月的時(shí)間。在這期間我們共同協(xié)作,互幫互助取得了很好的效率,也為我們構(gòu)建友好的同學(xué)關(guān)系,學(xué)習(xí)氣氛良好做出了一定的貢獻(xiàn)。在這期間我領(lǐng)略到了團(tuán)隊(duì)協(xié)作的重要性,13 也看到了團(tuán)隊(duì)合作的高效率性。還有通過這次試驗(yàn)我們領(lǐng)悟到了團(tuán)隊(duì)的力量是巨大的,也學(xué)習(xí)到的一些學(xué)習(xí)方法,比如追查API,如何在短時(shí)間內(nèi)學(xué)習(xí)一個(gè)自己不懂的東西那就是利用好所有的搜索引擎,多去圖書館找資料??傊舜握n程設(shè)計(jì)我們不僅長(zhǎng)了學(xué)科知識(shí),在生活上我也長(zhǎng)了見識(shí)。
六、參考文獻(xiàn)
a.黃曉東 等編著 Java課程設(shè)計(jì)案例精編(第二版)[M].北京:中國(guó)水利水電出版社,2007 b.李興華 等編著 Java開發(fā)實(shí)戰(zhàn)經(jīng)典Java開發(fā)實(shí)戰(zhàn)經(jīng)典 北京:清華大學(xué)出版社,2009 C.李尊朝 蘇軍 Java程序設(shè)計(jì)(第二版)圖形用戶界面設(shè)計(jì)、Swing組件 中國(guó)鐵道出版社,2007
七、附錄
1.程序結(jié)構(gòu) 2.程序
(1)Tools.java package common;
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;
import javax.swing.*;
public class Tools {
/**打開選擇框 返回詳細(xì)地址*/ public static String open_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”請(qǐng)選擇...“);
int judge=jfc1.showOpenDialog(null);
jfc1.setVisible(true);
//得到文件的完全路徑
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;} /**保存選擇框 返回詳細(xì)地址*/ public static String save_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”請(qǐng)選擇...“);
int judge=jfc1.showSaveDialog(null);
jfc1.setVisible(true);
//得到文件的完全路徑
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;
}
/**顯示對(duì)話框,需要傳遞 標(biāo)題和顯示內(nèi)容*/ public static void showMessage(String text,String title){
JOptionPane.showMessageDialog(null,text,title,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION);} /**新建筆記時(shí)將筆記設(shè)為Document類型,方便存儲(chǔ)圖片,在本地不能打開*/ public static void setDocument(File file){
try {
JTextPane tempPane=new JTextPane();
FileOutputStream outputStream=new FileOutputStream(file);
ObjectOutputStream oos=new ObjectOutputStream(outputStream);
oos.writeObject(tempPane.getDocument());
oos.close();
} catch(FileNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
} } /**刪除文件 傳一個(gè)文件地址 返回一個(gè)boolean 為了方便刪除文件夾才將此方法提取出來*/ public static boolean deleteFile(String path){
File file=new File(path);
return(file.delete());}
/**刪除文件 傳一個(gè)文件地址
返回一個(gè)boolean 先刪除里面的文件再刪除文件夾*/ public static boolean deleteFolder(String path){
File folder=new File(path);
File[] list=folder.listFiles();
for(int i=0;i deleteFile(path+”/“+list[i].getName()); return(folder.delete());} } (2)User.java package common;/** * 處理用戶屬性 * 為用戶創(chuàng)建自己的專有途徑 * 如果有了則不創(chuàng)建 */ import java.io.*; import javax.swing.JTextPane;import javax.swing.text.Document; import view.MainFrame; public class User { public User(String name) { //如果第一次登錄的話,為用戶新建一個(gè)專屬區(qū) File file=new File(”Users/“+name); if(!file.exists()) { try { file.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登錄創(chuàng)建默認(rèn)筆記本 File book=new File(”Users/“+name+”/默認(rèn)筆記本“); try { book.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登錄創(chuàng)建默認(rèn)筆記 File note=new File(”Users/“+name+”/默認(rèn)筆記本“+”/默認(rèn)筆記.ser“); try { note.createNewFile(); Tools.setDocument(note); } catch(Exception e1){ e1.printStackTrace(); } } //構(gòu)造完畢 正式進(jìn)入筆記本 new MainFrame(name); } } (3)login_zhuce.java package login; import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*; import common.User;import view.MainFrame; public class login_zhuce extends JFrame implements ActionListener { JPanel jp0;JPanel jp1,jp2,jp3,jp4,jp5;JTextField jtf;JPasswordField jpf;JLabel jl1,jl2,jl3;JButton jb1,jb2,jb3;ImageIcon bg; public static void main(String[] args){ // TODO Auto-generated method stub login_zhuce lz = new login_zhuce();} public login_zhuce(){ try {//默認(rèn) NImbus風(fēng)格 UIManager.setLookAndFeel(”com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel“); } catch(ClassNotFoundException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(InstantiationException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(IllegalAccessException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(UnsupportedLookAndFeelException e){ // TODO Auto-generated catch block e.printStackTrace();} jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jp4 = new JPanel();jp1.setOpaque(false);jp2.setOpaque(false);jp3.setOpaque(false);jp4.setOpaque(false); //no.1 jl1 = new JLabel(”用戶名“);jtf = new JTextField(10);jp1.add(jl1);jp1.add(jtf); //no.2 jl2 = new JLabel(”密 碼“);jpf = new JPasswordField(10);jp2.add(jl2);jp2.add(jpf);//3 jb1 = new JButton(”登陸“);jb1.addActionListener(this);jb1.setActionCommand(”denglu“);jb2 = new JButton(”取消“);jb2.addActionListener(this);jb2.setActionCommand(”quxiao“);jb3 = new JButton(”注冊(cè)“);jb3.addActionListener(this);jb3.setActionCommand(”zhuce“); jp3.add(jb1); jp3.add(jb2); jp3.add(jb3); this.setLayout(new GridLayout(4,1)); this.add(jp4); this.add(jp1); this.add(jp2); this.add(jp3); bg = new ImageIcon(”image//huashi.jpg“); jl3 = new JLabel(bg); jl3.setBounds(0, 0, 300, 200); this.getLayeredPane().add(jl3,new Integer(Integer.MIN_VALUE)); jp5 =(JPanel)this.getContentPane(); jp5.setOpaque(false);//設(shè)置透明 this.setTitle(”筆記本登陸“); this.setSize(300,200); // 獲取屏幕分辨率,以此設(shè)置程序出現(xiàn)在屏幕中央 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension testSize = getSize(); this.setLocation((screenSize.widthtestSize.width)/ 2,(screenSize.height-testSize.height)/ 2);this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals(”queding“)){ String st1 = ”ff“; String st2 = ”.txt“; String st3 = this.jtf1.getText(); String st4 = st1 + st3 +st2; System.out.println(st4); File f = new File(st4); if(!f.exists()){ String password1=new String(jtf2.getPassword()); String password2=new String(jtf3.getPassword()); System.out.println(password1); System.out.println(password2); if(!(password1.equals(password2))){ JOptionPane.showMessageDialog(null, ”兩次密碼輸入不一樣,請(qǐng)重新輸入“, ”錯(cuò)誤提示“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); this.jtf2.setText(null); this.jtf3.setText(null); } else { try { f.createNewFile(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter(st4,true); bw = new BufferedWriter(fw); bw.write(st3+”rn“); bw.close(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } finally{ try { fw.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } try { fw = new FileWriter(st4,true); bw = new BufferedWriter(fw); bw.write(this.jtf2.getPassword()); bw.close(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } finally{ try { fw.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } JOptionPane.showMessageDialog(null, ”創(chuàng)建賬戶成功“, ”恭喜你“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); this.dispose(); login_zhuce lz = new login_zhuce(); } } else { JOptionPane.showMessageDialog(null,”該用戶名已被占用,請(qǐng)重新輸入用戶名“,”錯(cuò)誤提示“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); System.out.println(”該用戶名已被占用,請(qǐng)重新輸入用戶名“); this.jtf1.setText(null); } // if(this.jpf1.getText()!=this.jpf2.getText()){ // JOptionPane.showMessageDialog(null, ”兩次密碼輸入不一樣,請(qǐng)重新輸入“, ”錯(cuò)誤提示“, // JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION);// this.jpf1.setText(null);// this.jpf2.setText(null);// } } else if(e.getActionCommand().equals(”quxiao“)){ this.dispose(); System.exit(0); } } } (5)LefgPanle.java package view;/** * 將卡片布局修改 修改成僅有兩片 * 第一片 所有筆記 按鈕 * 第二片 所有筆記 目錄 */ import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*; public class LeftPanle extends JPanel implements ActionListener,MouseListener{ /**************筆記本類型部分聲明*****************/ CardLayout cardLayout;//卡片布局的方式 JPanel firstPanel,secondPanel;//分別存儲(chǔ)兩片 //第一片聲明 JPanel allBookPanel,firstTempPanel;//所有筆記 JButton allBook;//所以筆記,排序,回收站的按鈕 JScrollPane allBookjsp;//第二片聲明 JPanel secondTempPanel,timePaenl_o;JButton allBook_o;//所以筆記,排序,回收站的按鈕 JScrollPane timePaenljsp_o; //處理文件部分內(nèi)容 File book;String [] book_name;JLabel[] member; JPanel panel;MainFrame mainFrame;public final int TOTAL=20; /**************筆記本類型部分聲明結(jié)束*****************/ public LeftPanle(JPanel panel,MainFrame mainFrame){ this.mainFrame=mainFrame;this.panel=panel;//處理第一片***11111111111 //設(shè)置初始界面 顯示 所以筆記,排序,回收站的按鈕 //ImageIcon imageIcon=new ImageIcon(”image/note.png“);allBook=new JButton(”所有筆記“,new ImageIcon(”image/expand.png“));allBook.addActionListener(this);//點(diǎn)擊按時(shí)間排序時(shí)顯示第二片 allBookPanel=new JPanel(new GridLayout(TOTAL,1,1,4));member=new JLabel[TOTAL];for(int i=0;i member[i]=new JLabel(”“); member[i].addMouseListener(this);} allBookjsp=new JScrollPane(allBookPanel);//滾動(dòng) firstPanel=new JPanel(new BorderLayout());//將第一片設(shè)置為邊界布局 firstPanel.add(allBook,”North“);firstPanel.add(allBookjsp); //處理第二片***222222 //僅有一個(gè)按鈕 allBook_o=new JButton(”所有筆記“,new ImageIcon(”image/collapse.png“));allBook_o.addActionListener(this);//點(diǎn)擊所有筆記時(shí) 顯示第一片 secondPanel=new JPanel(new BorderLayout());//將第二片設(shè)為 邊界布局 secondPanel.add(allBook_o,”North“); //進(jìn)行卡片布局 cardLayout=new CardLayout();panel.setLayout(cardLayout);panel.add(firstPanel,”1“);panel.add(secondPanel,”2“); } //更新leftPanel中的筆記本,在新建或刪除筆記本是需要刷新 并附帶刷新右邊兩個(gè)Panel public void update_Left_view(){ book=new File(mainFrame.getUser_path()); book_name=book.list(); if(book.exists()) { for(int i=0;i { member[i].setText(”“); member[i].setIcon(null); member[i].removeMouseListener(this); } for(int i=0;i { //為每個(gè)好友設(shè)置頭像和名字,每一個(gè)好友用 JLabel組件 存放 ImageIcon imageIcon=new ImageIcon(”image/note.png“); member[i].setText(book_name[i]); member[i].setIcon(imageIcon); member[i].addMouseListener(this);//為每一種筆記的排序方式注冊(cè)監(jiān)聽 allBookPanel.add(member[i],i);//將筆記添加到所有筆記面板 } mainFrame.setBook_Path(mainFrame.getUser_path()+”/“+book_name[0]); mainFrame.midPanel.update_Mid_View(); } } @Override public void mouseClicked(MouseEvent e){ // TODO Auto-generated method stub //將選中部分字體設(shè)為紅色 JLabel jl = null; for(int i=0;i { if(e.getComponent().equals(member[i])) { jl=(JLabel)e.getSource(); jl.setForeground(Color.red); } else { member[i].setForeground(Color.black); // // // // } } //保存當(dāng)前筆記本的路徑 如...mainFrame.setBook_Path(book.getAbsolutePath()+”“+jl.getText());//點(diǎn)擊打開一個(gè)筆記本 刷新中間的目錄 mainFrame.midPanel.update_Mid_View(); } @Override public void mousePressed(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e){ // TODO Auto-generated method stub JLabel jl=(JLabel)e.getSource();jl.setForeground(Color.red);//jl.setFont(new Font(”“,1,30));//在筆記本界面操作 允許刪除筆記本 不允許刪除筆記 mainFrame.menu.delete_item[0].setEnabled(false);//不允許刪除筆記 mainFrame.menu.delete_item[1].setEnabled(true);//允許刪除筆記本 } @Override public void mouseExited(MouseEvent e){ // TODO Auto-generated method stub JLabel jl=(JLabel)e.getSource();jl.setForeground(Color.black);//jl.setFont(new Font(”“,1,12));} @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getSource()==allBook){ //cardLayout.show(this.getContentPane(), ”2“); cardLayout.next(panel);}else if(e.getSource()==allBook_o){ //cardLayout.show(this.getContentPane(), ”1“); cardLayout.next(panel); } } } (6)MainFrame.java package view;/** * 筆記本 java版 * 1、將主界面分為四塊 北邊的菜單 以及左中右的筆記本目錄,筆記目錄和筆記內(nèi)容 * 2、左邊目錄為卡片布局,實(shí)現(xiàn)點(diǎn)了”所有筆記“彈出所有筆記的效果 * 3、中間顯示筆記目錄 采用網(wǎng)格布局 每個(gè)網(wǎng)格用了JMenuItem * 4、右邊是一個(gè)JTextArea可能會(huì)改成JTextPane * 5、實(shí)現(xiàn)了新建刪除筆記(本),但界面刷新有點(diǎn)問題(會(huì)重疊) * 6、采用MVC的思想實(shí)現(xiàn)時(shí)事刷新界面的效果 * 7、鼠標(biāo)右擊刪除新建 測(cè)試成功(鼠標(biāo)右擊是筆記本的新建與刪除沒有) * 8、注冊(cè)登錄系統(tǒng) 已測(cè)試成功 在包login里面 * 9、圖片的問題已成功解決 * 10、可以更改字體顏色(大小沒有寫),以及插入時(shí)間等 * 11、顯示處添加實(shí)現(xiàn)多種版本的切換(如可切換成windows) */ import java.awt.*;import java.awt.event.*;import javax.swing.*; import common.User; public class MainFrame extends JFrame implements ActionListener{ Menu menu;//連接菜單欄 JPanel NoteTypePanel,DirectoryPanel,TextPanel;//三個(gè)大Panel JSplitPane splitM_R,splitL_M; LeftPanle leftPanel;//左邊第一個(gè)Panel MidPanel midPanel;//連接中間Panel RightPanel rightPanel;//連接右邊Panel //存放路徑 public String name=null;public String user_path=null;public String book_Path=null;public String note_Path=null; public MainFrame(String name){ this.name=name; this.setUser_path(”Users/“+name); this.setBook_Path(this.getUser_path()+”/默認(rèn)筆記本“); this.setNote_Path(this.getBook_Path()+”/默認(rèn)筆記“); // 一、菜單界面 menu=new Menu(this); /** 二、創(chuàng)建三個(gè)JPanel *1.l筆記正文 TextPanel *2.筆記名目錄及查找方式 DirectoryPanel *3.筆記類型目錄及排序方式選擇 NoteTypePane */ /*筆記正文部分*******/ TextPanel=new JPanel(); rightPanel=new RightPanel(TextPanel,this); /*文件名目錄部分******/ DirectoryPanel=new JPanel(); midPanel =new MidPanel(DirectoryPanel,this); /*筆記類型目錄部分*****/ NoteTypePanel =new JPanel(); leftPanel=new LeftPanle(NoteTypePanel,this); leftPanel.update_Left_view(); // 三、處理拆分窗格 splitM_R =new JSplitPane(1,DirectoryPanel,TextPanel); splitM_R.setOneTouchExpandable(true); splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R); splitL_M.setOneTouchExpandable(true); this.add(splitL_M); // 四、設(shè)置標(biāo)題等 this.setTitle(name+” 的筆記本“); this.setLocation(200,100); this.setSize(1000,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } this.setVisible(true);} //為了方便后面的垂直和水平顯示 public void showStyle(int show){ this.remove(splitL_M);//先把以前的去掉重新添加 splitM_R =new JSplitPane(show,DirectoryPanel,TextPanel);splitM_R.setOneTouchExpandable(true); splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R);splitL_M.setOneTouchExpandable(true);this.add(splitL_M);this.setVisible(true);} @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub } public String getUser_path(){ return user_path;} public void setUser_path(String user_path){ this.user_path = user_path;} public String getBook_Path(){ return book_Path;} public void setBook_Path(String book_Path){ this.book_Path = book_Path;} public String getNote_Path(){ return note_Path;} public void setNote_Path(String note_Path){ this.note_Path = note_Path;} (7)package view; import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*;import javax.swing.text.Document;import javax.swing.text.StyledDocument; import common.Tools;import common.User;import login.login_zhuce; public class Menu extends JFrame implements ActionListener{ //菜單部分聲明 JMenuBar menuBar=null;//菜單主干 JMenu newNote_menu,deliteNote_menu,show_menu,menu_menu,help_menu;//菜單組件 樹干 //處理新建筆記菜單 newNote_menu JMenuItem[] newNote_item={ new JMenuItem(”新建筆記“),new JMenuItem(”新建筆記本“) };//處理刪除deliteNote_menu JMenuItem[] delete_item={ new JMenuItem(”刪除筆記“),new JMenuItem(”刪除筆記本“) }; //處理顯示 JMenuItem[] show_item={ new JMenuItem(”Metal風(fēng)格“),new JMenuItem(”Windows風(fēng)格“),new JMenuItem(”Motif風(fēng)格“),new JMenuItem(”Nimbus風(fēng)格“),new JMenuItem(”水平顯示“),new JMenuItem(”垂直顯示“) }; //處理menu_menu JMenuItem[] menu_item={ new JMenuItem(”丨賬戶“),new JMenuItem(”丨導(dǎo)入“),34 new JMenuItem(”丨導(dǎo)出“),new JMenuItem(”丨注銷“),new JMenuItem(”丨退出“) }; //處理help_menu JMenuItem[] help_item={ new JMenuItem(”關(guān)于作者“),new JMenuItem(”關(guān)于筆記本“)}; MainFrame mainFrame; public Menu(MainFrame mainFrame){ this.mainFrame=mainFrame;// 一、先處理菜單 menuBar=new JMenuBar();//各菜單menu[0]menu[1]menu[2]menu[3]menu[4] newNote_menu=new JMenu(”新建“);deliteNote_menu=new JMenu(”刪除“);deliteNote_menu.setToolTipText(”選中筆記(本)時(shí)才可刪除“);show_menu=new JMenu(”顯示“);help_menu=new JMenu(”幫助“);menu_menu=new JMenu(”菜單“); //將菜單項(xiàng)添加到各菜單 for(int i=0;i 菜單 newNote_menu.add(newNote_item[i]);for(int i=0;i deliteNote_menu.add(delete_item[i]);for(int i=0;i show_menu.add(show_item[i]);for(int i=0;i help_menu.add(help_item[i]);for(int i=0;i { menu_menu.add(menu_item[i]); if(i==0||i==2)//添加分隔線 將導(dǎo)入和導(dǎo)出框起來 menu_menu.addSeparator();} //添加事件監(jiān)聽 for(int i=0;i newNote_item[i].addActionListener(this); for(int i=0;i delete_item[i].addActionListener(this); for(int i=0;i show_item[i].addActionListener(this); for(int i=0;i help_item[i].addActionListener(this); for(int i=0;i menu_item[i].addActionListener(this); //將菜單 添加到主干中 menuBar.add(newNote_menu); menuBar.add(deliteNote_menu); menuBar.add(show_menu); menuBar.add(menu_menu); menuBar.add(help_menu); mainFrame.add(menuBar,”North“); } //構(gòu)造完畢 //實(shí)現(xiàn)風(fēng)格轉(zhuǎn)換 private void changeFlavor(int flavor)throws Exception { switch(flavor) { case 1: UIManager.setLookAndFeel(”javax.swing.plaf.metal.MetalLookAndFeel“); break; case 2: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.windows.WindowsLookAndFeel“); break; case 3: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.motif.MotifLookAndFeel“); break; case 4: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel“); break; } SwingUtilities.updateComponentTreeUI(this.getContentPane()); SwingUtilities.updateComponentTreeUI(mainFrame); } //實(shí)現(xiàn)監(jiān)聽后的動(dòng)作 @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub String str=e.getActionCommand(); if(str.equals(”新建筆記“)){ String note_name=null; note_name=JOptionPane.showInputDialog(null,”請(qǐng)輸入筆記的名字“,”新筆記“,JOptionPane.INFORMATION_MESSAGE |JOptionPane.OK_OPTION); //如果用戶點(diǎn)取消 或沒有輸入文件名 則不用新建 if(note_name!=null){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //將新建的筆記格式設(shè)為Document對(duì)象 Tools.setDocument(file); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } //刷新中間和左邊的Panel mainFrame.midPanel.update_Mid_View(); } } }else if(str.equals(”新建筆記本“)){ String book_name=null; book_name=JOptionPane.showInputDialog(null,”請(qǐng)輸入筆記的名字“,”新筆記“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); if(book_name!=null){ File file=new File(mainFrame.getUser_path()+”/“+book_name); //System.out.println(”User_path:“+mainFrame.getUser_path()); if(!file.exists()) { try { file.mkdir(); //將筆記本路徑設(shè)為新建筆記本的路徑 mainFrame.setBook_Path(mainFrame.getUser_path()+”/“+book_name); mainFrame.leftPanel.update_Left_view(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } //改變的筆記本總數(shù) 刷新左邊Panel mainFrame.leftPanel.update_Left_view(); } } }else if(str.equals(”刪除筆記“)){ Tools.deleteFile(mainFrame.getNote_Path()); //刪除筆記之后需要刷新右邊的兩個(gè)Panel mainFrame.midPanel.update_Mid_View(); }else if(str.equals(”刪除筆記本“)){ Tools.deleteFolder(mainFrame.book_Path); //筆記本目錄發(fā)生改變 mainFrame.leftPanel.update_Left_view(); }else if(str.equals(”關(guān)于作者“)){ Tools.showMessage(”鄧偉杰、蘇俊欽、陳通、陳盛鋒、林健祺、尹國(guó)瑜、溫天宇、趙潮順“, ”幫助“); }else if(str.equals(”關(guān)于筆記本“)){ Tools.showMessage(”還存在許多BUG,望老師指正“, ”呵呵“); }else if(str.equals(”丨賬戶“)){ Tools.showMessage(”姓名:“+mainFrame.name, ”用戶信息“); }else if(str.equals(”丨導(dǎo)入“)){//即打開一個(gè)筆記 String temp=Tools.open_Choose(); if(!temp.equals(”not“)) { FileInputStream inputStream=null; ObjectInputStream ois=null; try { inputStream=new FileInputStream(Tools.open_Choose()); ois=new ObjectInputStream(inputStream); mainFrame.rightPanel.textPane.setDocument((Document)ois.readObject()); mainFrame.rightPanel.book_Save(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try { ois.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } } }else if(str.equals(”丨導(dǎo)出“)){//即另存為一個(gè)筆記 String temp=Tools.open_Choose();if(!temp.equals(”not“)){ FileOutputStream outputStream=null; ObjectOutputStream oos=null; try { outputStream=new FileOutputStream(Tools.save_Choose()); oos=new ObjectOutputStream(outputStream); oos.writeObject(mainFrame.rightPanel.textPane.getDocument()); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try { oos.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } } }else if(str.equals(”丨注銷“)){ mainFrame.dispose();new login_zhuce();//注銷之后重新登錄 }else if(str.equals(”丨退出“)){ System.exit(0);}else if(str.equals(”垂直顯示“)){ mainFrame.showStyle(0);//重新調(diào)用一下拆分窗格 }else if(str.equals(”水平顯示“)){ mainFrame.showStyle(1);}else { try{ if(str.equals(”Metal風(fēng)格“)){ this.changeFlavor(1); }else if(str.equals(”Windows風(fēng)格“)){ this.changeFlavor(2); }else if(str.equals(”Motif風(fēng)格“)){ this.changeFlavor(3); }else if(str.equals(”Nimbus風(fēng)格“)){ this.changeFlavor(4); } }catch(Exception e1){ e1.printStackTrace(); } } } } (8)Midpanel.java package view; import java.awt.*; import javax.swing.*;import javax.swing.text.Document; import common.Tools; import java.awt.event.*;import java.io.*; public class MidPanel extends JPanel implements ActionListener,MouseListener{ JPanel panel;MainFrame mainFrame;/// JScrollPane jscroll2; JMenuItem[] items;File lists[]; JPanel jp1; //鼠標(biāo)右擊部分 JPopupMenu right_Click; JMenuItem delete_book,properties_book,new_book; public final int TOTAL=20;public String filename;public String temp_path=null;//右擊時(shí)記錄選中筆記的途徑 public MidPanel(JPanel panel, MainFrame main){ this.panel=panel; this.mainFrame=main; jp1=new JPanel(); jp1.setLayout(new GridLayout(TOTAL,1,1,4)); //初始化20個(gè)MenuItem items =new JMenuItem[TOTAL]; for(int j=0;j items[j]=new JMenuItem(”“); items[j].addMouseListener(this); } //處理鼠標(biāo)右擊問題 right_Click=new JPopupMenu(); new_book=new JMenuItem(”New“);//新建筆記 delete_book=new JMenuItem(”Delete“);//刪除筆記 properties_book=new JMenuItem(”Properties“); delete_book.addActionListener(this); properties_book.addActionListener(this); new_book.addActionListener(this); //right_Click.right_Click.add(new_book); right_Click.addSeparator(); right_Click.add(delete_book); right_Click.add(properties_book); JLabel label=new JLabel(”All Note & Note All “); label.setEnabled(false); label.setBackground(Color.gray); jscroll2 = new JScrollPane(jp1);//為Panel添加滾動(dòng)條 panel.setLayout(new BorderLayout()); panel.add(label,”North“); panel.add(jscroll2); } //在新建或刪除是需要刷新,并附帶刷新 RightPanel中的內(nèi)容 public void update_Mid_View() { File file = new File(mainFrame.getBook_Path()); if(file.isDirectory()) { lists = file.listFiles(); for(int j=0;j items[j].setText(”“); items[j].setArmed(false); items[j].removeMouseListener(this);//避免某個(gè)筆記被刪除之后還可以被點(diǎn)的情況 } for(int i=0;i items[i].setText(lists[i].getName());//創(chuàng)建20個(gè)JLanel items[i].addActionListener(this); items[i].addMouseListener(this); jp1.add(items[i],i); //在該項(xiàng)上右擊彈出一個(gè)選擇框 items[i].setComponentPopupMenu(right_Click); } //更新右邊的Panel 里面應(yīng)該沒有內(nèi)容 mainFrame.rightPanel.update_Right_view(); } } public void showfile(int y){ String filename1 = lists[y].getAbsolutePath(); FileInputStream inputStream=null; ObjectInputStream ois = null; try { inputStream=new FileInputStream(filename1); ois=new ObjectInputStream(inputStream); mainFrame.rightPanel.textPane.setDocument((Document)ois.readObject()); } catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { ois.close(); } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getActionCommand().equals(”New“)){ String note_name=JOptionPane.showInputDialog(null,”請(qǐng)輸入筆記的名字“,”新筆記“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); //如果用戶點(diǎn)了取消 則不用新建筆記 if(!note_name.equals(”null“)){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //為新建的筆記寫入一個(gè)空白的對(duì)象 避免打開時(shí)報(bào)指針的錯(cuò)誤 Tools.setDocument(file); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } //刷新中間和左邊的Panel mainFrame.midPanel.update_Mid_View(); } }else if(e.getActionCommand().equals(”Delete“)){ File file=new File(this.getTemp_path()); file.delete(); //刪除筆記之后需要刷新右邊的兩個(gè)Panel mainFrame.midPanel.update_Mid_View();}else if(e.getActionCommand().equals(”Properties“)){ Tools.showMessage(this.getTemp_path(),”筆記“);}else { mainFrame.rightPanel.textPane.setEditable(true); mainFrame.setNote_Path(mainFrame.getBook_Path()+”/“+e.getActionCommand()); for(int x=0;x if(e.getActionCommand().endsWith(lists[x].getName())) this.showfile(x); } } } @Override public void mouseClicked(MouseEvent arg0){ // TODO Auto-generated method stub //設(shè)置選中部分的情況 JMenuItem jmtemp=null;for(int i=0;i if(arg0.getComponent().equals(items[i])) { jmtemp=(JMenuItem)arg0.getSource(); jmtemp.setArmed(true); }else{ items[i].setArmed(false); } } //記錄被要在右邊顯示出內(nèi)容的筆記途徑 可以在菜單中刪除該筆記 mainFrame.setNote_Path(mainFrame.getBook_Path()+”/“+jmtemp.getText()); mainFrame.menu.delete_item[0].setEnabled(true);//允許刪除筆記 mainFrame.menu.delete_item[1].setEnabled(false);//不允許刪除筆記本 } @Override public void mouseEntered(MouseEvent arg0){ // TODO Auto-generated method stub JMenuItem jm=(JMenuItem)arg0.getSource();//將當(dāng)前筆記的途徑 存到輔助路徑中 this.setTemp_path(mainFrame.getBook_Path()+”/“+jm.getText());} @Override public void mouseExited(MouseEvent arg0){ // TODO Auto-generated method stub JMenuItem jm=(JMenuItem)arg0.getSource(); //jm.setBackground(new Color(238,238,238));} @Override public void mousePressed(MouseEvent arg0){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0){ // TODO Auto-generated method stub } public String getTemp_path(){ return temp_path;} public void setTemp_path(String temp_path){ this.temp_path = temp_path;} } (9)RightPanel.java package view;/** * 改用JTextPane實(shí)現(xiàn)圖片即單個(gè)文字更改字體或顏色的功能 */ import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.SimpleDateFormat;import java.util.Date; import javax.swing.*;import javax.swing.text.Document; import common.Tools; public class RightPanel extends JPanel implements ActionListener{ JPanel panel; MainFrame mainFrame; //文本域 JTextPane textPane;JScrollPane jsp_Pane;//鼠標(biāo)右擊部分 JPopupMenu right_Click;JMenuItem cutItem,copyItem,pasteItem,saveItem;//插入圖片與更改字體 JToolBar toolBar;JButton image_Button,font_Button,timeButton; public RightPanel(JPanel panel,MainFrame mainFrame){ this.mainFrame=mainFrame; this.panel=panel; //創(chuàng)建一個(gè) 文本域存放文字 JTextArea textPane =new JTextPane(); //設(shè)置自動(dòng)換行 textPane.setFont(new Font(”“, 1, 12)); jsp_Pane=new JScrollPane(textPane);//滾輪 //設(shè)置鼠標(biāo)右擊彈框效果 //cut cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“)); cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設(shè)置快捷鍵 ”ctrl x“ cutItem.addActionListener(this); //copy copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“)); copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設(shè)置快捷鍵 ”ctrl O“ copyItem.addActionListener(this); //paste pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“)); pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//設(shè)置快捷鍵 ”ctrl v“ pasteItem.addActionListener(this); saveItem=new JMenuItem(”Save“,new ImageIcon(”image/save.png“)); saveItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl s“)); saveItem.addActionListener(this); //將各菜單項(xiàng)添加到 右擊菜單組中 right_Click=new JPopupMenu(); //right_Click.right_Click.add(cutItem); right_Click.add(copyItem); right_Click.add(pasteItem); right_Click.addSeparator(); right_Click.add(saveItem); //為右擊注冊(cè)監(jiān)聽 textPane.setComponentPopupMenu(right_Click); //可以懂工具條部分 toolBar=new JToolBar(”工具“); image_Button=new JButton(”插入圖片“); image_Button.addActionListener(this); font_Button=new JButton(”更改字體顏色“); font_Button.addActionListener(this); timeButton = new JButton(”插入時(shí)間“); timeButton.setToolTipText(”點(diǎn)擊可以插入當(dāng)前時(shí)間“); timeButton.addActionListener(this); toolBar.add(image_Button); toolBar.add(font_Button); toolBar.add(timeButton); //將工具條和textPane添加到panel panel.setLayout(new BorderLayout()); panel.add(toolBar,”North“);panel.add(jsp_Pane);} //更新文本框 在新建或刪除 筆記或筆記本 的時(shí)候需要刷新 public void update_Right_view(){ textPane.setText(”“);textPane.setEditable(false);} //保存當(dāng)前筆記 public void book_Save(){ FileOutputStream outputStream=null;ObjectOutputStream oos=null;try { outputStream=new FileOutputStream(mainFrame.getNote_Path()); oos=new ObjectOutputStream(outputStream); oos.writeObject(textPane.getDocument());} catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { oos.close(); } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getActionCommand()==”Cut“){//剪切 textPane.cut(); }else if(e.getActionCommand()==”Copy“){//復(fù)制 textPane.copy(); }else if(e.getActionCommand()==”Paste“){//粘貼 textPane.paste(); }else if(e.getActionCommand()==”Save“){//保存 this.book_Save(); }else if(e.getSource()==image_Button){//插入圖片 String temp=Tools.open_Choose(); if(!temp.equals(”not“)){ textPane.insertIcon(new ImageIcon(temp)); } }else if(e.getSource()==font_Button){//修改字體顏色 Color c=JColorChooser.showDialog(this, ”Color“, Color.black); textPane.setForeground(c); }else if(e.getSource()==timeButton){//插入時(shí)間 Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式 String hehe = dateFormat.format(now); textPane.replaceSelection(hehe); } } } Java及J2EE課程設(shè)計(jì)題目 1、文件檔案管理 文件檔案管理系統(tǒng)主要對(duì)外來文件、下發(fā)文件和需要抄送的文件進(jìn)行統(tǒng)一管理。劃分為以下三個(gè)模塊:收文管理、發(fā)文管理、抄送文件。 1.收文文件增加、刪除和修改,其字段有:收文編號(hào)、收件日期、文件標(biāo)題、內(nèi)容、發(fā)文單位、簽發(fā)人 2.發(fā)文文件增加、刪除和修改,其字段有:發(fā)文編號(hào)、發(fā)件日期、文件標(biāo)題、內(nèi)容、收文單位、發(fā)件人 3.抄送文件增加、刪除和修改,其字段有:文件編號(hào)、發(fā)件日期、文件標(biāo)題、內(nèi)容、抄送單位、發(fā)件人 4.查詢條件是發(fā)文類型(收文、發(fā)文還是抄送)、文件標(biāo)題、內(nèi)容進(jìn)行模糊查詢。 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A2、運(yùn)動(dòng)員檔案管理 運(yùn)動(dòng)員檔案管理系統(tǒng)是對(duì)運(yùn)動(dòng)員的基本信息及參加比賽的情況進(jìn)行管理維護(hù)。分為兩個(gè)模塊:運(yùn)動(dòng)員建檔、比賽記錄。 5.運(yùn)動(dòng)員建檔增加、刪除和修改,其字段有:學(xué)生編號(hào)、姓名、出生日期、性別、民族、政治面貌、主修項(xiàng)目、聯(lián)系方式 6.對(duì)運(yùn)動(dòng)員的檔案進(jìn)行模糊查詢,查詢條件有:學(xué)生編號(hào)、學(xué)生姓名、性別、主修項(xiàng)目 7.對(duì)比賽記錄進(jìn)行增加、刪除、修改,其字段有:學(xué)生編號(hào)、姓名、時(shí)間、地點(diǎn)、比賽名稱、參加項(xiàng)目、成績(jī)、名次 8.對(duì)比賽記錄進(jìn)行模糊查詢,查詢條件有:學(xué)生編號(hào)、學(xué)生姓名、比賽名稱、參加項(xiàng)目、成績(jī) 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A3、信息發(fā)布系統(tǒng) 信息發(fā)布系統(tǒng)是將最新信息、以最快的方式展示給用戶。提供信息的維護(hù)管理功能。信息主要字段:發(fā)布時(shí)間、標(biāo)題、內(nèi)容、有效期開始時(shí)間、結(jié)束時(shí)間、發(fā)布人、是否閱讀,完成對(duì)信息的發(fā)布、修改、刪除操作,對(duì)信息進(jìn)行模糊查詢,其查詢條件為標(biāo)題、內(nèi)容、發(fā)布人 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A4、通訊錄管理 通訊錄管理系統(tǒng)是方便用戶管理自己的聯(lián)系人,查找相應(yīng)的聯(lián)系方式。根據(jù)類別的不同對(duì)聯(lián)系人進(jìn)行分類管理。聯(lián)系人信息有:姓名、性別、職務(wù)、辦公電話、手機(jī)、宅電、電子郵件、通訊地址,完成對(duì)聯(lián)系人的增加、刪除、修改操作,提供對(duì)通訊錄進(jìn)行模糊查詢,其條件為姓名、性別、職務(wù)、通訊地址字段 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A5、備忘錄管理 備忘錄管理系統(tǒng)是記錄每天需要做的事情,起到一個(gè)提醒的作用。提供對(duì)這些信息的維護(hù)功能。備忘錄中的內(nèi)容主要有:日期、標(biāo)題、內(nèi)容這三個(gè)數(shù)據(jù)項(xiàng),完成對(duì)其的增加、刪除、修改操作,并可以按日期和標(biāo)題、內(nèi)容進(jìn)行模糊查詢 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A6、會(huì)議管理 會(huì)議管理系統(tǒng)是記錄會(huì)議的基本信息,開完會(huì)后記錄會(huì)議的討論結(jié)果,進(jìn)行備案,供以后查詢使用。會(huì)議的基本信息:會(huì)議主題、會(huì)議類型(周會(huì)、報(bào)告會(huì)、考務(wù)會(huì)……)、會(huì)議狀態(tài)(準(zhǔn)備中、進(jìn)行中、已結(jié)束三種)、會(huì)議時(shí)間、會(huì)議地址、參與者、會(huì)議主要內(nèi)容,完成對(duì)其會(huì)議基本信息的增加、刪除、修改操作,并要記錄會(huì)議結(jié)果,會(huì)議記錄結(jié)果主要記錄的是會(huì)議討論結(jié)果、領(lǐng)導(dǎo)簽字兩個(gè)數(shù)據(jù)項(xiàng)。應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A7、日程管理 日程管理要記錄每天的工作日程安排,主要內(nèi)容包括:記錄時(shí)間、名稱、內(nèi)容、地點(diǎn)、日程的開始 和結(jié)束時(shí)間,完成對(duì)基本信息的增加、刪除、修改操作,并對(duì)日程的信息進(jìn)行查詢,查詢條件有:名稱、內(nèi)容 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A8、日志管理 日志管理要記錄每一天完成工作的情況,記錄的信息有時(shí)間、上午工作記錄、下午工作記錄、記錄人,完成對(duì)這些信息的維護(hù),并對(duì)日期進(jìn)行查詢 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A9、用戶管理 為了方便網(wǎng)站管理者對(duì)用戶進(jìn)行身份確認(rèn),或者是用戶購(gòu)買以后進(jìn)行配送等服務(wù),必須要有用戶管理系統(tǒng)。用戶管理系統(tǒng)應(yīng)該具有用戶注冊(cè)、用戶登錄、用戶修改和用戶注銷等功能。 1. 用戶注冊(cè)(1) 2. 用戶登錄(1) 3. 用戶信息修改(1) 4. 用戶注銷(1) 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A10、數(shù)據(jù)查詢 網(wǎng)上購(gòu)物的一個(gè)優(yōu)勢(shì)是可以在商品中進(jìn)行查詢。 1. 生成查詢記錄集(1) 2. 分頁(yè)顯示功能(1) 3. 查看商品詳細(xì)信息(1) 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A11、購(gòu)物車 1.添加到購(gòu)物車(1) 2.查看購(gòu)物車(1) 3.購(gòu)物車操作(1) 4.結(jié)帳(1) 應(yīng)用工具:jsp+struts+jdbc 題目等級(jí):A 12.新聞管理系統(tǒng) 題目:當(dāng)今社會(huì)是一個(gè)信息社會(huì),人們通過信息了解社會(huì)情況,進(jìn)行社會(huì)活動(dòng),而新聞作為企事業(yè)單位宣 傳自己,發(fā)布信息的主要形式,而在網(wǎng)絡(luò)新聞的宣傳是一個(gè)新興事務(wù),并且發(fā)展很快,已經(jīng)成為一個(gè)重要信息發(fā)布媒體。所以現(xiàn)要求你設(shè)計(jì)一個(gè)用于新聞管理的信息系統(tǒng),實(shí)現(xiàn)新聞的編輯與發(fā)布。 功能要求:本系統(tǒng)要求可以完成新聞在線發(fā)布,在線編輯,新聞分類,圖片新管理等功能,技術(shù)上要求 使用JSP技術(shù)。 題目等級(jí):B 13.在線考試系統(tǒng) 題目:考試作為學(xué)員學(xué)習(xí)效果的檢驗(yàn)的主要方式一直被采用,而且考試形式也有許多方式,如筆試,面 試等,在線測(cè)試作為一種新的考試形式,得到越來越快的發(fā)展。所以現(xiàn)要求你設(shè)計(jì)一個(gè)在線考試系統(tǒng),實(shí)現(xiàn)在線測(cè)試。 功能能要求:實(shí)現(xiàn)在線測(cè)度,在線評(píng)測(cè),隨機(jī)出題,試題編輯等功能,技術(shù)上采用JSP+JavaBean實(shí)現(xiàn)。題目等級(jí):A 14.網(wǎng)上書店系統(tǒng) 題目:圖書是人們了解知識(shí),掌握知識(shí)的主要手段,傳統(tǒng)的書店都店面形式,人們需要去書店才能夠購(gòu) 買,花費(fèi)大量的時(shí)間也不一定得到一本滿意的書籍。而網(wǎng)上書店就是利用網(wǎng)絡(luò)為人們提供一個(gè)足不出戶就可以買到一本理想的書籍的方式。所以要求你設(shè)計(jì)一個(gè)網(wǎng)絡(luò)書店系統(tǒng),實(shí)現(xiàn)書籍的在線銷售,在線閱讀。 功能要求:實(shí)現(xiàn)圖書在線閱覽,在線選購(gòu),新書推薦等功能,技術(shù)上要求采用JSP +JavaBean實(shí)現(xiàn)。題目等級(jí):A 15.學(xué)生學(xué)籍系統(tǒng) 題目:學(xué)生學(xué)籍管理是一個(gè)學(xué)校管理的重要組成部分,學(xué)生學(xué)籍管理也是最麻煩的一項(xiàng)管理,所以實(shí)現(xiàn) 學(xué)生學(xué)籍管理的信息化是一種簡(jiǎn)化管理的主要途徑?,F(xiàn)要求你設(shè)計(jì)一個(gè)實(shí)現(xiàn)學(xué)生學(xué)籍管理的系統(tǒng),實(shí)現(xiàn)學(xué)生學(xué)籍管理的信息化。 功能要求:學(xué)生學(xué)籍注冊(cè),查詢,更新,學(xué)生獎(jiǎng)懲,學(xué)籍變動(dòng)等功能。技術(shù)上要求采用JSP技術(shù)實(shí)現(xiàn)。題目等級(jí):B 16.留言本 題目:留言本是網(wǎng)站中用于與管理員進(jìn)行信息交流的主要方式,是網(wǎng)站中的一個(gè)重要功能之一,現(xiàn)要求 你設(shè)計(jì)一個(gè)留言本,實(shí)現(xiàn)在線留言。 功能要求:留言發(fā)布,留言回復(fù),留言置頂,留言驗(yàn)證等功能,技術(shù)采用JSP實(shí)現(xiàn)。 題目等級(jí):C 17.在線投票問卷管理系統(tǒng) 題目:在線調(diào)查是調(diào)查了解對(duì)某件事情人們反映的主要方式,是目前比要流行的一種調(diào)查方式。現(xiàn)要求 實(shí)現(xiàn)一個(gè)在線投票調(diào)查系統(tǒng),并可以進(jìn)行結(jié)果統(tǒng)計(jì),結(jié)果評(píng)測(cè)等功能。 功能要求:在線投票,在線答卷,在線統(tǒng)計(jì),在線評(píng)測(cè)等功能,技術(shù)上采用JSP實(shí)現(xiàn)。 題目等級(jí):C 18.員工檔案管理系統(tǒng) 題目:?jiǎn)T工檔案是一個(gè)企業(yè)人才建設(shè)管理的重要資源,好的員工檔案管理,對(duì)提高員工工作積極性,提高企業(yè)效益的重要方式。所以要求設(shè)計(jì)一個(gè)員工檔案管理系統(tǒng),實(shí)現(xiàn)員工檔案管理的信息化管理。 功能要求:?jiǎn)T工檔案注冊(cè),員工考核,員工調(diào)動(dòng)等功能,技術(shù)上采用JSP+JavaBean實(shí)現(xiàn)。 題目等級(jí):A 19.文本編輯器 題目:參照Windows記事本程序設(shè)計(jì)一個(gè)文本編程器,可以進(jìn)行文本的格式編輯。 功能要求:要求有菜單,工具欄,文本編輯功能所需要的功能,技術(shù)上采用Java圖形窗口技術(shù)實(shí)現(xiàn)。題目等級(jí):C 20.計(jì)算器 題目:參照Windows計(jì)算器程序設(shè)計(jì)一個(gè)計(jì)算器,可以實(shí)現(xiàn)數(shù)學(xué)計(jì)算。 功能要求:要求功能上要與Windows計(jì)算器功能類似。 題目等級(jí):C 21.HANNOI-塔 題目:運(yùn)用多線程與圖形接口技術(shù)設(shè)計(jì)一個(gè)HANNOI-塔演示程序,要求增加簡(jiǎn)易圖形界面。功能要求:能夠至少演示5級(jí)HANNOI-塔。 題目等級(jí):B 22.挖雷游戲 題目:運(yùn)用多線程程序與圖形接口技術(shù)設(shè)計(jì)一個(gè)挖雷游戲程序,要求有簡(jiǎn)易的圖形界面。 功能要求:功能上與Windows掃雷游戲類似。 題目等級(jí):A 23.動(dòng)態(tài)時(shí)鐘 題目:運(yùn)用Applet和多線程技術(shù)設(shè)計(jì)鐘表程序,以實(shí)現(xiàn)當(dāng)前時(shí)鐘的顯示。 功能要求:要求有表盤,可以調(diào)整時(shí)間。 題目等級(jí):B 24.音樂播放器 題目:運(yùn)用Applet技術(shù)設(shè)計(jì)一個(gè)可以播放音樂的播放器。 功能要求:可以播放音樂,可以添加樂曲等功能。 題目等級(jí):C 25.實(shí)驗(yàn)室網(wǎng)上簽到系統(tǒng) 題目:要求實(shí)現(xiàn)一個(gè)實(shí)驗(yàn)在線簽到系統(tǒng),學(xué)生可以在上實(shí)驗(yàn)時(shí)完成簽到。 功能要求:課程設(shè)置,新建簽到,學(xué)生簽到列表,學(xué)生在線簽到等功能。技術(shù)上采用JSP+JavaBean技 術(shù)實(shí)現(xiàn)。 題目等級(jí):B 26.用戶管理系統(tǒng) 題目:要求實(shí)現(xiàn)用戶管理系統(tǒng),可以實(shí)現(xiàn)用戶注冊(cè),用戶權(quán)限管理等功能。 功能要求:用戶注冊(cè),用戶極限分配,用戶登錄等功能。技術(shù)采用JSP技術(shù)實(shí)現(xiàn)。、題目等級(jí):C 27.圖書館管理系統(tǒng) 題目:要求實(shí)現(xiàn)圖書館的在線管理,學(xué)生可以在線借書,在線閱覽等功能。 功能要求:在線圖書管理。在線閱讀,在線借書,還書等功能。技術(shù)上采用JSP+JavaBean實(shí)現(xiàn)。題目等級(jí):B 28.求職招聘系統(tǒng) 題目:網(wǎng)上求職是當(dāng)今人才流動(dòng),人才引進(jìn)的重要途徑,但對(duì)于成百萬的簡(jiǎn)歷的管理,職位的發(fā)布的管理如果采用人工的方式會(huì)花費(fèi)大量的人力、物力,但如果實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)化 管理就顯得容易一些,所以現(xiàn)要求你設(shè)計(jì)一個(gè)求職招聘管理系統(tǒng),實(shí)現(xiàn)人才交流的信息化處理。 功能要求:職位發(fā)布,在線投簡(jiǎn),在線應(yīng)聘等功能。技術(shù)上采用JSP+JavaBean技術(shù)實(shí)現(xiàn)。題目等級(jí):B 29.倉(cāng)庫(kù)管理系統(tǒng) 題目:倉(cāng)庫(kù)管理是一個(gè)非常煩瑣,但是很重要的工作。如果能夠?qū)崿F(xiàn)倉(cāng)庫(kù)管理的計(jì)算機(jī)處理,對(duì)于提 高工作效率,降低工作成本,能夠起到非常重要的作用,所以現(xiàn)要求實(shí)現(xiàn)一個(gè)倉(cāng)庫(kù)管理系統(tǒng),實(shí)現(xiàn)倉(cāng)庫(kù)的信息化管理。 功能要求:實(shí)現(xiàn)貨物的出庫(kù),入庫(kù),庫(kù)存統(tǒng)計(jì),庫(kù)存預(yù)警等功能。技術(shù)上采用JSP+JavaBean技術(shù)實(shí)現(xiàn)。題目等級(jí):B 30企業(yè)網(wǎng)站管理系統(tǒng) 題目:網(wǎng)站對(duì)企業(yè)宣傳工作的開展提供一個(gè)非常的好的效果,產(chǎn)生很好的效益,這就說明網(wǎng)站已經(jīng)成為企業(yè)宣傳自己的重要手段,網(wǎng)站管理的好壞直接影響這個(gè)網(wǎng)站的應(yīng)用,所以現(xiàn)要求為某企業(yè)網(wǎng)站設(shè)計(jì)一個(gè)管理系統(tǒng),實(shí)現(xiàn)網(wǎng)站的后臺(tái)管理。 功能要求:產(chǎn)品發(fā)布,用戶管理,信息發(fā)布等功能。技術(shù)上采用JSP+JavaBean技術(shù)實(shí)現(xiàn)。題目等級(jí):A 31.流量統(tǒng)計(jì)系統(tǒng) 題目:網(wǎng)絡(luò)流量是反映一個(gè)網(wǎng)站受關(guān)注度情況的重要表現(xiàn),是網(wǎng)站調(diào)整版面信息的參考,訪問流量高的網(wǎng)站證明其效益非常好,是一個(gè)非常理想的網(wǎng)站,但流量低的網(wǎng)站就需要進(jìn)行信息的更新和版面的修改,以提高網(wǎng)站的訪問量,這樣網(wǎng)站流量的時(shí)時(shí)統(tǒng)計(jì)能夠給網(wǎng)站管理員提供一個(gè)網(wǎng)站運(yùn)行情況信息參考,為其更好的管理網(wǎng)站提供幫助。現(xiàn)要求你設(shè)計(jì)一個(gè)網(wǎng)站訪問流量的統(tǒng)計(jì)系統(tǒng),時(shí)時(shí)統(tǒng)計(jì)網(wǎng)站訪問流量。 功能要求:顯示在線人數(shù),當(dāng)前訪問者IP,歷史訪問人數(shù),最高流量時(shí)間等功能。技術(shù)上采用JSP技 術(shù)實(shí)現(xiàn)。 題目等級(jí):C 其它可選題目 以上題目的等級(jí)全都為C,所選工具應(yīng)為jsp+jdbc,都要完全相應(yīng)的增、刪、改、查等功能 (1)酒店管理信息系統(tǒng) (2)客房管理信息系統(tǒng) (3)藥品管理信息系統(tǒng) (4)學(xué)籍管理信息系統(tǒng) (5)成績(jī)管理信息系統(tǒng) (6)宿舍管理信息系統(tǒng) (7)圖書管理信息系統(tǒng) (8)財(cái)務(wù)處理信息系統(tǒng) (9)固定資產(chǎn)核算信息系統(tǒng) (10)工資管理信息系統(tǒng) (11)材料管理信息系統(tǒng) (12)成本管理信息系統(tǒng) (13)房地產(chǎn)產(chǎn)權(quán)產(chǎn)籍管理信息系統(tǒng)的開發(fā) (14)住宅小區(qū)物業(yè)管理信息系統(tǒng)的開發(fā) (15)建設(shè)工程報(bào)價(jià)管理信息系統(tǒng)的開發(fā) (16)建設(shè)工程預(yù)算系統(tǒng)的開發(fā) (17)項(xiàng)目材料管理信息系統(tǒng)的開發(fā) (18)工程材料采購(gòu)管理信息系統(tǒng)的開發(fā) (19)工程成本管理信息系統(tǒng)的開發(fā) (20)機(jī)械設(shè)備租賃管理系統(tǒng)的開發(fā) (21)工程圖檔管理信息系統(tǒng)的開發(fā) (22)企業(yè)人力資源管理信息系統(tǒng)的開發(fā) (23)企業(yè)職工培訓(xùn)管理信息系統(tǒng)的開發(fā) (24)企業(yè)職工醫(yī)療保險(xiǎn)信息系統(tǒng)的開發(fā) (25)商品銷售管理信息系統(tǒng)的開發(fā) 課 程 設(shè) 計(jì) 課程名稱 Java語(yǔ)言課程設(shè)計(jì) 題目名稱 人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)院 應(yīng)用數(shù)學(xué)學(xué)院 專業(yè)班級(jí) 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 劉科峰 2014 年 10 月 29 日 一.設(shè)計(jì)內(nèi)容 自學(xué)Swing圖形界面設(shè)計(jì)和數(shù)據(jù)庫(kù)程序設(shè)計(jì)。開發(fā)用于某單位的人事管理系統(tǒng)。該系統(tǒng)要求實(shí)現(xiàn)以下功能: 1.員工信息管理包括:?jiǎn)T工信息一覽表、新員工的建立、修改 2.薪資福利管理:考勤與薪資的連動(dòng)計(jì)算、薪資與福利的設(shè)置 3.考勤假期管理:考勤項(xiàng)目錄入, 實(shí)現(xiàn)考勤信息的查詢、統(tǒng)計(jì)、匯總 4.人事報(bào)表管理:按照員工性別,數(shù)目,薪酬自動(dòng)生成相關(guān)報(bào)表, 可自定義統(tǒng)計(jì)分析條件并可對(duì)歷史報(bào)表進(jìn)行管理。 設(shè)計(jì)亮點(diǎn) 1.null布局方式 Swing圖形界面設(shè)計(jì)中有很多布局方式,通過本次學(xué)習(xí)了解到了FlowLayout,BorderLayout,GridLayout以及null布局,就這四種布局方式而言,null布局的優(yōu)點(diǎn)在于可以將組建的位置精準(zhǔn)到坐標(biāo)值,可以把組件放到任意想放置的位置,另外可以通過null去設(shè)置組件的大小,相較于其他布局方式來說是一個(gè)很大的優(yōu)勢(shì)。但同時(shí)它的缺點(diǎn)在于不能根據(jù)Frame的大小變化而改變位置。 2.組件部分屬性的設(shè)計(jì) Swing中有很多方法是用來實(shí)現(xiàn)組件屬性設(shè)置的,比如button.setVisible(false);按鈕通過調(diào)用這個(gè)方法實(shí)現(xiàn)不可見,這是我此次課程設(shè)計(jì)中的一個(gè)亮點(diǎn),因?yàn)榻M件是沒有設(shè)置大小的方法的,只有依靠于相應(yīng)的布局方式才能改變它的大小,通過設(shè)置多幾個(gè)按鈕設(shè)為不可見,將所要可見按鈕實(shí)現(xiàn)大小以及位置的控制是一種很好的方法。 二、設(shè)計(jì)方案 1主界面(只列出界面設(shè)計(jì)方面的代碼) JPanel panel=new JPanel();JTable table=null;JButton ibtn=new JButton(“員工信息”);JButton cbtn=new JButton(“考勤管理”);JButton mbtn=new JButton(“薪資管理”);JButton tbtn=new JButton(“人事報(bào)表”);ImageIcon rtou = new ImageIcon(“rentou.jpg”); JLabel imgLabel=new JLabel(rtou); //上面代碼定義了一個(gè)面板與四個(gè)標(biāo)簽,并引入了一個(gè)圖片 panel.setLayout(new FlowLayout());//設(shè)置面板為流布局 panel.add(ibtn);panel.add(cbtn);panel.add(mbtn);panel.add(tbtn);panel.setBackground(Color.GRAY); //將按鈕加到面板中,設(shè)置面板為灰色 this.add(imgLabel,BorderLayout.CENTER);this.add(panel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*圖片標(biāo)簽以邊框布局放置在中間,將面板也以邊框布局放置在下面,可見,灰色,點(diǎn)擊關(guān)閉程序*/ (2)查詢員工界面(只列出界面設(shè)計(jì)方面的代碼) Label idlabel = new JLabel(“ID”);JLabel namelabel = new JLabel(“姓名”);JLabel bumenlabel = new JLabel(“部門”);JLabel zhiweilabel = new JLabel(“職位”); JTextField idfiled = new JTextField(8);JTextField namefield = new JTextField(8);JComboBox bumenbox =new JComboBox();JComboBox zhiweubox = new JComboBox(); JButton btn=new JButton(“查詢”);JButton ibtn=new JButton(“添加”) JPanel spanel=new JPanel();JPanel vpanel=new JPanel(); /*定義和各個(gè)組件,4個(gè)標(biāo)簽,兩個(gè)文本框,兩個(gè)復(fù)選框,兩個(gè)按鈕,兩個(gè)面板容器*/ spanel.setLayout(new FlowLayout()); vpanel.setLayout(new FlowLayout(FlowLayout.CENTER,45,25)); bumenbox.addItem(“"); bumenbox.addItem(”管理部“); bumenbox.addItem(”生產(chǎn)部“); bumenbox.addItem(”業(yè)務(wù)部“); zhiweubox.addItem(”“); zhiweubox.addItem(”部長(zhǎng)“); zhiweubox.addItem(”副部長(zhǎng)“); zhiweubox.addItem(”普工“); spanel.add(idlabel); spanel.add(idfiled); spanel.add(namelabel); spanel.add(namefield); spanel.add(bumenlabel); spanel.add(bumenbox); spanel.add(zhiweilabel); spanel.add(zhiweubox); spanel.add(btn); vpanel.add(ibtn); spanel.setBackground(Color.GRAY); vpanel.setBackground(Color.GRAY); //將各個(gè)組件放進(jìn)對(duì)應(yīng)面板,設(shè)置相關(guān)屬性 this.add(spanel,BorderLayout.NORTH); this.add(vpanel,BorderLayout.SOUTH); this.setBounds(300, 180, 600, 350); this.setVisible(true); this.getContentPane().setBackground(Color.GRAY); //將面板以邊框布局放入框架中,設(shè)置屬性(3)增加員工信息界面 JPanel panel=new JPanel(); JLabel timeLabel=new JLabel(”時(shí)間“);JLabel allnumLabel=new JLabel(”員工總數(shù)“); JLabel staffMoLabel=new JLabel(”考勤“);JLabel entryLabel=new JLabel(”全勤“); JLabel quitLabel=new JLabel(”缺勤“);JLabel mwLabel=new JLabel(”性別比例“); JLabel manLabel=new JLabel(”男“); JLabel womanLabel=new JLabel(”女“);JLabel proportionLabel=new JLabel(”男女比例“);JLabel distributionLabel=new JLabel(”人員部門分布“);JLabel mdpLabel=new JLabel(”管理部“); JLabel pdpLabel=new JLabel(”生產(chǎn)部“);JLabel bdpLabel=new JLabel(”業(yè)務(wù)部“);JLabel xmLabel=new JLabel(”項(xiàng)目“);JLabel xzLabel=new JLabel(”細(xì)則“);JLabel stLabel=new JLabel(”數(shù)據(jù)統(tǒng)計(jì)“); JTextField timeFiled = new JTextField(8); JTextField allnumFiled = new JTextField(8);JTextField entryFiled = new JTextField(8);JTextField quitFiled = new JTextField(8);JTextField manFiled = new JTextField(8);JTextField womanFiled = new JTextField(8);JTextField proportionFiled = new JTextField(8);JTextField mdpFiled = new JTextField(8);JTextField pdpFiled = new JTextField(8);JTextField bdpFiled = new JTextField(8);// 定義所需組件 public Selectrenshi(String tablename){ super(”人事管理“); panel.setLayout(null); panel.setBackground(Color.GRAY); panel.add(xmLabel); panel.add(xzLabel); panel.add(stLabel); panel.add(timeLabel); panel.add(timeFiled); panel.add(allnumLabel); panel.add(allnumFiled); panel.add(staffMoLabel); panel.add(entryLabel); panel.add(entryFiled); panel.add(quitLabel); panel.add(quitFiled); panel.add(mwLabel); panel.add(manLabel); panel.add(manFiled); panel.add(womanLabel); panel.add(womanFiled); panel.add(proportionLabel); panel.add(proportionFiled); panel.add(distributionLabel); panel.add(mdpLabel); panel.add(mdpFiled); panel.add(pdpLabel); panel.add(pdpFiled); panel.add(bdpLabel); panel.add(bdpFiled); //將組件加到相應(yīng)面板中 xmLabel.setBounds(120,20,100,30); xzLabel.setBounds(240,20,100,30); stLabel.setBounds(360,20,100,30); timeLabel.setBounds(120,50,100,30); timeFiled.setBounds(360,50,100,30); allnumLabel.setBounds(120,100,100,30); allnumFiled.setBounds(360,100,100,30); staffMoLabel.setBounds(120,150,100,30); entryLabel.setBounds(240,150,100,30); entryFiled.setBounds(360,150,100,30); quitLabel.setBounds(240,200,100,30); quitFiled.setBounds(360,200,100,30); mwLabel.setBounds(120,250,100,30); manLabel.setBounds(240,250,100,30); manFiled.setBounds(360,250,100,30); womanLabel.setBounds(240,300,100,30); womanFiled.setBounds(360,300,100,30); proportionLabel.setBounds(240,350,100,30); proportionFiled.setBounds(360,350,100,30); distributionLabel.setBounds(120,400,100,30); mdpLabel.setBounds(240,400,100,30); mdpFiled.setBounds(360,400,100,30); pdpLabel.setBounds(240,450,100,30); pdpFiled.setBounds(360,450,100,30); bdpLabel.setBounds(240,500,100,30); bdpFiled.setBounds(360,500,100,30); //采用null布局,設(shè)置組建坐標(biāo)值 this.add(panel,BorderLayout.CENTER); this.setBounds(300, 100, 600, 600); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.getContentPane().setBackground(Color.GRAY); //將面板放入框架,設(shè)置相應(yīng)屬性(4)員工考勤界面 JLabel idlabel = new JLabel(”ID“);JComboBox idbox =new JComboBox();CheckTable model = null; JButton wbtn=new JButton(”修改“); JButton cbtn=new JButton(”查詢“);JButton mbtn=new JButton(”創(chuàng)建薪資表“);JButton rbtn=new JButton(”創(chuàng)建人事表“); JScrollPane scrollpane = null;JPanel spanel=new JPanel();JPanel vpanel=new JPanel();JTable table=null;spanel.add(idbox);panel.add(wbtn);spanel.add(cbtn);vpanel.add(mbtn);vpanel.add(rbtn);spanel.setBackground(Color.GRAY);vpanel.setBackground(Color.GRAY);this.add(spanel,BorderLayout.NORTH);this.add(vpanel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY); (5)選擇考勤表界面 JLabel checklabel = new JLabel(”選擇考勤表“);JLabel newlabel = new JLabel(”創(chuàng)建考勤表“);JComboBox timebox =new JComboBox();JTextField newfield = new JTextField();JButton btn=new JButton(”確認(rèn)“);JButton nbtn=new JButton(”創(chuàng)建");JPanel spanel=new JPanel();spanel.add(checklabel); spanel.add(timebox); spanel.add(btn); spanel.add(newlabel); spanel.add(newfield); spanel.add(nbtn); checklabel.setBounds(30,90,100,30); timebox.setBounds(180,90,100,30); btn.setBounds(360,90,100,30); newlabel.setBounds(30,200,100,30); newfield.setBounds(180,200,100,30); nbtn.setBounds(360,200,100,30); this.add(spanel); this.setBounds(300, 180, 600, 350); this.setVisible(true); 三、結(jié)果和數(shù)據(jù)處理 四、結(jié)論 1.Swing圖形界面 圖形用戶界面(GUI)是程序不可或缺的一部分,它便于用戶和程序的交互。在Swing界面中是以Frame為框架,采用合理的布局方式(FlowLayout,BorderLayout,GridLayout,null),將Panel加入框架之中,而實(shí)現(xiàn)界面的各個(gè)組件將調(diào)用各種方法設(shè)置自身屬性實(shí)行可視化界面以及加入到面板之中。再通過事件監(jiān)聽器實(shí)現(xiàn)事件的監(jiān)聽預(yù)處理機(jī)制。 2.數(shù)據(jù)庫(kù) 在這次課程設(shè)計(jì)中哦我主要負(fù)責(zé)Swing圖像界面,對(duì)于數(shù)據(jù)庫(kù)只做了最簡(jiǎn)單的了解。程序中采用了最流行的關(guān)系型數(shù)據(jù)庫(kù)mysql,雪化了mysql的建立,刪除,與修改以及使用sql語(yǔ)言對(duì)數(shù)據(jù)庫(kù)進(jìn)行一些簡(jiǎn)單的操作,將按鈕等設(shè)置的監(jiān)聽事件與數(shù)據(jù)庫(kù)相連接。 五、問題與討論 1.組件的方法調(diào)用 在這次課程設(shè)計(jì)中,用到了很多的組件,例如Button,Jlabel,TextField,ComBox,等。Swing圖形界面也確實(shí)提供了很多方法去設(shè)置相關(guān)組件的屬性,例如label.setVisible(false);設(shè)置標(biāo)簽不可見等很多方法,只要查看API文檔幾乎就能實(shí)現(xiàn)很多功能,但是對(duì)于按鈕等最常見的組件來說設(shè)置大小如果不依靠相關(guān)布局方式很難設(shè)置,我在程序中之所以運(yùn)用了很多的bull布局方式就是為了實(shí)現(xiàn)組件大小的設(shè)置,如果說能有一個(gè)方法直接設(shè)置組件大小而不受其他組件或容器影響就能使代碼很簡(jiǎn)潔了。2.相對(duì)布局 在編寫圖像界面的程序的時(shí)候,我用了很多的布局方式,有FlowLayout,BorderLayout,GrirLayout,null等,其中null布局用的最多。null布局的優(yōu)點(diǎn)在于可以將組建的位置精準(zhǔn)到坐標(biāo)值,可以把組件放到任意想放置的位置,另外可以通過null去設(shè)置組件的大小,相較于其他布局方式來說是一個(gè)很大的優(yōu)勢(shì)。但同時(shí)它的缺點(diǎn)在于不能根據(jù)Frame的大小變化而改變位置。其他三種布局方式雖然實(shí)現(xiàn)了歲Frame大小變動(dòng)而改變組件大小及位置但是不容易控制,如果null布局能實(shí)現(xiàn)相對(duì)布局就是很好的一種布局方式了。第四篇:Java課程設(shè)計(jì)
第五篇:Java課程設(shè)計(jì)報(bào)告