资源描述
攀枝花学院java课程设计报告
攀枝花学院课程设计
题 目: 记事本程序设计
院 (系): 数学与计算机学院
年级专业:
姓 名: 000000
学 号:
指导教师:
二〇一三年十二月三十日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
题 目
记事本
1、课程设计的目的
通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
模拟Windows的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。
3、主要参考文献
[1]朱福喜.《Java语言程序设计》(第二版).科学出版社
[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社
[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社
[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社
[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社
4、课程设计工作进度计划
序号
时间(天)
内容安
备注
1
1
分析设计准备
周一
2
2
编程调试阶段
周二至周三
3
1
编写课程设计报告
周四
4
1
考核
周五
总计
5(天)
指导教师(签字)
日期
年 月 日
教研室意见:
年 月 日
学生(签字):
接受任务时间: 年 月 日
注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
记事本
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名: 年 月 日
摘 要
目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。按照教学培养计划要求,学生在学习完课本中指定课时的知识后,应安排一定课时的课程设计。其主要目的是使学生深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等。故此“记事本”应运而生。
该报告中的程序是简易记事本。使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能,不同之处是本程序能够对文字的颜色进行设置。该程序主要用到了Java swing和事件监听等。
关键字: 记事本,Java,Java swing
1
目录
摘 要 I
1 前 言 2
2 需求分析 3
2.1需求分析 3
2.2功能设计 3
3 概要设计 4
3.1程序设计思路 4
3.2程序运行界面 4
3.3模块说明图 4
3.4程序流程图 6
3.5程序相关说明 6
4 程序详细设计与分析 7
4.1初始化组件 7
4.2.构建菜单栏及其下拉菜单 7
4.3 “文件”菜单的事件监听 7
4.4 “编辑”菜单的事件监听 8
5 测试分析 10
结 论 12
参考文献 13
附录 14
1 前 言
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。
2 需求分析
2.1需求分析
现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2.2功能设计
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
(1)菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:分别用于新
建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个字菜单:用于剪切文字,复制文字,粘贴文字。增加了“颜色”子菜单来对文字的颜色进行设置。
(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息。
3 概要设计
3.1程序设计思路
在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到JScrollPaneJMenu,JTextPane,JFileChooser等。JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。JTextPane主要用来输入文本。为了加入颜色的设置,所以加了一个JColorChooser组件。
3.2程序运行界面
图3.1程序运行界面
3.3模块说明图
implements
ActionListener
mynotepad
JFrame
extends
图3.2模块说明图
在图3.2中,首先创建一个名为mynotepad的类并继承JFrame类作为最底层的容器。
mynotepad的构造方法
容器初始化
事件监听添加
组件
文字输入区
初始化
初始化
新建
文件
菜单栏
打开
保存
退出
关于
编辑
关于
剪切
复制
颜色
粘贴
图3.3模块说明图
在图3.3中,构造一个mynotepad类时要做三件事情,分别是初始化容器(initTextContent)、初始化组件(initMenu、initAboutDialog)、设置事件监听器。
启动程序
3.4程序流程图
输入文字
False False
关于
颜色
粘贴
复制
退出
剪切
保存
打开
新建
true true true true true true true true
file=null
about.show()
color
file=openfile
saving
content.paste
content.copy()
System.exit(0)
content.cut()
关闭或退出程序
图3.4程序流程图
3.5程序相关说明
整个记事本分为2块:菜单栏和内容输入区。本程序中首先定义一个mynotepad类继承JFrame作为最底层容器。
(1).Textcontent为程序文本输入区。
(2).Menu为菜单栏。
(3).AboutDialog为关于对话框。
(4).要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
4 程序详细设计与分析
4.1初始化组件
initTextContent();
initMenu();
initAboutDialog();
4.2.构建菜单栏及其下拉菜单
JMenu[] menus=new JMenu[]{
new JMenu("文件"),
new JMenu("编辑"),
new JMenu("关于")
};
JMenuItem optionofmenu[][]=new JMenuItem[][]{{
new JMenuItem("新建"),
new JMenuItem("打开"),
new JMenuItem("保存"),
new JMenuItem("退出")
},
{
new JMenuItem("复制"),
new JMenuItem("剪切"),
new JMenuItem("粘贴"),
new JMenuItem("颜色")
},
{
new JMenuItem("关于")
}
};
4.3 “文件”菜单的事件监听
ActionListener action=new ActionListener(){
public void actionPerformed(ActionEvent e){
String name = e.getActionCommand();
JMenuItem MI=(JMenuItem)e.getSource();
if("新建".equals(name)){
content.setText("");
file=null;
}else if("打开".equals(name)){
if(file !=null)openfile.setSelectedFile(file);
int returnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
unfold();
}
}else if("保存".equals(name)){
if(file!=null) openfile.setSelectedFile(file);
int returnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}else if("退出".equals(name)){
mynotepad f=new mynotepad();
int s=JOptionPane.showConfirmDialog(f,"退出?","退出",JOptionPane.YES_NO_OPTION);
4.4 “编辑”菜单的事件监听
else if("剪切".equals(name)){
content.cut();
}else if("复制".equals(name)){
content.copy();
}else if("粘贴".equals(name)){
content.paste();
}else if("颜色".equals(name)){
color=JColorChooser.showDialog(mynotepad.this,"",color);
content.setForeground(color);
5 测试分析
图5.1:点击“文件”运行情况
图5.2:“文件”菜单中的“打开”对话框
图5.3:“编辑”中的“颜色”设置功能
图5.4:“关于”对话框
调试结果完全符合课程设计要求!
结 论
经过一个星期的我的记事本的课程设计,我在老师的指导下,基本上完成我的Java课程设计—简单的记事本程序,也基本上实现了我在需求分析时所预期的功能。通过该课程设计,收获颇多。
首先,让我加深了对Java语言的理论知识的理解;进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力
其次,让我更加熟练的掌握了Java语言的设计能力并且有了实践经验,在设计过程中,学到了老师没有在课堂上没有教授的知识,加强了我对Java语言的学习兴趣和好感。
参考文献
[1]朱福喜.《Java语言程序设计》(第二版).科学出版社
[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社
[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社
[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社
[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社
附录
源代码:
package com.wxp.Notepad;
import java.awt.*;
@SuppressWarnings("serial")
class mynotepad extends JFrame{
File file=null;
Color color=Color.red;
mynotepad(){
initTextContent(); //初始化组件
initMenu();
initAboutDialog();
}
void initTextContent(){
getContentPane().add(new JScrollPane(content)); //滚动面板对象
}
JTextPane content=new JTextPane(); //创建/内容输入区
JFileChooser openfile=new JFileChooser(); //创建打开文件对话框
JColorChooser opencolor=new JColorChooser(); //颜色选择
JDialog about=new JDialog(this); //关于对话框
JMenuBar menu=new JMenuBar(); //创建菜单栏
//菜单栏的各个菜单项
JMenu[] menus=new JMenu[]{
new JMenu("文件"),
new JMenu("编辑"),
new JMenu("关于")
};
//“文件”菜单项的四个下拉菜单
JMenuItem optionofmenu[][]=new JMenuItem[][]{{
new JMenuItem("新建"),
new JMenuItem("打开"),
new JMenuItem("保存"),
new JMenuItem("退出")
},
//编辑菜单的四个下拉菜单
{
new JMenuItem("复制"),
new JMenuItem("剪切"),
new JMenuItem("粘贴"),
new JMenuItem("颜色"),
},
{
new JMenuItem("关于")
}
};
void initMenu(){
for(int i=0;i<menus.length;i++){
menu.add(menus[i]);
for(int j=0;j<optionofmenu[i].length;j++){
menus[i].add(optionofmenu[i][j]);
optionofmenu[i][j].addActionListener( action );
}
}
this.setJMenuBar(menu);
}
ActionListener action=new ActionListener(){ //添加事件监听
@SuppressWarnings({ "unused", "deprecation" })
public void actionPerformed(ActionEvent e){
String name = e.getActionCommand();
JMenuItem MI=(JMenuItem)e.getSource();
if("新建".equals(name)){ //监听“新建”事件
content.setText("");
file=null;
}else if("打开".equals(name)){ //监听“打开”事件
if(file !=null)openfile.setSelectedFile(file);
int returnVal=openfile.showOpenDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile(); //打开选择文件
unfold();
}
}else if("保存".equals(name)){ //监听“保存”事件
if(file!=null) openfile.setSelectedFile(file);
int returnVal=openfile.showSaveDialog(mynotepad.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=openfile.getSelectedFile();
saving();
}
}else if("退出".equals(name)){
mynotepad f=new mynotepad();
int s=JOptionPane.showConfirmDialog(f,"退出?","退出",JOptionPane.YES_NO_OPTION); //提示用户是否退出
if(s==JOptionPane.YES_OPTION)
System.exit(0);
}else if("剪切".equals(name)){ //监听“剪切”事件
content.cut();
}else if("复制".equals(name)){ //监听“复制”事件
content.copy();
}else if("粘贴".equals(name)){ //监听“粘贴”事件
content.paste();
}else if("颜色".equals(name)){ //监听“颜色”事件
color=JColorChooser.showDialog(mynotepad.this,"",color);
content.setForeground(color); //对颜色进行设置
}else if("关于".equals(name)){
about.setSize(300,150);//设置“关于”对话框大小为300×150
about.show(); //显示“关于”对话框
}
}
};
void saving(){
try{
FileWriter Writef=new FileWriter(file); //创建文件写入器
Writef.write(content.getText());
Writef.close();
}
catch(Exception e){e.printStackTrace();}
}
void unfold(){
try{
FileReader Readf=new FileReader(file); //文件读入
int len=(int)file.length();
char []buffer=new char[len];
Readf.read(buffer,0,len);
Readf.close();
content.setText(new String(buffer));
}catch(Exception e){e.printStackTrace();}
}
void initAboutDialog(){
about.setLayout(new GridLayout(3,1)); //将“关于”对话框设置为3行1列
about.getContentPane().setBackground(Color.white);//设置对话框背景色
about.getContentPane().add(new JLabel("记事本"));//对话框内容
about.getContentPane().add(new JLabel("制作者:陈 程"));
about.getContentPane().add(new JLabel("2013年12月"));
about.setModal(true); //设置对话框前端显示
about.setSize(100,100);
about.setLocation(250,170); //设置对话框显示位置
}
;
}
public class Notepad{
@SuppressWarnings("deprecation")
public static void main(String args[]){ //入口main函数
mynotepad noted=new mynotepad();
noted.getContentPane().setFont(new Font("新宋体", Font.BOLD, 22));
noted.setForeground(Color.PINK);
noted.setFont(UIManager.getFont("TextArea.font"));
noted.setIconImage(Toolkit.getDefaultToolkit().getImage(Notepad.class.getResource("/image/title.jpg")));
noted.addWindowListener(new WindowAdapter(){
});
noted.setTitle("记事本"); //记事本标题
noted.setSize(640,320); //设置记事本大小
noted.show();
noted.setLocation(150,100); //设置记事本显示位置
noted.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{noted.getContentPane()}));
}
}
第 17 页 共 22 页
展开阅读全文