Java記事本程序課程設計報告_第1頁
Java記事本程序課程設計報告_第2頁
Java記事本程序課程設計報告_第3頁
Java記事本程序課程設計報告_第4頁
Java記事本程序課程設計報告_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上軟 件 學 院課程設計報告書課程名稱 面向對象課程設計 設計題目 記事本程序 專業(yè)班級 xx 學 號 xx 姓 名 xx 指導教師 徐嬌月 201x年 6 月專心-專注-專業(yè)目錄1 設計時間2011-06-05至2011-06-122 設計目的記事本主要是對文字進行編輯處理的軟件。能進行新建、打開、保存等功能。另外還可以根據(jù)用戶的需要查找替換相應的文字,實現(xiàn)編輯功能。通過面向對象程序設計對自己所學過的的知識加以掌握和運用。鞏固面向對象設計理念的理解,熟練Java設計語言的運用。3設計任務記事本程序。要求如下:(1)使用圖形用戶界面實現(xiàn)。(2)必須有菜單、彈出式對話框組

2、件的實現(xiàn)。(3)能實現(xiàn)文字編輯、保存、另存為、查找、替換功能,其它功能可自行豐富。(4)系統(tǒng)使用的GUI組件不得少于5種,越全面越好,但要合適(和諧界面)。提示:使用文件輸入輸出流。4 設計內(nèi)容 4.1 需求分析4.1.1需求說明現(xiàn)在網(wǎng)絡上各種文檔編輯器數(shù)不勝數(shù),有,。功能也是應有盡有,有能改變字體的,有能改變文字顏色的。但是,這些軟件又存在各種各樣的瑕疵或問題:有的文件體積相對于一般文字編輯來說太大;有的功能太繁雜,使初級使用者一時難以掌握。僅從日常應用方面來說,一個文本編輯器只需一些簡單實用的功能就夠了。本程序設計就是依照這樣一種使用需要設計了一個簡單的實現(xiàn)特定功能的記事本程序。4.1.2

3、功能需求本程序要構建的記事本程序參照了Windows操作系統(tǒng)的記事本工具,其功能有以下幾個方面:(1).菜單中有“文件”,“編輯”,“作者”三個主菜單。(2).“文件”有“新建”“打開”“保存”“退出”四個子菜單:分別用于新建文件,打開文件,保存文件,退出記事本。(3).“編輯菜單”有“查找、替換、時間日期”功能。(4).“作者”菜單中有關于記事本程序的作者信息。4.2概要設計4.2.1程序設計思路Java記事本程序是:圖形界面、流與文件等技術的綜合應用。圖形界面的實現(xiàn):考慮到簡單、實用、高效等特點,大部分選擇了awt來完成實現(xiàn),其中也有swing組件。文本編輯區(qū)就選用了TaxtArea作為主

4、要的部件。文件操作的實現(xiàn):利用了字符文件流FileReader和FileWriter類來實現(xiàn)。由于Java的特性,可能用任何一個編輯器來編輯,于是就將Windows中的記事本作為模仿對象,根據(jù)實現(xiàn)情況刪減了其中的一些功能。在設計類的時候,考慮到簡單明了,就用了三個類,一個主類、一個類設計構造函數(shù)實現(xiàn)監(jiān)聽接口作為程序的整體框架,一個類設計構造函數(shù)實現(xiàn)查找替換功能。所有的對象和方法都是在默認屬性類中創(chuàng)建和實現(xiàn)的,以及為各組件注冊事件監(jiān)聽程序也是在默認屬性類中實現(xiàn)的。主類完成對象的實例化及顯示。這們設計的優(yōu)點是:條理清晰,容易理解,容易修改。這樣設計的缺點是:不利于共享類中的方法。4.2.2程序運行

5、環(huán)境及界面1.操作系統(tǒng):Windows XP2.開發(fā)語言: JAVA3.開發(fā)工具: MyEclipse4.運行界面: 如圖4-1所示圖4-1運行界面4.3功能模塊設計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 My

6、FindDialog 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("

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)構造方法:MyFindDialog(Frame owne

9、r,TextArea ta)設計構造函數(shù),帶有指定的所有者框架和標題。方法部分內(nèi)容如下:設置大小,并添加類中定義的各個組件。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)關閉對話框時的監(jiān)聽。 add

10、WindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog.this.dispose(); );(2)顯示查找和替換的對話框方法:showFind()和showReplace()方法部分內(nèi)容如下:調用時顯示查找對話框, public void showFind() setTitle("查找"); setSize(280,60); setVisible(true);調用時顯示查找替換對話框 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();/獲取此文本組件中選定文本的結束位置。 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; /若找不到待查字符串,則將光標置于末尾 ta.setSelectionStart(end); ta.setSelectionEnd(end);(4)替換方法: private void replace()方法部分內(nèi)容如下: String str=tReplace.getText(); if(ta.getSelectedText().equals(tFind.getText(

13、) /用指定替換文本替換指定開始位置與結束位置之間的文本 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)構造方法:Note()方法部分內(nèi)容如下:設置標題,大小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)窗口關閉監(jiān)聽方法: void windowClosing(WindowEvent e)方法部分內(nèi)容如下:關閉時提示是否退出。 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ā)生操作時調用該方法: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課程設計 "+'n'+"學院: 軟件工程學院 "+'n'+"班級: 嵌入式系09-01班 "+'n'+"姓名: 陳 沖 "+'n'+"學號: "); 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程序運行與調試分析4.5.1.開始調試出現(xiàn)記事本界面并輸入幾行文字。如圖4-3圖4-3 調試運行界面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)顯示當時時間。如圖4-11圖4-11 顯示實踐3作者菜單。如圖4-124-12 作者菜單(1)顯示作者信息。如圖4-13圖4-13 顯示作者信息4.5.3 退出提示是否確定退出。如圖4-14圖4-14 退出程序5 總結與展望經(jīng)過差不多一個星期的努力,基本上完成我的Java課程設計簡單的記事本程序,基本上實現(xiàn)了我在需求分析時所預期的功能。通過這次的課程設計,使將我從書本上學習到的理論知識用到了實踐上,從而進一步鞏固和豐富了我所學過的知識,讓我更深層次地認識到Java及其強大的功能。同時,做這

21、門課程設計也進一步加強了我的動手能力。為了完成好這次課程設計,我提前做了較多的準備,一邊上網(wǎng)查找相關資料,另一方面查閱相關書籍。在這過程中也無形中鍛煉了我的思維分析、遇到問題及想方設法通過各種途徑解決問題的能力。但是,設計過程中也存在一些問題,例如java程序設計的封裝性在個人的設計中沒有足以體現(xiàn),更為理想的是將各個模塊封裝成類,方便共享調用,但是由于本人知識淺陋以及時間等其他原因,使得這些想法沒有實現(xiàn),這是這次課程設計的一點遺憾。程序源代碼: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; /構造函數(shù) public MyFindDialog(Frame owner,TextArea ta) super(owner,"查找");/構造一個初始時不可見、無模式的 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.

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(); ); /構造函數(shù)結束 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();/獲取此文本組件中選定文本的結束位置。 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.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() /用指定替換文本替換指定開始位置與結束位置之間的文本 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論