




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟 件 學 院課程設(shè)計報告書課程名稱 面向?qū)ο笳n程設(shè)計 設(shè)計題目 記事本程序 專業(yè)班級 軟件08-02 學 號 0820010202 姓 名 * 指導教師 2010 年 12 月25 目錄1 設(shè)計時間12 設(shè)計目的13設(shè)計任務14 設(shè)計內(nèi)容14.1 需求分析14.1.1需求說明14.1.2功能需求14.2概要設(shè)計24.2.1程序設(shè)計思路24.2.2程序運行環(huán)境及界面24.3功能模塊設(shè)計34.3.1功能模塊說明圖34.3.2 自定義類及接口說明44.3.3 類中方法介紹54.4異常處理104.5程序運行與調(diào)試分析104.5.1.開始調(diào)試104.5.2各菜單實現(xiàn)114.5.3 退出155 總結(jié)與展
2、望16程序源代碼:17參考文獻241 設(shè)計時間2010-12-20至2010-12-312 設(shè)計目的記事本主要是對文字進行編輯處理的軟件。能進行新建、打開、保存等功能。另外還可以根據(jù)用戶的需要查找替換相應的文字,實現(xiàn)編輯功能。通過面向?qū)ο蟪绦蛟O(shè)計對自己所學過的的知識加以掌握和運用。鞏固面向?qū)ο笤O(shè)計理念的理解,熟練java設(shè)計語言的運用。3設(shè)計任務記事本程序。要求如下:(1)使用圖形用戶界面實現(xiàn)。(2)必須有菜單、彈出式對話框組件的實現(xiàn)。(3)能實現(xiàn)文字編輯、保存、另存為、查找、替換功能,其它功能可自行豐富。(4)系統(tǒng)使用的gui組件不得少于5種,越全面越好,但要合適(和諧界面)。提示:使用文件
3、輸入輸出流。4 設(shè)計內(nèi)容 4.1 需求分析4.1.1需求說明現(xiàn)在網(wǎng)絡(luò)上各種文檔編輯器數(shù)不勝數(shù),有emeditor ,uestudio ,word。功能也是應有盡有,有能改變字體的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵或問題:有的文件體積相對于一般文字編輯來說太大;有的功能太繁雜,使初級使用者一時難以掌握。僅從日常應用方面來說,一個文本編輯器只需一些簡單實用的功能就夠了。本程序設(shè)計就是依照這樣一種使用需要設(shè)計了一個簡單的實現(xiàn)特定功能的記事本程序。4.1.2功能需求本程序要構(gòu)建的記事本程序參照了windows操作系統(tǒng)的記事本工具,其功能有以下幾個方面:(1).菜單中有“文件”,“
4、編輯”,“作者”三個主菜單。(2).“文件”有“新建”“打開”“保存”“退出”四個子菜單:分別用于新建文件,打開文件,保存文件,退出記事本。(3).“編輯菜單”有“查找、替換、時間日期”功能。(4).“作者”菜單中有關(guān)于記事本程序的作者信息。4.2概要設(shè)計4.2.1程序設(shè)計思路java記事本程序是:圖形界面、流與文件等技術(shù)的綜合應用。圖形界面的實現(xiàn):考慮到簡單、實用、高效等特點,大部分選擇了awt來完成實現(xiàn),其中也有swing組件。文本編輯區(qū)就選用了taxtarea作為主要的部件。文件操作的實現(xiàn):利用了字符文件流filereader和filewriter類來實現(xiàn)。由于java的特性,可能用任何
5、一個編輯器來編輯,于是就將windows中的記事本作為模仿對象,根據(jù)實現(xiàn)情況刪減了其中的一些功能。在設(shè)計類的時候,考慮到簡單明了,就用了三個類,一個主類、一個類設(shè)計構(gòu)造函數(shù)實現(xiàn)監(jiān)聽接口作為程序的整體框架,一個類設(shè)計構(gòu)造函數(shù)實現(xiàn)查找替換功能。所有的對象和方法都是在默認屬性類中創(chuàng)建和實現(xiàn)的,以及為各組件注冊事件監(jiān)聽程序也是在默認屬性類中實現(xiàn)的。主類完成對象的實例化及顯示。這們設(shè)計的優(yōu)點是:條理清晰,容易理解,容易修改。這樣設(shè)計的缺點是:不利于共享類中的方法。4.2.2程序運行環(huán)境及界面1.操作系統(tǒng):windows xp2.開發(fā)語言: java3.開發(fā)工具: myeclipse4.運行界面: 如圖4
6、-1所示圖4-1運行界面4.3功能模塊設(shè)計4.3.1功能模塊說明圖首先創(chuàng)建一個名為notebook的類并繼承frame類實現(xiàn)監(jiān)聽接口作為最底層的容器(具體過程在“4.3.2自定義類及接口說明”作說明)。菜單欄中有“文件”、“編輯”、“作者”三項菜單,分別添加的相應的項,各實現(xiàn)其功能。如圖4-2所示圖4-2功能模塊說明圖4.3.2 自定義類及接口說明1.myfinddialog類l 繼承dialog類l 實現(xiàn)actionlistene接口l 實現(xiàn)查找替換功能class myfinddialog extends dialog implements actionlistener定義查找和替換的標簽和
7、文本域 label lfind=new label(查找字符串); label lreplace=new label(替換字符串); textfield tfind=new textfield(10); textfield treplace=new textfield(10); button bfind=new button(查找); button breplace=new button(替換); textarea ta;2.note類l 繼承frame類l 實現(xiàn)actionlistener接口l 作為程序的整體框架class note extends frame implements act
8、ionlistener定義菜單,菜單項,對話框等。menubar mb = new menubar();menu item1=new menu(文件);menuitem subitem11=new menuitem(新建,new menushortcut(keyevent.vk_a, false);menuitem subitem23=new menuitem(時間日期);menu item3=new menu(作者);menuitem subitem31=new menuitem(作者信息);myfinddialog finddlg=new myfinddialog(this,tf);3.n
9、otebook類l 主類,完成對象的實例化及顯示public class notebookmain方法中實例化news note();顯示界面。4.3.3 類中方法介紹1.myfinddialog類(1)構(gòu)造方法:myfinddialog(frame owner,textarea ta)設(shè)計構(gòu)造函數(shù),帶有指定的所有者框架和標題。方法部分內(nèi)容如下:設(shè)置大小,并添加類中定義的各個組件。super(owner,查找); this.ta=ta; setlayout(null); lfind.setbounds(10,30,80,20); lreplace.setbounds(10,70,80,20);
10、 add(breplace); setresizable(false); bfind.addactionlistener(this); breplace.addactionlistener(this); 實現(xiàn)關(guān)閉對話框時的監(jiān)聽。 addwindowlistener(new windowadapter() public void windowclosing(windowevent e) myfinddialog.this.dispose(); );(2)顯示查找和替換的對話框方法:showfind()和showreplace()方法部分內(nèi)容如下:調(diào)用時顯示查找對話框, public void s
11、howfind() settitle(查找); setsize(280,60); setvisible(true);調(diào)用時顯示查找替換對話框 public void showreplace() settitle(查找替換); setsize(280,110); setvisible(true); (3)查找方法: private void find()方法部分內(nèi)容如下: string text=ta.gettext(); string str=tfind.gettext(); int end=text.length(); int len=str.length(); int start=ta.g
12、etselectionend();/獲取此文本組件中選定文本的結(jié)束位置。 if(start=end) start=0; for(;start=end-len;start+) if(text.substring(start,start+len).equals(str) ta.setselectionstart(start); ta.setselectionend(start+len); return; /若找不到待查字符串,則將光標置于末尾 ta.setselectionstart(end); ta.setselectionend(end);(4)替換方法: private void repla
13、ce()方法部分內(nèi)容如下: string str=treplace.gettext(); if(ta.getselectedtext().equals(tfind.gettext() /用指定替換文本替換指定開始位置與結(jié)束位置之間的文本 ta.replacerange(str,ta.getselectionstart(),ta.getselectionend(); else find(); public void actionperformed(actionevent e) if(e.getsource()=bfind) find(); else if(e.getsource()=brepla
14、ce) replace(); 2.note類(1)構(gòu)造方法:note()方法部分內(nèi)容如下:設(shè)置標題,大小super(記事本);setbounds(100,100,600,400);添加組件add(tf);setmenubar(mb);mb.add(item1);item1.add(subitem11);添加指定的操作偵聽器,以從此菜單項接收操作事件。subitem11.addactionlistener(this); subitem31.addactionlistener(this);setvisible(true); addwindowlistener(new windowadapter()
15、(2)窗口關(guān)閉監(jiān)聽方法: void windowclosing(windowevent e)方法部分內(nèi)容如下:關(guān)閉時提示是否退出。 int option=joptionpane.showconfirmdialog( note.this, 確定退出程序? , 提示 ,joptionpane.yes_no_cancel_option); if(option=joptionpane.yes_option) if(e.getwindow()=note.this) system.exit(0); else return; );(3)發(fā)生操作時調(diào)用該方法:public void actionperform
16、ed(actionevent e)方法部分內(nèi)容如下: /-新建- if(e.getsource()=subitem11) tf.settext(); /-打開- if(e.getsource()=subitem12) /-保存- if(e.getsource()=subitem13) /-另存為- if(e.getsource()=subitem14) /-退出- if(e.getsource()=subitem15) /-查找-if(e.getsource()=subitem21) finddlg.showfind(); /-替換- if(e.getsource()=subitem22) f
17、inddlg.showreplace(); /-日期- if(e.getsource()=subitem23) /-作者- if(e.getsource()=subitem31) tf.settext(課程名稱: java課程設(shè)計 +n+學院: 軟件工程學院 +n+班級: 嵌入式系08-02班 +n+姓名: 馮雪連 +n+學號: 0820010202); 3.notebook類主類包含main方法,實例化news note();顯示界面。public static void main(string args)new note();4.4異常處理在運行程序代碼是有可能會產(chǎn)生異常情況或異常事件,為
18、了避免這種情況,就需要在程序中用到j(luò)ava異常處理機制。本程序中選用的異常處理機制是try,catch。捕獲處理異常的第一步是用try選定要監(jiān)控的異常范圍,try后跟隨catch代碼塊捕獲異?!癳x.printstacktrace();”語句在命令行打印異常信息在程序中出錯的位置及原因。例如“打開”監(jiān)聽中運用到異常處理。其它的地方于此類似。tryfile file=jc.getselectedfile();fileinputstream fis=new fileinputstream(file);byte buf=new byte10*1024;int len=fis.read(buf);tf
19、.append(new string(buf,0,len);catch(exception ex)ex.printstacktrace();4.5程序運行與調(diào)試分析4.5.1.開始調(diào)試出現(xiàn)記事本界面并輸入幾行文字。如圖4-3圖4-3 調(diào)試運行界面4.5.2各菜單實現(xiàn)1文件菜單。如圖4-4所示圖4-4 文件菜單(1)打開文件界面。如圖4-5圖4-5 “打開”對話框(2)保存文件界面。如圖4-6圖4-6 保存對話框(3)退出程序界面。如圖4-7圖4-7 退出對話框2編輯菜單。如圖4-8圖4-8 編輯菜單(1) 查找界面。如圖4-9圖4-9 查找對話框(2)替換界面。如圖4-10圖4-10超找替換對
20、話框(3)顯示當時時間。如圖4-11圖4-11 顯示實踐3作者菜單。如圖4-124-12 作者菜單(1)顯示作者信息。如圖4-13圖4-13 顯示作者信息4.5.3 退出提示是否確定退出。如圖4-14圖4-14 退出程序5 總結(jié)與展望經(jīng)過差不多兩個星期的努力,基本上完成我的java課程設(shè)計簡單的記事本程序,基本上實現(xiàn)了我在需求分析時所預期的功能。通過這次的課程設(shè)計,使將我從書本上學習到的理論知識用到了實踐上,從而進一步鞏固和豐富了我所學過的知識,讓我更深層次地認識到j(luò)ava及其強大的功能。同時,做這門課程設(shè)計也進一步加強了我的動手能力。為了完成好這次課程設(shè)計,我提前做了較多的準備,一邊上網(wǎng)查找
21、相關(guān)資料,另一方面查閱相關(guān)書籍。在這過程中也無形中鍛煉了我的思維分析、遇到問題及想方設(shè)法通過各種途徑解決問題的能力。但是,設(shè)計過程中也存在一些問題,例如java程序設(shè)計的封裝性在個人的設(shè)計中沒有足以體現(xiàn),更為理想的是將各個模塊封裝成類,方便共享調(diào)用,但是由于本人知識淺陋以及時間等其他原因,使得這些想法沒有實現(xiàn),這是這次課程設(shè)計的一點遺憾。程序源代碼:import java.awt.*; import java.awt.event.*;import java.io.bufferedreader;import java.io.bufferedwriter;import java.io.file;i
22、mport java.io.fileinputstream;import java.io.filenotfoundexception;import java.io.filereader;import java.io.filewriter;import java.io.ioexception;import java.util.calendar;import javax.swing.jfilechooser;import javax.swing.joptionpane;/查找 替換 類myfinddialogclass myfinddialog extends dialog implements
23、actionlistener label lfind=new label(查找字符串); label lreplace=new label(替換字符串); textfield tfind=new textfield(10); textfield treplace=new textfield(10); button bfind=new button(查找); button breplace=new button(替換); textarea ta; /構(gòu)造函數(shù) public myfinddialog(frame owner,textarea ta) super(owner,查找);/構(gòu)造一個初始時
24、不可見、無模式的 dialog,帶有指定的所有者框架和標題。 this.ta=ta; setlayout(null); lfind.setbounds(10,30,80,20); lreplace.setbounds(10,70,80,20); tfind.setbounds(90,30,90,20); treplace.setbounds(90,70,90,20); bfind.setbounds(190,30,80,20); breplace.setbounds(190,70,80,20); add(lfind); add(tfind); add(bfind); add(lreplace)
25、; add(treplace); add(breplace); setresizable(false); bfind.addactionlistener(this); breplace.addactionlistener(this); addwindowlistener(new windowadapter() public void windowclosing(windowevent e) myfinddialog.this.dispose(); ); /構(gòu)造函數(shù)結(jié)束 public void showfind() settitle(查找); setsize(280,60); setvisibl
26、e(true); public void showreplace() settitle(查找替換); setsize(280,110); setvisible(true); private void find() /查找方法 string text=ta.gettext(); string str=tfind.gettext(); int end=text.length(); int len=str.length(); int start=ta.getselectionend();/獲取此文本組件中選定文本的結(jié)束位置。 if(start=end) start=0; for(;start=end
27、-len;start+) if(text.substring(start,start+len).equals(str) ta.setselectionstart(start); ta.setselectionend(start+len); return; /若找不到待查字符串,則將光標置于末尾 ta.setselectionstart(end); ta.setselectionend(end); /*public button getbfind() return bfind; */ private void replace() string str=treplace.gettext(); if
28、(ta.getselectedtext().equals(tfind.gettext() /用指定替換文本替換指定開始位置與結(jié)束位置之間的文本 ta.replacerange(str,ta.getselectionstart(),ta.getselectionend(); else find(); public void actionperformed(actionevent e) if(e.getsource()=bfind) find(); else if(e.getsource()=breplace) replace(); /note類 class note extends frame
29、implements actionlistenertextarea tf=new textarea();menubar mb = new menubar();menu item1=new menu(文件);menuitem subitem11=new menuitem(新建,new menushortcut(keyevent.vk_a, false);menuitem subitem12=new menuitem(打開,new menushortcut(keyevent.vk_o, false);menuitem subitem13=new menuitem(保存,new menushortc
30、ut(keyevent.vk_s, false);menuitem subitem14=new menuitem(另存為);menuitem subitem15=new menuitem(退出);menu item2=new menu(編輯);menuitem subitem21=new menuitem(查找,new menushortcut(keyevent.vk_f, false);menuitem subitem22=new menuitem(替換,new menushortcut(keyevent.vk_h, false);menuitem subitem23=new menuite
31、m(時間日期);menu item3=new menu(作者);menuitem subitem31=new menuitem(作者信息);myfinddialog finddlg=new myfinddialog(this,tf);note()super(記事本);setbounds(100,100,600,400);add(tf);setmenubar(mb);mb.add(item1);item1.add(subitem11);subitem11.addactionlistener(this);item1.add(subitem12);subitem12.addactionlistene
32、r(this);item1.add(-);item1.add(subitem13);subitem13.addactionlistener(this);item1.add(subitem14);subitem14.addactionlistener(this);item1.add(-);item1.add(subitem15);subitem15.addactionlistener(this);/subitem15.addactionlistener(new monitor();mb.add(item2);item2.add(subitem21);subitem21.addactionlist
33、ener(this);item2.add(subitem22);subitem22.addactionlistener(this);item2.add(-);item2.add(subitem23);subitem23.addactionlistener(this);mb.add(item3);item3.add(subitem31);subitem31.addactionlistener(this);setvisible(true); addwindowlistener(new windowadapter() public void windowclosing(windowevent e)
34、int option=joptionpane.showconfirmdialog( note.this, 確定退出程序? , 提示 ,joptionpane.yes_no_cancel_option); if(option=joptionpane.yes_option) if(e.getwindow()=note.this) system.exit(0); else return; );public void actionperformed(actionevent e) /新建 if(e.getsource()=subitem11) tf.settext(); /打開 if(e.getsour
35、ce()=subitem12) jfilechooser jc=new jfilechooser();jc.showopendialog(this);tryfile file=jc.getselectedfile();fileinputstream fis=new fileinputstream(file);byte buf=new byte10*1024;int len=fis.read(buf);tf.append(new string(buf,0,len);catch(exception ex)ex.printstacktrace(); /保存 if(e.getsource()=subi
36、tem13) file f2 = null; jfilechooser jfc2 = new jfilechooser(); int num2 = jfc2.showsavedialog(this); /彈出一個 save file 文件選擇器對話框 if(num2=jfilechooser.approve_option) f2=jfc2.getselectedfile(); this.settitle(f2.getname(); try filewriter fw = new filewriter(f2); bufferedwriter bw = new bufferedwriter(fw)
37、; bw.write(tf.gettext(); bw.close(); fw.close(); catch(ioexception e2)e2.printstacktrace(); /另存為 if(e.getsource()=subitem14) file f2 = null; jfilechooser jfc2 = new jfilechooser(); int num2 = jfc2.showsavedialog(this); if(num2=jfilechooser.approve_option) f2=jfc2.getselectedfile(); this.settitle(f2.getname(); try filewriter fw = new filewriter(f2); bufferedwriter bw = new bufferedwriter(fw); bw.write(tf.gettext(); bw.close(); fw.close(); catch(ioexception e2)e2.printstacktrace(); /退出 if(e.getsource()=subitem15) int a = joptionpane.showconfirmdialog(this,文件已被改變,是否要保存?,提示,joptionpan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無機顏料制造考核試卷
- 樂器聲音的數(shù)字化處理與優(yōu)化考核試卷
- 木樓梯的聲學性能改善措施考核試卷
- 勞動法律法規(guī)解讀考核試卷
- 固體廢物處理與環(huán)??萍紕?chuàng)新考核試卷
- 體育會展新媒體運營與粉絲經(jīng)濟考核試卷
- 體育經(jīng)紀公司體育場館運營與管理策略考核試卷
- 房屋改建施工合同范本
- 簡易土建勞務合同范本
- 俱樂部合同范本模板
- 2025-2030年中國數(shù)字告示(數(shù)字標牌)行業(yè)需求現(xiàn)狀及發(fā)展趨勢分析報告
- 矛盾糾紛排查知識講座
- 汽車制動系統(tǒng)課件
- 統(tǒng)編版七年級語文下冊《第16課有為有不為》教案
- 【上?!康谝淮卧驴季?1【20~21章】
- 2025年東營科技職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 《新媒體廣告》課件 第4章 從技術(shù)到場景:新媒體廣告的創(chuàng)新應用
- 2025年煙臺工程職業(yè)技術(shù)學院高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2025年上半年中煤科工集團商業(yè)保理限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年南京機電職業(yè)技術(shù)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 物業(yè)管理消防維保流程優(yōu)化建議
評論
0/150
提交評論