多寄存器算术加左移位功能实验计算机设计Word文档格式.docx
- 文档编号:22505374
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:24
- 大小:87.70KB
多寄存器算术加左移位功能实验计算机设计Word文档格式.docx
《多寄存器算术加左移位功能实验计算机设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《多寄存器算术加左移位功能实验计算机设计Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
importjava.awt.event.*;
publicclassjisuanqiextendsJFrame
{
privateJPanelp1;
privateJButtonkeyButton[]=newJButton[16],signButton,clearButton,deleteButton;
privateJTextFieldoutputField;
privateContainercontentPane;
privatebooleanfirstInput=true;
privateCalculate_Modelmodel=newCalculate_Model();
@SuppressWarnings("
deprecation"
)
publicjisuanqi(){
p1=newJPanel();
keyButton[0]=newJButton("
1"
);
//创建各个按钮
keyButton[1]=newJButton("
2"
keyButton[2]=newJButton("
3"
keyButton[3]=newJButton("
/"
keyButton[4]=newJButton("
4"
keyButton[5]=newJButton("
5"
keyButton[6]=newJButton("
6"
keyButton[7]=newJButton("
*"
keyButton[8]=newJButton("
7"
keyButton[9]=newJButton("
8"
keyButton[10]=newJButton("
9"
keyButton[11]=newJButton("
-"
keyButton[12]=newJButton("
0"
keyButton[13]=newJButton("
."
keyButton[14]=newJButton("
="
keyButton[15]=newJButton("
+"
clearButton=newJButton("
c"
signButton=newJButton("
+/-"
deleteButton=newJButton("
←"
outputField=newJTextField();
//它允许编辑单行文本
outputField.setText("
outputField.setEditable(false);
//指示此TextComponent是否应该为可编辑的
contentPane=this.getContentPane();
//返回此窗体的contentPane对象;
this.setSize(250,250);
p1.setLayout(newjava.awt.GridLayout(4,5));
//创建具有4行5列的布局
for(inti=0;
i<
keyButton.length;
i++)//在容器中画上按钮
if(i==4)p1.add(deleteButton);
if(i==8)p1.add(clearButton);
if(i==12)p1.add(signButton);
keyButton[i].setFont(newjava.awt.Font("
Dialog"
3,15));
//设置字体Dialog字体名,样式,大小
p1.add(keyButton[i]);
}
contentPane.add(outputField,java.awt.BorderLayout.NORTH);
contentPane.add(p1,java.awt.BorderLayout.CENTER);
this.show();
}//用于显示界面
publicvoidregistEvent()//注册各个事件
this.addWindowListener(newWindowAdapter()//窗口事件,窗口关闭里程序关闭
publicvoidwindowClosing(WindowEventwe)
System.exit(0);
});
i++)
keyButton[i].addActionListener(newkeyButtonHandler());
//为每一个按钮添加监听器
signButton.addActionListener(newActionListener()
publicvoidactionPerformed(ActionEventae)
outputField.setText(String.valueOf(model.toSign(Double.parseDouble(outputField.getText()))));
deleteButton.addActionListener(newActionListener()
outputField.setText(model.backSpace(outputField.getText()));
if(outputField.getText().equals("
))
firstInput=true;
clearButton.addActionListener(newActionListener()
model.reset();
classkeyButtonHandlerimplementsActionListener
charactionCommand=ae.getActionCommand().charAt(0);
switch(actionCommand){
case'
1'
:
2'
3'
4'
5'
6'
7'
8'
9'
0'
.'
if(firstInput)//是否为首次输入
outputField.setText(String.valueOf(actionCommand));
firstInput=false;
else
outputField.setText(outputField.getText()+actionCommand);
break;
+'
-'
*'
/'
if(firstInput)
model.setOperate(actionCommand);
model.setOperateNumber(Double.parseDouble(outputField.getText()));
model.calculating();
outputField.setText(String.valueOf(model.getResult()));
='
publicstaticvoidmain(Stringargs[])
newjisuanqi().registEvent();
/******************************************
*****计算的模块****************************/
classCalculate_Model
privatedoubleresult;
privatedoubleoperateNumber;
privatecharoperate;
publicCalculate_Model()//构造方法进行初始化
result=0;
//结果
operateNumber=0;
//操作数
operate='
'
;
//操作符
publicvoidsetResult(doublen)//设置结果,成员变量result是private的
result=n;
publicvoidsetOperate(charo)//设置操作符
operate=o;
publicvoidsetOperateNumber(doublen)//设置操作数
operateNumber=n;
publicdoublegetResult()//获取结果
returnresult;
}
publicvoidcalculating()//计算过程
switch(operate)
result=operateNumber;
//分别对操作判断后进行相应操作
result+=operateNumber;
result-=operateNumber;
result*=operateNumber;
result/=operateNumber;
publicvoidreset()//重设方法
publicdoubletoSign(doublen)//正负转化
return0-(n-0);
publicStringbackSpace(Stringn)//对backSpace设置
StringreResult="
try
reResult=n.substring(0,n.length()-1);
//从第一个开始取前n-1个
Double.parseDouble(reResult);
//将其转化为Double型
catch(NumberFormatExceptione)
reResult="
returnreResult;
3调试分析
实现了设计的所有要求,选取部分运行示意图。
1.调试显示计算器GUI界面:
图1.运行结果
2.加法运算:
4+5=9;
图2.加法结果
3.减法预算6-2=4;
图3.减法运算
4.乘法运算:
5*3=15;
图4.乘法运算
5.除法运算:
24/4=6;
图5.除法运算
结果分析:
程序正常的响应按钮事件,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就会对结果进行溢出提示,我并未设置异常类来相应异常事件,但是程序在发生异常时会提示Infinity字符。
4课设总结
1.通过用java编写计数器课程设计,我不仅复习了以前学习过的知识,更深刻的懂得了学好学会了并不是代表就能够在真正的实践中运用的流畅,这次实践给了我们一个既动手又动脑,独立实践的机会但其中又包含着共同合作,这次又将理论和实践相结合,提高我们的分析、解决实际问题的能力,并且让我认识到了要从要从实际、实践出发提高自己的学术能力;
通过这次课程设计使我懂得了理论与实际相结合很重要,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
2.善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高。
3.经过这么多天的学习,我深刻认识到自己的不足和缺点,但是我也了解到自己的长处和优点,不管怎么样,通过这次的实践练习,我懂得了怎么和他人合作,要取长补短,相互合作。
5参考文献
[1]SharonZakhour,ScottHommel著.Java语言导学:
英文版.人民邮电出版社,2008
[2]谭浩强著.C++面向对象程序设计.北京:
清华大学出版社,2006
[3]李爱华,程磊著.向对象程序设计:
C++语言.北京:
清华大学出版社,2010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 寄存器 算术 移位 功能 实验 计算机 设计