1、攀枝花学院课程设计题 目: 记事本程序设计 院 (系): 数学与计算机学院 年级专业: 姓 名: 000000 学 号: 指导教师: 二一三年十二月三十日攀枝花学院教务处制攀枝花学院 java 课程设计报告攀枝花学院本科学生课程设计任务书题 目 记事本1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)模拟 Windows 的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。3、主要参考
2、文献1朱福喜. Java 语言程序设计 (第二版).科学出版社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(天)指导教师(签字) 日期 年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。攀枝花学院 java 课程设计报告课程设计(论文)指导教师成绩评定表题目名称 记事本评分项目 分值 得分 评价内涵01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02 科学实践、调研 7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。工作表现20% 03 课题工作量 7 按期圆满完成规定的任务,工作量饱满。04 综合运用知识的能力 10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能
4、对课题进行理论分析,得出有价值的结论。05 应用文献的能力 5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06 设计(实验)能力,方案的设计能力 5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07 计算及计算机应用能力 5 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。能力水平35%08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10 具有较强的数据收集、分析、处理、综合的能力。09插图(或图纸)质量、篇幅、设计(论文)规范化程度
5、5 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。成果质量45% 11 创新 10 对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年 月 日攀枝花学院 java 课程设计报告摘 要目前,很多新的技术领域都涉及到了 Java 语言,Java 语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。按照教学培养计划要求,学生在学习完课本中指定课时的知识后,应安排一定课时的课程设计。其主
6、要目的是使学生深入理解并实践在本课程中所学的有关 JAVA 程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等。故此“记事本”应运而生。该报告中的程序是简易记事本。使用 Java 程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能,不同之处是本程序能够对文字的颜色进行设置。该程序主要用到了 Java swing 和事件监听等。关键字: 记事本,Java,Java swing第 0 页 共 22 页目录摘 要 .I1 前 言 22 需求分析 .32.1 需求分析 .32.2 功能设计 .33 概要设计 .43.1 程序设计思
7、路 .43.2 程序运行界面 .43.3 模块说明图 .43.4 程序流程图 .63.5 程序相关说明 .64 程序详细设计与分析 .74.1 初始化组件 .74.2.构建菜单栏及其下拉菜单 .74.3 “文件”菜单的事件监听 .74.4 “编辑”菜单的事件监听 .85 测试分析 10结 论 .12参考文献 13附录 14攀枝花学院 java 课程设计报告第 1 页 共 22 页1 前 言Java 的前身是 Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的 Internet 上。1995 年,Java 语言的名字从Oak 编程了 Java。1997 年
8、 J2SE1.1 发布。1998 年 J2SE1.2 发布,标志 Java2 的诞生。十多年来,Java 编程语言及平台成功地运用在网络计算及移动等各个领域。Java 的体系结构由 Java 语言、Java class、Java API、Java 虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java 支持多线程编程,Java 运行时系统在多线程同步方面具有成熟的解决方案。Java 的平台标准有 Java ME,Java SE 和 Java EE。Java 发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持 Java 的开发工具中主要的 7 有
9、 Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper 和 Eclipse 等。其中 Java Development Kit 简称 JDK 是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的 JCreator 开发工具。攀枝花学院 java 课程设计报告第 2 页 共 22 页2 需求分析2.1 需求分析现在网络上各种文档编辑器数不胜数,有
10、EmEditor , UEStudio , GridinSoft Notepad ,Notepad+, win32pad ,SkimEdit, UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。2.2 功能设计本程序要构建的记事本程序参照了 Windows 操作系统的记事本工具,其功能有以下几个方面:(1)菜单中有
11、“文件” , “编辑” , “关于”三个主菜单。(2) “文件”有“新建” “打开” “保存” “退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。(3) “编辑”中有“剪切” “复制” “粘贴” “颜色”三个字菜单:用于剪切文字,复制文字,粘贴文字。增加了“颜色”子菜单来对文字的颜色进行设置。(4) “关于”菜单中有关于记事本程序的制作日期,作者等信息。攀枝花学院 java 课程设计报告第 3 页 共 22 页3 概要设计3.1 程序设计思路在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到JScrollPaneJMenu,JTextPane,JFileChooser
12、 等。JMenu 用来制作菜单,菜单包括“文件” “编辑” “关于” 。JTextPane 主要用来输入文本。为了加入颜色的设置,所以加了一个 JColorChooser 组件。3.2 程序运行界面图 3.1 程序运行界面3.3 模块说明图mynotepadimplementsextendsActionListenerJFrame攀枝花学院 java 课程设计报告第 4 页 共 22 页图 3.2 模块说明图在图 3.2 中,首先创建一个名为 mynotepad 的类并继承 JFrame 类作为最底层的容器。图 3.3 模块说明图mynotepad的构造方法容器初始化 组件 事件监听添加菜单栏
13、文字输入区文件编辑关于剪切复制粘贴颜色关于初始化初始化新建打开保存退出攀枝花学院 java 课程设计报告第 5 页 共 22 页在图 3.3 中,构造一个 mynotepad 类时要做三件事情,分别是初始化容器(initTextContent) 、初始化组件(initMenu、initAboutDialog) 、设置事件监听器。3.4 程序流程图False False true true true true true true true true图 3.4 程序流程图3.5 程序相关说明整个记事本分为 2 块:菜单栏和内容输入区。本程序中首先定义一个mynotepad 类继承 JFrame 作
14、为最底层容器。(1).Textcontent 为程序文本输入区。(2).Menu 为菜单栏。(3).AboutDialog 为关于对话框。启动程序输入文字新建打开保存退出剪切复制粘贴颜色关于file=nullfile=openfilesavingSystem.exit(0)content.cut()content.copy()content.pastecolorabout.show()关闭或退出程序攀枝花学院 java 课程设计报告第 6 页 共 22 页(4).要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActL
15、istener 实现了 ActionListener 接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。4 程序详细设计与分析4.1 初始化组件initTextContent();initMenu();initAboutDialog();4.2.构建菜单栏及其下拉菜单JMenu menus=new JMenunew JMenu(“文件“),new JMenu(“编辑“),new JMenu(“关于“);JMenuItem optionofmenu=new JMenuItemnew JMenuItem(“新建“),new JMenuItem(“打开“),new JMenuItem(“保存
16、“),new JMenuItem(“退出“),new JMenuItem(“复制“), new JMenuItem(“剪切“),new JMenuItem(“粘贴“),new JMenuItem(“颜色“)攀枝花学院 java 课程设计报告第 7 页 共 22 页,new JMenuItem(“关于“);4.3 “文件”菜单的事件监听ActionListener action=new ActionListener() public void actionPerformed(ActionEvent e)String name = e.getActionCommand();JMenuItem MI
17、=(JMenuItem)e.getSource();if(“新建“.equals(name)content.setText(“);file=null;else if(“打开“.equals(name)if(file !=null)openfile.setSelectedFile(file);int returnVal=openfile.showOpenDialog(mynotepad.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=openfile.getSelectedFile();unfold();else if(“保存“.equal
18、s(name)if(file!=null) openfile.setSelectedFile(file);int returnVal=openfile.showSaveDialog(mynotepad.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=openfile.getSelectedFile();saving();else if(“退出 “.equals(name)mynotepad f=new mynotepad();int s=JOptionPane.showConfirmDialog(f,“退出?“,“退出“,JOptionP
19、ane.YES_NO_OPTION);攀枝花学院 java 课程设计报告第 8 页 共 22 页4.4 “编辑”菜单的事件监听else if(“剪切“.equals(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); 攀枝花学
20、院 java 课程设计报告第 9 页 共 22 页5 测试分析图 5.1:点击“文件”运行情况攀枝花学院 java 课程设计报告第 10 页 共 22 页图 5.2:“文件”菜单中的“打开”对话框图 5.3:“编辑”中的“颜色”设置功能图 5.4:“关于”对话框调试结果完全符合课程设计要求!攀枝花学院 java 课程设计报告第 11 页 共 22 页结 论经过一个星期的我的记事本的课程设计,我在老师的指导下,基本上完成我的Java 课程设计简单的记事本程序,也基本上实现了我在需求分析时所预期的功能。通过该课程设计,收获颇多。首先,让我加深了对 Java 语言的理论知识的理解;进一步巩固和丰富了
21、我所学过的知识,让我更深层次地认识到 Java 及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力其次,让我更加熟练的掌握了 Java 语言的设计能力并且有了实践经验,在设计过程中,学到了老师没有在课堂上没有教授的知识,加强了我对 Java 语言的学习兴趣和好感。攀枝花学院 java 课程设计报告第 12 页 共 22 页参考文献1朱福喜.Java 语言程序设计 (第二版).科学出版社2陈国君等.Java 程序设计基础 (第二版).清华大学出版社3 Deitel.Java 大学基础教程 (第六版).电子工业出版社 4 MaryCampione.Java 语言导学 (第四版).机械工
22、业出版社5 Y.Daniel Liang.Java 语言程序设计基础篇 (第六版). 机械工业出版社6 Kathy Sierra.Head First Java (第二版).东南大学出版社攀枝花学院 java 课程设计报告第 13 页 共 22 页附录源代码:package com.wxp.Notepad;import java.awt.*;SuppressWarnings(“serial“)class mynotepad extends JFrameFile file=null;Color color=Color.red;mynotepad()initTextContent(); /初始化组
23、件initMenu();initAboutDialog();void initTextContent()getContentPane().add(new JScrollPane(content); /滚动面板对象JTextPane content=new JTextPane(); /创建 /内容输入区JFileChooser openfile=new JFileChooser(); /创建打开文件对话框JColorChooser opencolor=new JColorChooser(); /颜色选择JDialog about=new JDialog(this); /关于对话框JMenuBar
24、 menu=new JMenuBar(); /创建菜单栏/菜单栏的各个菜单项JMenu menus=new JMenunew JMenu(“文件“),new JMenu(“编辑“),new JMenu(“关于“);/“文件”菜单项的四个下拉菜单JMenuItem optionofmenu=new JMenuItemnew JMenuItem(“新建“),攀枝花学院 java 课程设计报告第 14 页 共 22 页new JMenuItem(“打开“),new JMenuItem(“保存“),new JMenuItem(“退出“),/编辑菜单的四个下拉菜单 new JMenuItem(“复制“)
25、, 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.addActionListener( action );this.setJMenuBar(menu); ActionListener action=new
26、ActionListener() /添加事件监听SuppressWarnings( “unused“, “deprecation“ )public void actionPerformed(ActionEvent e)String name = e.getActionCommand();JMenuItem MI=(JMenuItem)e.getSource();if(“新建“.equals(name) /监听“ 新建” 事件content.setText(“);file=null;攀枝花学院 java 课程设计报告第 15 页 共 22 页else if(“打开“.equals(name) /
27、监听“ 打开”事件if(file !=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=openfi
28、le.showSaveDialog(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);e
29、lse if(“剪切 “.equals(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(“关于“.eq
30、uals(name)about.setSize(300,150);/设置“ 关于”对话框大小为 300150about.show(); /显示“ 关于”对话框攀枝花学院 java 课程设计报告第 16 页 共 22 页 ; void saving()tryFileWriter Writef=new FileWriter(file); /创建文件写入器Writef.write(content.getText();Writef.close();catch(Exception e)e.printStackTrace(); void unfold()tryFileReader Readf=new Fi
31、leReader(file); /文件读入int len=(int)file.length();char 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(
32、Color.white);/设置对话框背景色about.getContentPane().add(new JLabel(“记事本“);/对话框内容about.getContentPane().add(new JLabel(“制作者:陈 程“);about.getContentPane().add(new JLabel(“2013 年 12 月“);about.setModal(true); /设置对话框前端显示about.setSize(100,100); about.setLocation(250,170); /设置对话框显示位置;攀枝花学院 java 课程设计报告第 17 页 共 22 页
33、 public class NotepadSuppressWarnings(“deprecation“)public static void main(String args) /入口 main 函数 mynotepad noted=new mynotepad();noted.getContentPane().setFont(new Font(“新宋体“, Font.BOLD, 22);noted.setForeground(Color.PINK);noted.setFont(UIManager.getFont(“TextArea.font“);noted.setIconImage(Toolk
34、it.getDefaultToolkit().getImage(Notepad.class.getResource(“/image/title.jpg“);noted.addWindowListener(new WindowAdapter();noted.setTitle(“记事本“); /记事本标题noted.setSize(640,320); /设置记事本大小noted.show(); noted.setLocation(150,100); /设置记事本显示位置noted.setFocusTraversalPolicy(new FocusTraversalOnArray(new Componentnoted.getContentPane();