《JAVA记事本课程设计.doc》由会员分享,可在线阅读,更多相关《JAVA记事本课程设计.doc(31页珍藏版)》请在三一办公上搜索。
1、课程设计课程名称:JAVA程序设计题目: 简易记事本 年级/专业/班: 10计本一班 学生姓名: 李醒世争 学 号: 2010305107 指导老师: 马亚军 开题时间:2012年11月10日完成时间:2012年12月24日目录摘要1一、绪论2二、需求分析21、功能需求22、函数需求33、开发环境及运行环境分析3三、总体设计41、系统流程设计42、分模块设计4(1)“文件”菜单模块设计流程图4(2)“编辑”菜单模块设计流程图5(3)“格式”菜单模块设计流程图6(4)“帮助”菜单模块设计流程图73、类设计74、界面设计8(1)主界面8(2)打开界面9(3)保存界面10(4)字体界面11(5)帮助
2、界面15四、软件测试161、测试用例及结果162、程序功能的评价17五、结论17六、参考文献18附录(源程序完整代码)19摘要随时着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。本课程设计就是主要利用java语言编写的一个模仿windows 记事本的较简单的程序,它能实现打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能 。本课程设计报告介绍了记事本系统,记事本的设计,在记事本的具体实现章节,给出了部分实现了的功能界面和相关的代码。
3、关键词:JAVA,记事本,相关功能ABSTRACTWith the rapid development of science and technology, computer programming has already become a trend.JAVA is a core course of computer professional, is the base of computer science.JAVA are practice-needed curriculum.This course is designed to strengthen practice ability of
4、 a powerful way,requiring JAVA applications and the basic methods of computer debugging.This course is a simple procedures designed mainly using Java language and the imitation of Windows notepad.It can realize that open files, read the text file information,display, edit and modify text information
5、, new, open and save text files and control to save text messages to the specified file and so on. This gives a text editor great convenience, and at the same time greatly improves the efficiency. This report introduces notebook system and notepad design. In the chapter of notepad realization,it giv
6、es part of realized function interface and relevant code. Keywords: JAVA,notepad,Relevant function一、绪论在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。 第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不具备在窗口和屏幕中显示的功能。它包含了一些非常短的命令(为了减少打字量)。其中一个命令能够把文件的指定部分通过打字机打印出来。编辑光标是想象中的一个插入点,通过特殊命令,可以把它移动到特定内容字符串所
7、在的行。随后,内容字符串又被扩展成正则表达式。如果想看到文件的变化,你需要把它打印出来。相对于穿孔机来说,人们认为这种基于行的文本编辑器具有革命性的进步。如果没有它,用户就需要把那些处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。 当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。最早的全屏编辑器中,有一种叫做O26,它是于1967年为CDC 6000系列机器的操作控制台而作的。另外一个早期的全屏编辑器是vi。vi诞生于20世纪70年代,至今,它仍是Unix和Linux的标准编辑器。全屏编辑器对视频终端的销售起到了促进的作用。二、需求分析1、功能需求本程序要构建的记
8、事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)菜单中有“文件”、“编辑”、“格式”、“帮助”四个个主菜单;(2)“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”五个字菜单,分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。(3)“编辑”中,有“撤销”、“复制”、“剪切”、“粘贴”、“删除”、“全选”六个个子菜单,分别用于撤销上一次操作,复制选中文字,剪切选中文字,粘贴选中文字,删除选中文字,选定整个文件内容。(4) “格式”中有自动换行和字体两个子菜单,字体中包含了“字体”、“字形”、“大小”、“颜色”四个操作项。字体项可以对文字的字体样式
9、做修改,字体数量为Windows默认数值。字形项可以对文字的形式进行修改,共有“常规”、“倾斜”、“粗体”、“粗体+倾斜”四个选项。大小中包含了8-72磅大小范围内的字体大小数值选项。颜色可以对字体进行颜色上的修改,是字体更加漂亮,颜色数量为Windows默认值。自动换行能够实现文档在编辑是否需要的自动换行功能。(5)“帮助”菜单中有“关于记事本”一个子菜单,用于描述记事本程序的相关信息和开发人员的个人信息。2、函数需求本次设计中,设计了一个菜单栏和文本内容区。设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。JMenu用来制作菜单,JText
10、Pane主要用来输入文本。为了加入颜色的设置,所以加了一个JColorChooser组件。整个记事本分为2块,菜单栏和内容输入区。菜单栏设计如下:类名: EditWindow(1)作用: 主类(2)继承的父类: JFrame类 (3)实现的接口: windowListener类与actionListener类(4)成员变量说明:File file=null; /定义一个空文件 private JLabel stateBar; /定义一个标签 private JTextArea text; /定义编辑区 private JMenuBar menubar; /定义菜单栏 private JMenu
11、 menu1、menu2、menu3、menu4; /定义菜单private JMenu item1-6,item2-6,item3-2,item4 /定义菜单项主要成员方法说明:编辑区键盘事件:KeyListener类 如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;窗口的事件监听:windowListener类,用来监听处理容器关闭触发的事件:菜单项的事件监听:ActionListener类,用来监听并处理所有菜单项和内容输入区为事件源的事件。3、开发环境及运行环境分析本记事本的开发环境是在windows 7的环境下开发,运用了EditPul文本编辑器v3.30、JDK1.6开发工
12、具,运行环境是DOS下运行的。三、总体设计1、系统流程设计 输入文字文件编辑格式退出YN结束开始2、分模块设计(1)“文件”菜单模块设计流程图开始“文件”菜单新建另存为File=null打开用JFileChooser()选择所有打开文件路径用unfold()读取所选的文件内容到记事本保存用sava()保存文件用JFileChooser()选择文件另存的路径用sava()保存文件退出或关闭文件是否修改用sava()保存文件Y结束N图3.2 “文件”菜单操作流程图用close()关闭文件(2)“编辑”菜单模块设计流程图开始“编辑”菜单撤销全选用Area.setText(value)实现复制用tex
13、t.copy()实现粘贴设置修改标签,text.cut()粘贴设置修改标签,text.paste()删除删除value=area.getText();area.replaceSelection(null);用text.selectAll()实现退出或关闭文件是否修改用sava()保存文件并结束用close()关闭文件YN图3.3 “编辑”菜单操作流程图(3)“格式”菜单模块设计流程图开始自动换行字体结束(4)“帮助”菜单模块设计流程图开始“帮助”菜单关于记事本显示记事本的有关信息结束图3.4 “帮助”菜单操作流程图3、类设计成员变量类型成员变量名 成员变量描述JMenuBarmenubar菜单
14、条JTextAreaarea文本区JScrollPanepane滚动条,当文本内容大于文本区时的时候显示。JMenumenu1、menu2、menu3、menu4文件、编辑、字体、帮助JMenuItemitem11,item12,item13,item14,item16新建、打开、保存、另存为、退出JMenuItemitem21,item22,item23,item24,item25,item26撤销、复制、剪切、粘贴、删除、全选JMenuItemitem31,item32自动换行、字体JMenuItemitem41关于记事本4、界面设计(1)主界面主界面主要是用于对选择相应的功能进行相应的功
15、能,主界面主要包括文件,编辑,格式,帮助四个下拉菜单功能。主要代码:public class examJSB public static void main(String args) EditWindow win=new EditWindow(新建文本文档); class EditWindow extends JFrame implements ActionListener JMenuBar menubar;JMenu menu1;JMenu menu2;JMenu menu3;JMenu menu4;JTextArea area;JFileChooser fileChooser;privat
16、e String value;boolean isSaved = true;EditWindow(String s)setTitle(s);setSize(400,400);setLocation(50,50);setVisible(true);fileChooser=new JFileChooser(c:/);/打开文件menubar=new JMenuBar();menu1=new JMenu(文件);menu2=new JMenu(编辑);menu3=new JMenu(格式);menu4=new JMenu(帮助);/文字编辑区域 area=new JTextArea();area.s
17、etFont(new Font(宋体, Font.PLAIN, 16);/*设置当前字体*/area.setLineWrap(true);/*设置文本区的换行策略*/JScrollPane pane=new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);/*垂直和水平滚动条-查看无法完全显示时,滚动条显示*/ Container contentPane = getContentPane(); contentPane.add(pa
18、ne, BorderLayout.CENTER);validate();isSaved=false;/刚刚打开的窗口状态为未保存this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE); (2)打开界面主要代码:else if(e.getSource()=item12)/打开area.setText(null);int n=fileChooser.showOpenDialog(null);if(n=JFileChooser.APPROVE_OPTION)File file=fileChooser.
19、getSelectedFile();try FileReader readfile=new FileReader(file); BufferedReader in=new BufferedReader(readfile);String s=null;while(s=in.readLine()!=null) area.append(s+n);catch(IOException ee) (3)保存界面主要代码:private void Save() / 从标题栏取得文件名称 File file = new File(getTitle(); / 若指定的文件不存在 if(!file.exists()
20、 / 执行另存为 saveFileAs(); else try / 开启指定的文件 BufferedWriter buf = new BufferedWriter( new FileWriter(file); / 将文字编辑区的文字写入文件 buf.write(area.getText(); buf.close(); catch(IOException e) JOptionPane.showMessageDialog(null, e.toString(), 写入文件失败, JOptionPane.ERROR_MESSAGE); (4)字体界面主要代码:/引用 Fonts事件设计字体class
21、Fonts extends JDialog private static final long serialVersionUID = 4042773383845024827L;/ 字体格式String style = null;String bold = null;String size = null;Font font = null;String str_style = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();String str_bold = 常规, 倾斜, 粗体, 粗体
22、 倾斜 ;String str_size = 8, 9, 10, 11, 12, 14, 16, 18, 20, 22,24, 26, 28, 36, 48, 72 ;/public JLabel label1=new JLabel(字体(F):);public JList fontStyle=new JList(str_style);public JScrollPane StyleJScrollPane=new JScrollPane(fontStyle);public JLabel label2=new JLabel(字形(Y):);public JList fontBold=new JL
23、ist(str_bold);public JScrollPane BoldJScrollPane=new JScrollPane(fontBold);public JLabel label3=new JLabel(大小(S):);public JTextField sizeField=new JTextField(23);public JList fontSize=new JList(str_size);public JScrollPane SizeJScrollPane=new JScrollPane(fontSize);public JLabel fontDisplay=new JLabe
24、l(AaBbYyZz);public JTextField textField=new JTextField();public JButton sureButton=new JButton(确定);public JButton cancelButton=new JButton(取消);public JButton colorButton=new JButton(改变颜色);public Color color;EditWindow my=null;public Fonts(EditWindow frame)super(frame,字体和颜色,true);color=Color.black;th
25、is.my = frame;this.style = 宋体;this.bold = 常规;this.size = 23;label1.setBounds(10, 5, 50, 30);StyleJScrollPane.setBounds(10, 40, 160, 150);fontStyle.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e) JList source = (JList) e.getSource();Fonts.this.style = source.getSelectedValue
26、().toString();Fonts.this.setFont(); );label2.setBounds(190, 5, 50, 30);BoldJScrollPane.setBounds(190, 40, 90, 150);fontBold.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e) JList source = (JList) e.getSource();Fonts.this.bold = source.getSelectedValue().toString();Fonts.this
27、.setFont(); );label3.setBounds(300, 5, 60, 30);SizeJScrollPane.setBounds(300, 60, 60, 130);fontSize.addMouseListener(new MouseAdapter()public void mousePressed(MouseEvent e) JList source = (JList) e.getSource();sizeField.setText(source.getSelectedValue().toString();Fonts.this.size = source.getSelect
28、edValue().toString();Fonts.this.setFont(); );sizeField.setBounds(300,40,60,20);fontDisplay.setBorder(BorderFactory.createTitledBorder(示例);fontDisplay.setBounds(20, 220, 200, 100);fontDisplay.setHorizontalAlignment(JLabel.CENTER);sureButton.setBounds(280, 260, 80, 30);sureButton.addActionListener(new
29、 ActionListener() Overridepublic void actionPerformed(ActionEvent e) my.area.setFont(font);my.area.setForeground(color);Fonts.this.dispose(););cancelButton.setBounds(280, 300, 80, 30);cancelButton.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) Fonts.this.di
30、spose(););colorButton.setBounds(260, 220, 100, 20);this.add(colorButton);colorButton.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubcolor=JColorChooser.showDialog(null, 改变字体颜色, Color.black););this.add(label1);this.add(lab
31、el2);this.add(label3);this.add(sizeField);this.add(BoldJScrollPane);this.add(StyleJScrollPane);this.add(SizeJScrollPane);this.add(fontDisplay);this.add(sureButton);this.add(cancelButton);this.setLayout(null);this.setSize(400, 380);int x=(int)my.getLocation().x+100; int y=(int)my.getLocation().y+100;
32、 this.setLocation(x,y); / 由选项确定font字体void setFont() int bold;if (this.bold.equals(粗体)bold = Font.BOLD;else if (this.bold.equals(常规)bold = Font.PLAIN;else if (this.bold.equals(粗体 倾斜)bold = Font.BOLD + Font.ITALIC;else if (this.bold.equals(倾斜)bold = Font.ITALIC;elsebold = Font.PLAIN;this.font = new Fo
33、nt(this.style, bold, Integer.parseInt(this.size);/ 更改样本字体/System.out.println(this.font);fontDisplay.setForeground(color);this.fontDisplay.setFont(this.font);(5)帮助界面主要代码:else if(e.getSource()=item41)JOptionPane.showOptionDialog(null,制作人:n 班级: 10计本1班 n 姓名: 李醒世争 n 学号: 2010305107n+编程环境:n win7旗舰版64位n Edi
34、tPlus3n JDK1.7,关于记事本,JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null);/*JOptionPane 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。*/四、软件测试1、测试用例及结果图4.1主窗口 图4.1为运行程序的主窗口。图4.2打开界面图4.2为打开电脑里的文件的窗口。图4.4字体颜色界面图4.4为软件改变字体格式和颜色界面,可以更改成不同形式和颜色的字体。本次测试结果成功,基本功能可以实现!2、程序功能的评价本记事本实现了记事本常用的一些功能,文件的新建,可
35、以打开电脑里的文档文件,进行修改和保存,例如可以对文字进行撤销、复制、粘贴、剪切、删除、全选等功能。还可以对字体的大小风格进行设置,实现对记事本字体颜色的修改,用户可以自定义文字的颜色,。总体来说本记事本已经实现了工作需要的功能,能够用于一般的编写文字。不足之处是本记事本还未能设置好页面设置,方便用户进行设置页面的需求,并且打印功能也没有实现。程序相对来说比较简单,需要进一步完善。五、结论经过一个多月来的紧张设计和开发,在指导老师的精心指导和安排下,记事本已经顺利设计完毕。其功能基本实现了预期的开发要求,能够满足各种排序的顺利排序,具有一定的实用性和辅助开发新软件的合理性。但是由于时间比较仓促
36、,加上本人软件设计经验的不足。因此,在分析问题、解决问题时显得不够严密、完善,还需要在以后的工作中不断地改进和完善。在这次毕业设计开发过程中,主要有以下几点收获:(1)通过一个多月的系统分析、设计、开发,系统编码、测试、远行和维护等,使我对以前所学的的理论知识有了更深一层次的了解,使我明白了如何更好的将自己所学的理论知识运用到工作实践中。(2)通过这次课程设计,提高了我对系统分析的能力,对数据流图、系统的流程图、数据库的设计、代码的编写能力也有所增强,为我以后的工作和学习的进一步提高打下了坚实的基础。(3)通过这次课程设计,使我明白了软件开发不仅仅是代码的编写,代码的编写在软件的整个开发过程中
37、只占了很少的部分,软件整个开发过程中包括了需求分析、可行性研究、系统的设计、代码的编写和调试、运行和维护等。六、参考文献1 孙全党,王吴迪,赵枫朝Java程序设计应用教程M北京:电子工业出版社,20062 雷之宇Java项目开发实践网络篇M北京:中国铁道出版社,20053 赵玉阳Java从入门到精通M北京:清华大学出版社,2006 4 李龙怡Java编程实例讲解M北京:高等教育出版社,20055 李尊朝,苏军Java语言程序设计M北京:中国铁道出版社,2009附录(源程序完整代码)import javax.swing.*;import java.awt.event.*;import java.
38、awt.*;import java.io.*;public class examJSB public static void main(String args) EditWindow win=new EditWindow(新建文本文档); class EditWindow extends JFrame implements ActionListenerJMenuBar menubar;JMenu menu1;JMenu menu2;JMenu menu3;JMenu menu4;JMenuItem item11,item12,item13,item14,item15,item16;JMenuI
39、tem item21,item22,item23,item24,item25,item26;JMenuItem item31,item32;JMenuItem item41;JTextArea area;JFileChooser fileChooser;private String value;boolean isSaved = true;EditWindow(String s)setTitle(s);setSize(400,400);setLocation(50,50);setVisible(true);fileChooser=new JFileChooser(c:/);/打开文件menub
40、ar=new JMenuBar();menu1=new JMenu(文件);menu2=new JMenu(编辑);menu3=new JMenu(格式);menu4=new JMenu(帮助);item11=new JMenuItem(新建);item12=new JMenuItem(打开);item13=new JMenuItem(保存);item14=new JMenuItem(另存为.);item15=new JMenuItem(打印);item16=new JMenuItem(退出);item21=new JMenuItem(撤销);item22=new JMenuItem(复制);
41、item23=new JMenuItem(剪切);item24=new JMenuItem(粘贴);item25=new JMenuItem(删除);item26=new JMenuItem(全选);item31=new JMenuItem(自动换行);item32=new JMenuItem(字体);item41=new JMenuItem(关于记事本);menu1.add(item11);menu1.add(item12);menu1.add(item13);menu1.add(item14);menu1.addSeparator();menu1.add(item15);menu1.add
42、Separator();menu1.add(item16);menu2.add(item21);menu2.addSeparator();menu2.add(item22);menu2.add(item23);menu2.add(item24);menu2.add(item25);menu2.addSeparator();menu2.add(item26);menu3.add(item31);menu2.addSeparator();menu3.add(item32);menu4.add(item41);menubar.add(menu1);menubar.add(menu2);menubar
43、.add(menu3);menubar.add(menu4);setJMenuBar(menubar);/文字编辑区域 area=new JTextArea();area.setFont(new Font(宋体, Font.PLAIN, 16);/*设置当前字体*/ area.setLineWrap(true);/*设置文本区的换行策略*/JScrollPane pane=new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);/*垂直和水平滚动条-查看无法完全显示时,滚动条显示*/ Container contentPane = getContentPane(); contentPane.