Java课程涉及报告.docx
《Java课程涉及报告.docx》由会员分享,可在线阅读,更多相关《Java课程涉及报告.docx(38页珍藏版)》请在冰豆网上搜索。
![Java课程涉及报告.docx](https://file1.bdocx.com/fileroot1/2023-1/10/452cc00d-48f0-429c-9a42-a73a59192436/452cc00d-48f0-429c-9a42-a73a591924361.gif)
Java课程涉及报告
课程设计(论文)任务书
基础学 院 信息与计算专 业2009-1 班
一、课程设计(论文)题目:
简易记事本程序设计
二、课程设计(论文)工作:
自2012年6月19日起至2012年6月27日止
三、课程设计(论文)地点:
5-204
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)使学生掌握软件开发的基本工作流程;
(2)巩固JAVA程序设计课程所学的内容;
(3)培养学生的计算机思维能力以及合作的精神;
(4)培养学生分析、解决问题的能力;
(5)提高学生的科技论文写作能力。
2.课程设计的任务及要求
1)基本要求:
(1)研究课程设计任务,并进行系统需求分析;
(2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;
(3)实现各功能模块代码;
(4)系统组装,测试、完善系统。
2)创新要求:
在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。
3)课程设计论文编写要求
(1)要按照书稿的规格打印誊写课程设计论文
(2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结
(3)论文装订按学校的统一要求完成
4)参考文献:
(1)丁振凡,《JAVA语言程序设计》,清华大学出版社.
(2)丁振凡,《JAVA语言程序设计实验指导与习题解答》,清华大学出版社.
(3)
5)课程设计进度安排
内容天数 地点
系统总体设计1 实验室
软件设计及调试2 实验室
答辩及撰写报告2 实验室、图书馆
学生签名:
汪媛
2012年6月27日
课程设计(论文)评审意见
(1)课程设计过程(20分):
优( )、良( )、中( )、一般( )、差( );
(2)是否完成调试,系统运行效果(30分):
优( )、良( )、中( )、一般( )、差( );
(3)回答问题(20分):
优( )、良( )、中( )、一般( )、差( );
(4)课程设计报告(30分):
优( )、良( )、中( )、一般( )、差( );
(5)格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
职称:
教授
2011年6月29日
记事本设计
摘要:
该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,另存文件,退出,剪切,复制,粘贴,查找,替换,全选文档,设置字体格式,变更字体颜色等功能。
该程序主要用到了Javaswing和事件监听等。
目录
1、项目内容、要求与分组情况总体介绍2
2、概要设计2
2.1开发工具及环境2
2.2任务及需求分析2
2.3工作原理2
3、具体实现2
3.1类设计3
3.2关键技术处理3
4、运行调试与分析讨论4
5、设计体会与小结5
6、参考文献5
附录:
(源程序)5
1、项目内容、要求与分组情况总体介绍
本次实验的目标是制作一个简易的记事本,可以进行文件保存,新建,另存为和退出
小组的具体分工情况见下表:
小组组长
李志鹏
成员
子项目名称
具体要求
李志鹏
模块的组合测试,以及代码的重用
查找出程序的错误并改正,提炼出公共便携的方法
谢麟
功能键的注册
将功能键注册监听者,使其功能正常
汪媛
查找字符串窗口的创建以及功能的实现
实现全文本的字符串查找和替换
戴乾刚
组合其余同学的工作
使程序完整化
刘国涛
模块的组合测试,
查找出程序的错误并改正
2、概要设计
2.1开发工具及环境
文本编辑器:
记事本;
运行环境:
命令提示符(DOS环境)。
2.2任务及需求分析
设计简易记事本程序,实现简单的文件操作,具体任务如下:
(1)记事本窗口界面布局设计;
(2)菜单项的具体实现
(3)编程实现重用概念,实现方法的公用.
(4)运行测试程序,调试纠正运行错误。
2.3工作原理
(1)工作过程
点击菜单栏上的某个功能区,然后进行相应的功能操作,例如文件功能区的打开文件然后会弹出文件选择器进行文件的选取.
(2)工作原理
利用图形界面编程实现,利用到的知识点包括:
❑窗体的创建和应用界面布局;
❑事件处理,包括按钮的动作事件处理,窗体事件。
❑接口知识:
事件处理中通过接口约束事件监听者必须实现相应接口中定义的方法。
❑流程控制语句:
通过条件判断区分不同按钮,作不同操作处理。
3、具体实现
3.1类设计
(1)类名:
NoteBook
作用:
实现窗口的布局设定,事件注册。
该类为主类。
类中含有的方法介绍:
❑NoteBook()构造方法:
实现窗体内部的组件添加和给组件添加事件监听。
❑main()方法:
应用程序的入口,创建一个NoteBook类的对象来调用NoteBook类的构造方法。
❑CreateFrameMenuBar(JMenuBar):
创建导航条(设置快捷键和添加事件监听);
❑HandleListener():
为导航项注册事件监听处理(利用匿名);
❑CommonMethod(intflag):
文件对话筐弹出时调用的代码公共部分,即获取当打开文件和保存/另存文件的时候进行文件选择对话框弹出的选择内容(两种选择内容,打开还是取消);
flag:
两种取值(NoteBook.FILE_SAVE(表示保存文件),NoteBook.FILE_OPEN(表示打开文件));
❑IsSaved():
由于通过StateBar区域中的显示判断当前的文本域中的内容是否发生改变;
❑Open()和OpenFile()方法:
实现打开文件的方法;
❑CreateFile():
创建文件的方法;
❑SaveFile():
执行文件保存的时候实行的事件监听处理事件;
❑SaveAs():
执行文件另存为的时候实行的事件监听处理事件;
❑CloseFile():
执行退出的时候通过事件监听委托的事件处理;
❑Cut()和Copy()和Paste():
剪切,复制,粘帖;
❑ShowTime():
显示当前时间;
❑ShowAbout():
弹出关于我的记事本对话框.
(2)类名:
FindStrDialog
该类为NoteBook的内嵌类,作用是实现弹出查找字符串的对话框
该类继承JDialog类
类中含有的方法介绍:
❑FindStrDialog()构造方法:
添加所需组件至对话框中;
❑addActionForControl():
给组件注册事件监听;
❑find():
实现全文本字符串的查找;
❑replace():
实现文本的逐个替换;
❑replaceAll():
实现文本的全文替换;
(3)类名:
FontChangeDialog
该类为NoteBook的内嵌类,作用是实现对文本内容格式(字体)的设置
该类继承JDialog类
类中含有的方法介绍:
❑FontChangeDialog()构造方法:
添加所需组件至对话框中;
❑addActionForFontControl()方法:
给组件注册事件监听;
3.2关键技术处理
(1)窗体界面设计及注册事件监听
txtfindstr.addTextListener(
newTextListener()
{
publicvoidtextValueChanged(TextEvente)
{
Stringtext=txtfindstr.getText();
if(text!
=null&&!
”“.equals(text))
btnSearchNext.setEnabled(true);
else
btnSearchNext.setEnabled(false);
}
});
btnSearchNext.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
find();
}
});
注:
以上两个方法都是给控件添加时间监听,给JTextField添加的TextListener监听,给JButton添加的是ActionListener监听.
通过利用匿名的添加事件监听事件的实现方法
(3)窗体关闭
//按下窗口关闭钮事件处理
addWindowListener(
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
CloseFile();
}
}
【注】也可以执行窗体的dispose()方法实现窗体关闭。
(4)实现字符串的查找
//进行字符(串)的查找
privateintfind()
{
intinitialIndex=0;
Stringstr=txt.getSelectedText();//获取文本内容中选中的字符文本
Stringsearchtxt=txtfindstr.getText();//要查找的字符(串)
if(str==null||”“.equals(str))
str=txt.getText();//如果没有选中的文本就默认为文本框中的所有文本内容
else
initialIndex=txt.getSelectionStart();//如果有选中的文本则获取选中文本的索引值
str=txt.getText().substring(initialIndex>0?
initialIndex+1:
0);
intstartindex=str.indexOf(searchtxt);
if(startindex>=0&&!
”“.contains(str)&&null!
=str)
{
startindex=initialIndex==0?
startindex:
(startindex+1)+initialIndex;//让起始索引移动到下一个出
现
//让查找到的文本变成选中的状态
txt.setSelectionStart(startindex);
txt.setSelectionEnd(startindex+searchtxt.length());
return0;
}
elseif(initialIndex>0&&null==str&&““.equals(str))
{
JOptionPane.showMessageDialog(null,”已搜至文本结尾处”,
“查找结束”,
JOptionPane.ERROR_MESSAGE);
return-1;
}
else
{
JOptionPane.showMessageDialog(null,”全文中未发现该查找的内容”,
“查找失败”,
JOptionPane.ERROR_MESSAGE);
return-1;
}
}
4、运行调试与分析讨论
点击”文件”运行情况
“文件”菜单中的”打开”对话框
“格式”中的样品颜色设置功能
RGB颜色设置功能
“格式”中的字体设置功能
“编辑”中的查找功能
“帮助”对话框
5、设计体会与小结
通过这次的课程设计,由于自己一开始接触过面向对象编程,所以针对Java的这次课设练习还是比较顺利,从此次的练习中,我自己也发现到了一些问题,关于面向对象的编程思想的理解还是没有很强,在这方面还是要进行加强.其次针对此次编写主要是关于高级图形编程.主要是关于一些包的引用和利用事件监听,其中利用委托的思想进行组件的事件添加,实现相应的功能.大家一起合作完成项目,让我感受到了团队的力量是无穷的,懂得如何安排任务,如何有针对性的给每位同志都分配好任务,十分有效率的去完成一件事的很多意义;
6、参考文献
[1]丁振凡,《JAVA语言程序设计》,清华大学出版社.
[2]丁振凡,《JAVA语言程序设计实验指导与习题解答》,清华大学出版社.
[3]
附录:
(源程序)
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjavax.swing.KeyStroke;
importjava.awt.event.KeyEvent;
publicclassNoteBookextendsJFrame
{
staticintFILE_OPEN=0;
staticintFILE_SAVE=1;
staticStringHAD_CHANGE=“*”;
staticStringNOT_CHANGE=“未修改”;
Containercontainer;
JScrollPanescroll;
JLabelstateBar;
JTextAreatxt;
JFileChooserfc=newJFileChooser();
Filefile=null;
JMenuItemopenItem;//打开
JMenuItemnewItem;//新建
JMenuItemsaveItem;//保存
JMenuItemsaveAsItem;//另存为
JMenuItemexitItem;//退出
JMenuItemcutItem;//剪切
JMenuItemcopyItem;//复制
JMenuItempasteItem;//粘帖
JMenuItemsearchItem;//查找
JMenuItemreplaceItem;//替换
JMenuItemselectAllItem;//全选
JMenuItemtimeItem;//时间
JMenuItemfontItem;//字体
JMenuItemcolorItem;//颜色
JMenuItemaboutItem;//关于
publicNoteBook()
{
setTitle(“小包子Editor”);
container=getContentPane();
txt=newJTextArea();
txt.setFont(newFont(“宋体”,Font.PLAIN,16));
txt.setLineWrap(true);
scroll=newJScrollPane(txt,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
container.add(scroll,BorderLayout.CENTER);
JMenuBarjmb=newJMenuBar();
this.CreateFrameMenuBar(jmb);
setJMenuBar(jmb);
//状态栏
stateBar=newJLabel(NoteBook.NOT_CHANGE);
//stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(
BorderFactory.createEtchedBorder());
container.add(stateBar,BorderLayout.SOUTH);
setSize(840,660);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/*创建导航条(设置快捷键和添加事件监听)*/
privatevoidCreateFrameMenuBar(JMenuBarmb)
{
JMenufileMenu=newJMenu(“文件(F)”);
fileMenu.setMnemonic(KeyEvent.VK_F);
newItem=newJMenuItem(“新建(N)..“);
newItem.setMnemonic(KeyEvent.VK_N);
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
ActionEvent.CTRL_MASK));
fileMenu.add(newItem);
openItem=newJMenuItem(“打开(O)..“);
openItem.setMnemonic(KeyEvent.VK_O);
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
ActionEvent.CTRL_MASK));
fileMenu.add(openItem);
saveItem=newJMenuItem(“保存(S)..“);
saveItem.setMnemonic(KeyEvent.VK_S);
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
ActionEvent.CTRL_MASK));
fileMenu.add(saveItem);
saveAsItem=newJMenuItem(“另存为(A)..“);
saveAsItem.setMnemonic(KeyEvent.VK_A);
fileMenu.add(saveAsItem);
exitItem=newJMenuItem(“退出(E)..“);
exitItem.setMnemonic(KeyEvent.VK_E);
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
ActionEvent.CTRL_MASK));
fileMenu.add(exitItem);
mb.add(fileMenu);
JMenueditMenu=newJMenu(“编辑(E)”);
editMenu.setMnemonic(KeyEvent.VK_E);
cutItem=newJMenuItem(“剪切(X)..”);
cutItem.setMnemonic(KeyEvent.VK_X);
cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
ActionEvent.CTRL_MASK));
editMenu.add(cutItem);
copyItem=newJMenuItem(“复制(C)..”);
copyItem.setMnemonic(KeyEvent.VK_C);
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
ActionEvent.CTRL_MASK));
editMenu.add(copyItem);
pasteItem=newJMenuItem(“粘帖(V)..”);
pasteItem.setMnemonic(KeyEvent.VK_V);
pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
ActionEvent.CTRL_MASK));
editMenu.add(pasteItem);
searchItem=newJMenuItem(“查找(F)..”);
searchItem.setMnemonic(KeyEvent.VK_F);
searchItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
ActionEvent.CTRL_MASK));
editMenu.add(searchItem);
replaceItem=newJMenuItem(“替换(R)..”);
replaceItem.setMnemonic(KeyEvent.VK_R);
replaceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
ActionEvent.CTRL_MASK));
editMenu.add(replaceItem);
selectAllItem=newJMenuItem(“全选(A)..”);
selectAllItem.setMnemonic(KeyEvent.VK_A);
selectAllItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
ActionEvent.CTRL_MASK));
editMenu.add(selectAllItem);
timeItem=newJMenuItem(“时间(F5)..”);
timeItem.setMnemonic(KeyEvent.VK_F5);
timeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,
ActionEvent.CTRL_MASK));
editMenu.add(timeItem);
mb.add(editMenu);
JMenuformatMenu=newJMenu(“格式(O)”);
fontItem=newJMenuItem(“字体(F)..”);
formatMenu.add(fontItem);
colorItem=newJMenuItem(“颜色(C)..”);
formatMenu.add(colorItem);
mb.add(formatMenu);
JMenuhelpMenu=newJMenu(“帮助(H)”);
aboutItem=newJMenuItem(“关于我的主题(A)”);
helpMenu.add(aboutItem);
mb.add(helpMenu);
this.HandleListener();
}