Java课程设计报告-计算器

Java课程设计报告-计算器


2024年1月9日发(作者:)

Java课程设计报告-计算器

第一部分 设计的内容要求

1.1 Windows自带计算器版面设计

1.2计算器计算功能算法实现

第二部分 设计思想

2.1根据图形用户界面设计方法设计计算器版面。

①容器类(窗口--Window类 ,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。

②事件处理机制:监听器类WinClose(),actionPerformed()。

2.2计算器计算功能实现,即按钮监听器的实现

自定义变量: x,y为操作数,op为操作符。根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。

第 1 页 共 10 页

第三部分 详细设计

3.1 calculator()函数(计算器版面设计)流程图:开始

新建计算器窗口f

新建菜单

创建菜单项并添加至菜单

新建并设置文本行textp

新建并设置缓存区mcache

新建并设置计算器上button并注册监听器

新建面板p0 p1 p2 p3

将textp添加至p0,并设置p0大小

将”backspace””CE””C”添加至p1,并设置p1大小及布局

将”MC””MR””MS””M+”添加至p2,并设置p2大小及布局

将其他button添加至p3,并设置p3大小及布局

将面板p0 p1 p2 p3添加至f

第 2 页 共 10 页

设置窗口f的属性

为f注册事件监听器Winclose

结束

3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器

计算功能算法)流程图:开始

单击”CE”

Y

N

t(“0”

gth(0)

单击”C”

Y

N

t(“0”

gth(0)

单击”+/-“

Y

N

将textp中数据正负变号

单击”+”

Y

N

将textp中数据赋给x,gth(0)y=0,op=0

单击”-“

Y

N

将textp中数据赋给x,gth(0)y=0,op=1

单击”*”

Y

N

将textp中数据赋给x,gth(0)y=0,op=2

第 3 页 共 10 页

单击”%”

N

Y

将textp中数据乘以0.01

y=0

Y

textp中数据为0

N

Y

将textp中数据取倒数

单击”1/x”

N

给textp赋”除数不能为0”

gth(0);

y=0

Y

Y

N

textp中数据为0

N

在textp中数据后加”0”,并赋值给y

单击”0”

单击”backspace”

Y

textp中数据为0

N

N

str长度为1

N

去掉textp数据的最后一位,并将str的长度减1

Y

将textp赋0,gth(0)

第 4 页 共 10 页

将textp中数据赋给y

单击”1”~”9”

Y

将单击数字插入到textp中数据后,并将textp中数据赋给y

N

将textp赋0,并gth(0);

结束

第四部分 运行效果图

4.1运行初始图:

4.2 计算功能测试图:

-1+23.4

第 5 页 共 10 页

4.2 数学分组功能测试图:

第五部分 心得与体会

5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。

5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。

5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。

第 6 页 共 10 页

第六部分 附录

6.1计算器计算功能算法(按钮"="):

第 7 页 共 10 页

if(rce()==b26) // "="

{

gth(0);

switch(op)

{

case 0 :

if(flag==1)

t(f(x+y));

else

{

gth(0);

(x+y);

fun();

}

break;

case 1 :

if(flag==1)

t(f(x-y));

else

{

gth(0);

(x-y);

fun();

}

break;

case 2 :

if(flag==1)

t(f(x*y));

else

{

gth(0);

(x*y);

fun();

}

break;

case 3 :

if(y==0)

{

t("除数不能为零");

gth(0);

y=0;

}

else

第 8 页 共 10 页

{

if(flag==1)

t(f(x/y));

else

{

gth(0);

(x/y);

fun();

}

}

break;

}

}

6.2 fun()函数(数学分组功能)

public void fun()

{

flag=0;

int t=0;

StringBuffer temp;

String sstr=ng();

if(().indexOf("-")==1)

{

temp=new StringBuffer(ing(1));

t=1;

}

else

temp=new StringBuffer(ing(0));

if(().indexOf(".")==-1)

{

int j=();

for(int i=j;i>3;)

{

(i-3,",");

i=i-3;

}

if(t==0)

t(ng());

else

t('-'+ng());

}

else

第 9 页 共 10 页

}

{

int i=f('.');

StringBuffer s1=new StringBuffer(ing(0,i));

StringBuffer s2=new StringBuffer(ing(i+1));

for(int j=();j>3;)

{

(j-3,",");

j=j-3;

}

if(t==0)

t(ng()+'.'+ng());

else

t('-'+ng()+'.'+ng());

}

第 10 页 共 10 页


发布者:admin,转转请注明出处:http://www.yc00.com/news/1704798447a1372738.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信