课程设计(1)报告(2009 / 2010 学年第二学期)题目(1):文本文件编辑程序题目(2):页面调度算法OPT的模拟实现专业计算机科学与技术学生姓名陈炳阳班级学号B07030523指导教师张琳指导单位计算机学院计算机科学与技术系日期2010.05.24-2010.06.04指导教师成绩评定表学生姓名陈炳阳班级学号B07030531 专业计算机科学与技术评分内容评分标准优秀良好中等差平时成绩认真对待课程设计,遵守实验室规定,上机不迟到早退,不做和设计无关的事设计成果设计的科学、合理性功能丰富、符合题目要求界面友好、外观漂亮、大方程序功能执行的正确性程序算法执行的效能设计报告设计报告正确合理、反映系统设计流程文档内容详实程度文档格式规范、排版美观验收答辩简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。
评分等级指导教师简短评语指导教师签名日期2010.06.11 备注评分等级有五种:优秀、良好、中等、及格、不及格题目一:文本文档编辑器一、课题内容和要求采用JAVA SW ING,设计可用于文本文件编辑的程序,要求能正确打开和保存文本文件,能进行文本的修改等功能。
二、需求分析本次试验,,本人使用了MyEclipse程序,熟悉了许多头文件的作用。
三、概要设计1、由于要有文本输入和保存,因此要新建一个文本文档private JFrame frame;private JTextArea textarea;private String filename;public void createEditor() {JMenuBar menubar = new JMenuBar();JMenu menufile = new JMenu("文件");JMenuItem menunew = new JMenuItem("新建");menunew.addActionListener(this);menufile.add(menunew);建立菜单,实现打开,输入,保存,JMenuItem menunew = new JMenuItem("新建");menunew.addActionListener(this);menufile.add(menunew);JMenuItem menuopen = new JMenuItem("打开");menuopen.addActionListener(this);menufile.add(menuopen);JMenuItem menusave = new JMenuItem("保存");menusave.addActionListener(this);menufile.add(menusave);主函数public static void main(String args[]) {JTextEditor te = new JTextEditor();te.createEditor();}};四、详细设计实验源代码package com.demo;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.PrintWriter;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JTextArea;public class JTextEditor extends WindowAdapter implements ActionListener {private JFrame frame;// 主窗体private JTextArea textarea;// 文本输入区域private String filename;// 打开的文件名public void createEditor() {// 建立文件菜单JMenuBar menubar = new JMenuBar();JMenu menufile = new JMenu("文件");// 新建菜单JMenuItem menunew = new JMenuItem("新建");menunew.addActionListener(this);menufile.add(menunew);// 打开菜单JMenuItem menuopen = new JMenuItem("打开");menuopen.addActionListener(this);menufile.add(menuopen);// 保存菜单JMenuItem menusave = new JMenuItem("保存");menusave.addActionListener(this);menufile.add(menusave);// 另存为菜单JMenuItem menusave2 = new JMenuItem("另存为..."); menusave2.addActionListener(this);menufile.add(menusave2);// 退出菜单menufile.addSeparator();JMenuItem menuexit = new JMenuItem("退出");menuexit.addActionListener(this);menufile.add(menuexit);menubar.add(menufile);// 建立帮助菜单JMenu menuhelp = new JMenu("帮助");JMenuItem menuabout = new JMenuItem("关于");menuabout.addActionListener(this);menuhelp.add(menuabout);menubar.add(menuhelp);// 主窗口frame = new JFrame("Java文本编辑器");frame.setJMenuBar(menubar);textarea = new JTextArea();frame.add("Center", textarea);frame.addWindowListener(this);// 注册窗口关闭监听器frame.setSize(600, 400);frame.setVisible(true);}// 菜单选择事件public void actionPerformed(ActionEvent e) {try {if (e.getActionCommand() == "新建") {textarea.setText("");} else if (e.getActionCommand() == "打开") { // 选择文件JFileChooser dlg = new JFileChooser();int result = dlg.showOpenDialog(frame);if (result == JFileChooser.APPROVE_OPTION) {File file = dlg.getSelectedFile();filename = file.getAbsolutePath();// 读取文件FileReader fr = new FileReader(filename);BufferedReader br = new BufferedReader(fr);String str = "";while (br.ready()) {int c = br.read();str += (char) c;}textarea.setText(str);br.close();fr.close();frame.setTitle("Java文本编辑器 - " + filename); }} else if (e.getActionCommand() == "保存") { // 写入文件File file = new File(filename);FileWriter fos = new FileWriter(file, true);BufferedWriter bos = new BufferedWriter(fos);PrintWriter pos = new PrintWriter(bos);// 写入对象数据pos.print(textarea.getText());// 关闭输出流bos.close();pos.close();fos.close();} else if (e.getActionCommand() == "另存为...") { // 选择文件JFileChooser dlg = new JFileChooser();int result = dlg.showOpenDialog(frame);if (result == JFileChooser.APPROVE_OPTION) {File file = dlg.getSelectedFile();// 写入文件FileWriter fos = new FileWriter(file, true);BufferedWriter bos = new BufferedWriter(fos);PrintWriter pos = new PrintWriter(bos);// 写入对象数据pos.print(textarea.getText());// 关闭输出流bos.close();pos.close();fos.close();}} else if (e.getActionCommand() == "退出") {System.exit(0);} else if (e.getActionCommand() == "关于") {// 显示关于对话框final JDialog dialog = new JDialog(frame, "关于", true); dialog.setSize(267, 117);dialog.setLayout(new GridLayout(2, 1));// 窗口关闭事件dialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {dialog.dispose();}});// 显示消息JPanel topPanel = new JPanel();JLabel label = new JLabel("Java文本编辑器");topPanel.add(label, BorderLayout.NORTH);dialog.add(topPanel);dialog.setVisible(true);}} catch (Exception ex) {ex.printStackTrace();}}// 关闭窗体事件public void windowClosing(WindowEvent e) {System.exit(0);}// 主函数public static void main(String args[]) {JTextEditor te = new JTextEditor();te.createEditor();}}}五、测试数据及其结果分析测试结果(如下图所示):文本编辑器界面输入存储功能结果分析:能基本实现输入保存功能,由于余下时间仓促,未能调试实现字体,复制,粘贴等功能1、算法分析:首先新建一个文件菜单,在次基础上继续建新建,打开,保存,另存为,退出菜单.建立菜单选择时间以便选择文件,读取文件.陆续建立写入文件,写入对象数据,关闭输出最后关闭对象窗体六、调试过程中的问题FileReader fr = new FileReader(filename);BufferedReader br = new BufferedReader(fr);String str = "";while (br.ready()) {int c = br.read();str += (char) c;}textarea.setText(str);br.close();fr.close();frame.setTitle("Java文本编辑器 - " + filename);}} else if (e.getActionCommand()="保存")发现最后一句有问题改成} else if (e.getActionCommand()=="保存")七、课程设计总结由于未使用过JA V A进行程序的编写,因此,本次试验开始时无从下手。