版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上軟 件 學(xué) 院課程設(shè)計報告書課程名稱 面向?qū)ο笳n程設(shè)計 設(shè)計題目 記事本程序 專業(yè)班級 xx 學(xué) 號 xx 姓 名 xx 指導(dǎo)教師 徐嬌月 201x年 6 月專心-專注-專業(yè)目錄1 設(shè)計時間2011-06-05至2011-06-122 設(shè)計目的記事本主要是對文字進行編輯處理的軟件。能進行新建、打開、保存等功能。另外還可以根據(jù)用戶的需要查找替換相應(yīng)的文字,實現(xiàn)編輯功能。通過面向?qū)ο蟪绦蛟O(shè)計對自己所學(xué)過的的知識加以掌握和運用。鞏固面向?qū)ο笤O(shè)計理念的理解,熟練Java設(shè)計語言的運用。3設(shè)計任務(wù)記事本程序。要求如下:(1)使用圖形用戶界面實現(xiàn)。(2)必須有菜單、彈出式對話框組
2、件的實現(xiàn)。(3)能實現(xiàn)文字編輯、保存、另存為、查找、替換功能,其它功能可自行豐富。(4)系統(tǒng)使用的GUI組件不得少于5種,越全面越好,但要合適(和諧界面)。提示:使用文件輸入輸出流。4 設(shè)計內(nèi)容 4.1 需求分析4.1.1需求說明現(xiàn)在網(wǎng)絡(luò)上各種文檔編輯器數(shù)不勝數(shù),有,。功能也是應(yīng)有盡有,有能改變字體的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵或問題:有的文件體積相對于一般文字編輯來說太大;有的功能太繁雜,使初級使用者一時難以掌握。僅從日常應(yīng)用方面來說,一個文本編輯器只需一些簡單實用的功能就夠了。本程序設(shè)計就是依照這樣一種使用需要設(shè)計了一個簡單的實現(xiàn)特定功能的記事本程序。4.1.2
3、功能需求本程序要構(gòu)建的記事本程序參照了Windows操作系統(tǒng)的記事本工具,其功能有以下幾個方面:(1).菜單中有“文件”,“編輯”,“作者”三個主菜單。(2).“文件”有“新建”“打開”“保存”“退出”四個子菜單:分別用于新建文件,打開文件,保存文件,退出記事本。(3).“編輯菜單”有“查找、替換、時間日期”功能。(4).“作者”菜單中有關(guān)于記事本程序的作者信息。4.2概要設(shè)計4.2.1程序設(shè)計思路Java記事本程序是:圖形界面、流與文件等技術(shù)的綜合應(yīng)用。圖形界面的實現(xiàn):考慮到簡單、實用、高效等特點,大部分選擇了awt來完成實現(xiàn),其中也有swing組件。文本編輯區(qū)就選用了TaxtArea作為主
4、要的部件。文件操作的實現(xiàn):利用了字符文件流FileReader和FileWriter類來實現(xiàn)。由于Java的特性,可能用任何一個編輯器來編輯,于是就將Windows中的記事本作為模仿對象,根據(jù)實現(xiàn)情況刪減了其中的一些功能。在設(shè)計類的時候,考慮到簡單明了,就用了三個類,一個主類、一個類設(shè)計構(gòu)造函數(shù)實現(xiàn)監(jiān)聽接口作為程序的整體框架,一個類設(shè)計構(gòu)造函數(shù)實現(xiàn)查找替換功能。所有的對象和方法都是在默認(rèn)屬性類中創(chuàng)建和實現(xiàn)的,以及為各組件注冊事件監(jiān)聽程序也是在默認(rèn)屬性類中實現(xiàn)的。主類完成對象的實例化及顯示。這們設(shè)計的優(yōu)點是:條理清晰,容易理解,容易修改。這樣設(shè)計的缺點是:不利于共享類中的方法。4.2.2程序運行
5、環(huán)境及界面1.操作系統(tǒng):Windows XP2.開發(fā)語言: JAVA3.開發(fā)工具: MyEclipse4.運行界面: 如圖4-1所示圖4-1運行界面4.3功能模塊設(shè)計4.3.1功能模塊說明圖首先創(chuàng)建一個名為NoteBook的類并繼承Frame類實現(xiàn)監(jiān)聽接口作為最底層的容器(具體過程在“4.3.2自定義類及接口說明”作說明)。菜單欄中有“文件”、“編輯”、“作者”三項菜單,分別添加的相應(yīng)的項,各實現(xiàn)其功能。如圖4-2所示圖4-2功能模塊說明圖4.3.2 自定義類及接口說明1.MyFindDialog類l 繼承Dialog類l 實現(xiàn)ActionListene接口l 實現(xiàn)查找替換功能class My
6、FindDialog extends Dialog implements ActionListener定義查找和替換的標(biāo)簽和文本域 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("
7、替換"); TextArea ta;2.Note類l 繼承Frame類l 實現(xiàn)ActionListener接口l 作為程序的整體框架class Note extends Frame implements ActionListener定義菜單,菜單項,對話框等。MenuBar mb = new MenuBar();Menu item1=new Menu("文件");MenuItem subitem11=new MenuItem("新建",new MenuShortcut(KeyEvent.VK_A, false);MenuItem subitem
8、23=new MenuItem("時間日期");Menu item3=new Menu("作者");MenuItem subitem31=new MenuItem("作者信息");MyFindDialog findDlg=new MyFindDialog(this,tf);3.NoteBook類l 主類,完成對象的實例化及顯示public class NoteBookMain方法中實例化news Note();顯示界面。4.3.3 類中方法介紹1.MyFindDialog類(1)構(gòu)造方法:MyFindDialog(Frame owne
9、r,TextArea ta)設(shè)計構(gòu)造函數(shù),帶有指定的所有者框架和標(biāo)題。方法部分內(nèi)容如下:設(shè)置大小,并添加類中定義的各個組件。super(owner,"查找"); this.ta=ta; setLayout(null); lFind.setBounds(10,30,80,20); lReplace.setBounds(10,70,80,20); add(bReplace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); 實現(xiàn)關(guān)閉對話框時的監(jiān)聽。 add
10、WindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog.this.dispose(); );(2)顯示查找和替換的對話框方法:showFind()和showReplace()方法部分內(nèi)容如下:調(diào)用時顯示查找對話框, public void showFind() setTitle("查找"); setSize(280,60); setVisible(true);調(diào)用時顯示查找替換對話框 public void showReplace() setTitle(
11、"查找替換"); 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.getSelectionEnd();/獲取此文本組件中選定文本的結(jié)束位置。 if(start=end) start=0; for(;start<=end-len;start+) if(
12、text.substring(start,start+len).equals(str) ta.setSelectionStart(start); ta.setSelectionEnd(start+len); return; /若找不到待查字符串,則將光標(biāo)置于末尾 ta.setSelectionStart(end); ta.setSelectionEnd(end);(4)替換方法: private void replace()方法部分內(nèi)容如下: String str=tReplace.getText(); if(ta.getSelectedText().equals(tFind.getText(
13、) /用指定替換文本替換指定開始位置與結(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(); 2.Note類(1)構(gòu)造方法:Note()方法部分內(nèi)容如下:設(shè)置標(biāo)題,大小super("記事本");setBounds(100,1
14、00,600,400);添加組件add(tf);setMenuBar(mb);mb.add(item1);item1.add(subitem11);添加指定的操作偵聽器,以從此菜單項接收操作事件。subitem11.addActionListener(this); subitem31.addActionListener(this);setVisible(true); addWindowListener(new WindowAdapter()(2)窗口關(guān)閉監(jiān)聽方法: void windowClosing(WindowEvent e)方法部分內(nèi)容如下:關(guān)閉時提示是否退出。 int option=J
15、OptionPane.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 actionPerformed(ActionEvent e)方法部分內(nèi)容如下: /-新建- if(e.getSource()=subi
16、tem11) 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) findDlg.showReplace(); /-日期- if(e.getSource
17、()=subitem23) /-作者- if(e.getSource()=subitem31) tf.setText("課程名稱: java課程設(shè)計 "+'n'+"學(xué)院: 軟件工程學(xué)院 "+'n'+"班級: 嵌入式系09-01班 "+'n'+"姓名: 陳 沖 "+'n'+"學(xué)號: "); 3.NoteBook類主類包含main方法,實例化news Note();顯示界面。public static void main(String
18、args)new Note();4.4異常處理在運行程序代碼是有可能會產(chǎn)生異常情況或異常事件,為了避免這種情況,就需要在程序中用到Java異常處理機制。本程序中選用的異常處理機制是try,catch。捕獲處理異常的第一步是用try選定要監(jiān)控的異常范圍,try后跟隨catch代碼塊捕獲異?!癳x.printStackTrace();”語句在命令行打印異常信息在程序中出錯的位置及原因。例如“打開”監(jiān)聽中運用到異常處理。其它的地方于此類似。tryFile file=jc.getSelectedFile();FileInputStream fis=new FileInputStream(file);b
19、yte buf=new byte10*1024;int len=fis.read(buf);tf.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 編輯菜單
20、(1) 查找界面。如圖4-9圖4-9 查找對話框(2)替換界面。如圖4-10圖4-10超找替換對話框(3)顯示當(dāng)時時間。如圖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)了我在需求分析時所預(yù)期的功能。通過這次的課程設(shè)計,使將我從書本上學(xué)習(xí)到的理論知識用到了實踐上,從而進一步鞏固和豐富了我所學(xué)過的知識,讓我更深層次地認(rèn)識到Java及其強大的功能。同時,做這
21、門課程設(shè)計也進一步加強了我的動手能力。為了完成好這次課程設(shè)計,我提前做了較多的準(zhǔn)備,一邊上網(wǎng)查找相關(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;imp
22、ort java.io.BufferedWriter;import java.io.File;import 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;/查找 替換 類MyFindDia
23、logclass MyFindDialog extends Dialog implements 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("替換&
24、quot;); TextArea ta; /構(gòu)造函數(shù) public MyFindDialog(Frame owner,TextArea ta) super(owner,"查找");/構(gòu)造一個初始時不可見、無模式的 Dialog,帶有指定的所有者框架和標(biāo)題。 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.
25、setBounds(190,30,80,20); bReplace.setBounds(190,70,80,20); add(lFind); add(tFind); add(bFind); add(lReplace); add(tReplace); add(bReplace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); addWindowListener(new WindowAdapter() public void windowClosing(WindowEven
26、t e) MyFindDialog.this.dispose(); ); /構(gòu)造函數(shù)結(jié)束 public void showFind() setTitle("查找"); setSize(280,60); setVisible(true); public void showReplace() setTitle("查找替換"); setSize(280,110); setVisible(true); private void find() /查找方法 String text=ta.getText(); String str=tFind.getText(); i
27、nt end=text.length(); int len=str.length(); int start=ta.getSelectionEnd();/獲取此文本組件中選定文本的結(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; /若找不到待查字符串,則將光標(biāo)置于末尾 ta.setSelectionS
28、tart(end); ta.setSelectionEnd(end); /*public Button getBFind() return bFind; */ private void replace() String str=tReplace.getText(); if(ta.getSelectedText().equals(tFind.getText() /用指定替換文本替換指定開始位置與結(jié)束位置之間的文本 ta.replaceRange(str,ta.getSelectionStart(),ta.getSelectionEnd(); else find(); public void ac
29、tionPerformed(ActionEvent e) if(e.getSource()=bFind) find(); else if(e.getSource()=bReplace) replace(); /Note類 class Note extends Frame implements ActionListenerTextArea tf=new TextArea();MenuBar mb = new MenuBar();Menu item1=new Menu("文件");MenuItem subitem11=new MenuItem("新建",ne
30、w MenuShortcut(KeyEvent.VK_A, false);MenuItem subitem12=new MenuItem("打開",new MenuShortcut(KeyEvent.VK_O, false);MenuItem subitem13=new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S, false);MenuItem subitem14=new MenuItem("另存為");MenuItem subitem15=new MenuItem("退出&q
31、uot;);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 MenuItem("時間日期");Menu item3=new Menu("作者");
32、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.addActionListener(this);
33、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);subitem
34、21.addActionListener(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 w
35、indowClosing(WindowEvent e) 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.g
36、etSource()=subitem11) tf.setText(""); /打開 if(e.getSource()=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);ca
37、tch(Exception ex)ex.printStackTrace(); /保存 if(e.getSource()=subitem13) 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 Fi
38、leWriter 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()=subitem14) File f2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); if(nu
39、m2=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,"文件已被改變,是否要保存?","提示",JOptionPane.YES_NO_CANCEL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度鐵路旅客運輸合同修訂版2篇
- 2025版圖書電子文檔txt下載代理授權(quán)合同3篇
- 二零二五年高校創(chuàng)新創(chuàng)業(yè)基地入駐服務(wù)合同3篇
- 2025年度個人小產(chǎn)權(quán)房屋買賣合同范本與稅務(wù)籌劃要點4篇
- 二零二五年度4S店汽車銷售區(qū)域代理合同范本3篇
- 二零二五版智慧交通管理系統(tǒng)建設(shè)與運營協(xié)議3篇
- 二零二五年度馬鈴薯深加工廢棄物資源化利用合同4篇
- 二零二五年度創(chuàng)新型企業(yè)房屋租賃合同書
- 2025年度平房出租與城市可持續(xù)發(fā)展合作協(xié)議4篇
- 二零二五年度商業(yè)綜合體停車場投資建設(shè)合作協(xié)議3篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
- 2024年江蘇省徐州市中考一模數(shù)學(xué)試題(含答案)
- 新一代飛機維護技術(shù)
評論
0/150
提交評論