简易记事本课程设计.docx
《简易记事本课程设计.docx》由会员分享,可在线阅读,更多相关《简易记事本课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
简易记事本课程设计
程序设计
课程设计报告
设计题目:
简易记事本
专业班级:
电商0902
学号:
20090521079
姓名:
乔恒毅
指导教师:
张莹
时间:
2011.06.13-2011.06.24
说明
一、报告内容
课程设计报告一般应包括以下内容:
1.课题概述(任务、目的、要求)
(一)任务:
用Java编写一个简单的记事本,使其能够实现最基本的功能,如文件的新建、打开、保存、退出,编辑的删除、全选、剪切、复制、粘贴,格式的颜色设置等等。
(二)目的
(1)设计一个简单的Windows记事本,可以实现以下功能:
1:
文件的新建,打开,保存;
2:
对文件的编辑,如全选,复制,剪切,粘贴;
3;对字体颜色改变
4:
执行完操作后,能够顺利关闭记事本;
(2)通过这次设计,可以帮助学生:
1:
提高对Java语言设计的掌握能力;
2:
理论联系实际,进一步提高学生的软件开发技术;
3:
培养学生分析、解决问题的能力。
(三)要求:
(1)程序易懂
编写代码的过程中,应时刻意识到所编写的代码不仅要能够在机器中运行,还要使别人容易看懂。
机器能够运行而别人无法理解的程序,不是好程序,为此要尽量遵循原则,写简单明了的代码。
(2)先设计,后编码
在编码之前作好程序的设计工作,可以减少以后重复修改代码的工作量,作到事倍功半。
因此在真正开始编程前,花一定时间搞清楚怎样写代码,将来可能花更少的时间编写代码,而且会减少将来大量修改代码的机会。
(3)保持代码简洁
复杂代码写后不易理解,在修改和重写上难度比较大,使工作更加复杂,所以编写代码时应保持代码的简洁易懂。
(4)功能实现
在整个设计中要保持完整性,能够实现记事本中最基本的功能,如打开、保存等。
所写内容的字体可以自由设置,颜色也可随意更改。
2.设计思路及采取的方案
1:
界面设计
在主界面中设计一个iFrame容器,并在其中加入一个下拉菜单和一个文本域控件。
2:
功能设计
在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。
点击不同菜单项时,进行不同的操作。
3:
代码设计
编写每个控件的相关代码,并进行调试。
创建了一个标题为“记事本”的窗口,包括菜单栏,菜单菜单项。
实现功能:
对文件的新建、打开、保存、另存、退出。
对文本的剪切、复制、粘贴、全选。
对文本字体:
颜色设置
关于该记事本的介绍
系统详细设计
1:
界面设计
创建一个下拉菜单和文本域,在文本域中显示编辑的文件信息
此段代码代码如下:
Menufile=newMenu("文件");
MenuItemfile_new=newMenuItem("新建");
MenuItemfile_open=newMenuItem("打开");
MenuItemfile_save=newMenuItem("保存");
MenuItemfile_save_as=newMenuItem("另存");
MenuItemfile_exit=newMenuItem("退出");
Menuedit=newMenu("编辑");
MenuItemedit_copy=newMenuItem("复制");
MenuItemedit_cut=newMenuItem("剪切");
MenuItemedit_paste=newMenuItem("粘贴");
MenuItemedit_delete=newMenuItem("删除");
Menuformat=newMenu("格式");
MenuItemformat_fontcolor=newMenuItem("字体颜色");
Menuhelp=newMenu("关于");
MenuItemhelp_subject=newMenuItem("主题");
Stringcopy;//存储剪切板上的内容
intpos;//光标位置
Colorcolor;//调色板
FileDialogfiledialog_open,filedialog_save;//声明打开对话框和保存对话框
StringcurrentFileName;//声明文件路径及文件名存储变量
2:
界面调试
确定主窗体,设置主窗体的属性,对窗体进行布局,加入所需控件并对控件进行初始化。
在完成加入菜单控件后,不能缺少this.setJMenuBar(menu);语句,将menu设为主窗体的菜单条,否则会看不到菜单栏。
如图:
3:
功能调试
打开功能:
代码如下:
privatevoidfileopen()
{
filedialog_open=newFileDialog(this,"打开对话框",FileDialog.LOAD);//实例打开对话框
filedialog_open.setVisible(true);
Stringdir=filedialog_open.getDirectory();//获得用户选择的文件路径
Stringname=filedialog_open.getFile();//获得用户选择的文件名
Filefile=newFile(dir+name);//构造文件对象
try{
FileReaderfr=newFileReader(file);//输入流对象
BufferedReaderin=newBufferedReader(fr);
Stringline=in.readLine();//读入一行数据
Stringtext="";
while(line!
=null){
text=text+line+"\n";//将数据附加到字符串变量text后
line=in.readLine();//读入一行新数据
}
jtextarea.setText(text);//将text的值在文本区显示出来
in.close();//关闭输入流对象
fr.close();
}catch(Exceptione1){
e1.getStackTrace();
}
}
代码如下:
privatevoidfilesave_as(){
filedialog_save=newFileDialog(this,"保存",FileDialog.SAVE);//实例化保存对话框
filedialog_save.setVisible(true);//显示文件保存对话框
Stringdir=filedialog_save.getDirectory();//获得用户选择的文件路径
Stringname=filedialog_save.getFile();//获得用户选择的文件名
currentFileName=dir+name;//文件路径及文件名
filesave();//调用文件保存方法
}
3.取得的结果
2
4.总结与体会(包括:
设计中遇到的问题及解决过程;设计中产生的错误及原因分析;设计体会和收获)
通过此次的综合实验,我对java程序设计相关知识有了进一步的理解与学习,结合实例体会到面向对象的编程。
但此次试验中,在记事本的一些功能实现上还存在着很多不足,比如对修改后的文件保存时应该对其进行更改保存的提示等。
此次的试验,让我体会到java编程在实际生活中应用的广泛与实用性,同时让我在复习前面所学知识的同时发现在学习中的欠缺与不足,因而在今后的学习中要更加努力。
6.附录(原程序代码、注释及仿真波形等)
importjava.awt.Color;
importjava.awt.FileDialog;
importjava.awt.Font;
importjava.awt.Menu;
importjava.awt.MenuBar;
importjava.awt.MenuItem;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;importjava.io.FileWriter;
importjavax.swing.JColorChooser;
importjavax.swing.JFrame;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
publicclassNotepadextendsJFrameimplementsActionListener{
/**
**/privatestaticfinallongserialVersionUID=1L;
/**
*@paramargs
*/MenuBarmenubar=newMenuBar();
JTextAreajtextarea=newJTextArea(10,35);
JScrollPanejscrollpane=newJScrollPane(jtextarea);//将文本域包含在滚动面板中.不需要add()添加
Menufile=newMenu("文件");
MenuItemfile_new=newMenuItem("新建");
MenuItemfile_open=newMenuItem("打开");
MenuItemfile_save=newMenuItem("保存");
MenuItemfile_save_as=newMenuItem("另存");
MenuItemfile_exit=newMenuItem("退出");
Menuedit=newMenu("编辑");
MenuItemedit_copy=newMenuItem("复制");
MenuItemedit_cut=newMenuItem("剪切");
MenuItemedit_paste=newMenuItem("粘贴");
MenuItemedit_delete=newMenuItem("删除");
Menuformat=newMenu("格式");
MenuItemformat_fontcolor=newMenuItem("字体颜色");
Menuhelp=newMenu("关于");
MenuItemhelp_subject=newMenuItem("主题");
Stringcopy;//存储剪切板上的内容
intpos;//光标位置
Colorcolor;//调色板
FileDialogfiledialog_open,filedialog_save;//声明打开对话框和保存对话框
StringcurrentFileName;//声明文件路径及文件名存储变量
Notepad(){
super("记事本");
this.add(jscrollpane);
jtextarea.setFont(newFont("",Font.LAYOUT_LEFT_TO_RIGHT,16));//设置文本域中的字体大小
jtextarea.setLineWrap(true);
this.setMenuBar(menubar);//菜单条加在窗体上
menubar.add(file);
file.add(file_new);
file_new.addActionListener(this);
file.add(file_open);
file_open.addActionListener(this);
file.add(file_save);
file_save.addActionListener(this);
file.add(file_save_as);
file_save_as.addActionListener(this);
file.addSeparator();
file.add(file_exit);
file_exit.addActionListener(this);
menubar.add(edit);
edit.add(edit_copy);
edit_copy.addActionListener(this);
edit.add(edit_cut);
edit_cut.addActionListener(this);
edit.add(edit_paste);
edit_paste.addActionListener(this);
edit.addSeparator();
edit.add(edit_delete);
edit_delete.addActionListener(this);
menubar.add(format);
format.add(format_fontcolor);
format_fontcolor.addActionListener(this);
menubar.add(help);
help.add(help_subject);
help_subject.addActionListener(this);
this.setSize(500,500);
this
.setLocation(
(getToolkit().getScreenSize().width-this.getSize().width)/2,
(getToolkit().getScreenSize().height-this.getSize().height)/2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
newNotepad();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==file_new){
jtextarea.setText("");
}
if(e.getSource()==file_open){
fileopen();
}
if(e.getSource()==file_save){
filesave();
}
if(e.getSource()==file_save_as){
filesave_as();
}
if(e.getSource()==file_exit){
System.exit(0);
}
if(e.getSource()==edit_copy){
copy=jtextarea.getSelectedText();//拖动鼠标选取文本
}
if(e.getSource()==edit_cut){
copy=jtextarea.getSelectedText();//先将选中的字符串保存在copy中,再将文本框中的字符清空
jtextarea.replaceRange("",jtextarea.getSelectionStart(),jtextarea
.getSelectionEnd());
}
if(e.getSource()==edit_paste){//注:
这种粘貼方式只能粘贴在本记事本中复制的内容(未调用系统剪切板)
jtextarea.replaceRange("",jtextarea.getSelectionStart(),jtextarea
.getSelectionEnd());//先将选中的文本清空.这种主要针对你想将选中的内容覆盖掉
pos=jtextarea.getCaretPosition();//将光标位置赋值给变量pos
jtextarea.insert(copy,pos);//在光标位置插入复制的值-copy.
}
if(e.getSource()==edit_delete){//删除方法-用空格去替换光标选中的文本
jtextarea.replaceRange("",jtextarea.getSelectionStart(),jtextarea
.getSelectionEnd());
}
if(e.getSource()==format_fontcolor){
color=JColorChooser.showDialog(this,"调色板",Color.BLACK);
jtextarea.setForeground(color);//设置文本域中字体颜色、Color.BLACK表示默认黑色
}if(e.getSource()==help_subject){//弹出窗体
JFrameframe=newJFrame("关于");
JTextAreajtextarea=newJTextArea();
jtextarea.setEditable(false);
jtextarea.setLineWrap(true);
jtextarea.append("本记事本只有以下简单功能:
"+"\n");
jtextarea.append("1:
新建"+"\t");
jtextarea.append("2:
打开"+"\n");
jtextarea.append("3:
保存"+"\t");
jtextarea.append("4:
另存"+"\n");
jtextarea.append("5:
退出"+"\t");
jtextarea.append("6:
复制"+"\n");
jtextarea.append("7:
剪切"+"\t");
jtextarea.append("8:
粘贴"+"\n");
jtextarea.append("9:
字体颜色"+"\t");
jtextarea.append("10:
刪除"+"\n");
frame.add(jtextarea);
frame.setSize(180,180);
frame.setResizable(false);
frame.setLocation(250,100);
frame.setVisible(true);
}
}privatevoidfileopen(){
filedialog_open=newFileDialog(this,"打开对话框",FileDialog.LOAD);//实例打开对话框
filedialog_open.setVisible(true);
Stringdir=filedialog_open.getDirectory();//获得用户选择的文件路径
Stringname=filedialog_open.getFile();//获得用户选择的文件名
Filefile=newFile(dir+name);//构造文件对象
try{
FileReaderfr=newFileReader(file);//输入流对象
BufferedReaderin=newBufferedReader(fr);
Stringline=in.readLine();//读入一行数据
Stringtext="";
while(line!
=null){
text=text+line+"\n";//将数据附加到字符串变量text后
line=in.readLine();//读入一行新数据
}
jtextarea.setText(text);//将text的值在文本区显示出来
in.close();//关闭输入流对象
fr.close();
}catch(Exceptione1){
e1.getStackTrace();
}
}
privatevoidfilesave(){
if(currentFileName==null){//判断该文件是否选择了保存路径
filesave_as();
}else{
Filefile=newFile(currentFileName);//创建文件对象,获得文件保存路径及名称
try{
FileWriterfw=newFileWriter(file);//创建输出流对象
BufferedWriterout=newBufferedWriter(fw);
out.write(jtextarea.getText());//将文本区内容写到指定文件中
out.flush();//关闭输出流
fw.close();
}catch(Exceptioneo){
eo.printStackTrace();
}
}
}
privatevoidfilesave_as(){
filedialog_save=newFileDialog(this,"保存",FileDialog.SAVE);//实例化保存对话框
filedialog_save.setVisible(true);//显示文件保存对话框
Stringdir=filedialog_save.getDirectory();//获得用户选择的文件路径
Stringname=filedialog_save.getFile();//获得用户选择的文件名
currentFileName=dir+name;//文件路径及文件名
filesave();//调用文件保存方法}
}