《java记事本课程设计(35页).doc》由会员分享,可在线阅读,更多相关《java记事本课程设计(35页).doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-课程设计(大作业)报告课程名称: 面向对象程序设计 设计题目: 记事本 院 系: 信息系计算机科学与技术专业 班 级: 设 计 者: 学 号: 指导教师: 设计时间: 2012.12.242012.12.28 信息技术学院昆明学院课程设计(大作业)任务书姓 名: 院(系):信息学院专 业:计算机科学与技术学 号:任务起止日期:2012.12.242012.12.28课程设计题目:设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。课程设计要求:1.开始设计前先回顾以前所学的内容,明确本课程设计所要用到的技术点并到网上搜索
2、以及查阅相关的书籍来搜集资料。2.通过编写一个基于JAVA的应用系统综合实例,熟练掌握Java语言设计一个完整的应用程序的设计方法和步骤(软件的分析、设计、调试和总结)。 3在规定时间内,在相关软、硬件的环境下,由指导老师指导独立完成各阶段设计任务。4.设计一个记事本,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,查找替换等功能。可扩展功能。工作计划及安排:明确选题,查阅相关资料1天题目分析、总体设计、编写代码 2天自定义类说明,程序流程图,详细设计,事件处理调试测试、总结,撰写课程设计报告 1天测试分析修改、完善课程设计报告 1天设计体会指导教师签字 年
3、月 日 课程设计(大作业)成绩学号: 姓名: 指导教师: 课程设计题目:设计一个具有GUI界面的记事本总结:在经过了将近一周的Java课程的学习之后,对于Java这门优秀的编程语言有了更深层次的认识。在学习的过程中,通过老师的教学指导、课外对相关知识的阅读和上机实际操作,对于它所具有的面向对象、与平台无关、安全、稳定和多线程等特点,有了更深刻更直观的认识和理解。从选择课程设计的题目开始,到需求分析,开发工具的选择,最终到系统的设计思路,关键代码的设计,每一步都认真思考分析完成。有点遗憾的是,起初在设计时原本打算能更加完善一些功能的设计,但因为确实有难度就此作罢。在以后的学习中,我会进一步加深对
4、于JAVA的理解和使用,通过阅读相关知识拓宽自己对于JAVA的了解。指导教师评语:成绩:填表时间:指导教师签名:课程设计(大作业)报告一、 题目分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件
5、中的指定的字符串,选定整个文件。(4)“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。二、 总体设计21自定义类说明2.1.1 类名: jishiben (1)作用: 主类(2)继承的父类: JFrame类 (3)实现的接口: windowListener类与actionListener类(4)成员变量说明:File file=null; /定义一个空文件private JLabel stateBar; /定义一个标签private JTextArea text; /定义编辑区private JMenuBar mb; /定义菜单栏private JMenu files,edit
6、,help; /定义菜单private JMenuItem Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About; /定义菜单项(5)主要成员方法说明:编辑区键盘事件:KeyListener类 如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;窗口的事件监听:windowListener类;菜单项的事件监听:ActionListener类;22 程序流程图2.2.1主流程图开始输入文字?新建打开保存另存为剪切复制粘贴删除查找替换全选关于退出结束图3.1主流程图NY2.2.2 “文件”菜单操
7、作流程图开始“文件”菜单新建另存为File=null打开用JFileChooser()选择所有打开文件路径用unfold()读取所选的文件内容到记事本保存用sava()保存文件用JFileChooser()选择文件另存的路径用sava()保存文件退出或关闭文件是否修改用sava()保存文件Y结束N图2.2 “文件”菜单操作流程图用close()关闭文件2.2.3 “编辑”菜单操作流程图开始“编辑”菜单剪切全选设置修改标签,text.cut()复制用text.copy()实现粘贴设置修改标签,text.paste()删除设置修改标签,text.replaceRange(, start, end)
8、;查找替换用FindAndReplace方法实现用text.selectAll()实现退出或关闭文件是否修改用sava()保存文件并结束用close()关闭文件YN图2.3 “编辑”菜单操作流程图2.2.4 “帮助”菜单操作流程图开始“帮助”菜单关于记事本显示记事本的有关信息结束图2.4 “帮助”菜单操作流程图三、 实验器材Ediplus3,PC机四、 制作步骤41 jishiben类的实现File file=null; /定义一个空文件private JLabel stateBar; /定义一个标签private JTextArea text; /定义编辑区private JMenuBar
9、mb; /定义菜单栏private JMenu files,edit,help; /定义菜单private JMenuItem Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About; /定义菜单项42 GUI程序界面设计 public jishiben() /构造函数super(记事本); / 菜单栏 mb=new JMenuBar();/*菜单栏的各个菜单项*/files=new JMenu(文件); edit=new JMenu(编辑);help=new JMenu(帮助);/*“帮助”菜单
10、项的下拉菜单*/About=new JMenuItem(关于记事本); /*“文件”菜单项的下拉菜单*/Open=new JMenuItem(打开); New=new JMenuItem(新建);Save=new JMenuItem(保存);SaveAs=new JMenuItem(另存为);Exit=new JMenuItem(退出); /*编辑菜单的四个下拉菜单*/Cut=new JMenuItem(剪切); Copy=new JMenuItem(复制);Paste=new JMenuItem(粘贴);Delete=new JMenuItem(删除);Find=new JMenuItem(
11、查找);Replace=new JMenuItem(替换);SelectAll=new JMenuItem(全选);stateBar=new JLabel(未修改); /添加标签stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder();mb.add(files); /添加控键mb.add(edit);mb.add(help);files.add(New);files.add(Open);files.add(Save);files.add(S
12、aveAs);files.addSeparator(); / 分隔线 files.add(Exit); edit.add(Cut);edit.add(Copy);edit.add(Paste);edit.add(Delete);edit.addSeparator(); / 分隔线 edit.add(Find);edit.add(Replace);edit.addSeparator(); / 分隔线 edit.add(SelectAll);help.add(About);setJMenuBar(mb);text=new JTextArea();add(new JScrollPane(text);
13、 /滚动面板setSize(600,500); /设置窗口大小setVisible(true); /使窗口显示43 事件处理4.3.1 编辑区键盘事件处理text.addKeyListener( new KeyAdapter()public void keyTyped(KeyEvent e)processTextArea(););4.3.2 窗口事件处理ClasswindowListenerextendsWindowAdapter public void windowClosing(WindowEvent e) close(); 4.3.3 菜单项事件处理class actionListene
14、r implements ActionListener public void actionPerformed(ActionEvent e)JMenuItem mi=(JMenuItem) e.getSource();if(mi=New) /新建文件text.setText();file=null;else if(mi=Exit) /退出 close(); else if(mi=Cut) /剪切 stateBar.setText(已修改); text.cut();else if(mi=Copy) /复制 text.copy();else if(mi=Paste) /粘贴 stateBar.se
15、tText(已修改); text.paste();else if(mi=SelectAll) /全选 text.selectAll();else if(mi=Delete) /删除stateBar.setText(已修改);int start;int end;start = text.getSelectionStart();end = text.getSelectionEnd();text.replaceRange(, start, end); else if(mi=Open) /打开 JFileChooser jf=new JFileChooser(); /创建打开文件对话框if(file!
16、=null) jf.setSelectedFile(file); int returnVal=jf.showOpenDialog(jishiben.this); if(returnVal=JFileChooser.APPROVE_OPTION) file=jf.getSelectedFile(); unfold(); else if(mi=About) /关于String message = -记事本-+ 感谢您的使用!;JOptionPane.showMessageDialog(jishiben.this, message, 关于.,JOptionPane.PLAIN_MESSAGE);el
17、se if(mi=Save) /保存save();else if(mi=SaveAs) /另存为JFileChooser jf=new JFileChooser();if(file!=null)jf.setSelectedFile(file);int returnVal=jf.showSaveDialog(jishiben.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=jf.getSelectedFile();save();else if(mi=Find) /查找 FindAndReplace fr=new FindAndReplace
18、();fr.setVisible(true);fr.setLocation(getLocation();else if(mi=Replace) /替换 FindAndReplace fr=new FindAndReplace();fr.setVisible(true);fr.setLocation(getLocation();五、 方案比较(1)程序运行界面如下:(2)“文件”菜单的菜单项:(3)“编辑”菜单的菜单项:(4)打开文件及另存文件时的界面:由于打开文件和另存文件都要寻找路径,所以开始时界面相同。(5)打开了某一个文本文件是的截图:(6)使用查找替换时的截图:在“查找内容”的框内输入
19、查找的内容,再按“查找下一个”这个按钮就可以查找。如果要替换所查找的内容,就在“替换字串”的框内输入要替换成的内容。如图中就是把“风水”替换“风”。(7)记事本关闭或退出时的截图:当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?”的对话框。如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。六、程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;class
20、mynotepad extends JFrame File file=null; Color color=Color.red; mynotepad() initTextContent();/初始化组件 initMenu(); initAboutDialog(); void initTextContent() getContentPane().add(new JScrollPane(content); /滚动面板对象 JTextPane content=new JTextPane(); /创建/内容输入区 JFileChooser openfile=new JFileChooser();/创建打
21、开文件对话框 JColorChooser opencolor=new JColorChooser();/颜色选择 JDialog about=new JDialog(this);/关于对话框 JMenuBar menu=new JMenuBar();/创建菜单栏 /菜单栏的各个菜单项JMenu menus=new JMenunew JMenu(文件),new JMenu(编辑),new JMenu(关于); /“文件”菜单项的四个下拉菜单JMenuItem optionofmenu=new JMenuItemnew JMenuItem(新建),new JMenuItem(打开),new JMe
22、nuItem(保存),new JMenuItem(退出) , /编辑菜单的四个下拉菜单 new JMenuItem(复制), new JMenuItem(剪切),new JMenuItem(粘贴),new JMenuItem(颜色) , new JMenuItem(关于) ; void initMenu() for(int i=0;imenus.length;i+) menu.add(menusi); for(int j=0;joptionofmenui.length;j+) menusi.add(optionofmenuij); optionofmenuij.addActionListene
23、r( action ); this.setJMenuBar(menu); ActionListener action=new ActionListener() /添加事件监听 public void actionPerformed(ActionEvent e) String name = e.getActionCommand();JMenuItem MI=(JMenuItem)e.getSource();if(新建.equals(name)/监听“新建”事件content.setText();file=null;else if(打开.equals(name)/监听“打开”事件 if(file
24、!=null)openfile.setSelectedFile(file); int returnVal=openfile.showOpenDialog(mynotepad.this); if(returnVal=JFileChooser.APPROVE_OPTION) file=openfile.getSelectedFile();/打开选择文件 unfold(); else if(保存.equals(name)/监听“保存”事件 if(file!=null) openfile.setSelectedFile(file); int returnVal=openfile.showSaveDia
25、log(mynotepad.this); if(returnVal=JFileChooser.APPROVE_OPTION) file=openfile.getSelectedFile(); saving(); else if(退出.equals(name) mynotepad f=new mynotepad(); int s=JOptionPane.showConfirmDialog(f,退出?,退出,JOptionPane.YES_NO_OPTION);/提示用户是否退出 if(s=JOptionPane.YES_OPTION) System.exit(0); else if(剪切.equ
26、als(name)/监听“剪切”事件 content.cut(); else if(复制.equals(name) /监听“复制”事件 content.copy(); else if(粘贴.equals(name) /监听“粘贴”事件 content.paste(); else if(颜色.equals(name) /监听“颜色”事件 color=JColorChooser.showDialog(mynotepad.this,color); content.setForeground(color); /对颜色进行设置 else if(关于.equals(name) about.setSize(
27、300,150);/设置“关于”对话框大小为300150 about.show();/显示“关于”对话框 ; void saving() try FileWriter Writef=new FileWriter(file);/创建文件写入器 Writef.write(content.getText(); Writef.close(); catch(Exception e)e.printStackTrace(); void unfold() try FileReader Readf=new FileReader(file);/文件读入 int len=(int)file.length(); ch
28、ar buffer=new charlen; Readf.read(buffer,0,len); Readf.close(); content.setText(new String(buffer); catch(Exception e)e.printStackTrace(); void initAboutDialog() about.setLayout(new GridLayout(3,1);/将“关于”对话框设置为3行1列 about.getContentPane().setBackground(Color.white);/设置对话框背景色 about.getContentPane().ad
29、d(new JLabel(我的记事本程序);/对话框内容 about.getContentPane().add(new JLabel(制作者:Fwx); about.getContentPane().add(new JLabel(2007年12月); about.setModal(true); /设置对话框前端显示 about.setSize(100,100); about.setLocation(250,170); /设置对话框显示位置 ; public class Notepadpublic static void main(String args) /入口main函数 mynotepad
30、 noted=new mynotepad(); noted.addWindowListener(new WindowAdapter() ); noted.setTitle(我的记事本程序); /记事本标题 noted.setSize(640,320); /设置记事本大小 noted.show(); noted.setLocation(150,100); /设置记事本显示位置 六、 参考文献1 孙全党,王吴迪,赵枫朝Java程序设计应用教程M北京:电子工业出版社,20062 雷之宇Java项目开发实践网络篇M北京:中国铁道出版社,20053 赵玉阳Java从入门到精通M北京:清华大学出版社,2006 4 李龙怡Java编程实例讲解M北京:高等教育出版社,20055 李尊朝,苏军Java语言程序设计M北京:中国铁道出版社,2009第 37 页-