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

下載本文檔

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

文檔簡介

PAGEPAGE1軟件學(xué)院課程設(shè)計報告書課程名稱Java程序設(shè)計 設(shè)計題目記事本程序 專業(yè)班級 學(xué)號姓名 指導(dǎo)教師 275821設(shè)計時間 2151462設(shè)計目的 2276433設(shè)計任務(wù) 2291094設(shè)計內(nèi)容 2225524.1需求分析 2202824.1.1問題描述 3202824.1.2基本要求 372194.2總體設(shè)計 3202824.2.1整體的描述 3202824.2.2包的描述 4202824.2.3類的描述 7202824.2.4類之間的描述 772194.3詳細(xì)設(shè)計 8202824.3.1類圖 972194.4運行與測試 972194.5源程序代碼 16118905總結(jié)與展望 2625025參考文獻(xiàn) 2725025成績評定 271設(shè)計時間2012年6月13日2設(shè)計目的1)通過課程設(shè)計,加深對《面向?qū)ο蟪绦蛟O(shè)計》這一課程所學(xué)內(nèi)容的進一步理解與鞏固。2)通過課程設(shè)計,提高程序開發(fā)能力,能運用合理的控制流程編寫清晰高效的程序。3)通過課程設(shè)計,提高提高面向?qū)ο蟪绦蛟O(shè)計的程序調(diào)試能力,加強實踐能力。4)通過課程設(shè)計,培養(yǎng)分析問題、解決實際問題的能力。5)通過課程設(shè)計,培養(yǎng)軟件設(shè)計能力和開發(fā)能力。6)通過課程設(shè)計,培養(yǎng)交流、團結(jié)協(xié)作精神。7)通過課程設(shè)計,加強個人程序設(shè)計能力。3設(shè)計任務(wù)記事本主要是對文字進行編輯處理的軟件。編寫一個記事本程序,要求如下:用圖形用戶界面實現(xiàn)。能實現(xiàn)編輯、保存、另存為、查找替換等功能。4設(shè)計內(nèi)容4.1需求分析此記事本所能達(dá)到的功能(1)程序使用事件監(jiān)聽(2)對話框有三個按鈕分別為文件,編輯,幫助。每個按鈕又包括多個下拉按鈕:文件:新建,打開,保存,另存為,退出。編輯:撤銷,剪切,復(fù)制,粘貼,刪除,全選,查找,替換。幫助:版本信息。4.1.1問題描述編寫一個記事本程序,要求如下:用圖形用戶界面實現(xiàn)。能實現(xiàn)編輯、保存、另存為、查找替換等功能。提示:使用文件輸入輸出流。4.1.2基本要求1、 軟件2、課程設(shè)計報告書電子文檔。3、課程設(shè)計報告書輸出文檔。4.2總體設(shè)計4.2.1整體1、自定義類說明(1)類名:Txt作用:主類繼承的父類:Frame(2)實現(xiàn)的接口:,Actionlistener類(3)主要成員變量說明:privateJFrameframe定義記事本框架privateTextAreatextArea定義文本編輯區(qū)privateJButtonjb,jbt,jba定義按鈕privateIcon定義圖標(biāo)privateJFramejf,jfc定義查找替換框架(4)主要成員方法說明:菜單項的事件監(jiān)聽:actionlistener類2、程序流程圖(1)下面是主流程圖NYNY圖4-2-1主流程圖(2)下面是文件菜單流程圖開始開始文件菜單文件菜單另存為退出打另存為退出打開新建保存用JFilechooser()選擇所有文件的路徑用System.exit(0)退出用JFilechooser()選擇所有文件的路徑用JFilechooser()選擇所有文件的路徑用System.exit(0)退出用JFilechooser()選擇所有文件的路徑用newNew()實現(xiàn)用JFilechooser()選擇所有打開文件的退出或關(guān)閉退出或關(guān)閉結(jié)束結(jié)束圖4-2-2文件菜單流程圖(3)下面是編輯菜單流程圖開始開始編輯編輯查找粘貼刪除全選復(fù)制剪切撤銷查找粘貼刪除全選復(fù)制剪切撤銷替換setText()Paste()setText()Paste()selectAll()setDefaultCloseOperation()Cut()Copy()Cut()Copy()replaceSelection(null)setDefaultCloseOperation()關(guān)閉關(guān)閉結(jié)束結(jié)束 圖4-2-3編輯菜單流程圖(4)下面是幫助菜單流程圖開始開始幫助幫助版本信息版本信息用JDialog()實現(xiàn)用JDialog()實現(xiàn)結(jié)束結(jié)束圖4-2-4幫助菜單流程圖4.2.2importjava.awt.*;包含所有的類用于創(chuàng)建用戶界面和繪畫,圖形和圖像。importjava.awt.event.*;提供的接口和類與處理不同類型的開槍事件輸出組件。importjava.io.*;提供與輸入輸出有關(guān)的各種類importjavax.swing.*;為對話框提供了一個簡單的機制,用戶選擇一個文件;彈出一個警告對話框等。4.2.3FileOutputStream:Javal流中比較常用的一種。它是從java.io.OutputStream中繼承過來的簡單輸出類。JButton:允許用圖標(biāo)、字符串或兩者同時構(gòu)造一個按鈕。JTextFiled:組件允許輸入或編輯單行文本,是一個輕量級組件。String:是java.lang包中的一個final類,主要用來創(chuàng)建一個字符串對象。JFileChooser:文件對話框提供了一個簡單的機制,用戶選擇一個文件。信息使用文件對話框File:一個抽象的代表性的文件和目錄路徑。Lable:標(biāo)簽對象的一個組成部分的容器中放置文本。一個標(biāo)簽顯示單行只讀文本。該文本可以改變的應(yīng)用,但用戶不能直接編輯它。JMenu:菜單對象是一個下拉式菜單組件的部署,從菜單欄。TextFiled:一個文本字段對象是一個文本組件,允許編輯單行文本。4.2.4MyFindDialog類繼承Dialog類通過接口的方式實現(xiàn)ActionListener類,Note類繼承Frame類通過同樣通過接口的方式實現(xiàn)ActionListener類。其他類共同形成記事本界面以及界面內(nèi)各個組件4.3詳細(xì)設(shè)計1、Txt類實現(xiàn)TextAreatf=newTextArea();定義文本編輯區(qū)JMenuBarjmb=newJMenuBar();2、GUI界面的實現(xiàn)privateJFrameframe=newJFrame("新記事本");String[]menuLab={"文件(F)","編輯(E)","幫助(H)"}; String[][]menuItemLab={{"新建(N)","打開(O)...","保存(S)","另存為(A)...","退出(E)"}, {"撤銷(U)","剪切(T)","復(fù)制(C)","粘貼(P)","刪除(D)","全選(A)","查找(F)...","替換(R)..."}, {"版本信息(T)"}}; for(inti=0;i<menuLab.length;i++){ JMenumenu=newJMenu(menuLab[i]); jmb.add(menu); for(intj=0;j<menuItemLab[i].length;j++){ JMenuItemjmi=newJMenuItem(menuItemLab[i][j]); menu.add(jmi); jmi.addActionListener(this); } }3、窗口事件處理jmi.addActionListener(this);jb.addActionListener(this);jbt.addActionListener(this);jba.addActionListener(this);4.3.1類圖下面是Txt類圖。Txt類JFrameTxt類JFrameJTextAreaStringBooleanJButtonFileJTextFieldIconIntread()write()newNew()Txt()圖4-3-3Txt類圖4.4運行與測試程序運行界面如下圖4-4-1記事本界面(2)“文件”菜單的菜單項圖4-4-2“文件”菜單(3)“編輯”菜單菜單項圖4-4-3“編輯”菜單(4)“幫助”菜單菜單項圖4-4-4“幫助”菜單(5)另存文件的界面圖4-4-4另存文件界面(6)“查找”菜單功能實現(xiàn)界面圖4-4-5查找前界面圖4-4-6查找時界面圖4-4-7查找下一個界面圖4-4-8查找完畢界面(7)“查找替換”菜單功能實現(xiàn)界面圖4-4-9查找替換前界面圖4-4-10查找替換后界面(8)“剪切”菜單功能實現(xiàn)界面圖4-4-11剪切前界面圖4-4-12剪切時界面圖4-4-13剪切后界面(9)“全選”菜單功能實現(xiàn)界面圖4-4-12全選前界面圖4-4-13全選后界面4.5程序代碼mportjava.awt.*;//包含所有的類用于創(chuàng)建用戶界面和繪畫,圖形和圖像。importjava.awt.event.*;// 提供的接口和類與處理不同類型的開槍事件輸出組件。importjava.io.*;//提供與輸入輸出有關(guān)的各種類importjavax.swing.*;// 為對話框提供了一個簡單的機制,用戶選擇一個文件;彈出一個警告對話框等。publicclassTxtextendsFrameimplementsActionListener{ privateJFrameframe=newJFrame("新記事本"); privateJTextAreajta=newJTextArea(); privateStringresult=""; privatebooleanflag=true; privateFilef; privateJButtonjb=newJButton("開始"); privateJTextFieldjtf=newJTextField(15); privateJTextFieldjt=newJTextField(15); privateJButtonjbt=newJButton("替換為"); privateJButtonjba=newJButton("全部替換"); privateIconic=newImageIcon("D:\\java課堂筆記\\GUI\\11.gif"); privateStringvalue; privateintstart=0; privateJFramejf=newJFrame("查找"); privateJFramejfc=newJFrame("替換"); publicvoidactionPerformed(ActionEvente){ Stringcomm=e.getActionCommand(); if("新建(N)".equals(comm)){ if(!(frame.getTitle().equals("新記事本"))){ if(!flag){ write(); newNew(); }else{ JFileChooserjfc=newJFileChooser("D:\\java課堂筆記"); intreturnVal=jfc.showDialog(null,"保存為"); if(returnVal==JFileChooser.APPROVE_OPTION){//選擇文件后再執(zhí)行下面的語句,保證了程序的健壯性 f=jfc.getSelectedFile(); flag=false; write(); } } }elseif(!(jta.getText().isEmpty())){ JFileChooserjfc=newJFileChooser("D:\\java課堂筆記"); intreturnVal=jfc.showDialog(null,"保存為"); if(returnVal==JFileChooser.APPROVE_OPTION){//選擇文件后再執(zhí)行下面的語句,保證了程序的健壯性 f=jfc.getSelectedFile(); flag=false; write(); newNew(); } }else{ newNew(); } }elseif("打開(O)".equals(comm)){ JFileChooserjfc=newJFileChooser("D:\\java課堂筆記"); jfc.setDialogType(JFileChooser.OPEN_DIALOG); intreturnVal=jfc.showOpenDialog(null); if(returnVal==JFileChooser.APPROVE_OPTION){//選擇文件后再執(zhí)行下面的語句,保證了程序的健壯性 f=jfc.getSelectedFile(); frame.setTitle(f.getName()); result=read(); flag=false; value=result; jta.setText(result); } }elseif("保存(S)".equals(comm)){ JFileChooserjfc=newJFileChooser("D:\\java課堂筆記"); if(flag){ intreturnVal=jfc.showDialog(null,"保存為"); if(returnVal==JFileChooser.APPROVE_OPTION){//選擇文件后再執(zhí)行下面的語句,保證了程序的健壯性 f=jfc.getSelectedFile(); flag=false; write(); } }else{ write(); } }elseif("另存為(A)...".equals(comm)){ JFileChooserjfc=newJFileChooser("D:\\java課堂筆記"); intreturnVal=jfc.showDialog(null,"另存"); if(returnVal==JFileChooser.APPROVE_OPTION){//選擇文件后再執(zhí)行下面的語句,保證了程序的健壯性 f=jfc.getSelectedFile(); write(); } }elseif("退出(E)".equals(comm)){ System.exit(0); }elseif("撤銷(U)".equals(comm)){ jta.setText(value); }elseif("剪切(T)".equals(comm)){ value=jta.getText(); jta.cut(); }elseif("復(fù)制(C)".equals(comm)){ jta.copy(); }elseif("粘貼(P)".equals(comm)){ value=jta.getText(); jta.paste(); }elseif("刪除(D)".equals(comm)){ value=jta.getText(); jta.replaceSelection(null); }elseif("全選(A)".equals(comm)){ jta.selectAll(); }elseif("查找(F)...".equals(comm)){ value=jta.getText(); jf.add(jtf,BorderLayout.CENTER); jf.add(jb,BorderLayout.SOUTH); jf.setLocation(300,300); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }elseif("替換(R)...".equals(comm)){ value=jta.getText(); GridLayoutgl=newGridLayout(3,3); JLabeljl1=newJLabel("查找內(nèi)容:"); JLabeljl2=newJLabel("替換為:"); jfc.setLayout(gl); jfc.add(jl1); jfc.add(jtf); jfc.add(jb); jfc.add(jl2); jfc.add(jt); jfc.add(jbt); JLabeljl3=newJLabel(); JLabeljl4=newJLabel(); jfc.add(jl3); jfc.add(jl4); jfc.add(jba); jfc.setLocation(300,300); jfc.pack(); jfc.setVisible(true); jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }elseif("版本信息(T)".equals(comm)){ JDialogjd=newJDialog(frame,"關(guān)于對話框"); jd.setSize(200,200); JLabell=newJLabel("That'sasecretIwillnevertell."); jd.add(l,BorderLayout.CENTER); jd.setLocation(100,200); jd.setSize(300,300); jd.setVisible(true);// jd.pack(); jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); }elseif("開始".equals(comm)||"下一個".equals(comm)){ Stringtemp=jtf.getText(); ints=value.indexOf(temp,start); if(value.indexOf(temp,start)!=-1){ jta.setSelectionStart(s); jta.setSelectionEnd(s+temp.length()); jta.setSelectedTextColor(Color.GREEN); start=s+1; jb.setText("下一個");// value=value.substring(s+temp.length());//不能截取字串 }else{ JOptionPane.showMessageDialog(jf,"查找完畢!","提示",0,ic); jf.dispose(); } }elseif("替換為".equals(comm)){ Stringtemp=jtf.getText(); ints=value.indexOf(temp,start); if(value.indexOf(temp,start)!=-1){ jta.setSelectionStart(s); jta.setSelectionEnd(s+temp.length()); jta.setSelectedTextColor(Color.GREEN); start=s+1; jta.replaceSelection(jt.getText()); }else{ JOptionPane.showMessageDialog(jf,"查找完畢!","提示",0,ic); jf.dispose(); } }elseif("全部替換".equals(comm)){ Stringtemp=jta.getText(); temp=temp.replaceAll(jtf.getText(),jt.getText()); jta.setText(temp); } } publicStringread(){ Stringtemp=""; try{ FileInputStreamfis=newFileInputStream(f.getAbsolutePath()); byte[]b=newbyte[1024]; while(true){ intnum=fis.read(b); if(num==-1)break; temp=temp+newString(b,0,num); } fis.close(); }catch(Exceptione1){ e1.printStackTrace(); } returntemp; } publicvoidwrite(){ try{ FileOutputStreamfos=newFileOutputStream(f); fos.write(jta.getText().getBytes()); fos.close(); }catch(Exceptione){ e.printStackTrace(); } } publicvoidnewNew(){ frame.dispose(); newTxt(); flag=true; } publicTxt(){ JMenuBarjmb=newJMenuBar(); String[]menuLab={"文件(F)","編輯(E)","幫助(H)"}; String[][]menuItemLab={{"新建(N)","打開(O)...","保存(S)","另存為(A)...","退出(E)"}, {"撤銷(U)","剪切(T)","復(fù)制(C)","粘貼(P)","刪除(D)","全選(A)","查找(F)...","替換(R)..."}, {"版本信息(T)"}}; for(inti=0;i<menuLab.length;i++){ JMenumenu=newJMenu(menuLab[i]); jmb.add(menu); for(intj=0;j<menuItemLab[i].length;j++){ JMenuItem

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論