1、Java课程涉及报告课程设计(论文)任务书 基础 学院信息与计算 专业 2009-1班一、课程设计(论文)题目: 简易记事本程序设计 二、课程设计(论文)工作:自 2012 年 6 月 19 日起至 2012 年 6 月 27日止三、课程设计(论文) 地点: 5-204 四、课程设计(论文)内容要求:1本课程设计的目的(1)使学生掌握软件开发的基本工作流程; (2)巩固JAVA程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。 2课程设计的任务及要求1)基本要求:(1)研究课程设计任务,并进行系统需求分
2、析;(2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)系统组装,测试、完善系统。2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。3)课程设计论文编写要求(1)要按照书稿的规格打印誊写课程设计论文(2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成4)参考文献:(1)丁振凡,JAVA语言程序设计,清华大学出版社.(2)丁振凡,JAVA语言程序设计实验指导与习题解答,清华大学出版社.(3) 5)课程设计进度安排内容 天数地点系统总体设计 1实验室软件
3、设计及调试 2实验室答辩及撰写报告 2实验室、图书馆 学生签名: 汪媛 2012年6月27日课程设计(论文)评审意见(1)课程设计过程(20分):优()、良()、中()、一般()、差(); (2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差(); (3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差();(5)格式规范性及考勤是否降等级:是()、否() 评阅人: 职称:教授 2011年 6月29日记事本设计摘要:该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文
4、件,打开文件,保存文件,另存文件,退出,剪切,复制,粘贴,查找,替换,全选文档,设置字体格式,变更字体颜色等功能。该程序主要用到了Java swing和事件监听等。目 录1、项目内容、要求与分组情况总体介绍 22、概要设计 22.1开发工具及环境 22.2 任务及需求分析 22.3 工作原理 23、 具体实现 23.1 类设计 33.2 关键技术处理 34、运行调试与分析讨论 45、设计体会与小结 56、参考文献 5附录:(源程序) 51、项目内容、要求与分组情况总体介绍本次实验的目标是制作一个简易的记事本,可以进行文件保存,新建,另存为和退出小组的具体分工情况见下表:小组组长李志鹏成员子项目
5、名称具体要求李志鹏模块的组合测试,以及代码的重用查找出程序的错误并改正,提炼出公共便携的方法谢麟功能键的注册将功能键注册监听者,使其功能正常汪媛查找字符串窗口的创建以及功能的实现实现全文本的字符串查找和替换戴乾刚组合其余同学的工作使程序完整化刘国涛模块的组合测试,查找出程序的错误并改正2、概要设计2.1开发工具及环境文本编辑器:记事本;运行环境:命令提示符(DOS环境)。2.2 任务及需求分析设计简易记事本程序,实现简单的文件操作,具体任务如下:(1)记事本窗口界面布局设计;(2)菜单项的具体实现(3)编程实现重用概念,实现方法的公用.(4)运行测试程序,调试纠正运行错误。2.3 工作原理(1
6、)工作过程点击菜单栏上的某个功能区,然后进行相应的功能操作,例如文件功能区的打开文件然后会弹出文件选择器进行文件的选取.(2)工作原理利用图形界面编程实现,利用到的知识点包括: 窗体的创建和应用界面布局; 事件处理,包括按钮的动作事件处理,窗体事件。 接口知识:事件处理中通过接口约束事件监听者必须实现相应接口中定义的方法。 流程控制语句:通过条件判断区分不同按钮,作不同操作处理。3、 具体实现3.1 类设计(1) 类名:NoteBook作用:实现窗口的布局设定,事件注册。该类为主类。类中含有的方法介绍: NoteBook()构造方法:实现窗体内部的组件添加和给组件添加事件监听。 main()方
7、法:应用程序的入口,创建一个NoteBook类的对象来调用NoteBook类的构造方法。 CreateFrameMenuBar(JMenuBar): 创建导航条(设置快捷键和添加事件监听); HandleListener():为导航项注册事件监听处理(利用匿名); CommonMethod(int flag):文件对话筐弹出时调用的代码公共部分,即获取当打开文件和保存/另存文件的时候进行文件选择对话框弹出的选择内容(两种选择内容,打开还是取消); flag:两种取值(NoteBook.FILE_SAVE(表示保存文件), NoteBook.FILE_OPEN(表示打开文件); IsSaved(
8、):由于通过StateBar区域中的显示判断当前的文本域中的内容是否发生改变; Open()和OpenFile()方法:实现打开文件的方法; CreateFile():创建文件的方法; SaveFile():执行文件保存的时候实行的事件监听处理事件; SaveAs():执行文件另存为的时候实行的事件监听处理事件; CloseFile():执行退出的时候通过事件监听委托的事件处理; Cut()和Copy()和Paste():剪切,复制,粘帖; ShowTime():显示当前时间; ShowAbout():弹出关于我的记事本对话框.(2) 类名:FindStrDialog该类为NoteBook的内
9、嵌类,作用是实现弹出查找字符串的对话框该类继承JDialog类类中含有的方法介绍: FindStrDialog()构造方法:添加所需组件至对话框中; addActionForControl():给组件注册事件监听; find():实现全文本字符串的查找; replace():实现文本的逐个替换; replaceAll():实现文本的全文替换;(3) 类名:FontChangeDialog该类为NoteBook的内嵌类,作用是实现对文本内容格式(字体)的设置该类继承JDialog类类中含有的方法介绍: FontChangeDialog()构造方法:添加所需组件至对话框中; addActionFo
10、rFontControl()方法:给组件注册事件监听;3.2 关键技术处理(1) 窗体界面设计及注册事件监听txtfindstr.addTextListener( new TextListener() public void textValueChanged(TextEvent e) String text = txtfindstr.getText(); if(text!=null&!”“.equals(text) btnSearchNext.setEnabled(true); else btnSearchNext.setEnabled(false); );btnSearchNext.addA
11、ctionListener( new ActionListener() public void actionPerformed(ActionEvent e) find(); );注:以上两个方法都是给控件添加时间监听,给JTextField添加的TextListener监听,给JButton添加的是ActionListener监听.通过利用匿名的添加事件监听事件的实现方法 (3) 窗体关闭 / 按下窗口关闭钮事件处理 addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) CloseFile
12、(); 【注】也可以执行窗体的dispose()方法实现窗体关闭。(4) 实现字符串的查找 /进行字符(串)的查找 private int find() int initialIndex =0; String str = txt.getSelectedText(); /获取文本内容中选中的字符文本 String searchtxt= txtfindstr.getText(); /要查找的字符(串) if(str=null |”“.equals(str) str = txt.getText(); /如果没有选中的文本就默认为文本框中的所有文本内容 else initialIndex= txt.g
13、etSelectionStart();/如果有选中的文本则获取选中文本的索引值 str = txt.getText().substring(initialIndex0?initialIndex+1:0); int startindex = str.indexOf(searchtxt); if(startindex =0 & !”“.contains(str) & null!=str) startindex = initialIndex=0?startindex:(startindex+1) + initialIndex; /让起始索引移动到下一个出现 /让查找到的文本变成选中的状态 txt.s
14、etSelectionStart(startindex); txt.setSelectionEnd(startindex+searchtxt.length(); return 0; else if(initialIndex0 & null=str & “.equals(str) JOptionPane.showMessageDialog(null,”已搜至文本结尾处”, “查找结束”, JOptionPane.ERROR_MESSAGE); return -1; else JOptionPane.showMessageDialog(null,”全文中未发现该查找的内容”, “查找失败”, JO
15、ptionPane.ERROR_MESSAGE); return -1; 4、运行调试与分析讨论点击”文件”运行情况“文件”菜单中的”打开”对话框“格式”中的样品颜色设置功能RGB颜色设置功能“格式”中的字体设置功能“编辑”中的查找功能“帮助”对话框5、设计体会与小结通过这次的课程设计,由于自己一开始接触过面向对象编程,所以针对Java的这次课设练习还是比较顺利,从此次的练习中,我自己也发现到了一些问题,关于面向对象的编程思想的理解还是没有很强,在这方面还是要进行加强.其次针对此次编写主要是关于高级图形编程.主要是关于一些包的引用和利用事件监听,其中利用委托的思想进行组件的事件添加,实现相应的
16、功能.大家一起合作完成项目,让我感受到了团队的力量是无穷的,懂得如何安排任务,如何有针对性的给每位同志都分配好任务,十分有效率的去完成一件事的很多意义;6、参考文献1 丁振凡,JAVA语言程序设计,清华大学出版社.2 丁振凡,JAVA语言程序设计实验指导与习题解答,清华大学出版社.3 附录:(源程序)import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.swing.KeyStroke;import java.awt.event.KeyEvent;public cl
17、ass NoteBook extends JFrame static int FILE_OPEN=0; static int FILE_SAVE=1; static String HAD_CHANGE=“*”; static String NOT_CHANGE=“未修改”; Container container; JScrollPane scroll; JLabel stateBar; JTextArea txt; JFileChooser fc = new JFileChooser(); File file=null; JMenuItem openItem; /打开 JMenuItem n
18、ewItem; /新建 JMenuItem saveItem; /保存 JMenuItem saveAsItem;/另存为 JMenuItem exitItem; /退出 JMenuItem cutItem; /剪切 JMenuItem copyItem; /复制 JMenuItem pasteItem; /粘帖 JMenuItem searchItem; /查找 JMenuItem replaceItem;/替换 JMenuItem selectAllItem;/全选 JMenuItem timeItem; /时间 JMenuItem fontItem; /字体 JMenuItem colo
19、rItem; /颜色 JMenuItem aboutItem; /关于 public NoteBook() setTitle(“小包子Editor”); container = getContentPane(); txt = new JTextArea(); txt.setFont(new Font(“宋体”, Font.PLAIN, 16); txt.setLineWrap(true); scroll = new JScrollPane(txt, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HOR
20、IZONTAL_SCROLLBAR_NEVER); container.add(scroll,BorderLayout.CENTER); JMenuBar jmb = new JMenuBar(); this.CreateFrameMenuBar(jmb); setJMenuBar(jmb); / 状态栏 stateBar = new JLabel(NoteBook.NOT_CHANGE); /stateBar.setHorizontalAlignment(SwingConstants.LEFT); stateBar.setBorder( BorderFactory.createEtchedB
21、order(); container.add(stateBar, BorderLayout.SOUTH); setSize(840,660); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /*创建导航条(设置快捷键和添加事件监听)*/ private void CreateFrameMenuBar(JMenuBar mb) JMenu fileMenu = new JMenu(“文件(F)”); fileMenu.setMnemonic(KeyEvent.VK_F); newItem = new JMenu
22、Item(“新建(N). “); newItem.setMnemonic(KeyEvent.VK_N); newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK); fileMenu.add(newItem); openItem = new JMenuItem(“打开(O). “); openItem.setMnemonic(KeyEvent.VK_O); openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,Actio
23、nEvent.CTRL_MASK); fileMenu.add(openItem); saveItem = new JMenuItem(“保存(S). “); saveItem.setMnemonic(KeyEvent.VK_S); saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK); fileMenu.add(saveItem); saveAsItem = new JMenuItem(“另存为(A). “); saveAsItem.setMnemonic(KeyEvent.VK
24、_A); fileMenu.add(saveAsItem); exitItem = new JMenuItem(“退出(E). “); exitItem.setMnemonic(KeyEvent.VK_E); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK); fileMenu.add(exitItem); mb.add(fileMenu); JMenu editMenu = new JMenu(“编辑(E)”); editMenu.setMnemonic(KeyEvent.V
25、K_E); cutItem = new JMenuItem(“剪切(X).”); cutItem.setMnemonic(KeyEvent.VK_X); cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK); editMenu.add(cutItem); copyItem = new JMenuItem(“复制(C).”); copyItem.setMnemonic(KeyEvent.VK_C); copyItem.setAccelerator(KeyStroke.getKeySt
26、roke(KeyEvent.VK_C, ActionEvent.CTRL_MASK); editMenu.add(copyItem); pasteItem = new JMenuItem(“粘帖(V).”); pasteItem.setMnemonic(KeyEvent.VK_V); pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK); editMenu.add(pasteItem); searchItem = new JMenuItem(“查找(F).”); searchI
27、tem.setMnemonic(KeyEvent.VK_F); searchItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK); editMenu.add(searchItem); replaceItem = new JMenuItem(“替换(R).”); replaceItem.setMnemonic(KeyEvent.VK_R); replaceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEven
28、t.CTRL_MASK); editMenu.add(replaceItem); selectAllItem = new JMenuItem(“全选(A).”); selectAllItem.setMnemonic(KeyEvent.VK_A); selectAllItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK); editMenu.add(selectAllItem); timeItem = new JMenuItem(“时间(F5).”); timeItem.setMnemoni
29、c(KeyEvent.VK_F5); timeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, ActionEvent.CTRL_MASK); editMenu.add(timeItem); mb.add(editMenu); JMenu formatMenu = new JMenu(“格式(O)”); fontItem = new JMenuItem(“字体(F).”); formatMenu.add(fontItem); colorItem = new JMenuItem(“颜色(C).”); formatMenu.add(colorItem); mb.add(formatMenu); JMenu helpMenu = new JMenu(“帮助(H)”); aboutItem = new JMenuItem(“关于我的主题(A)”); helpMenu.add(aboutItem); mb.add(helpMenu); this.HandleListener();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1