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条)