收藏 分享(赏)

java记事本课程设计论文附源码.doc

上传人:精品资料 文档编号:10681423 上传时间:2019-12-23 格式:DOC 页数:26 大小:2.40MB
下载 相关 举报
java记事本课程设计论文附源码.doc_第1页
第1页 / 共26页
java记事本课程设计论文附源码.doc_第2页
第2页 / 共26页
java记事本课程设计论文附源码.doc_第3页
第3页 / 共26页
java记事本课程设计论文附源码.doc_第4页
第4页 / 共26页
java记事本课程设计论文附源码.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、I设计题目:记事本课程设计专 业:电子信息科学与技术班 级:电子 1202 班学 号:20121210606姓 名:王鹏2015 年 7 月信息科学与工程学院Java 课程设计- 2 -XXX 学院本科学生课程设计任务书题 目 记事本1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)模拟 Windows 的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。3、主要参考文献1朱福喜. J

2、ava 语言程序设计 (第二版).科学出版社2陈国君等. Java 程序设计基础 (第二版).清华大学出版社3 Deitel.Java 大学基础教程 (第六版).电子工业出版社 4 MaryCampione.Java 语言导学 (第四版).机械工业出版社5 Y.Daniel Liang.Java 语言程序设计基础篇 (第六版). 机械工业出版社6 Kathy Sierra.Head First Java (第二版).东南大学出版社4、课程设计工作进度计划序号 时间(天) 内容安排 备注1 1 分析设计准备 周一2 2 编程调试阶段 周二至周三3 1 编写课程设计报告 周四4 1 考核 周五总计

3、 5(天)指导教师(签字) 日期 年 月 日教研室意见:年 月 日- 3 -学生(签字): 接受任务时间: 年 月 日1摘 要目前,很多新的技术领域都涉及到了 Java 语言,Java 语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关 JAVA 程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用 Java 程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘

4、贴,剪切等功能。该程序主要用到了Java swing 和事件监听等。关键词 记事本程序,java 语言,Java swing 2目 录摘 要 11 需求分析 .31.1 需求分析 .31.2 功能设计 .32 概要分析 .42.1 概要设计思想 42.2 程序运行界面 42.3 程序模块说明 52.4 流程图 .62.5 程序相关说明 73 程序详细设计与分析 83.1 构建菜单栏及其下拉菜单 .83.2“文件”菜单操作的事件监听 83.3“编辑”、“格式”等菜单的事件监听 .103.4 异常处理 .114 测试分析 .125 源程序清单 .15结 论 22参 考 文 献 .2331 需求分析

5、1.1 需求分析现在网络上各种文档编辑器数不胜数,有 EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad+,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。1.2 功能设计本程序要构建的记事本程序参照了 Windows 操作系统的记

6、事本工具,其功能有以下几个方面:1、菜单中有“文件” , “编辑” , “格式” , “查看” , “帮助”五个主菜单。2、 “文件”有“新建” “打开” “保存” “另存为” “退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。3、 “编辑”中有“撤销” “剪切” “复制” “粘贴” “全选” “时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。4、 “格式”菜单中有“自动换行”和“字体”两个子菜单。5、 “查看”菜单只是显示状态栏。6、 “帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。42

7、 概要分析2.1 概要设计思想在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到了JMenu,JMenuItem 等。JMenu 用来制作菜单,菜单包括“文件” “编辑” “格式”“查看” “帮助” 。JMenuItem 主要用来制作主菜单下面的子菜单。2.2 程序运行界面图 2.1 记事本程序运行界面2.3 程序模块说明implementsNotepadextendsActionListenerJFrame5图 2.2 类 Notepad 模块图 2.3 程序详细模块2.4 流程图新建打开保存另存为剪切复制粘贴全选自动换行字体状态栏关于记事本退出时间日期文件 编辑 格式 帮助查看Not

8、epad的构造方法初始化容器 组件 添加事件监听菜单栏 文字输入区初始化初始化打开保存另存为退出剪切复制粘贴全选时间日期新建字体自动换行状态栏关于记事本于关闭或退出程序opensaveString savePathExit()text.cut()text.copy()text.pastetext.selectAll()text.ins.ertString messagestatus.setEnabledfonts.setEnabledtext.setLineWraplnewFile启动程序输入文字FalseFalse6图 2.4 程序流程图2.5 程序相关说明整个记事本分为 2 快:菜单栏和内

9、容输入区。本程序中首先定义一个Notepad 类继承 JFrame 作为最底层容器。(1) 、text 为程序文本输入区。(2) 、Menu 为菜单栏。(3) 、要想记事本完成需求分析中相应的功能,还必须添加事件监听器。7事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中Listen 和 Listen1 实现了 ActionListener 接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。83 程序详细设计与分析3.1 构建菜单栏及其下拉菜单JMenu files=new JMenu(“文件(F)“);JMenu edit=new JMenu(“编辑(E)“);JMe

10、nu formats=new JMenu(“格式(O)“);JMenu scan=new JMenu(“查看(V)“);JMenu help=new JMenu(“帮助(H)“);JMenuItem newFile=new JMenuItem(“新建(N)“);JMenuItem open=new JMenuItem(“打开(O).“);JMenuItem save=new JMenuItem(“保存(S)“);JMenuItem saveAs=new JMenuItem(“另存为(A).“);JMenuItem exit=new JMenuItem(“退出(X)“);JMenuItem un

11、do=new JMenuItem(“撤销(U)“);JMenuItem cut=new JMenuItem(“剪切(T)“);JMenuItem copy=new JMenuItem(“复制(C)“);JMenuItem paste=new JMenuItem(“粘贴(P)“);JMenuItem selectAll=new JMenuItem(“全选 (A)“);JMenuItem timeDate=new JMenuItem(“时间 /日期(D)“);JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem(“自动换行(M)“);JMenuItem

12、fonts=new JMenuItem(“字体.“);JMenuItem status=new JMenuItem(“状态栏“);JMenuItem about=new JMenuItem(“关于记事本(A)“ );3.2“文件”菜单操作的事件监听class Listen1 implements ActionListener/实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();/打开文件事件if(source=open)9FileDialog openFile=new Fi

13、leDialog(th,“打开文件.“,FileDialog.LOAD);openFile.setVisible(true);String filePath=openFile.getDirectory()+openFile.getFile();tryFileInputStream fis=new FileInputStream(filePath);byte content=new bytefis.available();fis.read(content);text.setText(new String(content);text.setCaretPosition(0);if(openFile.

14、getFile()!=null)th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;fis.close();catch(Exception ex)ex.printStackTrace();opened=true;/保存及另存为事件else if(source=save|source=saveAs)String savePath=openedPath;if(savePath=null|source=saveAs)FileDialog saveFile=new FileDialog(th,“保存文件.“,File

15、Dialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();tryFileOutputStream fos=new FileOutputStream(savePath);10fos.write(text.getText().getBytes();fos.close();catch(Exception ex)ex.printStackTrace();if(source=save)openedPath=savePath;3.3“编辑” 、 “格式”等菜单的事件监听class L

16、isten implements ActionListener/实现用于一般操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();if(source=newFile)text.setText(“);th.setTitle(name);openedPath=null;opened=false;else if(source=exit)System.exit(0);else if(source=selectAll)text.selectAll();else if(source=cut)text.cu

17、t();else if(source=copy)text.copy();else if(source=paste)text.paste();else if(source=lineWrap)text.setLineWrap(!text.getLineWrap();else if(source=about)11String message=“java 记事本n版本 0.01n版权所有 2013 pzhjsjnn本产品符合最终用户许可协议,授权给:npzhjsjn“;JOptionPane.showMessageDialog(th,message,“关于 记事本“,JOptionPane.PLAIN

18、_MESSAGE);else if(source=timeDate)Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat(“HH:mm yyyy-MM-dd“);text.insert(times.format(nowTime),text.getCaretPosition();3.4 异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到 Java 异常处理机制。本程序中选用的异常处理机制是 try,catch。捕获处理异常的第一步是用 try 选定要监控的异常范围,try

19、后跟随 catch 代码块。try UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName();catch (Exception e) System.err.println(“Couldnt use the system look and feel:“+e);124 测试分析图 4.1 “文件”菜单图 4.2 点击“另存为”运行情况13图 4.3 “编辑”菜单图 4.4 插入“时间/日期”14图 4.5 “查看”菜单图 4.6 “帮助”菜单155 源程序清单/* 文本编辑器(模拟实现 Windows记事本程序)* No

20、tepad.java* 模拟Windows的记事本程序,编写一个记事本。* 要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。*/import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Date;import java.text.SimpleDateFormat;public class Notepad extends JFrameJMenuBar menub=new JMenuBar();JTextArea text=new JTextAre

21、a();JMenu files=new JMenu(“文件(F)“);JMenu edit=new JMenu(“编辑(E)“);JMenu formats=new JMenu(“格式(O)“);JMenu scan=new JMenu(“查看(V)“);JMenu help=new JMenu(“帮助(H)“);JMenuItem newFile=new JMenuItem(“新建(N)“);JMenuItem open=new JMenuItem(“打开(O).“);JMenuItem save=new JMenuItem(“保存(S)“);JMenuItem saveAs=new JMe

22、nuItem(“另存为(A).“);JMenuItem exit=new JMenuItem(“退出(X)“);JMenuItem undo=new JMenuItem(“撤销(U)“);JMenuItem cut=new JMenuItem(“剪切(T)“);JMenuItem copy=new JMenuItem(“复制(C)“);JMenuItem paste=new JMenuItem(“粘贴(P)“);JMenuItem selectAll=new JMenuItem(“全选 (A)“);JMenuItem timeDate=new JMenuItem(“时间 /日期(D)“);JC

23、heckBoxMenuItem lineWrap=new JCheckBoxMenuItem(“自动换行(M)“);16JMenuItem fonts=new JMenuItem(“字体.“);JMenuItem status=new JMenuItem(“状态栏“);JMenuItem about=new JMenuItem(“关于记事本(A)“ );JFrame th=this;String name;String openedPath=null;boolean opened=false;boolean reworked=false;/初始化窗体Notepad(String name)su

24、per(name);this.name=name;int x,y;Dimension size=Toolkit.getDefaultToolkit().getScreenSize();x=(size.width-600)/2;y=(size.height-400)/2;setSize(600,400);setLocation(x,y);/让程序界面显示在屏幕中央setMinimumSize(new Dimension(250,150);setDefaultCloseOperation(EXIT_ON_CLOSE); /初始化布局void init()files.setMnemonic(F);e

25、dit.setMnemonic(E);formats.setMnemonic(O);scan.setMnemonic(V);help.setMnemonic(H);newFile.setMnemonic(N);open.setMnemonic(O);save.setMnemonic(S);saveAs.setMnemonic(A);exit.setMnemonic(X);undo.setMnemonic(U);cut.setMnemonic(T);copy.setMnemonic(C);paste.setMnemonic(P);17selectAll.setMnemonic(A);timeDa

26、te.setMnemonic(D);lineWrap.setMnemonic(M);about.setMnemonic(A);/为控件添加助记符newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK);open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent

27、.CTRL_MASK);exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK);cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK);copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK);paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent

28、.VK_V,InputEvent.CTRL_MASK);selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK);timeDate.setAccelerator(KeyStroke.getKeyStroke(“F5“);/为控件添加快捷键files.add(newFile);files.add(open);files.add(save);files.add(saveAs);files.addSeparator();files.add(exit);edit.add(undo);edit.

29、addSeparator();edit.add(cut);edit.add(copy);edit.add(paste);18edit.addSeparator();edit.add(selectAll);edit.add(timeDate);formats.add(lineWrap);formats.add(fonts);scan.add(status);help.add(about);menub.add(files);menub.add(edit);menub.add(formats);menub.add(scan);menub.add(help);setJMenuBar(menub); g

30、etContentPane().add(new JScrollPane(text);Listen listen=new Listen();Listen1 listen1=new Listen1();newFile.addActionListener(listen);open.addActionListener(listen);save.addActionListener(listen);saveAs.addActionListener(listen);exit.addActionListener(listen);cut.addActionListener(listen);copy.addAct

31、ionListener(listen);paste.addActionListener(listen);selectAll.addActionListener(listen);timeDate.addActionListener(listen);lineWrap.addActionListener(listen);about.addActionListener(listen);open.addActionListener(listen1);save.addActionListener(listen1);saveAs.addActionListener(listen1);/为控件添加事件侦听器u

32、ndo.setEnabled(false);fonts.setEnabled(false); status.setEnabled(false); /暂时没有实现的功能class Listen implements ActionListener19/实现用于一般操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();if(source=newFile)text.setText(“);th.setTitle(name);openedPath=null;opened=false;else if(sou

33、rce=exit)System.exit(0);else if(source=selectAll)text.selectAll();else if(source=cut)text.cut();else if(source=copy)text.copy();else if(source=paste)text.paste();else if(source=lineWrap)text.setLineWrap(!text.getLineWrap();else if(source=about)String message=“java 记事本n版本 0.01n版权所有 2013 pzhjsjnn本产品符合

34、最终用户许可协议,授权给:npzhjsjn“;JOptionPane.showMessageDialog(th,message,“关于 记事本“,JOptionPane.PLAIN_MESSAGE);else if(source=timeDate)Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat(“HH:mm yyyy-MM-dd“);text.insert(times.format(nowTime),text.getCaretPosition();class Listen1 implements Actio

35、nListener20/实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e)Object source=e.getSource();/打开文件事件if(source=open)FileDialog openFile=new FileDialog(th,“打开文件.“,FileDialog.LOAD);openFile.setVisible(true);String filePath=openFile.getDirectory()+openFile.getFile();tryFileInputStream fis=new File

36、InputStream(filePath);byte content=new bytefis.available();fis.read(content);text.setText(new String(content);text.setCaretPosition(0);if(openFile.getFile()!=null)th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;fis.close();catch(Exception ex)ex.printStackTrace();opened=true;/保存及

37、另存为事件else if(source=save|source=saveAs)String savePath=openedPath;if(savePath=null|source=saveAs)FileDialog saveFile=new FileDialog(th,“保存文件.“,FileDialog.SAVE);saveFile.setVisible(true);21savePath=saveFile.getDirectory()+saveFile.getFile();tryFileOutputStream fos=new FileOutputStream(savePath);fos.w

38、rite(text.getText().getBytes();fos.close();catch(Exception ex)ex.printStackTrace();if(source=save)openedPath=savePath;public static void main(String args)try UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName();catch (Exception e) System.err.println(“Couldnt use the system look and fe

39、el:“+e);String name=(“记事本“);/让界面呈现跟系统一致的外观/JFrame.setDefaultLookAndFeelDecorated(true);/JDialog.setDefaultLookAndFeelDecorated(true);Notepad note=new Notepad(name);note.init();note.setVisible(true); 22结 论当我看到课程设计题目时,有这么多题目和以前做过的类似,我再三考虑终于选了这个题目,刚开始的时侯我觉得做起来应该非常简单,可仔细分析、设计算法时才发现并没有我想像的那么简单。由于本次课程设计是一

40、个人一个题目,所以只有通过自已努力,有什么不懂的请教同学或在网上搜集一些资料,可网上的资料有很多的不足,刚开始的两天,感觉还有很多地方需要查资料,进度也比较慢。在余下的日子里,自已不断地查资料,请教同学帮助,可是还是有一大堆的问题存在。可是难题依然没有得到解决,算法的改进真的让人苦思冥想,怎么去解决,查阅了一大堆的资料,还有就是模块化设计问题,平时的运用还不够熟悉,所以这一块也要查阅许多资料。通过每次自已的亲自动手,发现自已的知识还有很多的不足,比如:算法的灵活应用及一些不常用的类不熟悉,还有就是一个人的力量是有限,没有团队力量那么大的爆发力,做起事来总是单一方面的做,没有做到十全十美。程序不

41、知道被我改了多少遍,可是还是有不足,多亏老师和同学们的帮助。自已现在更深有体会,如果你不亲自动手实践,那么你永远不会里面有什么缺陷,有什么优势,只有通过这样的实践才来成长,对于所学的知识也更容易融会贯通,而且使用起来也会更加简洁,让自已的程序发挥最佳的性能。课程设计的这段时间也让自己深深体会了我们要有认真细致的态度,在程序编写过程中,一个字母,一个符号就使程序出错,还得仔细查找。虽然从中有不少的酸甜苦辣,不过让自已这段日子过得很充实。让我收获很多,只要自己付出了努力,一定会有成果的。23参 考 文 献1 朱福喜.Java 语言程序设计 (第二版).科学出版社2 陈国君等.Java 程序设计基础 (第二版).清华大学出版社3 Deitel.Java 大学基础教程 (第六版).电子工业出版社 4 MaryCampione.Java 语言导学 (第四版).机械工业出版社5 Y.Daniel Liang.Java 语言程序设计基础篇 (第六版). 机械工业出版社6 Kathy Sierra.Head First Java (第二版).东南大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报