1、辽 宁 工 业 大 学JAVA程序设计 课程设计(论文)题目: 记事本 院(系): 软件学院 专业班级: 软件技术083班学 号: 学生姓名: 范 舵 指引教师: 丁宝柱 教师职称: 助 教 起止时间: .12.1至.12.16 程序设计专项(报告)任务及评语院(系):软件学院 教研室:软件教研室学 号学生姓名范舵专业班级软件技术083程序设计(报告)题目 记事本程序设计(报告)任务程序设计专项任务与规定:(1)掌握Java编程、面向对象基本知识。(2)较纯熟地编写Java应用程序Application。(3)理解Java惯用原则类库、编程技巧、异常解决。(5)联系已学过内容,巩固所学理论,增
2、强独立工作能力。(6)通过设计重要使学生有一种独立编写程序过程,对理论学习及动手能力均有一种很大提高。(7)通过本次设计,进一步培养学生热爱专业思想,同步对本专业综合素质提高起一种积极推动作用。课程设计过程中,要严格遵守实践环节时间安排,听从指引教师指引。对的地完毕上述内容,记录实习日记,规范完整地撰写出课程设计报告。指引教师评语及成绩成绩: 指引教师签字: 年 12 月 20 日目 录第1章 课程设计目与规定11.1 课程设计目11.2 课程设计实验环境11.3 课程设计预备知识11.4 课程设计规定1第2章 课程设计内容22.1课程设计重要内容22.2概要设计22.2.1自定义类阐明32.
3、3详细设计52.4测试分析132.4.1程序运营状况132.4.2程序异常解决15第3章 课程设计总结16参照资料17第1章 课程设计目与规定1.1 课程设计目JAVA程序设计是计算机有关专业必修专业基本课程,其实践性、应用性很强。实践教学环节是必不可少一种重要环节。本课程程序设计专项实际是计算机有关专业学生学习完JAVA程序设计课程后,进行一次全面综合训练,JAVA程序设计设计目是加深对理论教学内容理解和掌握,使学生较系统地掌握程序设计及其在网络开发中广泛应用,基本办法及技巧,为学生综合运用所学知识,运用软件工程为基本进行软件开发、并在实践应用方面打下一定基本。1.2 课程设计实验环境硬件规
4、定能运营Windows 9.X操作系统微机系统。JAVA程序设计语言及相应集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4 课程设计规定按课程设计指引书提供课题,规定学生在自行完毕各个操作环节,并能实现且达到举一反三目,完毕一种项目解决一类问题。规定学生可以全面、进一步理解和纯熟掌握所学内容,并可以用其分析、设计和解答类似问题;对此可以较好地理解和掌握,可以进行简朴分析和判断;能编写出具备良好风格程序;掌握JAVA程序设计基本技能和面向对象概念和办法;理解多线程、安全和网络等编程技术。同步培养学生进行分析问题、解决问题能
5、力;培养学生进行设计分析、设计办法、设计操作与测试、设计过程观测、理解和归纳能力提高。第2章 课程设计内容2.1课程设计重要内容此JAVA记事本程序设计为两个类,一种jsb类,具备程序规定和功能再创立一种keshe主类,在主类中创立一种jsb类对象,就可以直接在编译器中运营程序。界面设计在主界面中设计一种Frame容器,并在其中加入一种下拉菜单和一种文本域控件,把该容器设立为GridLayout(1,1)布局。 功能设计 在下拉菜单中加入子菜单并进行监听,分别实现对文献操作功能。点击不同菜单项时,显示不同界面。 代码设计 编写每个控件有关代码,并进行调试。2.2概要设计本系统共涉及1个Java
6、源文献。本系统采用了awt包,程序实现了文本编辑器基本功能有:打开文献,文献保存,文献另存为,退出,信息,查找,复制,剪切.粘贴,文字颜色,设立字体,设立字形,设立字号大小,由于该编辑器用是awt包,因此在技术上没有实现将文本以不同颜色显示功能.Java程序编辑器是:图形界面,线程,流与文献等技术综合应用.文本编辑区选用TextArea作为重要部件.文献操作实现:运用字符文献流readFromFile和writeToFile办法来实现.由于java特性,也许用任何一种编辑器来编辑,于是就将windows记事本作为模仿对象,依照实现状况删减了其中某些功能,如自动换行,设立字体,打印等功能.在设计
7、类时候考虑简朴明了,就设计了一种主类和默认属性类做为程序整体框架,所有对象和办法是在默认属性类中创立和实现.以及为各组件注册事件监听监听程序也是在默认属性类中实现,主类完毕对象实例化及显示.这样设计长处是:条理清晰,容易理解,容易修改.这样设计缺陷是:不利于共享类中办法.2.2.1自定义类阐明类名:NoteBook作用为主类,继承父类没有,实现接口没有int result=fileChooser.showOpenDialog(this); if(result=JFileChooser.CANCEL_OPTION) statusLabel.setText(您没有选取任何文献); return;
8、File fileName=fileChooser.getSelectedFile(); if(fileName=null|fileName.getName().equals() JOptionPane.showMessageDialog(this,不合法文献名,不合法文献名,JOptionPane.ERROR_MESSAGE); else try FileReader fr=new FileReader(fileName); BufferedReader bfr=new BufferedReader(fr);editArea.setText(); while(str=bfr.readLine
9、()!=null)/每次读取一行,直到文献结束 editArea.append(str+1512);/endwhilethis.setTitle(fileName.getName()+ - 记事本);statusLabel.setText(当前打开文献:+fileName.getAbsoluteFile();fr.close();isNewFile=false;currentFile=fileName;oldValue=editArea.getText(); catch(IOException ioException) /打开解决结束类名:JMenuBar类 (菜单栏)JMenu 继承自JMe
10、nuItem,它们都在javax.swing包中,都实现了Accessible,MenuElement 接口public class JMenuBarDemopublic static void main (String args)/tryjavax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName();catch(Exception e)JPanel panel = new JPanel ();panel.setBackground (Color.white);panel.se
11、tPreferredSize (new Dimension (600,400);/JMenu 有箭头(除了顶层),可以添加JMenu和JMenuItem;/JMenuItem 无箭头,不可添加其她菜单项JFrame frame = new JFrame (JMenuBarDemo);frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);frame.setContentPane (panel);frame.setJMenuBar (bar);frame.pack();frame.show();2.3详细设计import java.io.*;i
12、mport java.util.Calendar;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class NoteBook extends JFrame implements ActionListener,ItemListener,WindowListener,MouseListener Container c = this.getContentPane(); JMenuBar jmb = new JMenuBar(); JColorChooser jcc = new JColorChooser()
13、; JMenu jm1 = new JMenu(文献(F); JMenu jm2 = new JMenu(编辑(E); JMenu jm3 = new JMenu(格式(O); JMenu jm4 = new JMenu(查看(V); JMenu jm5 = new JMenu(协助(H); JMenuItem jmi1 = new JMenuItem(新建(N); JMenuItem jmi2 = new JMenuItem(打开(O); JMenuItem jmi3 = new JMenuItem(保存(S); JMenuItem jmi4 = new JMenuItem(退出(X); J
14、MenuItem jmi5 = new JMenuItem(撤除(U); JMenuItem jmi6 = new JMenuItem(复制(C); JMenuItem jmi7 = new JMenuItem(粘贴(P); JMenuItem jmi8 = new JMenuItem(剪切(T); JMenuItem jmi12 = new JMenuItem(日期和时间); JMenuItem jmi9 = new JMenuItem(字体(E); JCheckBoxMenuItem jcbmi = new JCheckBoxMenuItem(自动换行(W); JMenuItem jmi1
15、0 = new JMenuItem(删除(S); JMenuItem jmi11 = new JMenuItem(背景颜色(H); JTextArea jta = new JTextArea(15,15); JScrollPane jsp = new JScrollPane(jta); /PupolMenu pm = new Pupolmenu(); NoteBook() this.addWindowListener(this); c.setLayout(new BorderLayout(); c.add(jmb,BorderLayout.NORTH); this.setTitle(新建 文本
16、文档); jmb.add(jm1); jm1.setMnemonic(f); jm1.addActionListener(this); jmb.add(jm2); jm2.setMnemonic(e); jmb.add(jm3); jm3.setMnemonic(o); jmb.add(jm4); jm4.setMnemonic(v); jmb.add(jm5); jm5.setMnemonic(h); jm1.add(jmi1); jmi1.addActionListener(this); jmi1.setAccelerator(KeyStroke.getKeyStroke(N,Event.
17、CTRL_MASK,false); jm1.addSeparator(); jm1.add(jmi2); jmi2.setAccelerator(KeyStroke.getKeyStroke(O,Event.CTRL_MASK,false); jmi2.addActionListener(this); jm1.addSeparator(); jm1.add(jmi3); jmi3.setAccelerator(KeyStroke.getKeyStroke (S,Event.CTRL_MASK,false); jmi3.addActionListener(this); jm1.addSepara
18、tor(); jm1.add(jmi4); jmi1.setMnemonic(n); jmi2.setMnemonic(o); jmi3.setMnemonic(s); jmi4.setMnemonic(x); jmi4.addActionListener(this); jm2.add(jmi5); jm2.addSeparator(); jm2.add(jmi6); jm2.addSeparator(); jm2.add(jmi7); jm2.addSeparator(); jm2.add(jmi8); jm2.add(jmi12); jmi12.addActionListener(this
19、); jm3.add(jcbmi); jcbmi.addItemListener(this); jm3.addSeparator(); jm3.add(jmi9); jm4.add(jmi10); jmi10.addActionListener(this); jm5.add(jmi11); jmi11.addActionListener(this); c.add(jsp); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setSize(500,500); this.setVisible(true); public vo
20、id actionPerformed(ActionEvent e) if(e.getSource()=jmi1) jta.setText(); this.setTitle(无标题 - 记事本); if(e.getSource()=jmi2) File f1; JFileChooser jfc1 = new JFileChooser(); int num1 = jfc1.showOpenDialog(this); if(num1=JFileChooser.APPROVE_OPTION) try f1 = jfc1.getSelectedFile(); this.setTitle(f1.getNa
21、me(); FileReader fr = new FileReader(f1); BufferedReader br = new BufferedReader(fr); String str; while(str = br.readLine()!=null) jta.setText(str); fr.close(); br.close(); catch(FileNotFoundException e1) e1.printStackTrace(); catch(IOException e2) e2.printStackTrace(); if(e.getSource()=jmi3) File f
22、2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); if(num2=JFileChooser.APPROVE_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWriter(f2); BufferedWriter bw = new BufferedWriter(fw); bw.write(jta.getText(); bw.close();
23、fw.close(); catch(IOException e2) e2.printStackTrace(); if(e.getSource()=jmi4) int a = JOptionPane.showConfirmDialog(this,文献已被变化,与否要保存?,提示,JOptionPane.YES_NO_CANCEL_OPTION); if(a=1) this.dispose(); else if(a=0) File f2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(th
24、is); if(num2=JFileChooser.APPROVE_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWriter(f2); BufferedWriter bw = new BufferedWriter(fw); bw.write(jta.getText(); bw.close(); fw.close(); catch(IOException e2) e2.printStackTrace(); this.dispose(); if(e.getSou
25、rce()=jmi12) Calendar c1 =Calendar.getInstance(); int y = c1.get(Calendar.YEAR); int m = c1.get(Calendar.MONTH); int d = c1.get(Calendar.DATE); int h = c1.get(Calendar.HOUR); int m1 = c1.get(Calendar.MINUTE); int m2 = m+1; jta.setText(y+年+m2+月+d+日+h+:+m1); if(e.getSource()=jmi11) Color ccc = JColorC
26、hooser.showDialog(this,color,Color.BLACK); jta.setSelectedTextColor(ccc); jta.setBackground(ccc); if(e.getSource()=jmi10) jta.replaceRange(,jta.getSelectionStart(), jta.getSelectionEnd(); public void itemStateChanged(ItemEvent e2) if(e2.getItemSelectable()=jcbmi) jta.setLineWrap(true); else jta.setL
27、ineWrap(false); public static void main(String args) new NoteBook(); public void windowOpened(WindowEvent arg0) public void windowClosing(WindowEvent arg0) int a = JOptionPane.showConfirmDialog、(this,文献已被变化,与否要保存?,提示,JOptionPane.YES_NO_CANCEL_OPTION); if(a=1) this.dispose(); else if(a=0) File f2 = n
28、ull; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); if(num2=JFileChooser.APPROVE_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWriter(f2); BufferedWriter bw = new BufferedWriter(fw); bw.write(jta.getText(); bw.close(); fw.cl
29、ose(); catch(IOException e2) e2.printStackTrace(); if(a=2) /?/?/ public void windowClosed(WindowEvent arg0) public void mousePressed(MouseEvent arg0) / TODO Auto-generated method stub public void mouseReleased(MouseEvent arg0) / TODO Auto-generated method stub public void mouseEntered(MouseEvent arg
30、0) / TODO Auto-generated method stub public void mouseExited(MouseEvent arg0) / TODO Auto-generated method stub 2.4测试分析2.4.1程序运营状况高档功能规定:(1)为新建,打开,保存,撤除复制,剪切,粘贴,设立工具栏按钮(2)编辑:查找、查找下一种、替代(3)格式:字体设立、颜色设立、时间显示(4)添加状态栏,在状态栏显示当前文献与否已修改图2.1记事本界面图2.2关于记事本一种完整程序还必要具备打印功能。在JAVA中想打印必要调用PrinterJob类。并且进行页面设立,则调用
31、PageFormat。在这里提示对话框顾客可以自己选取。如下图所示: 图2.3 打印窗口实现该功能某些代码如下所示:PrinterJob printerJob = PrinterJob.getPrinterJob();PageFormat pageFormat = printerJob.pageDialog(printerJob.defaultPage();try boolean boo = printerJob.printDialog(); if (boo = true) printerJob.print(); catch (PrinterException ee) System.out.p
32、rintln(ee); 2.4.2程序异常解决java异常解决合用于在一种办法中可以检测出错误单不能解决错误状况,这样办法将抛出一种异常(JAVA无法保证“存在”异常解决程序可以解决某种异常,若“存在”,就“捕获”异常,并解决“异常”,如找不到,那么: 命令行APP/控制台APP(不基于GUI),当异常不能被“捕获”,那么该程序会运营默认异常解决程序,退出JAVA,若Applet或基于GUIAPP,当一种异常未被“捕获”,GUI在运营默认异常解决程序依然会显示,并且顾客使用GUI处在一种不稳定状态) JAVA代码中:1、也许浮现异常代码- try抛出一种异常-程序块 catch1异常解决程序1
33、;catch100 异常解决程序100; finally无类与否浮现异常都执行程序 1、若try抛出Exception,App寻找在Catch1100寻找适当异常解决程序,若找到,执行CATCH代码,没有,执行最后一种catch后裔码 2、若try未抛出Exception,就执行执行最后一种catch后裔码。3、throws子句来抛出指定异常,异常抛出点(throws 语句位置、try程序块、try()程序块中直接和间接调用办法中) 4、java采用终结方式异常解决,不是恢复方式异常解决 5、发生异常时,异常周边信息(抛出对象自身类型)-异常解决程序 import java.io.*;public class Trans public static void main(String args) try test(); catch (Exception ex) ex.printStackTrace(); static void test() throws Error