简单记事本设计.docx
《简单记事本设计.docx》由会员分享,可在线阅读,更多相关《简单记事本设计.docx(14页珍藏版)》请在冰豆网上搜索。
简单记事本设计
课程设计(大作业)报告
课程名称:
面向对象程序设计
设计题目:
设计一个记事本
院系:
信息技术学院
班级:
计算机科学与技术2班
设计者:
学号:
指导教师:
设计时间:
2014.1.4.-2014.1.6
昆明学院
昆明学院课程设计(大作业)任务书
姓名:
院系:
专业:
计算机科学与技术专业学号:
任务起止日期:
2014.1.4.-2014.1.6
课程设计题目:
设计一个记事本
课程设计要求:
设计要求:
设计一个记事本,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,查找替换等功能。
可扩展功能。
1)界面设计
2)记事本的基本功能:
(1)菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:
分别用于新建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个子菜单:
用于剪切文字,复制文字,粘贴文字。
可加查找替换等功能。
(4)“关于”菜单中有关于记事本版本等信息
功能可自行增加。
工作计划及安排
时间完成内容
4小时复习相关的课程设计所需的内容,提出要求、提供选题并检索资料、确定设计项目
8小时数据类型定义、确定存储结构、算法设计
10小时算法实现
4小时编写课程设计报告
指导教师签字
年月日
课程设计(大作业)成绩
学号:
姓名:
指导教师:
老师
课程设计题目:
设计一个记事本
总结:
经过两天的努力,基本上完成我的Java课程设计—个简单的记事本程序,也基本上实现了我在需求分析时所预期的功能。
通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。
同时,做这门课程设计也进一步加强了我的动手能力。
为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。
在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。
但是,设计过程中也存在一些问题,以及想要添加更多的功能,比如设置背景图,设置记事本字体等等功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。
同时经过这次设计,自己巩固连以前学的很多知识和学到了以前很多不会的知识,受益匪浅。
指导教师评语:
成绩:
填表时间:
指导教师签名:
课程设计(大作业)报告
1.课程设计介绍
1.1.课程设计内容
设计一个记事本,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,查找替换等功能。
可扩展功能。
1)界面设计
2)记事本的基本功能:
(1)菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:
分别用于新建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个子菜单:
用于剪切文字,复制文字,粘贴文字。
可加查找替换等功能。
(4)“关于”菜单中有关于记事本版本等信息
功能可自行增加。
1.2课程设计要求
(1)熟悉JAVA开发环境,掌握JAVA程序的编译和运行;
(2)掌握JAVA基本编程技术和方法;
(3)掌握GUI图形界面编程技术;
(4)了解异常处理机制。
2.总体设计
2.1设计题目总体设计、算法描述
在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。
JTextPane主要用来输入文本。
为了加入颜色的设置,所以加了一个JColorChooser组件。
在图1中,首先创建一个名为mynotepad的类并继承JFrame类作为最底层的容器。
图1.程序流程图
在图1中,构造一个mynotepad类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
1).初始化组件
initTextContent();
initMenu();
initAboutDialog();
2).构建菜单栏及其下拉菜单
JMenu[]menus=newJMenu[]{
newJMenu("文件"),
newJMenu("编辑"),
newJMenu("关于")
};
JMenuItemoptionofmenu[][]=newJMenuItem[][]{{
newJMenuItem("新建"),
newJMenuItem("打开"),
newJMenuItem("保存"),
newJMenuItem("退出")
},
3).文件”菜单的事件监听
ActionListeneraction=newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringname=e.getActionCommand();
JMenuItemMI=(JMenuItem)e.getSource();
if("新建".equals(name)){
content.setText("");
file=null;
}elseif("打开".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
unfold();
}
}elseif("保存".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}elseif("退出".equals(name)){
mynotepadf=newmynotepad();
ints=JOptionPane.showConfirmDialog(f,"退出?
","退出",JOptionPane.YES_NO_OPTION);
2.2功能模块图、流程图分析
1).程序流程图
FalseFalse
truetruetruetruetruetruetruetrue
图3
图2.主流程图
2).模块说明图
图3.模块说明图
3.调试与性能分析
1.主界面图如下:
图4.主界面图
2.运行“文件”图如下:
图5.点击“文件”菜单运行情况图
3.“文件”菜单的“保存”对话
图6.“保存”对话界面图
4.“文件”菜单的“打开”对话
图7.“打开”对话界面图
4.参考文献
主要参考文献
配套教材:
Y. Daniel Liang. Introduction to Java Programming(Sixth Edition ).机械工业出版社, 2008
参考资料:
[1] 叶核亚. Java程序设计实用教程(第3版.电子工业出版社,2010
[2] 耿祥义. JAVA课程设计.清华大学出版,2009
[3] 耿祥义. Java2实用教程.清华大学出版社,2008
[4] 黄小东.Java课程设计案例精编.中国水利水电出版社,2007
附录(程序清单)
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
classmynotepadextendsJFrame{
Filefile=null;
Colorcolor=Color.red;
mynotepad(){//初始化组件
initTextContent();
initMenu();
initAboutDialog();
}
voidinitTextContent(){
getContentPane().add(newJScrollPane(content));
}
JTextPanecontent=newJTextPane();
JFileChooseropenfile=newJFileChooser();
JColorChooseropencolor=newJColorChooser();
JDialogabout=newJDialog(this);
JMenuBarmenu=newJMenuBar();
JMenu[]menus=newJMenu[]{//构建菜单栏及其下拉菜单
newJMenu("文件"),
newJMenu("编辑"),
newJMenu("关于")
};
JMenuItemoptionofmenu[][]=newJMenuItem[][]{{
newJMenuItem("新建"),
newJMenuItem("打开"),
newJMenuItem("保存"),
newJMenuItem("退出")
},
{
newJMenuItem("复制"),
newJMenuItem("剪切"),
newJMenuItem("粘贴"),
newJMenuItem("颜色")
},
{
newJMenuItem("关于")
}
};
voidinitMenu(){
for(inti=0;imenu.add(menus[i]);
for(intj=0;jmenus[i].add(optionofmenu[i][j]);
optionofmenu[i][j].addActionListener(action);
}
}
this.setJMenuBar(menu);
}
ActionListeneraction=newActionListener(){//“文件”菜单的事件监听
publicvoidactionPerformed(ActionEvente){
Stringname=e.getActionCommand();
JMenuItemMI=(JMenuItem)e.getSource();
if("新建".equals(name)){
content.setText("");
file=null;
}elseif("打开".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
unfold();
}
}elseif("保存".equals(name)){
if(file!
=null)openfile.setSelectedFile(file);
intreturnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}elseif("退出".equals(name)){
mynotepadf=newmynotepad();
ints=JOptionPane.showConfirmDialog(f,"退出?
","退出",JOptionPane.YES_NO_OPTION);
if(s==JOptionPane.YES_OPTION)//“编辑”菜单的事件监听
System.exit(0);
}elseif("剪切".equals(name)){
content.cut();
}elseif("复制".equals(name)){
content.copy();
}elseif("粘贴".equals(name)){
content.paste();
}elseif("颜色".equals(name)){
color=JColorChooser.showDialog(mynotepad.this,"",color);
content.setForeground(color);
}elseif("关于".equals(name)){
about.setSize(300,150);
about.show();
}
}
};
voidsaving(){//异常处理
try{
FileWriterWritef=newFileWriter(file);
Writef.write(content.getText());
Writef.close();
}
catch(Exceptione){e.printStackTrace();}
}
voidunfold(){
try{
FileReaderReadf=newFileReader(file);
intlen=(int)file.length();
char[]buffer=newchar[len];
Readf.read(buffer,0,len);
Readf.close();
content.setText(newString(buffer));
}catch(Exceptione){e.printStackTrace();}
}
voidinitAboutDialog(){//创建关于窗口
about.setLayout(newGridLayout(5,1));
about.getContentPane().setBackground(Color.white);
about.getContentPane().add(newJLabel("我的记事本程序"));
about.getContentPane().add(newJLabel("制作者:
zhujianchun"));
about.getContentPane().add(newJLabel("huangyingjun"));
about.getContentPane().add(newJLabel("2014年1月"));
about.getContentPane().add(newJLabel("昆明学院信息技术学院"));
about.setModal(true);
about.setSize(100,100);
about.setSize(100,100);
about.setLocation(250,170);
}
;
}
publicclassNotepad{//主函数
publicstaticvoidmain(Stringargs[]){
mynotepadnoted=newmynotepad();
noted.addWindowListener(newWindowAdapter(){
});
noted.setTitle("我的记事本程序");
noted.setSize(640,320);
noted.show();
noted.setLocation(150,100);
}
}