JAVA簡(jiǎn)單記事本程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(帶源碼)要點(diǎn)
JAVA程序設(shè)計(jì)實(shí) 驗(yàn) 報(bào) 告院系:信息工程系專業(yè):計(jì)算機(jī)應(yīng)用技術(shù)班級(jí):11 計(jì)算機(jī) 01 班姓名:Civen任課教師:XXX實(shí)驗(yàn)題目:JAVA 簡(jiǎn)單記事本程序設(shè)計(jì)目錄目錄1一、引言21.1課程設(shè)計(jì)目的21.2題目說(shuō)明21.3開(kāi)發(fā)工具介紹2二、總體設(shè)計(jì)- 4 -2.1 系統(tǒng)開(kāi)發(fā)平臺(tái)- 4 -2.2 系統(tǒng)流程圖42.3 功能結(jié)構(gòu)圖錯(cuò)誤!未定義書(shū)簽。2.4 數(shù)據(jù)庫(kù)設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。三、詳細(xì)說(shuō)明43.1 系統(tǒng)實(shí)施- 11 -四、系統(tǒng)的調(diào)試和運(yùn)行9五、課程設(shè)計(jì)總結(jié)9六、參考文獻(xiàn)9附錄(源程序代碼)10一、引言1.1課程設(shè)計(jì)目的1)復(fù)習(xí) , 鞏固 Java 語(yǔ)言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)Java 語(yǔ)言的理解和掌握;2) 課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì), 將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生的分析解決實(shí)際問(wèn)題的能力,提高學(xué)生適應(yīng)實(shí)際, 實(shí)踐編程的能力;3) 培養(yǎng)學(xué)生在項(xiàng)目開(kāi)發(fā)中團(tuán)隊(duì)合作精神,創(chuàng)新意識(shí)及能力。1掌握窗口、菜單等高級(jí)組件的應(yīng)用。2掌握 Java Swing 的使用方法。3了解 GUI 應(yīng)用程序的創(chuàng)建過(guò)程與方法。1.2題目說(shuō)明課題:學(xué)生成績(jī)管理4功能要求 : 編寫一個(gè)簡(jiǎn)單記事本程序,要求包含以下菜單項(xiàng)文件 新建、打開(kāi)、保存、退出編輯 剪切、拷貝、粘貼、查找?guī)椭P(guān)于5實(shí)現(xiàn)文件和編輯菜單里的功能1.3開(kāi)發(fā)工具介紹Eclipse是一種可擴(kuò)展的開(kāi)放源代碼IDE。 2001 年11 月, IBM 公司捐出價(jià)值4,000萬(wàn)美元的源代碼組建了Eclipse聯(lián)盟,并由該聯(lián)盟負(fù)責(zé)這種工具的后續(xù)開(kāi)發(fā)。集成開(kāi)發(fā)環(huán)境 (IDE)經(jīng)常將其應(yīng)用范圍限定在“開(kāi)發(fā)、構(gòu)建和調(diào)試”的周期之中。為了幫助集成開(kāi)發(fā)環(huán)境 (IDE) 克服目前的局限性,業(yè)界廠商合作創(chuàng)建了Eclipse平臺(tái)。 Eclipse允許在同一 IDE 中集成來(lái)自不同供應(yīng)商的工具,并實(shí)現(xiàn)了工具之間的互操作性,從而顯著改變了項(xiàng)目工作流程,使開(kāi)發(fā)者可以專注在實(shí)際的嵌入式目標(biāo)上。利用 Eclipse ,我們可以將高級(jí)設(shè)計(jì) ( 也許是采用 UML)與低級(jí)開(kāi)發(fā)工具 ( 如應(yīng)用調(diào)試器等 ) 結(jié)合在一起。 如果這些互相補(bǔ)充的獨(dú)立工具采用 Eclipse 擴(kuò)展點(diǎn)彼此連接, 那么當(dāng)我們用調(diào)試器逐一檢查應(yīng)用時(shí), UML對(duì)話框可以突出顯示我們正在關(guān)注的器件。 事實(shí)上,由于 Eclipse 并不了解開(kāi)發(fā)語(yǔ)言,所以無(wú)論 Java 語(yǔ)言調(diào)試器、 C/C+調(diào)試器還是匯編調(diào)試器都是有效的,并可以在相同的框架內(nèi)同時(shí)瞄準(zhǔn)不同的進(jìn)程或節(jié)點(diǎn)。Eclipse 微軟公司的的最大特點(diǎn)是它能接受由 Java 開(kāi)發(fā)者自己編寫的開(kāi)放源代碼插件, 這類似 Visual Studio 和 Sun 微系統(tǒng)公司的 NetBeans 平臺(tái)。Eclipse 為工具開(kāi)發(fā)商提供了更好的靈活性,使他們能更好地控制自己的軟件技術(shù)。Eclipse聯(lián)盟已經(jīng)宣布將在 2004 年中期發(fā)布其3.0 版軟件。這是一款非常受歡迎的java開(kāi)發(fā)工具,這國(guó)內(nèi)的用戶越來(lái)越多,實(shí)際上實(shí)用它java開(kāi)發(fā)人員是最多的。缺點(diǎn)就是較復(fù)雜,對(duì)初學(xué)者來(lái)說(shuō),理解起來(lái)較困難。二、總體設(shè)計(jì)2.1 系統(tǒng)開(kāi)發(fā)平臺(tái)前端使用 JAVA設(shè)計(jì)2.2 系統(tǒng)流程圖新打保另剪存建開(kāi)存切為開(kāi)始Y輸入文字?N復(fù)粘刪查替全關(guān)制貼除找換選于退出結(jié)束圖 3.1 主流程圖2.3 功能結(jié)構(gòu)圖3.2.2“文件”菜單操作流程圖開(kāi)始“文件”菜單新建File=null打保存開(kāi)用 JFileChooser() 選擇用 sava()保存文件所有打開(kāi)文件路徑用 unfold() 讀取所選的文件內(nèi)容到記事本退出或關(guān)閉N文件是否修改Y用 sava()保存文用 close()關(guān)閉文件結(jié)束另存為用 JFileChooser()選擇文件另存的路徑用 sava()保存文件圖 3.2 “文件”菜單操作流程圖3.2.3“編輯”菜單操作流程圖開(kāi)始“編輯”菜單剪復(fù)粘刪查替全切制貼除找換選設(shè)置修改用設(shè)置修改設(shè)置修改標(biāo)簽,用用標(biāo) 簽 ,text.cop標(biāo)簽,text.replaceRaFindAndReptext.seltext.cut()y() 實(shí)現(xiàn)text.paste(nge("",start,lace 方 法ectAll()end);實(shí)現(xiàn)實(shí)現(xiàn)退出或關(guān)閉N文件是否修改Y用 sava()保存文件并用 close()關(guān)閉文件結(jié)束圖 3.3“編輯”菜單操作流程圖3.2.4“幫助”菜單操作流程圖開(kāi)始“幫助”菜單關(guān)于記事本顯示記事本的有關(guān)信息結(jié)束圖 3.4“幫助”菜單操作流程圖三、詳細(xì)說(shuō)明設(shè)計(jì)兩個(gè)類,一個(gè)類,在主類中創(chuàng)建一個(gè)jsbjsb類,具有程序的要求和功能再創(chuàng)建一個(gè)keshe類的對(duì)象,就可以直接在編譯器中運(yùn)行程序。主1:界面設(shè)計(jì)在主界面中設(shè)計(jì)一個(gè)域控件,把該容器設(shè)置為Frame 容器,并在其中加入一個(gè)下拉菜單和一個(gè)文本GridLayout(1,1)布局。2: 功能設(shè)計(jì)在下拉菜單中加入子菜單并進(jìn)行監(jiān)聽(tīng),分別實(shí)現(xiàn)對(duì)文件的操作功能。點(diǎn)擊不同菜單項(xiàng)時(shí),顯示不同界面。3 :代碼設(shè)計(jì)編寫每個(gè)控件的相關(guān)代碼,并進(jìn)行調(diào)試。3.1 系統(tǒng)實(shí)施1:界面設(shè)計(jì)創(chuàng)建一個(gè)下拉菜單和文本域,在文本域中顯示編輯的文件信息。主要代碼:f=new Frame(s);p1=new TextArea("");f.setSize(400,600);f.setBackground(Color.white);f.setVisible(true);menubar=new MenuBar();menu1=new Menu(" 文件 ");menu2=new Menu(" 編輯 ");menu3=new Menu(" 幫助 ");item1=new MenuItem("新建 ");item2=new MenuItem("打開(kāi) ");item3=new MenuItem("保存 ");item4=new MenuItem("另存為 ");item5=new MenuItem("退出 ");item6=new MenuItem("全選 ");item7=new MenuItem("復(fù)制 ");item8=new MenuItem("剪切 ");item9=new MenuItem("粘貼 ");item10=new MenuItem("關(guān)于 ");menu1.add(item1);menu1.add(item2);menu1.add(item4);menu1.add(item5);menu2.add(item6);menu2.add(item7);menu2.add(item8);menu2.add(item9);menu3.add(item10);menubar.add(menu1);menubar.add(menu2);menubar.add(menu3);f.setMenuBar(menubar);2:功能設(shè)計(jì)對(duì)每個(gè)菜單項(xiàng)進(jìn)行注冊(cè)監(jiān)聽(tīng)。點(diǎn)擊不同菜單項(xiàng)時(shí),顯示不同界面。主要代碼item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);item6.addActionListener(this);item7.addActionListener(this);item8.addActionListener(this);item9.addActionListener(this);item10.addActionListener(this);3:代碼設(shè)計(jì)部分菜單項(xiàng)的相關(guān)代碼:新建文件if (e.getSource()=item1) if (i=0&&(ss.length()!=0) bc(); elsep1.setText("");i=0;f.setTitle("文件對(duì)話框 "); 打開(kāi)文件if (e.getSource()=item2) fd=new FileDialog(f,"打開(kāi)文件 ",0);fd.setVisible(true);try file=new File(fd.getDirectory(),fd.getFile();f.setTitle(fd.getFile()+"文件對(duì)話框 ");FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr);String line = null;String view = ""while(line=br.readLine()!=null) view += line+"n" p1.setText(view); br.close(); fr.close(); catch(IOException expIn) 復(fù)制文件if (e.getSource()=item7) tryString str=p1.getSelectedText();if(str.length()!=0) strt=str; catch(Exception ex) 粘貼文件if (e.getSource()=item9) if(strt.length()>0) p1.insert(strt,p1.getCaretPosition();退出記事本if (e.getSource()=item5) if (i=0 &&(ss.length()!=0) bc(); else System.exit(0); 四、系統(tǒng)的調(diào)試和運(yùn)行1: 界面調(diào)試確定主窗體, 設(shè)置主窗體的屬性,對(duì)窗體進(jìn)行布局,加入所需控件并對(duì)控件進(jìn)行初始化。在完成加入菜單控件后,不能缺少f.setMenuBar(menubar);語(yǔ)句,將menubar 設(shè)為主窗體的菜單條,否則會(huì)看不到菜單欄。如圖:2:功能調(diào)試對(duì)所有菜單項(xiàng)進(jìn)行注冊(cè)監(jiān)聽(tīng)。 當(dāng)進(jìn)行除保存以外的菜單項(xiàng)的功能外,在 actionPerformed中要編寫判斷界面是否已經(jīng)打開(kāi)或者編輯了文件,如果是,在進(jìn)行別的功能之前,先對(duì)本文件的保存功能,以免文件的丟失。在具體實(shí)現(xiàn)中可以用變量i 來(lái)判斷文件是否處于保存狀態(tài)。五、課程設(shè)計(jì)總結(jié)本次課程設(shè)計(jì), 讓我獲益匪淺, 不僅更深入的了解Java 這門學(xué)科, 更使自己有了繼續(xù)探索的興趣。于個(gè)人而言,在程序設(shè)計(jì)的過(guò)程中,我深感“認(rèn)真嚴(yán)謹(jǐn)”這個(gè)詞的重要性,一點(diǎn)點(diǎn)小的馬虎,便會(huì)導(dǎo)致整個(gè)程序不能正常運(yùn)行。在今后的學(xué)習(xí)中,我定將“認(rèn)真嚴(yán)謹(jǐn)時(shí)刻作為自的謹(jǐn)言。與此同時(shí),本小組成員的互幫互助,讓我體會(huì)到了團(tuán)結(jié)的力量,而更讓人難以忘懷的是在熱烈討論問(wèn)題時(shí),那激情橫溢的場(chǎng)面??傊?,此次課程設(shè)計(jì)在我的學(xué)生生涯中啟上了至關(guān)重要的作用。最后,真誠(chéng)的感謝陳珂、顧成喜老師的指導(dǎo)和教誨。六、參考文獻(xiàn)按照以下格式書(shū)寫1 權(quán)明富,齊佳音,舒華英 . 客戶價(jià)值評(píng)價(jià)指標(biāo)體系設(shè)計(jì)J. 南開(kāi)管理評(píng)論, 2004 ,7(3):17-18.2劉小洪,鄒鵬.商業(yè)銀行客戶關(guān)系價(jià)值管理模型研究J.管理科學(xué),2005 ,18(3):57-60.附錄(源程序代碼)import java.io.*;import java.awt.*;import java.awt.event.*;class FileInAndOut public static String fileInput(String fName)String strRead=""try FileReader fr=new FileReader(fName);BufferedReader br=new BufferedReader(fr); String aline=new String(); while(aline=br.readLine()!=null) strRead=strRead+aline;br.close();fr.close(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();return strRead;public static void fileWrite(String fName,String temp) try FileWriter fw=new FileWriter(fName);BufferedWriter bw=new BufferedWriter(fw);bw.write(temp);bw.close();fw.close(); catch (IOException e) e.printStackTrace();public class MyNote implements ActionListener private Frame f;private TextArea ta;private MenuBar mb;private String strme=" 文件 "," 編輯 "," 幫助 "private String strmi="新建 "," 打開(kāi) "," 保存 "," 退出 ", " 剪切 "," 拷貝 "," 粘貼 "," 查找 ", " 關(guān)于 "private String fileDir,fileName,temp=""private Menu me;private MenuItem mi;private Label l1,l2;private TextField t1,t2;private Button b1,b2,b3;private Dialog diaFind,diaAbout;public MyNote()f=new Frame("無(wú)標(biāo)題 -我的記事本 ");ta=new TextArea();f.add(ta);mb=new MenuBar();f.setMenuBar(mb);mi=new MenuItemstrme.length;me=new Menustrme.length;for(int i=0;i<strme.length;i+)mei=new Menu(strmei);mb.add(mei);mii=new MenuItemstrmii.length;for(int j=0;j<strmii.length;j+)miij=new MenuItem(strmiij);mei.add(miij);miij.addActionListener(this);f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0););f.setSize(400,300);f.show();diaFind=new Dialog(f," 查找 ",true);diaFind.setLayout(new FlowLayout();diaFind.setSize(260,120);l1=new Label(" 查找內(nèi)容 ");l2=new Label(" 替 換 為");t1=new TextField(20);t2=new TextField(20);b1=new Button("下一個(gè) ");b2=new Button("替換 ");b3=new Button("取消 ");diaFind.add(l1);diaFind.add(t1);diaFind.add(l2);diaFind.add(t2);diaFind.add(b1);diaFind.add(b2);diaFind.add(b3);diaFind.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e) diaFind.dispose(););public void actionPerformed(ActionEvent e) String cmd=e.getActionCommand(); if(cmd.equals("新建 ")fileDir=""fileName=""ta.setText("");f.setTitle("無(wú)標(biāo)題 -我的記事本 ");if(cmd.equals("打開(kāi) ")FileDialog diaOpen=new FileDialog(f,"",FileDialog.LOAD);diaOpen.show();fileDir=diaOpen.getDirectory();fileName=diaOpen.getFile();if(!fileName.equals("")ta.setText(FileInAndOut.fileInput(fileDir+fileName); f.setTitle(fileName+"- 我的記事本 ");if(cmd.equals("保存 ")FileDialog diaSave=new FileDialog(f,"",FileDialog.SA VE); diaSave.show();fileDir=diaSave.getDirectory();fileName=diaSave.getFile();if(!fileName.equals("")FileInAndOut.fileWrite(fileDir+fileName,ta.getText(); f.setTitle(fileName+"- 我的記事本 ");if(cmd.equals("退出 ")System.exit(0);if(cmd.equals("剪切 ")int x,y;x=ta.getSelectionStart();y=ta.getSelectionEnd();temp=ta.getSelectedText();ta.replaceRange("",x,y);if(cmd.equals("拷貝 ")temp=ta.getSelectedText();if(cmd.equals("粘貼 ")ta.replaceRange(temp,ta.getSelectionStart(),ta.getSelectionEnd();if(cmd.equals("查找 ")diaFind.show();if(cmd.equals("關(guān)于 ")public static void main(String args) new MyNote();