第一篇:Java課程設計
Java及J2EE課程設計題目
1、文件檔案管理
文件檔案管理系統主要對外來文件、下發文件和需要抄送的文件進行統一管理。劃分為以下三個模塊:收文管理、發文管理、抄送文件。
1.收文文件增加、刪除和修改,其字段有:收文編號、收件日期、文件標題、內容、發文單位、簽發人
2.發文文件增加、刪除和修改,其字段有:發文編號、發件日期、文件標題、內容、收文單位、發件人
3.抄送文件增加、刪除和修改,其字段有:文件編號、發件日期、文件標題、內容、抄送單位、發件人
4.查詢條件是發文類型(收文、發文還是抄送)、文件標題、內容進行模糊查詢。
應用工具:jsp+struts+jdbc
題目等級:A2、運動員檔案管理
運動員檔案管理系統是對運動員的基本信息及參加比賽的情況進行管理維護。分為兩個模塊:運動員建檔、比賽記錄。
5.運動員建檔增加、刪除和修改,其字段有:學生編號、姓名、出生日期、性別、民族、政治面貌、主修項目、聯系方式
6.對運動員的檔案進行模糊查詢,查詢條件有:學生編號、學生姓名、性別、主修項目
7.對比賽記錄進行增加、刪除、修改,其字段有:學生編號、姓名、時間、地點、比賽名稱、參加項目、成績、名次
8.對比賽記錄進行模糊查詢,查詢條件有:學生編號、學生姓名、比賽名稱、參加項目、成績 應用工具:jsp+struts+jdbc
題目等級:A3、信息發布系統
信息發布系統是將最新信息、以最快的方式展示給用戶。提供信息的維護管理功能。信息主要字段:發布時間、標題、內容、有效期開始時間、結束時間、發布人、是否閱讀,完成對信息的發布、修改、刪除操作,對信息進行模糊查詢,其查詢條件為標題、內容、發布人
應用工具:jsp+struts+jdbc
題目等級:A4、通訊錄管理
通訊錄管理系統是方便用戶管理自己的聯系人,查找相應的聯系方式。根據類別的不同對聯系人進行分類管理。聯系人信息有:姓名、性別、職務、辦公電話、手機、宅電、電子郵件、通訊地址,完成對聯系人的增加、刪除、修改操作,提供對通訊錄進行模糊查詢,其條件為姓名、性別、職務、通訊地址字段
應用工具:jsp+struts+jdbc
題目等級:A5、備忘錄管理
備忘錄管理系統是記錄每天需要做的事情,起到一個提醒的作用。提供對這些信息的維護功能。備忘錄中的內容主要有:日期、標題、內容這三個數據項,完成對其的增加、刪除、修改操作,并可以按日期和標題、內容進行模糊查詢
應用工具:jsp+struts+jdbc
題目等級:A6、會議管理
會議管理系統是記錄會議的基本信息,開完會后記錄會議的討論結果,進行備案,供以后查詢使用。會議的基本信息:會議主題、會議類型(周會、報告會、考務會……)、會議狀態(準備中、進行中、已結束三種)、會議時間、會議地址、參與者、會議主要內容,完成對其會議基本信息的增加、刪除、修改操作,并要記錄會議結果,會議記錄結果主要記錄的是會議討論結果、領導簽字兩個數據項。應用工具:jsp+struts+jdbc
題目等級:A7、日程管理
日程管理要記錄每天的工作日程安排,主要內容包括:記錄時間、名稱、內容、地點、日程的開始
和結束時間,完成對基本信息的增加、刪除、修改操作,并對日程的信息進行查詢,查詢條件有:名稱、內容
應用工具:jsp+struts+jdbc
題目等級:A8、日志管理
日志管理要記錄每一天完成工作的情況,記錄的信息有時間、上午工作記錄、下午工作記錄、記錄人,完成對這些信息的維護,并對日期進行查詢
應用工具:jsp+struts+jdbc
題目等級:A9、用戶管理
為了方便網站管理者對用戶進行身份確認,或者是用戶購買以后進行配送等服務,必須要有用戶管理系統。用戶管理系統應該具有用戶注冊、用戶登錄、用戶修改和用戶注銷等功能。
1. 用戶注冊(1)
2. 用戶登錄(1)
3. 用戶信息修改(1)
4. 用戶注銷(1)
應用工具:jsp+struts+jdbc
題目等級:A10、數據查詢
網上購物的一個優勢是可以在商品中進行查詢。
1. 生成查詢記錄集(1)
2. 分頁顯示功能(1)
3. 查看商品詳細信息(1)
應用工具:jsp+struts+jdbc
題目等級:A11、購物車
1.添加到購物車(1)
2.查看購物車(1)
3.購物車操作(1)
4.結帳(1)
應用工具:jsp+struts+jdbc
題目等級:A
12.新聞管理系統
題目:當今社會是一個信息社會,人們通過信息了解社會情況,進行社會活動,而新聞作為企事業單位宣
傳自己,發布信息的主要形式,而在網絡新聞的宣傳是一個新興事務,并且發展很快,已經成為一個重要信息發布媒體。所以現要求你設計一個用于新聞管理的信息系統,實現新聞的編輯與發布。
功能要求:本系統要求可以完成新聞在線發布,在線編輯,新聞分類,圖片新管理等功能,技術上要求
使用JSP技術。
題目等級:B
13.在線考試系統
題目:考試作為學員學習效果的檢驗的主要方式一直被采用,而且考試形式也有許多方式,如筆試,面
試等,在線測試作為一種新的考試形式,得到越來越快的發展。所以現要求你設計一個在線考試系統,實現在線測試。
功能能要求:實現在線測度,在線評測,隨機出題,試題編輯等功能,技術上采用JSP+JavaBean實現。題目等級:A
14.網上書店系統
題目:圖書是人們了解知識,掌握知識的主要手段,傳統的書店都店面形式,人們需要去書店才能夠購
買,花費大量的時間也不一定得到一本滿意的書籍。而網上書店就是利用網絡為人們提供一個足不出戶就可以買到一本理想的書籍的方式。所以要求你設計一個網絡書店系統,實現書籍的在線銷售,在線閱讀。
功能要求:實現圖書在線閱覽,在線選購,新書推薦等功能,技術上要求采用JSP +JavaBean實現。題目等級:A
15.學生學籍系統
題目:學生學籍管理是一個學校管理的重要組成部分,學生學籍管理也是最麻煩的一項管理,所以實現
學生學籍管理的信息化是一種簡化管理的主要途徑。現要求你設計一個實現學生學籍管理的系統,實現學生學籍管理的信息化。
功能要求:學生學籍注冊,查詢,更新,學生獎懲,學籍變動等功能。技術上要求采用JSP技術實現。題目等級:B
16.留言本
題目:留言本是網站中用于與管理員進行信息交流的主要方式,是網站中的一個重要功能之一,現要求
你設計一個留言本,實現在線留言。
功能要求:留言發布,留言回復,留言置頂,留言驗證等功能,技術采用JSP實現。
題目等級:C
17.在線投票問卷管理系統
題目:在線調查是調查了解對某件事情人們反映的主要方式,是目前比要流行的一種調查方式。現要求
實現一個在線投票調查系統,并可以進行結果統計,結果評測等功能。
功能要求:在線投票,在線答卷,在線統計,在線評測等功能,技術上采用JSP實現。
題目等級:C
18.員工檔案管理系統
題目:員工檔案是一個企業人才建設管理的重要資源,好的員工檔案管理,對提高員工工作積極性,提高企業效益的重要方式。所以要求設計一個員工檔案管理系統,實現員工檔案管理的信息化管理。
功能要求:員工檔案注冊,員工考核,員工調動等功能,技術上采用JSP+JavaBean實現。
題目等級:A
19.文本編輯器
題目:參照Windows記事本程序設計一個文本編程器,可以進行文本的格式編輯。
功能要求:要求有菜單,工具欄,文本編輯功能所需要的功能,技術上采用Java圖形窗口技術實現。題目等級:C
20.計算器
題目:參照Windows計算器程序設計一個計算器,可以實現數學計算。
功能要求:要求功能上要與Windows計算器功能類似。
題目等級:C
21.HANNOI-塔
題目:運用多線程與圖形接口技術設計一個HANNOI-塔演示程序,要求增加簡易圖形界面。功能要求:能夠至少演示5級HANNOI-塔。
題目等級:B
22.挖雷游戲
題目:運用多線程程序與圖形接口技術設計一個挖雷游戲程序,要求有簡易的圖形界面。
功能要求:功能上與Windows掃雷游戲類似。
題目等級:A
23.動態時鐘
題目:運用Applet和多線程技術設計鐘表程序,以實現當前時鐘的顯示。
功能要求:要求有表盤,可以調整時間。
題目等級:B
24.音樂播放器
題目:運用Applet技術設計一個可以播放音樂的播放器。
功能要求:可以播放音樂,可以添加樂曲等功能。
題目等級:C
25.實驗室網上簽到系統
題目:要求實現一個實驗在線簽到系統,學生可以在上實驗時完成簽到。
功能要求:課程設置,新建簽到,學生簽到列表,學生在線簽到等功能。技術上采用JSP+JavaBean技
術實現。
題目等級:B
26.用戶管理系統
題目:要求實現用戶管理系統,可以實現用戶注冊,用戶權限管理等功能。
功能要求:用戶注冊,用戶極限分配,用戶登錄等功能。技術采用JSP技術實現。、題目等級:C
27.圖書館管理系統
題目:要求實現圖書館的在線管理,學生可以在線借書,在線閱覽等功能。
功能要求:在線圖書管理。在線閱讀,在線借書,還書等功能。技術上采用JSP+JavaBean實現。題目等級:B
28.求職招聘系統
題目:網上求職是當今人才流動,人才引進的重要途徑,但對于成百萬的簡歷的管理,職位的發布的管理如果采用人工的方式會花費大量的人力、物力,但如果實現計算機網絡化 管理就顯得容易一些,所以現要求你設計一個求職招聘管理系統,實現人才交流的信息化處理。
功能要求:職位發布,在線投簡,在線應聘等功能。技術上采用JSP+JavaBean技術實現。題目等級:B
29.倉庫管理系統
題目:倉庫管理是一個非常煩瑣,但是很重要的工作。如果能夠實現倉庫管理的計算機處理,對于提
高工作效率,降低工作成本,能夠起到非常重要的作用,所以現要求實現一個倉庫管理系統,實現倉庫的信息化管理。
功能要求:實現貨物的出庫,入庫,庫存統計,庫存預警等功能。技術上采用JSP+JavaBean技術實現。題目等級:B
30企業網站管理系統
題目:網站對企業宣傳工作的開展提供一個非常的好的效果,產生很好的效益,這就說明網站已經成為企業宣傳自己的重要手段,網站管理的好壞直接影響這個網站的應用,所以現要求為某企業網站設計一個管理系統,實現網站的后臺管理。
功能要求:產品發布,用戶管理,信息發布等功能。技術上采用JSP+JavaBean技術實現。題目等級:A
31.流量統計系統
題目:網絡流量是反映一個網站受關注度情況的重要表現,是網站調整版面信息的參考,訪問流量高的網站證明其效益非常好,是一個非常理想的網站,但流量低的網站就需要進行信息的更新和版面的修改,以提高網站的訪問量,這樣網站流量的時時統計能夠給網站管理員提供一個網站運行情況信息參考,為其更好的管理網站提供幫助。現要求你設計一個網站訪問流量的統計系統,時時統計網站訪問流量。
功能要求:顯示在線人數,當前訪問者IP,歷史訪問人數,最高流量時間等功能。技術上采用JSP技
術實現。
題目等級:C
其它可選題目
以上題目的等級全都為C,所選工具應為jsp+jdbc,都要完全相應的增、刪、改、查等功能
(1)酒店管理信息系統
(2)客房管理信息系統
(3)藥品管理信息系統
(4)學籍管理信息系統
(5)成績管理信息系統
(6)宿舍管理信息系統
(7)圖書管理信息系統
(8)財務處理信息系統
(9)固定資產核算信息系統
(10)工資管理信息系統
(11)材料管理信息系統
(12)成本管理信息系統
(13)房地產產權產籍管理信息系統的開發
(14)住宅小區物業管理信息系統的開發
(15)建設工程報價管理信息系統的開發
(16)建設工程預算系統的開發
(17)項目材料管理信息系統的開發
(18)工程材料采購管理信息系統的開發
(19)工程成本管理信息系統的開發
(20)機械設備租賃管理系統的開發
(21)工程圖檔管理信息系統的開發
(22)企業人力資源管理信息系統的開發
(23)企業職工培訓管理信息系統的開發
(24)企業職工醫療保險信息系統的開發
(25)商品銷售管理信息系統的開發
第二篇:Java課程設計
統一要求:
設計成品(按難度自選一個到兩個完成)
可分組或單獨完成,每組最多兩人,19周前交 1設計報告
(1)本程序的功能描述
(2)程序設計思想(數據結構和各功能的實現辦法)(3)核心程序清單(應有必要說明)2結果分析
(1)本程序的局限性及改進方法
(2)應用本程序的設計方法可以編寫哪些類似的程序 一:小型通訊管理系統
通訊錄管理系統含有:輸入 顯示 查找 刪除
要求
1通訊錄的每一條信息包括姓名,單位,電話!(可用數組或數據庫)2輸入功能:可以一次完成若干條信息的輸入.3顯示功能:完成全部通訊錄信息的顯示(一屏最多顯示10條,超過十條應能夠自動分屏顯示)4查找功能:完成按姓名查找通訊信息.5刪除功能:完成按姓名刪除通訊信息.6應提供一個界面來調用各個功能,調用界面和各個功能的操作界面應盡可能清晰美觀!
二:個人簡歷程序:(參照中華英才網http://www.tmdps.cn的創建個人簡歷的選項)
通過文本框輸入姓名,通過單選按鈕設置性別,通過組合框選擇籍貫(列出省、市),文化程度、出生日期、現居住地。以及填寫教育經歷、語言及方言等。
請按自行安排界面排版方式,注意美觀性。
三:多小球運動程序:
請編寫一個多小球運動的程序,要求可以設置每個小球的半徑,初始書度,加速度。
當用戶點擊發射按鈕時,程序按指定的彈出一個小球,當小球碰到邊界線時,碰撞為完全碰撞。
要求每個小球為一個線程,不考慮小球之間的碰撞。
四:打字小程序。
從屏幕頂端隨機落下不同的英文。如果在字符下落的過程中,用戶正確輸入對應字符,字符消失,加1分;到字符落到底端還沒正確輸入,扣一分。
給出最宗成績。程序可設 重新開始,暫停,練習時間,字符出現的數量,速度等。
五:龜兔賽跑
龜兔在同一個圓賽跑,要求可以設置龜兔跑一周的時間,兔比龜快。龜兔同時其跑,當兔快龜一圈時,計算器加1,并顯示在屏幕上。六:學生成績管理系統。
完成一個班學生的成績管理。為完成程序功能,至少要有兩個這樣的功能模塊:
l 輸入成績 2 查詢成績
因為查詢模塊中又分為:
l 按學生查詢 2 按課程查詢
所以為它們分別編寫函數。因為上述這些操作中要輸入某位學生和某門課程,所以再編寫兩個函數來輸出數組中的學生信息和課程信息并請用戶從中選擇:
1顯示學生信息從中進行選擇 2顯示課程信息從中進行選擇
系統管理員需要管理系統所有用戶的信息,包括用戶編號、名稱、備注等,可以對其添加刪除修改和啟用停用等操作。
還需要為系統用戶劃分角色和權限,保證不同身份的用戶進入后可以有不同的權限,如某科目的老師可以錄入本科目的成績,學生只可以有查詢權限等。
七:使用ServerSocket和Socket實現服務器支持多客戶機通信。當有多個客戶向服務器提出時請求時,服務器一端會分別為每個客戶從一個包含多行文字的文本文件中讀取一行文字,發送給每個客戶,直到文件讀完文件中所有行,服務器一端發出“bye”并停止運行,客戶端也都停止運行。
八:編寫一個圖形用戶界面的應用程序,在窗口中,有一個圖片循環地從窗口的左面移動到窗口的右邊。當鼠標點擊窗口時,圖片停止運動,再次點擊圖片恢復運動。九:編寫程序,在文件中輸入若干個單詞(每個單詞可重復一次或多次)。編程實現統計每個單詞重復次數,并對非重復的單詞進行排序,將排序結果輸出到文件中。十. JDBC技術的應用
——校園卡信息/學生信息/教師信息/圖書信息/宿舍信息/學生會/成績/課程/教室管理/公務員招考系統的設計實現
以校園卡信息管理、學生信息管理、教師信息管理、圖書信息管理、宿舍信息管理、學生會活動管理、成績管理、教室管理等為例,使用JDBC-ODBC數據庫接口,完成對后臺數據庫的插入、刪除、修改、查詢等操作。數據庫系統可采用Sql Server、Access等,要根據完成的不同功能在數據庫系統中定義有關的各種信息表:如在教師信息管理系統中要設計教師基本信息表、教師學習進修情況表、教師獎懲情況表、教師上課情況表等。其他幾個子系統中數據表的設計由同學們根據實際的需求自主完成設計。十一.文本編輯器的設計與實現
設計一個類似于Windows記事本(Notepad)的Java程序。可以打開、新建、保存一個文本文件;對選中的文本進行各種編輯操作(設置字體、字號、字型、對齊方式、背景、前景色、復制、粘貼、剪切、查找、替換等);在文本中能夠插入對象。十二..計算器的設計與實現
設計一個能實現計算器功能的Java程序,可以進行加、減、乘、除(另外可適當加上階乘、正弦、余弦和指數)運算。十三.圖象瀏覽器的設計與實現
設計一個能實現圖象瀏覽與編輯功能的Java程序,包括如下功能:
1)從已有的圖象文件列表中選擇某一個,即可顯示該圖象,并可做旋轉等變換。2)在畫布區域上可以進行各種規則圖形的繪制(如:線段、矩形、多邊形、圓等),還可通過鼠標的拖動自由繪圖。
3)可以連續播放所選文件夾下的所有圖象。十四: 媒體播放器的設計與實現
利用JMF(Java Media Framework)提供的API,實現圖像瀏覽、音頻播放、視頻播放功能。
十五:局域網聊天程序的設計與實現
該程序實現局域網內的聊天功能,包括服務器端程序和客戶端程序兩部分。客戶端程序:可連接到服務器,并將消息發送到服務器端和接受服務器端發送來的信息。服務器端程序:可將消息發送到客戶端和接受客戶端發送來的信息 十六:基于Web的應用
——網上超市/網上書店/網上花店/網上物流/網上招聘/同學錄/網上選課/網上考試系統的設計
應用JSP技術,設計一個類似電子商務、電子政務類的簡單應用系統,可以在網上動態展示各類信息,并根據相應的業務流程進行必要的邏輯處理,系統信息可以進行后臺維護。需要動態顯示的信息要存放數據庫中,數據庫可以用Sql Server、Access;后臺管理要提供對數據庫中信息進行動態維護(包括添加、刪除、修改)的頁面。十七:益智類小游戲的設計與實現
運用多線程和多媒體技術設計一個簡單的益智類小游戲,游戲內容自行構思,不得直接利用網上現有游戲程序,要求有人機交互和界面動畫,游戲過程中有聲音效果,游戲成績能記錄、顯示。
第三篇:JAVA課程設計
JAVA程序設計課程設計報告
目 錄
一、項目背景及意義:...............................................2
二、系統描述...............................................................2
三、分析與設計...........................................................3 1.分析.......................................................................3 2.功能模塊劃分.......................................................3 3.功能模塊流程圖...................................................5 4.各模塊的關鍵代碼...............................................5
四、系統測試...............................................................5
五、課程設計進度.....................................................13
六、心得體會.............................................................13
七、參考文獻.............................................................14
八、附錄.....................................................................14
一、項目背景及意義:
記事本千百年來都在人類的工作生活中起到重要的作用,計算機革命電子產品未出現之前,人們的記事都是基于紙質加筆兩者的簡單記事,也即單純的文本記錄。直到計算機的出現和更新換代,高科技電子產品大行其道,人們日益將在紙質上的記事轉移到將事件記錄在個人電子設備如PC上,現在基于電子移動設備如手機和平板等的記事本app開發更是迅猛,功能更加豐富多彩,能記錄的不單純是文本了,人們能將聲音和圖片甚至視頻結合起來,將一件事“有聲有色”地記錄下來,保存在個人電子設備產品中。近年來產生的采用云存儲技術的“云筆記”,更是能讓人們隨時隨地將集文本、語音、圖像和視頻于一體的事件記錄保存在所謂的“云端”,能同步到個人其他設備中,解決了個人資料和信息跨平臺跨地點的管理問題。
現在我們以有限的資源以及智慧力量,用Java語言編寫一個可以在裝有jar模擬器的個人電子移動設備上使用的簡單記事本軟件,沒視頻記錄功能和基于網絡功能但卻能集文本、聲音和圖像于一起記錄的功能的記事本,我們將輕便和簡潔走向極致!所以此記事本軟件操作起來簡單易上手,能給帶來同學簡單便捷的記事體驗。另外,這不單純是個人人都可以打開的記事本,使用時需要賬號密碼登陸,因此能較好地保障個人隱私。
二、系統描述
Java的前身是Oak,它一開始只是被應用于消費性電子產品中。后來它的開發者們發現它還可以被用于更大范圍的Internet上。1995年,Java語言的名字從Oak編程了Java。1997年J2SE1.1發布。1998年J2SE1.2發布,標志Java2的誕生。十多年來,Java編程語言及平臺成功地運用在網絡計算及移動等各個領域。Java的體系結構由Java語言、Java class、Java API、Java虛擬機組成。它具有簡單、面向對象、健壯、安全、結構中立、可移植和高效能等眾多優點。Java支持多線程編程,Java運行時系統在多線程同步方面具有成熟的解決方案。Java的平臺標準有Java ME,Java SE和Java EE。Java發展到今天,它的卓越成就及在業界的地位毋庸置疑。目前在眾多的支持Java的開發工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 簡稱JDK是大多開發工具的基礎。以上的每種開發工具都有優缺點,對于開發者來說,重要的是要根據自己的開發規模、開發內容和軟硬件環境等因素來選擇一種合適的開發工具。
在本程序設計中,因為需要開發的是記事本程序,規模較小,內容較少,所以選擇了適合初學者使用的eclipse開發工具。
三、分析與設計
1.分析
現在網絡上各種文檔編輯器數不勝數,有EmEditor,UEStudio,GridinSoft Notepad,Notepad++,win32pad,SkimEdit,UniRed,xint。功能也是應有盡有,有能改變字體的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵或問題:有的文件體積相對于一般文字編輯來說太大;有的功能太繁雜,使初級使用者一時難以掌握。僅從日常應用方面來說,一個文本編輯器只需一些簡單實用的功能就夠了。本程序設計就是依照這樣一種使用需要設計了一個簡單的筆記本程序。2.功能模塊劃分
程序構建的記事本程序具有Windows系統記事本工具基本功能,并且能夠創 建多個不同的用戶和保存圖片功能。以下是具體說明: 第一部 登陸界面
(1)用戶名和密碼輸入文本框,供已注冊的用戶輸入用戶名和密碼。(2)登陸控件,在用戶名和密碼正確的前提下,進入軟件主界面。
(3)注冊控件,點擊此按鈕,將進入用戶創建,創建之后用戶名和密碼會自動保存在電腦的相應文件中。第一部分 菜單欄
(1)菜單中有“新健”,“刪除”,“顯示”,“菜單”,“幫助”五個主菜單。(2)“新建”有“新建筆記”“新建筆記本”二個子菜單:分別用于創建新的筆記和新的筆記本。
(3)“刪除”中有“刪除筆記”和“刪除筆記本”二個子菜單,和“新建”相對應。
(4)“顯示”中可以選擇界面的風格,有Metal風格、Windows風格、Motif風格、Nimbus風格;還有界面排版的選擇,可以選擇水平顯示或垂直顯示。(5)“幫助”菜單中有關于筆記本程序的說明,作者等信息。第二部分 筆記本排列區
顯示用戶創建的所有筆記本。第三部分 筆記顯示排列區
此處主要顯示選中筆記本中的所有筆記,并且可以在此區右擊來創建、刪除筆記、查看筆記,當然也可以在菜單欄中的“新建”和“刪除”菜單中創建和刪除筆記。
第四部分 筆記編輯區
此部分為用戶設計選擇操作和右鍵操作,可以在筆記中插入圖片、更改字體顏色、和插入時間;方便用戶進行一系列的編輯操作,增強本記筆記本的用戶體驗性能。
3.功能模塊流程圖
4.各模塊的關鍵代碼
1構造函數創建窗口界面 主菜單,子菜單
public MainFrame(String name){
this.name=name;
this.setUser_path(“Users/”+name);
this.setBook_Path(this.getUser_path()+“/默認筆記本”);
this.setNote_Path(this.getBook_Path()+“/默認筆記”);//
一、菜單界面
menu=new Menu(this);
/**
二、創建三個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);
//
四、設置標題等
this.setTitle(name+“ 的筆記本”);this.setLocation(200,100);this.setSize(1000,600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);2 添加右鍵菜單并為其添加監聽器
public RightPanel(JPanel panel,MainFrame mainFrame)
{ this.mainFrame=mainFrame;this.panel=panel;
//創建一個 文本域存放文字 JTextArea textPane =new JTextPane();//設置自動換行
textPane.setFont(new Font(“", 1, 12));jsp_Pane=new JScrollPane(textPane);//滾輪
//設置鼠標右擊彈框效果
//cut
cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“));
cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設置快捷鍵 ”ctrl x“
cutItem.addActionListener(this);
//copy
copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“));
copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設置快捷鍵 ”ctrl O“
copyItem.addActionListener(this);
//paste
pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“));
pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//設置快捷鍵 ”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“){//復制
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){//插入時間
Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss“);//可以方便地修改日期格式
String hehe = dateFormat.format(now);
textPane.replaceSelection(hehe);
} 設為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();} 系統測試
1、筆記本登陸、用戶注冊
3、菜單欄 a.總菜單
b.新建菜單
c.刪除菜單
d.顯示菜單
e.“菜單”菜單
f.幫助 4.導入筆記、導出筆記、及插入圖片選擇
5.字體顏色選擇
6.插入時間
7、插入圖片
四、課程設計進度
我們進行了若干階段的部署,令課題研究可以在每個階段有條不紊地進行。具體如下:
(一)理論學習和開題論證
1.瀏覽相關網站,查閱與課題研究的相關理論、研究方法; 2.運用文獻研究法,深入學習java理論,對要有關課題研究的知識進行理論上的研究和探討。3,制訂研究計劃和方案。
(二)第一階段
1.以調查法為主開展研究。(1)對有關java的課題設計進行調查,查閱網絡上java應用的設計案例,并分析和總結,尋找思路。(2)對更新頻率快的java應用進行追蹤,采取觀察,評價、討論的方式分析和總結。
2.制訂第二階段實驗方案,為下階段實驗做準備。
(三)第二階段
1.按計劃在繼續第一階段實驗的基礎上,進一步加強java應用的實施和研究。采用實驗法對上一階段的總結的結論進行驗證和拓展。
2.讓同學體驗一下我們初步完成的作品,根據他們用完之后的感受,進一步修正作品存在的問題,完善作品。
(四),總結階段
1.收集和整理研究資料,參照相關書籍分析和研究實驗情況 2.制訂總結階段計劃 3.總結和提煉研究成果 4.全面總結實驗工作 5.解題論證
6.成果展示(課題報告)(五)總結階段(2013.12)整理材料,撰寫課題報告。
五、心得體會
此次課程設計由我們小組一起共同合作完成,花費了差不多兩個月的時間。在這期間我們共同協作,互幫互助取得了很好的效率,也為我們構建友好的同學關系,學習氣氛良好做出了一定的貢獻。在這期間我領略到了團隊協作的重要性,13 也看到了團隊合作的高效率性。還有通過這次試驗我們領悟到了團隊的力量是巨大的,也學習到的一些學習方法,比如追查API,如何在短時間內學習一個自己不懂的東西那就是利用好所有的搜索引擎,多去圖書館找資料。總之此次課程設計我們不僅長了學科知識,在生活上我也長了見識。
六、參考文獻
a.黃曉東 等編著 Java課程設計案例精編(第二版)[M].北京:中國水利水電出版社,2007 b.李興華 等編著 Java開發實戰經典Java開發實戰經典 北京:清華大學出版社,2009 C.李尊朝 蘇軍 Java程序設計(第二版)圖形用戶界面設計、Swing組件 中國鐵道出版社,2007
七、附錄
1.程序結構 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 {
/**打開選擇框 返回詳細地址*/ public static String open_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”請選擇...“);
int judge=jfc1.showOpenDialog(null);
jfc1.setVisible(true);
//得到文件的完全路徑
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;} /**保存選擇框 返回詳細地址*/ public static String save_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”請選擇...“);
int judge=jfc1.showSaveDialog(null);
jfc1.setVisible(true);
//得到文件的完全路徑
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;
}
/**顯示對話框,需要傳遞 標題和顯示內容*/ public static void showMessage(String text,String title){
JOptionPane.showMessageDialog(null,text,title,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION);} /**新建筆記時將筆記設為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();
} } /**刪除文件 傳一個文件地址 返回一個boolean 為了方便刪除文件夾才將此方法提取出來*/ public static boolean deleteFile(String path){
File file=new File(path);
return(file.delete());}
/**刪除文件 傳一個文件地址
返回一個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;/** * 處理用戶屬性 * 為用戶創建自己的專有途徑 * 如果有了則不創建 */ import java.io.*; import javax.swing.JTextPane;import javax.swing.text.Document; import view.MainFrame; public class User { public User(String name) { //如果第一次登錄的話,為用戶新建一個專屬區 File file=new File(”Users/“+name); if(!file.exists()) { try { file.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登錄創建默認筆記本 File book=new File(”Users/“+name+”/默認筆記本“); try { book.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登錄創建默認筆記 File note=new File(”Users/“+name+”/默認筆記本“+”/默認筆記.ser“); try { note.createNewFile(); Tools.setDocument(note); } catch(Exception e1){ e1.printStackTrace(); } } //構造完畢 正式進入筆記本 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 {//默認 NImbus風格 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(”注冊“);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);//設置透明 this.setTitle(”筆記本登陸“); this.setSize(300,200); // 獲取屏幕分辨率,以此設置程序出現在屏幕中央 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, ”兩次密碼輸入不一樣,請重新輸入“, ”錯誤提示“,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, ”創建賬戶成功“, ”恭喜你“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); this.dispose(); login_zhuce lz = new login_zhuce(); } } else { JOptionPane.showMessageDialog(null,”該用戶名已被占用,請重新輸入用戶名“,”錯誤提示“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); System.out.println(”該用戶名已被占用,請重新輸入用戶名“); this.jtf1.setText(null); } // if(this.jpf1.getText()!=this.jpf2.getText()){ // JOptionPane.showMessageDialog(null, ”兩次密碼輸入不一樣,請重新輸入“, ”錯誤提示“, // 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;//分別存儲兩片 //第一片聲明 JPanel allBookPanel,firstTempPanel;//所有筆記 JButton allBook;//所以筆記,排序,回收站的按鈕 JScrollPane allBookjsp;//第二片聲明 JPanel secondTempPanel,timePaenl_o;JButton allBook_o;//所以筆記,排序,回收站的按鈕 JScrollPane timePaenljsp_o; //處理文件部分內容 File book;String [] book_name;JLabel[] member; JPanel panel;MainFrame mainFrame;public final int TOTAL=20; /**************筆記本類型部分聲明結束*****************/ public LeftPanle(JPanel panel,MainFrame mainFrame){ this.mainFrame=mainFrame;this.panel=panel;//處理第一片***11111111111 //設置初始界面 顯示 所以筆記,排序,回收站的按鈕 //ImageIcon imageIcon=new ImageIcon(”image/note.png“);allBook=new JButton(”所有筆記“,new ImageIcon(”image/expand.png“));allBook.addActionListener(this);//點擊按時間排序時顯示第二片 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);//滾動 firstPanel=new JPanel(new BorderLayout());//將第一片設置為邊界布局 firstPanel.add(allBook,”North“);firstPanel.add(allBookjsp); //處理第二片***222222 //僅有一個按鈕 allBook_o=new JButton(”所有筆記“,new ImageIcon(”image/collapse.png“));allBook_o.addActionListener(this);//點擊所有筆記時 顯示第一片 secondPanel=new JPanel(new BorderLayout());//將第二片設為 邊界布局 secondPanel.add(allBook_o,”North“); //進行卡片布局 cardLayout=new CardLayout();panel.setLayout(cardLayout);panel.add(firstPanel,”1“);panel.add(secondPanel,”2“); } //更新leftPanel中的筆記本,在新建或刪除筆記本是需要刷新 并附帶刷新右邊兩個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 { //為每個好友設置頭像和名字,每一個好友用 JLabel組件 存放 ImageIcon imageIcon=new ImageIcon(”image/note.png“); member[i].setText(book_name[i]); member[i].setIcon(imageIcon); member[i].addMouseListener(this);//為每一種筆記的排序方式注冊監聽 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 //將選中部分字體設為紅色 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); // // // // } } //保存當前筆記本的路徑 如...mainFrame.setBook_Path(book.getAbsolutePath()+”“+jl.getText());//點擊打開一個筆記本 刷新中間的目錄 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、將主界面分為四塊 北邊的菜單 以及左中右的筆記本目錄,筆記目錄和筆記內容 * 2、左邊目錄為卡片布局,實現點了”所有筆記“彈出所有筆記的效果 * 3、中間顯示筆記目錄 采用網格布局 每個網格用了JMenuItem * 4、右邊是一個JTextArea可能會改成JTextPane * 5、實現了新建刪除筆記(本),但界面刷新有點問題(會重疊) * 6、采用MVC的思想實現時事刷新界面的效果 * 7、鼠標右擊刪除新建 測試成功(鼠標右擊是筆記本的新建與刪除沒有) * 8、注冊登錄系統 已測試成功 在包login里面 * 9、圖片的問題已成功解決 * 10、可以更改字體顏色(大小沒有寫),以及插入時間等 * 11、顯示處添加實現多種版本的切換(如可切換成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;//三個大Panel JSplitPane splitM_R,splitL_M; LeftPanle leftPanel;//左邊第一個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()+”/默認筆記本“); this.setNote_Path(this.getBook_Path()+”/默認筆記“); // 一、菜單界面 menu=new Menu(this); /** 二、創建三個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); // 四、設置標題等 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風格“),new JMenuItem(”Windows風格“),new JMenuItem(”Motif風格“),new JMenuItem(”Nimbus風格“),new JMenuItem(”水平顯示“),new JMenuItem(”垂直顯示“) }; //處理menu_menu JMenuItem[] menu_item={ new JMenuItem(”丨賬戶“),new JMenuItem(”丨導入“),34 new JMenuItem(”丨導出“),new JMenuItem(”丨注銷“),new JMenuItem(”丨退出“) }; //處理help_menu JMenuItem[] help_item={ new JMenuItem(”關于作者“),new JMenuItem(”關于筆記本“)}; 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(”選中筆記(本)時才可刪除“);show_menu=new JMenu(”顯示“);help_menu=new JMenu(”幫助“);menu_menu=new JMenu(”菜單“); //將菜單項添加到各菜單 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)//添加分隔線 將導入和導出框起來 menu_menu.addSeparator();} //添加事件監聽 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“); } //構造完畢 //實現風格轉換 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); } //實現監聽后的動作 @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,”請輸入筆記的名字“,”新筆記“,JOptionPane.INFORMATION_MESSAGE |JOptionPane.OK_OPTION); //如果用戶點取消 或沒有輸入文件名 則不用新建 if(note_name!=null){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //將新建的筆記格式設為Document對象 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,”請輸入筆記的名字“,”新筆記“,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(); //將筆記本路徑設為新建筆記本的路徑 mainFrame.setBook_Path(mainFrame.getUser_path()+”/“+book_name); mainFrame.leftPanel.update_Left_view(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } //改變的筆記本總數 刷新左邊Panel mainFrame.leftPanel.update_Left_view(); } } }else if(str.equals(”刪除筆記“)){ Tools.deleteFile(mainFrame.getNote_Path()); //刪除筆記之后需要刷新右邊的兩個Panel mainFrame.midPanel.update_Mid_View(); }else if(str.equals(”刪除筆記本“)){ Tools.deleteFolder(mainFrame.book_Path); //筆記本目錄發生改變 mainFrame.leftPanel.update_Left_view(); }else if(str.equals(”關于作者“)){ Tools.showMessage(”鄧偉杰、蘇俊欽、陳通、陳盛鋒、林健祺、尹國瑜、溫天宇、趙潮順“, ”幫助“); }else if(str.equals(”關于筆記本“)){ Tools.showMessage(”還存在許多BUG,望老師指正“, ”呵呵“); }else if(str.equals(”丨賬戶“)){ Tools.showMessage(”姓名:“+mainFrame.name, ”用戶信息“); }else if(str.equals(”丨導入“)){//即打開一個筆記 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(”丨導出“)){//即另存為一個筆記 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);//重新調用一下拆分窗格 }else if(str.equals(”水平顯示“)){ mainFrame.showStyle(1);}else { try{ if(str.equals(”Metal風格“)){ this.changeFlavor(1); }else if(str.equals(”Windows風格“)){ this.changeFlavor(2); }else if(str.equals(”Motif風格“)){ this.changeFlavor(3); }else if(str.equals(”Nimbus風格“)){ 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; //鼠標右擊部分 JPopupMenu right_Click; JMenuItem delete_book,properties_book,new_book; public final int TOTAL=20;public String filename;public String temp_path=null;//右擊時記錄選中筆記的途徑 public MidPanel(JPanel panel, MainFrame main){ this.panel=panel; this.mainFrame=main; jp1=new JPanel(); jp1.setLayout(new GridLayout(TOTAL,1,1,4)); //初始化20個MenuItem items =new JMenuItem[TOTAL]; for(int j=0;j items[j]=new JMenuItem(”“); items[j].addMouseListener(this); } //處理鼠標右擊問題 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添加滾動條 panel.setLayout(new BorderLayout()); panel.add(label,”North“); panel.add(jscroll2); } //在新建或刪除是需要刷新,并附帶刷新 RightPanel中的內容 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);//避免某個筆記被刪除之后還可以被點的情況 } for(int i=0;i items[i].setText(lists[i].getName());//創建20個JLanel items[i].addActionListener(this); items[i].addMouseListener(this); jp1.add(items[i],i); //在該項上右擊彈出一個選擇框 items[i].setComponentPopupMenu(right_Click); } //更新右邊的Panel 里面應該沒有內容 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,”請輸入筆記的名字“,”新筆記“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); //如果用戶點了取消 則不用新建筆記 if(!note_name.equals(”null“)){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //為新建的筆記寫入一個空白的對象 避免打開時報指針的錯誤 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(); //刪除筆記之后需要刷新右邊的兩個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 //設置選中部分的情況 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); } } //記錄被要在右邊顯示出內容的筆記途徑 可以在菜單中刪除該筆記 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();//將當前筆記的途徑 存到輔助路徑中 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實現圖片即單個文字更改字體或顏色的功能 */ 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;//鼠標右擊部分 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; //創建一個 文本域存放文字 JTextArea textPane =new JTextPane(); //設置自動換行 textPane.setFont(new Font(”“, 1, 12)); jsp_Pane=new JScrollPane(textPane);//滾輪 //設置鼠標右擊彈框效果 //cut cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“)); cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設置快捷鍵 ”ctrl x“ cutItem.addActionListener(this); //copy copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“)); copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//設置快捷鍵 ”ctrl O“ copyItem.addActionListener(this); //paste pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“)); pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//設置快捷鍵 ”ctrl v“ pasteItem.addActionListener(this); saveItem=new JMenuItem(”Save“,new ImageIcon(”image/save.png“)); saveItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl s“)); saveItem.addActionListener(this); //將各菜單項添加到 右擊菜單組中 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); //為右擊注冊監聽 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(”插入時間“); timeButton.setToolTipText(”點擊可以插入當前時間“); 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);} //更新文本框 在新建或刪除 筆記或筆記本 的時候需要刷新 public void update_Right_view(){ textPane.setText(”“);textPane.setEditable(false);} //保存當前筆記 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“){//復制 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){//插入時間 Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式 String hehe = dateFormat.format(now); textPane.replaceSelection(hehe); } } } 課 程 設 計 課程名稱 Java語言課程設計 題目名稱 人事管理系統的設計與實現 學生學院 應用數學學院 專業班級 學 號 學生姓名 指導教師 劉科峰 2014 年 10 月 29 日 一.設計內容 自學Swing圖形界面設計和數據庫程序設計。開發用于某單位的人事管理系統。該系統要求實現以下功能: 1.員工信息管理包括:員工信息一覽表、新員工的建立、修改 2.薪資福利管理:考勤與薪資的連動計算、薪資與福利的設置 3.考勤假期管理:考勤項目錄入, 實現考勤信息的查詢、統計、匯總 4.人事報表管理:按照員工性別,數目,薪酬自動生成相關報表, 可自定義統計分析條件并可對歷史報表進行管理。 設計亮點 1.null布局方式 Swing圖形界面設計中有很多布局方式,通過本次學習了解到了FlowLayout,BorderLayout,GridLayout以及null布局,就這四種布局方式而言,null布局的優點在于可以將組建的位置精準到坐標值,可以把組件放到任意想放置的位置,另外可以通過null去設置組件的大小,相較于其他布局方式來說是一個很大的優勢。但同時它的缺點在于不能根據Frame的大小變化而改變位置。 2.組件部分屬性的設計 Swing中有很多方法是用來實現組件屬性設置的,比如button.setVisible(false);按鈕通過調用這個方法實現不可見,這是我此次課程設計中的一個亮點,因為組件是沒有設置大小的方法的,只有依靠于相應的布局方式才能改變它的大小,通過設置多幾個按鈕設為不可見,將所要可見按鈕實現大小以及位置的控制是一種很好的方法。 二、設計方案 1主界面(只列出界面設計方面的代碼) JPanel panel=new JPanel();JTable table=null;JButton ibtn=new JButton(“員工信息”);JButton cbtn=new JButton(“考勤管理”);JButton mbtn=new JButton(“薪資管理”);JButton tbtn=new JButton(“人事報表”);ImageIcon rtou = new ImageIcon(“rentou.jpg”); JLabel imgLabel=new JLabel(rtou); //上面代碼定義了一個面板與四個標簽,并引入了一個圖片 panel.setLayout(new FlowLayout());//設置面板為流布局 panel.add(ibtn);panel.add(cbtn);panel.add(mbtn);panel.add(tbtn);panel.setBackground(Color.GRAY); //將按鈕加到面板中,設置面板為灰色 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);/*圖片標簽以邊框布局放置在中間,將面板也以邊框布局放置在下面,可見,灰色,點擊關閉程序*/ (2)查詢員工界面(只列出界面設計方面的代碼) 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(); /*定義和各個組件,4個標簽,兩個文本框,兩個復選框,兩個按鈕,兩個面板容器*/ spanel.setLayout(new FlowLayout()); vpanel.setLayout(new FlowLayout(FlowLayout.CENTER,45,25)); bumenbox.addItem(“"); bumenbox.addItem(”管理部“); bumenbox.addItem(”生產部“); bumenbox.addItem(”業務部“); zhiweubox.addItem(”“); zhiweubox.addItem(”部長“); zhiweubox.addItem(”副部長“); 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); //將各個組件放進對應面板,設置相關屬性 this.add(spanel,BorderLayout.NORTH); this.add(vpanel,BorderLayout.SOUTH); this.setBounds(300, 180, 600, 350); this.setVisible(true); this.getContentPane().setBackground(Color.GRAY); //將面板以邊框布局放入框架中,設置屬性(3)增加員工信息界面 JPanel panel=new JPanel(); JLabel timeLabel=new JLabel(”時間“);JLabel allnumLabel=new JLabel(”員工總數“); 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(”生產部“);JLabel bdpLabel=new JLabel(”業務部“);JLabel xmLabel=new JLabel(”項目“);JLabel xzLabel=new JLabel(”細則“);JLabel stLabel=new JLabel(”數據統計“); 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); //將組件加到相應面板中 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布局,設置組建坐標值 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); //將面板放入框架,設置相應屬性(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(”創建薪資表“);JButton rbtn=new JButton(”創建人事表“); 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(”創建考勤表“);JComboBox timebox =new JComboBox();JTextField newfield = new JTextField();JButton btn=new JButton(”確認“);JButton nbtn=new JButton(”創建");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); 三、結果和數據處理 四、結論 1.Swing圖形界面 圖形用戶界面(GUI)是程序不可或缺的一部分,它便于用戶和程序的交互。在Swing界面中是以Frame為框架,采用合理的布局方式(FlowLayout,BorderLayout,GridLayout,null),將Panel加入框架之中,而實現界面的各個組件將調用各種方法設置自身屬性實行可視化界面以及加入到面板之中。再通過事件監聽器實現事件的監聽預處理機制。 2.數據庫 在這次課程設計中哦我主要負責Swing圖像界面,對于數據庫只做了最簡單的了解。程序中采用了最流行的關系型數據庫mysql,雪化了mysql的建立,刪除,與修改以及使用sql語言對數據庫進行一些簡單的操作,將按鈕等設置的監聽事件與數據庫相連接。 五、問題與討論 1.組件的方法調用 在這次課程設計中,用到了很多的組件,例如Button,Jlabel,TextField,ComBox,等。Swing圖形界面也確實提供了很多方法去設置相關組件的屬性,例如label.setVisible(false);設置標簽不可見等很多方法,只要查看API文檔幾乎就能實現很多功能,但是對于按鈕等最常見的組件來說設置大小如果不依靠相關布局方式很難設置,我在程序中之所以運用了很多的bull布局方式就是為了實現組件大小的設置,如果說能有一個方法直接設置組件大小而不受其他組件或容器影響就能使代碼很簡潔了。2.相對布局 在編寫圖像界面的程序的時候,我用了很多的布局方式,有FlowLayout,BorderLayout,GrirLayout,null等,其中null布局用的最多。null布局的優點在于可以將組建的位置精準到坐標值,可以把組件放到任意想放置的位置,另外可以通過null去設置組件的大小,相較于其他布局方式來說是一個很大的優勢。但同時它的缺點在于不能根據Frame的大小變化而改變位置。其他三種布局方式雖然實現了歲Frame大小變動而改變組件大小及位置但是不容易控制,如果null布局能實現相對布局就是很好的一種布局方式了。 Java課程設計心得體會 仿QQ交友網站是為了適應網絡時代人們交友,交流等而創建的一個網站。通過本次課程設計,我對web開發有了更深刻的認識。 仿QQ交友網站的每一個模塊實現的功能簡單,JSP頁面主要實現頁面展示的功能,而servlet則負責頁面請求的跳轉以及對數據庫數據的更新操作。 回顧起此課程設計,感慨頗多,從選題到定稿,從理論到實踐,在這些日子里,我們付出了很多的辛苦和精力,但是學到很多很多的東西,不僅鞏固了以前學過的知識,還學到了很多書本上沒有的知識。通過這次課程設計,我懂得了理論與實際相結合的重要性,只有把學的理論知識與實踐相結合,才能提高自己的實際動手能力和思考的能力。 其次,這次課程設計讓我們系統學習數據庫知識,這對我們的編程能力有很大的提高。更為重要的是,這次課程設計是我們小組6人一起合力完成的,讓我們深刻體會到團隊合作的重要性。當然程序中依然有很大的不足,望老師加以批評和指正。第四篇:Java課程設計報告
第五篇:Java課程設計心得體會