资源描述
辽 宁 工 业 大 学
JAVA程序设计 课程设计(论文)
题目: 记事本
院(系): 软件学院
专业班级: 软件技术083班
学 号:
学生姓名: 范 舵
指引教师: 丁宝柱
教师职称: 助 教
起止时间: .12.1至.12.16
程序设计专项(报告)任务及评语
院(系):软件学院 教研室:软件教研室
学 号
学生姓名
范舵
专业班级
软件技术083
程序设计(报告)题目
记事本
程序设计(报告)任务
程序设计专项任务与规定:
(1)掌握Java编程、面向对象基本知识。
(2)较纯熟地编写Java应用程序Application。
(3)理解Java惯用原则类库、编程技巧、异常解决。
(5)联系已学过内容,巩固所学理论,增强独立工作能力。
(6)通过设计重要使学生有一种独立编写程序过程,对理论学习及动手能力均有一种很大提高。
(7)通过本次设计,进一步培养学生热爱专业思想,同步对本专业综合素质提高起一种积极推动作用。
课程设计过程中,要严格遵守实践环节时间安排,听从指引教师指引。对的地完毕上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指引教师评语及成绩
成绩: 指引教师签字:
年 12 月 20 日
目 录
第1章 课程设计目与规定 1
1.1 课程设计目 1
1.2 课程设计实验环境 1
1.3 课程设计预备知识 1
1.4 课程设计规定 1
第2章 课程设计内容 2
2.1课程设计重要内容 2
2.2概要设计 2
2.2.1自定义类阐明 3
2.3详细设计 5
2.4测试分析 13
2.4.1程序运营状况 13
2.4.2程序异常解决 15
第3章 课程设计总结 16
参照资料 17
第1章 课程设计目与规定
1.1 课程设计目
《JAVA程序设计》是计算机有关专业必修专业基本课程,其实践性、应用性很强。实践教学环节是必不可少一种重要环节。本课程程序设计专项实际是计算机有关专业学生学习完《JAVA程序设计》课程后,进行一次全面综合训练,JAVA程序设计设计目是加深对理论教学内容理解和掌握,使学生较系统地掌握程序设计及其在网络开发中广泛应用,基本办法及技巧,为学生综合运用所学知识,运用软件工程为基本进行软件开发、并在实践应用方面打下一定基本。
1.2 课程设计实验环境
硬件规定能运营Windows 9.X操作系统微机系统。JAVA程序设计语言及相应集成开发环境,J2SDK和ECLIPSE开发工具。
1.3 课程设计预备知识
熟悉JAVA语言及ECLIPSE开发工具。
1.4 课程设计规定
按课程设计指引书提供课题,规定学生在自行完毕各个操作环节,并能实现且达到举一反三目,完毕一种项目解决一类问题。规定学生可以全面、进一步理解和纯熟掌握所学内容,并可以用其分析、设计和解答类似问题;对此可以较好地理解和掌握,可以进行简朴分析和判断;能编写出具备良好风格程序;掌握JAVA程序设计基本技能和面向对象概念和办法;理解多线程、安全和网络等编程技术。同步培养学生进行分析问题、解决问题能力;培养学生进行设计分析、设计办法、设计操作与测试、设计过程观测、理解和归纳能力提高。
第2章 课程设计内容
2.1课程设计重要内容
此JAVA记事本程序设计为两个类,一种jsb类,具备程序规定和功能再创立一种keshe主类,在主类中创立一种jsb类对象,就可以直接在编译器中运营程序。
界面设计
在主界面中设计一种Frame容器,并在其中加入一种下拉菜单和一种文本域控件,把该容器设立为GridLayout(1,1)布局。
功能设计
在下拉菜单中加入子菜单并进行监听,分别实现对文献操作功能。点击不同菜单项时,显示不同界面。
代码设计
编写每个控件有关代码,并进行调试。
2.2概要设计
本系统共涉及1个Java源文献。本系统采用了awt包,程序实现了文本编辑器基本功能有:打开文献,文献保存,文献另存为,退出,信息,查找,复制,剪切.粘贴,文字颜色,设立字体,设立字形,设立字号大小,由于该编辑器用是awt包,因此在技术上没有实现将文本以不同颜色显示功能.Java程序编辑器是:图形界面,线程,流与文献等技术综合应用.文本编辑区选用TextArea作为重要部件.文献操作实现:运用字符文献流readFromFile和writeToFile办法来实现.由于java特性,也许用任何一种编辑器来编辑,于是就将windows记事本作为模仿对象,依照实现状况删减了其中某些功能,如自动换行,设立字体,打印等功能.在设计类时候考虑简朴明了,就设计了一种主类和默认属性类做为程序整体框架,所有对象和办法是在默认属性类中创立和实现.以及为各组件注册事件监听监听程序也是在默认属性类中实现,主类完毕对象实例化及显示.这样设计长处是:条理清晰,容易理解,容易修改.这样设计缺陷是:不利于共享类中办法.
2.2.1自定义类阐明
类名:NoteBook作用为主类,继承父类没有,实现接口没有
int result=fileChooser.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
statusLabel.setText(" 您没有选取任何文献");
return;
}
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())!=null){//每次读取一行,直到文献结束
editArea.append(str+"\15\12");
}//endwhile
this.setTitle(fileName.getName()+" - 记事本");
statusLabel.setText(" 当前打开文献:"+fileName.getAbsoluteFile());
fr.close();
isNewFile=false;
currentFile=fileName;
oldValue=editArea.getText();
}
catch(IOException ioException){
}
}
}
}//"打开"解决结束
类名:JMenuBar类 (菜单栏)
JMenu 继承自JMenuItem,它们都在javax.swing包中,都实现了Accessible,MenuElement 接口
public class JMenuBarDemo
{
public static void main (String[] args)
{
//try{javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());}catch(Exception e){}
JPanel panel = new JPanel ();
panel.setBackground (Color.white);
panel.setPreferredSize (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.*;
import 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();
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)");
JMenuItem 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 jmi10 = 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("新建 文本文档");
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.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.addSeparator();
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);
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 void 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.getName());
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 f2 = 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();
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(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.close();
}catch(IOException e2){
e2.printStackTrace();
}
this.dispose();
}
}
}
if(e.getSource()==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 = JColorChooser.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.setLineWrap(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 = 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();
fw.close();
}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 arg0) {
// 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类。并且进行页面设立,则调用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.println(ee);
}
2.4.2程序异常解决
java异常解决合用于在一种办法中可以检测出错误单不能解决错误状况,这样办法将抛出一种异常(JAVA无法保证“存在”异常解决程序可以解决某种异常,若“存在”,就“捕获”异常,并解决“异常”,如找不到,那么:
命令行APP/控制台APP(不基于GUI),当异常不能被“捕获”,那么该程序会运营默认异常解决程序,退出JAVA,若Applet或基于GUIAPP,当一种异常未被“捕获”,GUI在运营默认异常解决程序依然会显示,并且顾客使用GUI处在一种不稳定状态)
JAVA代码中:1、也许浮现异常代码-----{ …… try{抛出一种异常}-----程序块 ……catch1{异常解决程序1};……catch100 {异常解决程序100}; finally{无类与否浮现异常都执行程序}
1、若try抛出Exception,App寻找在Catch1~100寻找适当异常解决程序,若找到,执行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 {
展开阅读全文