課程設(shè)計(jì) JAVA 記事本_第1頁
課程設(shè)計(jì) JAVA 記事本_第2頁
課程設(shè)計(jì) JAVA 記事本_第3頁
課程設(shè)計(jì) JAVA 記事本_第4頁
課程設(shè)計(jì) JAVA 記事本_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(jì)(大作業(yè))報(bào)告課程名稱:java語言程序設(shè)計(jì)設(shè)計(jì)題目:記事本院系:計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)系班級:計(jì)算機(jī)科學(xué)與技術(shù)本2班設(shè)計(jì)者:*** 學(xué)號:200911012** 指導(dǎo)教師:*** 設(shè)計(jì)時(shí)間:2010-12-29 昆明學(xué)院昆明學(xué)院課程設(shè)計(jì)(大作業(yè))任務(wù)書姓名:*** 院系:計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)系專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)號:20091101***任務(wù)起止日期:2010-12課程設(shè)計(jì)題目:記事本課程設(shè)計(jì)要求:用Java編寫一個(gè)記事本程序,要求能實(shí)現(xiàn)記事本的基本功能,并上機(jī)調(diào)試通過,該程序是一個(gè)圖形界面的java文檔編輯器,程序?qū)崿F(xiàn)了文本編輯器的基本功能有:新建文件、打開文件、文件保存、文件另存為、剪切、復(fù)制、粘貼、刪除、查找/替換、改變字體大小。程序運(yùn)行結(jié)果如下圖。工作計(jì)劃及安排:12月27日:選定本組要做的題目,對題目進(jìn)行分析,上網(wǎng)查找相關(guān)資料12月28日至29日:畫流程圖,寫程序12月30日:調(diào)試程序,填寫報(bào)告書12月31日:上交作業(yè)一開始的時(shí)候,我們組的幾乎都沒有什么頭緒,然后就是在網(wǎng)上查找記事本程序的設(shè)計(jì)步驟和用到的相應(yīng)函數(shù),了解了一些基本的步驟之后,然后就開始分工。我們統(tǒng)一了所有要用到的參數(shù)、變量、公共方法。杜長友設(shè)計(jì)框架,包括所有菜單及其子菜單在框架內(nèi)的顯示、文本域、滾動(dòng)條、頭文件、然后還有在菜單中加入子菜單,實(shí)現(xiàn)子菜單所代表的功能的方法調(diào)用,再加上主函數(shù)。潘竹比較強(qiáng)悍,因?yàn)樗腏ava學(xué)得好么,所以就承擔(dān)了比較多的復(fù)雜任務(wù)了:她做了文件的新建、打開、保存、另存及其異常處理、打印、退出這一功能模塊。還有就是粘貼、復(fù)制、撤銷、剪切、刪除、全選、轉(zhuǎn)到這一部分功能模塊。寸得艷這個(gè)姑娘也是很猛啦,她負(fù)責(zé)設(shè)計(jì)了查找方法,字體設(shè)置方法和幫助主題,還有就是文本域。做到周三我們各自負(fù)責(zé)的部分基本可以啦,然后組合在一起卻不可以調(diào)試通過。經(jīng)過相互的解釋,協(xié)調(diào)了各自的功能模塊,最后勉強(qiáng)通過了。指導(dǎo)教師評語:指導(dǎo)教師簽字年月日

課程設(shè)計(jì)(大作業(yè))成績學(xué)號:200911012**姓名:***指導(dǎo)教師:課程設(shè)計(jì)題目:記事本總結(jié):這次課程設(shè)計(jì)中,我們?nèi)藶橐唤M,我主要設(shè)計(jì)框架,包括所有菜單及其子菜單在框架內(nèi)的顯示、文本域、滾動(dòng)條、頭文件、然后還有在菜單中加入子菜單,實(shí)現(xiàn)子菜單所代表的功能的方法調(diào)用,再加上主函數(shù)這一部分。其下共有十一個(gè)功能,分別是撤銷、剪切、復(fù)制、粘貼、刪除、查找、查找下一個(gè)、替換、轉(zhuǎn)到、全選字體設(shè)置。在開始做的幾天里,我又重新看了一下課本,還查找了相關(guān)的一些資料,在同組同學(xué)的幫助和指導(dǎo)下,最終完成了這些內(nèi)容中的大部分內(nèi)容,但是很不完善,最后我們組員又在一起討論了才完善起來。通過這次課程設(shè)計(jì),我更加深刻的體會到自己對所學(xué)的知識理解的實(shí)在是很有限,簡單的作業(yè)還可以自己寫出相對完整的程序代碼,但是大一點(diǎn)、難一些的內(nèi)容,似乎一點(diǎn)都不懂。所以一開始拿到題目的時(shí)候,根本就不知道從何處著手,還是從網(wǎng)上找了一些程序代碼,一點(diǎn)一點(diǎn)的做實(shí)驗(yàn),基本了解一些相應(yīng)的函數(shù)的運(yùn)用后才自己慢慢模仿著編程。這次課程設(shè)計(jì)中,我覺得有很多收獲,首先通過這次課題,我了解到了自己的不足,認(rèn)識到自己對哪些知識掌握了,對哪些知識還需要加倍努力,對學(xué)過的知識理解的更加透徹了,另外我覺得自己最大的收獲是,我完成了自己的任務(wù),雖然不是很成功,遠(yuǎn)遠(yuǎn)沒有達(dá)到題目的要求,而且還是在同學(xué)的幫助下才完成的,但我覺得起碼我嘗試了,并且我盡了自己最大的努力,而且還學(xué)到了很多新知識,以后運(yùn)用起來也會更容易。而且作為一個(gè)團(tuán)隊(duì)只有相互配合協(xié)調(diào)工作才會有所成就,所以學(xué)會與他人合作才能更好的完成任務(wù)。指導(dǎo)教師評語:成績:填表時(shí)間: 指導(dǎo)教師簽名:目錄課程設(shè)計(jì)(大作業(yè))報(bào)告1課程設(shè)計(jì)介紹 錯(cuò)誤!未定義書簽。1.1課程設(shè)計(jì)內(nèi)容 錯(cuò)誤!未定義書簽。1.2課程設(shè)計(jì)要求 錯(cuò)誤!未定義書簽。2總體設(shè)計(jì) 錯(cuò)誤!未定義書簽。2.1課設(shè)題目總體設(shè)計(jì)、算法描述 錯(cuò)誤!未定義書簽。2.2功能模塊圖、流程圖分析 錯(cuò)誤!未定義書簽。3調(diào)試與性能分析 錯(cuò)誤!未定義書簽。4參考文獻(xiàn) 錯(cuò)誤!未定義書簽。附錄(程序清單) 錯(cuò)誤!未定義書簽。課程設(shè)計(jì)介紹課程設(shè)計(jì)內(nèi)容用Java程序語言設(shè)計(jì)一個(gè)具有GUI界面的記事本,事本界面要求有標(biāo)題顯示欄,最小化,最大化,關(guān)閉按鈕和文本編輯區(qū)。含有工具欄,其中包括“文件(F)”、“編輯(E)”、“格式(O)”、“查看(V)”、“幫助(H)”菜單,菜單下還應(yīng)包含有子菜單。記事本含有簡單的文字編輯功能,如:剪切、復(fù)制、粘貼、刪除;能實(shí)現(xiàn)文件的打開、保存、另存為、查找、替換等功能。還可以實(shí)現(xiàn)文件的打開、文件保存異常情況處理。課程設(shè)計(jì)要求要構(gòu)建的記事本程序所用語言為Java,記事本要實(shí)現(xiàn)的功能有以下幾個(gè)方面:(1)、菜單中有“文件”、“編輯”、“查看”、“格式”、“幫助”五個(gè)主菜單;(2)、“文件”有“新建”、“打開”、“保存”、“另存為”、“退出”分別用于新建文件,打開文件,保存文件,另存文件,退出記事本。(3)、“編輯”中,有“剪切”、“復(fù)制”、“粘貼”、“刪除”、“查找”、“替換”、“全選”七個(gè)子菜單:用于剪切文字,復(fù)制文字,粘貼文字,刪除文字,查找文件中的指定的字符串,替換文件中的指定的字符串,選定整個(gè)文件;(4)、“格式”中有“字體換行”、“字體”分別用于字體換行和字體轉(zhuǎn)換;(5)、“查看”中有“狀態(tài)欄”查看當(dāng)前狀態(tài);(6)、“幫助”菜單中有“關(guān)于”的子菜單,用于描述記事本程序的相關(guān)信息;(7)、設(shè)計(jì)完成后學(xué)要調(diào)試運(yùn)行通過。2總體設(shè)計(jì)2.1題目總體設(shè)計(jì)、算法描述對于此次用Java編寫記事本的總體設(shè)計(jì)有:a、首先把框架和幾個(gè)主按鈕文件、編輯和關(guān)于定義好;b、然后在定義文件按鈕下的保存、另存為、全選、關(guān)閉及打開按鈕,并對這些進(jìn)行更詳細(xì)的設(shè)計(jì)和實(shí)現(xiàn)功能;c、再對編輯按鈕下的剪切、復(fù)制、粘貼進(jìn)行設(shè)計(jì)定義和實(shí)現(xiàn)功能;d、自定義類說明:類名為JNotepad;其作用:是主類,其繼承的父類是JFrame類。e、定義各種監(jiān)聽類,用于對子菜單更能的實(shí)現(xiàn)。2.2功能模塊圖、流程圖分析2.2.1功能模塊圖父類:JNotePad();setUpComponent();JMenuBar();JMenu("文件");JMenu("編輯");JMenu("查看");JMenu("格式");JMenu("幫助");子類:JMenuItem("新建");JMenuItem("打開");JMenuItem("保存");JMenuItem("另存為");JMenuItem("退出");JMenuItem("撤銷");JMenuItem("剪切");JMenuItem("復(fù)制");JMenuItem("粘貼");JMenuItem("查找");JMenuItem("查找下一個(gè)");JMenuItem("替換");JMenuItem("轉(zhuǎn)到");JMenuItem("全選");JMenuItem("時(shí)間/日期");JMenuItem("自動(dòng)換行");JMenuItem("字體");JMenuItem("狀態(tài)欄");JMenuItem("幫助主題");JMenuItem("關(guān)于記事本");JTextArea();openFile();isCurrentFileSaved();new():open();saveFile();saveFileAs();exitFile();undo();cut();copy();paste();del();search();searchNext();replace();turnTo();selectAll();time/Date();swapLine();font();status();helpTile();about();2.2.2流程圖(手繪附報(bào)告)3調(diào)試與性能分析當(dāng)程序完成以后我們就開始著手開始調(diào)試,在經(jīng)過不停地修改后,程序終于通過啦!在調(diào)試過程中的錯(cuò)誤是需要一點(diǎn)點(diǎn)的找到錯(cuò)誤的,然后耐心的讀程序,找到上下代碼之間的邏輯關(guān)系,然后將程序改過來。下面是程序運(yùn)行后的結(jié)果和相應(yīng)的功能實(shí)現(xiàn)。運(yùn)行后的結(jié)果(1)主界面(2)文件菜單(3)編輯菜單(4)另存為子菜單4參考文獻(xiàn)(美)Y.DanielLiang《面向?qū)ο蟪绦蛟O(shè)計(jì)》5附錄(程序清單)importjava.awt.*;importjava.awt.event.*;importjava.awt.datatransfer.*;importjava.io.*;importjavax.swing.*;importjavax.swing.event.*;importjavax.swing.text.*;publicclassJNotepadextendsJPanel{JTextAreajta=newJTextArea("",35,50);//定義文本區(qū)域JScrollPanejsp=newJScrollPane(jta);//定義滾動(dòng)框JMenuBarjmb=newJMenuBar();//定義菜單欄JMenufile=newJMenu("文件(F)");//定義菜單JMenuedit=newJMenu("編輯(E)");JMenuformat=newJMenu("格式(O)");JMenuview=newJMenu("查看(V)");JMenuhelp=newJMenu("幫助(H)");JToolBartoolBar=newJToolBar();//定義工具欄JMenuItemjmi;//定義菜單項(xiàng)Clipboardclipbd=getToolkit().getSystemClipboard();Stringtext="";publicJNotepad()//構(gòu)造函數(shù){classnewLimplementsActionListener//新建文本區(qū)域jta的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){jta.setDocument(newPlainDocument());}}classopenLimplementsActionListener//打開文件的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){JFileChooserfc=newJFileChooser();//實(shí)現(xiàn)保存文件和打開文件的標(biāo)準(zhǔn)對話框intreturnVal=fc.showDialog(JNotepad.this,"Openfile");if(returnVal==JFileChooser.APPROVE_OPTION){Stringfile=fc.getSelectedFile().getPath();//用file保存文件名if(file==null){return;}try//打開文件的異常處理{Readerin=newFileReader(file);char[]buff=newchar[4096];intnch;while((nch=in.read(buff,0,buff.length))!=-1){jta.setDocument(newPlainDocument());jta.append(newString(buff,0,nch));}}catch(IOExceptionio){System.err.println("IOException:"+io.getMessage());}}else{return;}}}classsaveAsimplementsActionListener//另存為的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){JFileChooserfc=newJFileChooser();intreturnVal=fc.showSaveDialog(JNotepad.this);if(returnVal==JFileChooser.APPROVE_OPTION){Stringsavefile=fc.getSelectedFile().getPath();if(savefile==null){return;}else{StringdocToSave=jta.getText();if(docToSave!=null){FileOutputStreamfstrm=null;BufferedOutputStreamostrm=null;try//開始保存的異常處理{fstrm=newFileOutputStream(savefile);ostrm=newBufferedOutputStream(fstrm);byte[]bytes=null;try{bytes=docToSave.getBytes();}catch(Exceptione1){e1.printStackTrace();}ostrm.write(bytes);}catch(IOExceptionio){System.err.println("IOException:"+io.getMessage());}finally{try{ostrm.flush();fstrm.close();ostrm.close();}catch(IOExceptionioe){System.err.println("IOException:"+ioe.getMessage());}}}}}else{return;}}}classprintLimplementsActionListener//打印程序的監(jiān)聽類{publicvoidactionPerformed(ActionEvente) { Stringprint=""; }}classexitLimplementsActionListener//退出程序的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){System.exit(0);}}classundoLimplementsActionListener//撤銷的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { }}classcutLimplementsActionListener//剪切的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();StringSelectionclipString=newStringSelection(selection);clipbd.setContents(clipString,clipString);jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());}}classcopyLimplementsActionListener//復(fù)制的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();StringSelectionclipString=newStringSelection(selection);clipbd.setContents(clipString,clipString);}}classpasteLimplementsActionListener//粘貼的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){TransferableclipData=clipbd.getContents(JNotepad.this);try{StringclipString=(String)clipData.getTransferData(DataFlavor.stringFlavor);jta.replaceRange(clipString,jta.getSelectionStart(),jta.getSelectionEnd());}catch(Exceptionex) {}}}classdeleteLimplementsActionListener//刪除的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());}}classfindLimplementsActionListener//查找窗口的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){Stringfind="";find=JOptionPane.showInputDialog("Findwhat:");}}classfindNextLimplementsActionListener//查找下一個(gè)的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){}}classreplaceLimplementsActionListener//替換的監(jiān)聽類{ publicvoidactionPerformed(ActionEvente) { } }classturnToLimplementsActionListener//轉(zhuǎn)到的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { } }classselectAllLimplementsActionListener//全選的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){jta.selectAll();}}classtimeDateLimplementsActionListener//時(shí)間/日期的監(jiān)聽類{ publicvoidactionPerformed(ActionEvente) { } }classlineWrapLimplementsActionListener//自動(dòng)換行的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { } }classfontLimplementsActionListener//字體的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { } }classstatusLimplementsActionListener//狀態(tài)欄的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { } }classhelpTitleLimplementsActionListener//幫助主題的監(jiān)聽類 { publicvoidactionPerformed(ActionEvente) { } }classaboutLimplementsActionListener//關(guān)于的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){ JOptionPane.showMessageDialog(null,"我們的記事本");}}classjtaLimplementsActionListener//文本區(qū)域的監(jiān)聽類{publicvoidactionPerformed(ActionEvente){}}file.add(jmi=newJMenuItem("新建(N)Ctrl+N",KeyEvent.VK_N));//file菜單中加入子菜單jmi.addActionListener(newnewL());//設(shè)置子菜單的監(jiān)聽者file.add(jmi=newJMenuItem("打開(O)Ctrl+O",KeyEvent.VK_O));jmi.addActionListener(newopenL());file.add(jmi=newJMenuItem("另存為(A)",KeyEvent.VK_A));jmi.addActionListener(newsaveAs());file.add(jmi=newJMenuItem("保存(S)Ctrl+S",KeyEvent.VK_S));file.addSeparator();file.add(jmi=newJMenuItem("打印(P)Ctrl+P",KeyEvent.VK_P));jmi.addActionListener(newprintL());file.addSeparator();file.add(jmi=newJMenuItem("退出(X)",KeyEvent.VK_X));jmi.addActionListener(newexitL());edit.add(jmi=newJMenuItem("撤銷(U)Ctrl+Z",KeyEvent.VK_U));//edit菜單中加入子菜單jmi.addActionListener(newundoL());//設(shè)置子菜單的監(jiān)聽者edit.addSeparator();edit.add(jmi=newJMenuItem("剪切(T)Ctrl+X",KeyEvent.VK_T));jmi.addActionListener(newcutL());edit.add(jmi=newJMenuItem("復(fù)制(C)Ctrl+C",KeyEvent.VK_C));jmi.addActionListener(newcopyL());edit.add(jmi=newJMenuItem("粘貼(P)Ctrl+V",KeyEvent.VK_P));jmi.addActionListener(newpasteL());edit.add(jmi=newJMenuItem("刪除(L)Del",KeyEvent.VK_L));jmi.addActionListener(newdeleteL());edit.addSeparator();edit.add(jmi=newJMenuItem("查找(F)Ctrl+F",KeyEvent.VK_F));jmi.addActionListener(newfindL());edit.add(jmi=newJMenuItem("查找下一個(gè)(N)F3",KeyEvent.VK_N));jmi.addActionListener(newfindNextL());edit.add(jmi=newJMenuItem("替換(R)Ctrl+H",KeyEvent.VK_R));jmi.addActionListener(newreplaceL());edit.add(jmi=newJMenuItem("轉(zhuǎn)到(G)Ctrl+G",KeyEvent.VK_G));jmi.addActionListener(newturnToL());edit.addSeparator();edit.add(jmi=newJMenuItem("全選(A)Ctrl+A",KeyEvent.VK_A));jmi.addActionListener(newselectAllL());edit.add(jmi=newJMenuItem("時(shí)間/日期(D)F5",KeyEvent.VK_D));jmi.addActionListener(newtimeDateL());format.add(jmi=newJMe

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論