081404078范舵软件技术083班.docx
- 文档编号:10286438
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:20
- 大小:125KB
081404078范舵软件技术083班.docx
《081404078范舵软件技术083班.docx》由会员分享,可在线阅读,更多相关《081404078范舵软件技术083班.docx(20页珍藏版)》请在冰豆网上搜索。
081404078范舵软件技术083班
辽宁工业大学
JAVA程序设计课程设计(论文)
题目:
记事本
院(系):
软件学院
专业班级:
软件技术083班
学号:
081404078
学生姓名:
范舵
指导教师:
丁宝柱
教师职称:
助教
起止时间:
2009.12.1至2009.12.16
程序设计专题(报告)任务及评语
院(系):
软件学院教研室:
软件教研室
学号
081404078
学生姓名
范舵
专业班级
软件技术083
程序设计(报告)题目
记事本
程序设计(报告)任务
程序设计专题的任务与要求:
(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2009年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课程设计的实验环境
硬件要求能运行Windows9.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作用为主类,继承的父类没有,实现的接口没有
intresult=fileChooser.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
statusLabel.setText(" 您没有选择任何文件");
return;
}
FilefileName=fileChooser.getSelectedFile();
if(fileName==null||fileName.getName().equals(""))
JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
else{
try{
FileReaderfr=newFileReader(fileName);
BufferedReaderbfr=newBufferedReader(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(IOExceptionioException){
}
}
}
}//"打开"处理结束
类名:
JMenuBar类(菜单栏)
JMenu继承自JMenuItem,它们都在javax.swing包中,都实现了Accessible,MenuElement接口
publicclassJMenuBarDemo
{
publicstaticvoidmain(String[]args)
{
//try{javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());}catch(Exceptione){}
JPanelpanel=newJPanel();
panel.setBackground(Color.white);
panel.setPreferredSize(newDimension(600,400));
//JMenu有箭头(除了顶层的),可以添加JMenu和JMenuItem;
//JMenuItem无箭头,不可添加其他菜单项
JFrameframe=newJFrame("JMenuBarDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.setJMenuBar(bar);
frame.pack();
frame.show();
}
}
2.3详细设计
importjava.io.*;
importjava.util.Calendar;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassNoteBookextendsJFrameimplementsActionListener,ItemListener,WindowListener,MouseListener{
Containerc=this.getContentPane();
JMenuBarjmb=newJMenuBar();
JColorChooserjcc=newJColorChooser();
JMenujm1=newJMenu("文件(F)");
JMenujm2=newJMenu("编辑(E)");
JMenujm3=newJMenu("格式(O)");
JMenujm4=newJMenu("查看(V)");
JMenujm5=newJMenu("帮助(H)");
JMenuItemjmi1=newJMenuItem("新建(N)");
JMenuItemjmi2=newJMenuItem("打开(O)");
JMenuItemjmi3=newJMenuItem("保存(S)");
JMenuItemjmi4=newJMenuItem("退出(X)");
JMenuItemjmi5=newJMenuItem("撤消(U)");
JMenuItemjmi6=newJMenuItem("复制(C)");
JMenuItemjmi7=newJMenuItem("粘贴(P)");
JMenuItemjmi8=newJMenuItem("剪切(T)");
JMenuItemjmi12=newJMenuItem("日期和时间");
JMenuItemjmi9=newJMenuItem("字体(E)");
JCheckBoxMenuItemjcbmi=newJCheckBoxMenuItem("自动换行(W)");
JMenuItemjmi10=newJMenuItem("删除(S)");
JMenuItemjmi11=newJMenuItem("背景颜色(H)");
JTextAreajta=newJTextArea(15,15);
JScrollPanejsp=newJScrollPane(jta);
//PupolMenupm=newPupolmenu();
NoteBook(){
this.addWindowListener(this);
c.setLayout(newBorderLayout());
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);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jmi1){
jta.setText("");
this.setTitle("无标题-记事本");
}
if(e.getSource()==jmi2){
Filef1;
JFileChooserjfc1=newJFileChooser();
intnum1=jfc1.showOpenDialog(this);
if(num1==JFileChooser.APPROVE_OPTION){
try{
f1=jfc1.getSelectedFile();
this.setTitle(f1.getName());
FileReaderfr=newFileReader(f1);
BufferedReaderbr=newBufferedReader(fr);
Stringstr;
while((str=br.readLine())!
=null){
jta.setText(str);
}
fr.close();
br.close();
}catch(FileNotFoundExceptione1){
e1.printStackTrace();
}catch(IOExceptione2){
e2.printStackTrace();
}
}
}
if(e.getSource()==jmi3){
Filef2=null;
JFileChooserjfc2=newJFileChooser();
intnum2=jfc2.showSaveDialog(this);
if(num2==JFileChooser.APPROVE_OPTION){
f2=jfc2.getSelectedFile();
this.setTitle(f2.getName());
try{
FileWriterfw=newFileWriter(f2);
BufferedWriterbw=newBufferedWriter(fw);
bw.write(jta.getText());
bw.close();
fw.close();
}catch(IOExceptione2){
e2.printStackTrace();
}
}
}
if(e.getSource()==jmi4){
inta=JOptionPane.showConfirmDialog
(this,"文件已被改变,是否要保存?
","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(a==1){
this.dispose();
}elseif(a==0){
Filef2=null;
JFileChooserjfc2=newJFileChooser();
intnum2=jfc2.showSaveDialog(this);
if(num2==JFileChooser.APPROVE_OPTION){
f2=jfc2.getSelectedFile();
this.setTitle(f2.getName());
try{
FileWriterfw=newFileWriter(f2);
BufferedWriterbw=newBufferedWriter(fw);
bw.write(jta.getText());
bw.close();
fw.close();
}catch(IOExceptione2){
e2.printStackTrace();
}
this.dispose();
}
}
}
if(e.getSource()==jmi12){
Calendarc1=Calendar.getInstance();
inty=c1.get(Calendar.YEAR);
intm=c1.get(Calendar.MONTH);
intd=c1.get(Calendar.DATE);
inth=c1.get(Calendar.HOUR);
intm1=c1.get(Calendar.MINUTE);
intm2=m+1;
jta.setText(y+"年"+m2+"月"+d+"日"+h+":
"+m1);
}
if(e.getSource()==jmi11){
Colorccc=JColorChooser.showDialog
(this,"color",Color.BLACK);
jta.setSelectedTextColor(ccc);
jta.setBackground(ccc);
}
if(e.getSource()==jmi10){
jta.replaceRange("",jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
publicvoiditemStateChanged(ItemEvente2){
if(e2.getItemSelectable()==jcbmi){
jta.setLineWrap(true);
}else
jta.setLineWrap(false);
}
publicstaticvoidmain(String[]args){
newNoteBook();
}
publicvoidwindowOpened(WindowEventarg0){
}
publicvoidwindowClosing(WindowEventarg0){
inta=JOptionPane.showConfirmDialog、(this,"文件已被改变,是否要保存?
","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(a==1){
this.dispose();
}elseif(a==0){
Filef2=null;
JFileChooserjfc2=newJFileChooser();
intnum2=jfc2.showSaveDialog(this);
if(num2==JFileChooser.APPROVE_OPTION){
f2=jfc2.getSelectedFile();
this.setTitle(f2.getName());
try{
FileWriterfw=newFileWriter(f2);
BufferedWriterbw=newBufferedWriter(fw);
bw.write(jta.getText());
bw.close();
fw.close();
}catch(IOExceptione2){
e2.printStackTrace();
}
}
if(a==2){
////?
?
?
?
/?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
//
}
}
}
publicvoidwindowClosed(WindowEventarg0){
}
}
publicvoidmousePressed(MouseEventarg0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 081404078 软件技术 083