JAVA课程设计 计算器 文本编辑器.docx

上传人:b****6 文档编号:7058656 上传时间:2023-01-16 格式:DOCX 页数:60 大小:237.85KB
下载 相关 举报
JAVA课程设计 计算器 文本编辑器.docx_第1页
第1页 / 共60页
JAVA课程设计 计算器 文本编辑器.docx_第2页
第2页 / 共60页
JAVA课程设计 计算器 文本编辑器.docx_第3页
第3页 / 共60页
JAVA课程设计 计算器 文本编辑器.docx_第4页
第4页 / 共60页
JAVA课程设计 计算器 文本编辑器.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

JAVA课程设计 计算器 文本编辑器.docx

《JAVA课程设计 计算器 文本编辑器.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计 计算器 文本编辑器.docx(60页珍藏版)》请在冰豆网上搜索。

JAVA课程设计 计算器 文本编辑器.docx

JAVA课程设计计算器文本编辑器

课程设计

 

设计题目:

JAVA语言编写计算器和文档编辑器

学生姓名:

李伟

学号:

20095378

专业班级:

电子商务09-1班

指导教师:

聂会星程八一惠刚靳鹏方芳

2010年12月12日

 

计算器制作

一、实验目的

1、为了加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习Java高级应用及今后从事专业工作打下基础。

2、在对Java程序的调试过程中,提高分析程序中出现的错误和排除这些错误的能力。

通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。

3、熟悉Java开发工具,运行java应用程序和小程序;掌握Java程序的编辑、编译、运行。

掌握各种数据类型及其使用方法;掌握表达式的组成;理解定义变量的作用,掌握定义变量的方法;掌握各种运算符的使用及其优先级控制。

学习结构化程序设计的分支结构及分支语句的使用;学习使用结构化程序设计的循环结构及循环语句的使用;掌握数组的使用方法,着重掌握二维数组,编写使用二维数组的程序;掌握常用字符串类、方法。

4、学会类的定义和对象的使用;封装、继承、多态的应用;如何创建包,编译、运行包中的类;方法的覆盖和重载;抽象类、接口、内部类的使用。

掌握异常处理的使用方法。

着重掌握基本的GUI组件;掌握容器布局管理;掌握事件处理机制。

二、实验要求

计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。

允许正负数间的运算。

三、实验内容

通过创建一个框架并在框架上加上适当的按钮以及文本框并通过对按钮设置监听器以达到进行运算的目的,由于对java知识掌握的不多还需要通过参阅书本来完成,我们小组有三个人,我负责做算法部分,其他两人负责界面布局以及监听器的设置。

在实验过程中,我们共同合作每个人都参加了所有程序的编写过程。

四、实验步骤

1、首先要声明包。

主要用到了以下几个包:

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

导入了包之后就可以运用包中的类了。

2、创建框架。

以下用BorderFrame类构造frame函数,然后设置框架的格式为最小化、最大化、关闭。

然后show的作用是显示该框架。

BorderFrameframe=newBorderFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.show();

3、编写BorderFrame类,定义各个变量。

classBorderFrameextendsJFrameimplementsActionListener

这里要用到ActionListener接口,是下面监听器所需要的。

定义变量例如下面代码:

privateJButtonnum0,dao,gen,ss,bac;

publicdoubled,d11;

publicdoublejieguo;

publicbooleanend=true;

而在实际编写过程中我是用到一个定义一个。

4、定义各组件,在框架上加入各种组件。

接下来是定义按钮num0=newJButton("0");括号里的即为按钮显示的信息。

依次再创建23个按钮。

刚开始在BorderFrame()方法里我使用JButtonnum0=newJButton("0")来定义按钮,后来发现在actionPerformed方法里不能使用这些按钮,所以要在BorderFrame这个类中定义,

JButtonnum0;这样就能被BorderFrame类里的所有方法采用而不会出现未定义的错误。

在布局的时候为了防止颜色单调,将按钮背景颜色设置为白色,采用setBackground()方法,具体代码如下:

num0.setBackground(Color.white);

这样依次设置12个按钮,其他按钮仍为默认颜色。

接着创建buttons面板方法如下:

buttons=newJPanel();

接着把所有的按钮加到buttons面板程序代码如下:

buttons.add(num0);

然后依次把所有按钮加入即可。

在布局的时候采用了setLayout方式布局具体代码如下:

buttons.setLayout(newGridLayout(6,4,5,5));

后面的四个数分别是6行4列,间隙的高5宽5。

这样之后布局如下

接着编写文本框并将文本域设置为不可编辑,代码如下

resultText=newJTextField("",25);

resultText.setEnabled(false);

然后将文本域加入到text面板中具体代码如下:

JPaneltext=newJPanel();

text.add(resultText);

之后再将面板加入到内容窗格布局中具体代码如下:

ContainercontentPane=getContentPane();

contentPane.add(text,BorderLayout.NORTH);

contentPane.add(buttons,BorderLayout.CENTER);

在计算器制作过程中为了使界面更加人性化,并为使用者提供一些制作信息我们小组特意加入了菜单栏。

首先创建菜单栏并将菜单栏加入到框架中具体代码如下:

JMenuBarmainMenu=newJMenuBar();

setJMenuBar(mainMenu);

接着创建三个主菜单名字分别为文件、颜色、作者具体代码如下:

JMenuactMenu=newJMenu("文件");

JMenusetColorMenu=newJMenu("颜色");

JMenuaboutMenu=newJMenu("作者");

mainMenu.add(actMenu);

mainMenu.add(setColorMenu);

mainMenu.add(aboutMenu);

接下来分别向各个主菜单中加入子菜单具体代码如下

tuichu=newJMenuItem("退出");

actMenu.add(tuichu);

banquan=newJMenuItem("版权");

aboutMenu.add(banquan);

chanpin=newJMenuItem("产品信息");

aboutMenu.add(chanpin);

hongse=newJMenuItem("红色");

setColorMenu.add(hongse);

lanse=newJMenuItem("蓝色");

setColorMenu.add(lanse);

huise=newJMenuItem("灰色");

setColorMenu.add(huise);

菜单显示如下图所示:

5、创建监听器

每个按钮都是事件源,我们对按钮设置监听器后,只要该按钮发生一个事件(ActionEvent),listenter对象就是接到通知。

我们设置监听器的方法如下所示:

num9.addActionListener(this);

num8.addActionListener(this);

num7.addActionListener(this);

num6.addActionListener(this);

num5.addActionListener(this);

num4.addActionListener(this);

num3.addActionListener(this);

num2.addActionListener(this);

num1.addActionListener(this);

num0.addActionListener(this);

plu.addActionListener(this);

min.addActionListener(this);

mul.addActionListener(this);

div.addActionListener(this);

equ.addActionListener(this);

cle.addActionListener(this);

jiecheng.addActionListener(this);

youk.addActionListener(this);

dian.addActionListener(this);

zf.addActionListener(this);

dao.addActionListener(this);

gen.addActionListener(this);

ss.addActionListener(this);

bac.addActionListener(this);

在这里,所有的按钮共享一个监听器对象。

所以在actionPerformed方法中,必须判断那个按钮被按下,即事件源,可以通过EventObject类的getSource方法来判断。

接着对菜单也设置了监听器如下:

banquan.addActionListener(this);

zhizuodi.addActionListener(this);

hongse.addActionListener(this);

lanse.addActionListener(this);

huise.addActionListener(this);

tuichu.addActionListener(this);

chanpin.addActionListener(this);

这样所有的监听器就制作好了。

6、编写actionPerformed方法

在actionPerformed方法里包括了所有按钮以及子菜单的点击事件,包括了所有的算法。

首先设置点banqun菜单后,将会弹出一个showConfirmDialo型对话框,里面的按钮是

DEFAULT_OPTION类型,标题是“版权雷神牌计算器”,对话框里的内容是"刘晓雷

20095406;李伟20095378;周洪芬20095379"具体代码如下:

if(source==banquan)

{

intselection=JOptionPane.showConfirmDialog(

BorderFrame.this,

"刘晓雷20095406;李伟20095378;周洪芬20095379","版权雷神牌计算器",

JOptionPane.DEFAULT_OPTION);

}

接着编写chanpin菜单即作者信息的事件,当点击作者信息时会弹出如下对话框:

当点击确定后会弹出另一个对话框如图:

代码如下

if(source==chanpin)

{

intselection=JOptionPane.showConfirmDialog(

BorderFrame.this,

"雷神出品必为精品","雷神牌计算器",

JOptionPane.DEFAULT_OPTION);

}

if(source==chanpin)

{

intselection=JOptionPane.showConfirmDialog(

BorderFrame.this,

"谢谢使用","雷神牌计算器",

JOptionPane.DEFAULT_OPTION);

}

可以看出就是将source判断两次是否等于chanpin,这样当第一个对话框执行完之后就会弹出第二个对话框以达到效果。

接着设置tuichu菜单的事件,当点击退出时会出现如下对话框:

如果点击了确定就会退出,点击了撤销就会回到原界面代码如下:

if(source==tuichu)

{intselection=JOptionPane.showConfirmDialog(

BorderFrame.this,

"确定退出么?

","退出?

",

JOptionPane.OK_CANCEL_OPTION,

JOptionPane.WARNING_MESSAGE);

if(selection==JOptionPane.OK_OPTION)

{

System.exit(5);

}

}

System.exit(5)语句就是退出框架的意思,括号里的可以为任意值,消息类型为WARNING_

MESSAGE可以看出与上面两个对话框不同的是对话框里有了警告的提示。

设置完之后设置颜色菜单的事件如下:

if(source==lanse)

{buttons.setBackground(Color.blue);

}

if(source==hongse)

{buttons.setBackground(Color.red);

}

if(source==huise)

{buttons.setBackground(Color.lightGray);

}

setBackground就是设置背景颜色的函数,这样就达到了改变背景颜色的目的。

接下来就进入计算阶段的编写了,

首先要达到点击数字按钮,文本框里会显示数字如下所示:

if(source==num0)

{t=resultText.getText()+"0";resultText.setText(t);}

if(source==num1)

{t=resultText.getText()+"1";resultText.setText(t);}

if(source==num2)

{t=resultText.getText()+"2";resultText.setText(t);}

if(source==num3)

{t=resultText.getText()+"3";resultText.setText(t);}

if(source==num4)

{t=resultText.getText()+"4";resultText.setText(t);}

if(source==num5)

{t=resultText.getText()+"5";resultText.setText(t);}

if(source==num6)

{t=resultText.getText()+"6";resultText.setText(t);}

if(source==num7)

{t=resultText.getText()+"7";resultText.setText(t);}

if(source==num8)

{t=resultText.getText()+"8";resultText.setText(t);}

if(source==num9)

{t=resultText.getText()+"9";resultText.setText(t);}

resultText.getText()就是获取文本框中的字符串,resultText.setText(t)就是使文本框中显示字符串t;这样就可以在文本框中输入数字了如下图所示:

7、我的算法。

接下来进行算法的编写,算法编写主要是我编写的,这些算法不是一下子就能想出来的,而是一步步不断完善而成的,我相信如果有时间我会更加完善我的算法的。

加法的代码如下:

if(source==plu)

{if(z!

=1)

{c5=1;

c1=Double.parseDouble(resultText.getText().trim());

end=false;z=0;}

if(z==1)

{c5=1;c1=jieguo;

z=0;}}

这里z值就是判断变量用来判断=是否执行过的,end就是用来清空文本框的,c5就是控制变量用来判断是否执行过+运算。

=的代码如下:

if(source==equ)

{if(c10!

=0)

{

jieguo=1;for(inti=1;i<=c9;i++)

jieguo=i*jieguo;

t=(""+jieguo);c10=0;

}

if(c5!

=0.0)

{d=Double.parseDouble(resultText.getText().trim());

jieguo=c1+d;

t=(""+jieguo);

c5=0;}

if(c6!

=0.0)

{d=Double.parseDouble(resultText.getText().trim());

jieguo=c2-d;

t=(""+jieguo);

c6=0;}

if(c7!

=0.0)

{d=Double.parseDouble(resultText.getText().trim());

jieguo=c3*d;

t=(""+jieguo);

c7=0;}

if(c8!

=0.0)

{d=Double.parseDouble(resultText.getText().trim());

jieguo=c4/d;

t=(""+jieguo);

c8=0;}

if(c12!

=0.0)

{d=Double.parseDouble(resultText.getText().trim());

jieguo=1;

for(inti=1;i<=d;i++)

jieguo=c11*jieguo;

t=(""+jieguo);

c12=0;}

end=false;

resultText.setText(t);

z=1;

}

其中从c5到c8还有c10都是控制变量用来判断带年纪过哪一个运算符。

用一个加法来讲解我的流程,点击顺序9+72=+3=

首先点击9这个按钮,接着文本框中就会显示9,点击+后因为z初值为零,所以就获取了文本框中的数值c1=9,然后控制变量c5=1,end=false。

文本框中仍然显示着9。

接着进行下一个循环,当点击按钮时下一个循环才会进行也就是说看不到清零过程,点7按钮,接着有一个end=true语句,然后点击2文本框中显示72,然后点击=号,此时执行if语句中的c5!

=0,d=72,结果=81,end=false,z=0,显示81,当点击+时,c1=jieguo即81,end=false,点击3继续清零,文本框中显示3,点=,结果就是84。

还有一些其他的运算都很简单,详见源代码。

这样就完成了计算器的编写。

五、实验结果

输入5.2执行四舍五入运算

 

求9+72+3结果

点击9+72=+3=

 

点击9,点击完+号后:

接着点击7

点击2

 

点击=

接着点击+3

点击加号的时候会出现清零过程,接着点击=

这样就完成了运算结果,

点击四舍五入按钮后如下:

 

 

文本编辑器

一、实验目的:

综合掌握Java编程技巧及Java开发环境。

二、实验要求:

可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。

其他功能参照windows的文本编辑器。

三、实验内容

通过创建一个框架并在框架上加上适当的菜单栏以及文本域并通过对菜单设置监听器以达到进行字体大小颜色的控制,由于对java知识掌握的不多还需要通过参阅书本来完成,我们小组有三个人,我负责做算法部分,其他两人负责界面布局以及监听器的设置。

在实验过程中,我们共同合作每个人都参加了所有程序的编写过程。

四、实验步骤

1、声明包

importjava.awt.font.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

其中java.io是提供输入流输出流控制。

2、创建框架。

以下用ListFrame类构造frame函数,然后设置框架的格式为最小化、最大化、关闭。

然后show的作用是显示该框架。

ListFrameframe=newListFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.show();

3、编写ListFrame类,定义各个变量。

classListFrameextendsJFrameimplementsActionListener

这里要用到ActionListener接口,是下面监听器所需要的。

定义并初始化如下:

publicStringdax[]={"5","10","15","20","25","30","35","40","..."};

定义列表框并初始化:

publicJComboBoxbox=newJComboBox(dax);

publicstaticfinalintWIDTH=500;

publicstaticfinalintHEIGHT=450;

publicstaticfinalStringcheckedLabel="Youchoosed:

\nIndex,Course\n";

publicStringt=null;

publicJTextAreamyTextArea;

privateJListcourseList;

privateJPanellistPanel;

Dialogtanchu=newDialog(this);

publicButtonque=newButton("确定");

publicJCheckBoxMenuItemtoolItem,statusItem;

JLabeltishi=newJLabel("字体大小:

");

publicJMenuItemjianqie,niantie,fuzhi,banquan,hongse,lanse,huise,heise,tuichu,chengse,luse,shezhi,xinxi;

publicJMenuItemzhizuodi,songti,heiti,kaiti,lishu,youyuan,dakai,baocun,lingcun,item11,item12,item13;

FileDialogo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1