Java课程设计--简单计算器.docx

上传人:夺命阿水 文档编号:900962 上传时间:2024-01-10 格式:DOCX 页数:16 大小:140.66KB
返回 下载 相关 举报
Java课程设计--简单计算器.docx_第1页
第1页 / 共16页
Java课程设计--简单计算器.docx_第2页
第2页 / 共16页
Java课程设计--简单计算器.docx_第3页
第3页 / 共16页
Java课程设计--简单计算器.docx_第4页
第4页 / 共16页
Java课程设计--简单计算器.docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《Java课程设计--简单计算器.docx》由会员分享,可在线阅读,更多相关《Java课程设计--简单计算器.docx(16页珍藏版)》请在课桌文档上搜索。

1、第1章课题概述11. 1课题的目的11.2课题的要求1I .2.1布局要求1II 2.2输入输出的要求1III 2.3报错条件与报错内容1第2章概要设计22. 1整个程序的模块结构及流程22. 2实现可显示窗口界面2第3章程序功能的实现33.1 整个程序的构成模块33.2 构成模块的介绍与分析33.2.1构造按键33.2.2设置按键监听器并完成按键的布局43.2.3事件响应的处理63.2.4运算算法的构造73.3程序的报错处理与分析93.3.1输入格式错误时的报错处理93.3.2当除数为O时的报错处理10第4章调试及发现问题的解决11第5章程序测试及分析12第6章总结14参考文献15第1章课题

2、概述本次java课程设计的题目是仿照Window系统中的“计算器”,利用Java的GUI实现一个简单的计算器。1.1 课题的目的仿照Window系统中的“计算器”,利用JaVa的GUI实现一个简单的计算器,并能实现两个数的简单运算,以及输入错误的报错,使其有一定的实用性1.2 课题的要求1.2.1布局要求(1)需有数字键(0-9)、运算键(+、-、*、/、=)、重置键以及输入输出框一起构成。(2)布局排列有序,输入输出框应在窗口最顶部。(3)需设置使程序停止运作的退出键。L2.2输入输出的要求(1)只能用计算器上的按键进行输入,对键盘输入进行限制。(2)输入的数字与符号要与运算结果一起输出。(

3、3)输出结果要准确无误。(4)若输入信息有误需及时报错。(5)单击“计算器”上的数字按钮(0-9)可以设置参与计算的运算数。(6)单击“计算器”上的运算符按钮(+、-、*、/)可以选择运算符号。(7)单击“计算器”上的“二”按钮显示计算结果。(8)按重置键需清空输入输出框。L2.3报错条件与报错内容(1)当算式中连续存在两个或两个以上的运算符号时(不包含等号),需跳出对话框“输入格式错误!”并重置输入框。(2)当除数为。时,需跳出对话框除数不能为0!并重置输入框。(3)当进行三个或三个以上数字同时运算的情况下,需跳出对话框输入格式错误!并重置输入框。第2章概要设计2.1 整个程序的模块结构及流

4、程根据课题要求,整个程序按分为数字键及加减乘除按键和显示屏。为更好地提供程序的人机交互能力,程序还应提供退出程序、重置等功能。照吊川利答案并场N式起饰”1分区”的两敏相以/分M算我以-分MW式2.2 实现可显示窗口界面由于用户需要在程序一次运行后能够获取按键(键盘按键除外)以及所的答案的信息,也就是说,这个运行结果要始终保留给用户,所以可以通过一个可视化的窗口把信息呈现给用户。这个可视化的窗口要求可以显示给用户,它应该相应的信息输出。第3章程序功能的实现3.1整个程序的构成模块本程序只存在一个类,但由四个模块构成分别为:构造按键、设置按键监听器并完成按键的布局、事件响应的处理的显示以及运算算法

5、的构造。图3-1整个程序各构成模块3.2构成模块的介绍与分析3.2.1构造按键booleanP=true;JTextFielddisplay=newJTetField(20);JButtonbutton_num=newJButtonll;3Buttonbutton_bol=newJBUttOn5;3Buttonbutton_fun=newJButtonl;for(inti=0;i10;i+)button_numi=newJButton(,+i);button_num10=newJButton(.);newJButton(,);newJButton(,);newJButton(H*);newJB

6、uttonC/);newJButton(=);newJBUttOn(“重置”);button_bol0=button_boll=button_bol2=button_bol3=button_bol4=button_fun0=本程序在构造按键的过程中先将按键分为三个种类,分别为数字键、运算符号键以及其他键,并设置了输入输出框的大小以及不同种类的按键的个数。紧接着通过一个for循环给数字键赋予相应的显示。然后设置符号键与其它键的按键表示O3.2.2设置按键监听器并完成按键的布局calculater()inti=0;for(i=0;ill;i+)button_numi.addActionListen

7、er(this);for(i=0;i5;i+)button_boli.addActionListener(this);button_fun0.addActionListener(this);用两个for循环完成了对buttonnumi以及buttonboli的监听器的设置(也就是对数字键和符号键的监听器的设置)。因button_funi只存在一个键(也就是重置键)所以直接对其进行监听,不需要用到for循环。JPanelpl=newJPanel();JPanelp2=newJPanel();构造Pl与p2两个容器,用以存放案件。FlowLayoutflow=newFlowLayout();flo

8、wSetAlignment(FIowLayout.LEFT);pl.setLayout(flow);pl.add(display);pl.add(button-fun0);将出入输出框(display)以及重置键(buttonfunO)存放入容器pl,pl的布局管理器类型为FIoWLayoUt型,右对齐,其布局结构如下:重置图3-2容器Pl的布局显示p2.SetLayout(newGridLayoUt(4,4);for(i=l;i4;i+)p2.add(button_numi);p2.add(button_bol0);for(i=4;i7;i+)p2.add(button_numi);p2.a

9、dd(button-bol1);for(i=7;i10;i+)p2.add(button_numi);p2.add(button_bol2);p2.add(button_num10);p2.add(button_num0);p2.add(button_bol4);p2.add(button_bol3);将数字键(buttonnumi)与运算符号键(button.boli)存放入容器p2,p2的布局管理器类型为GriCILayOUt型,4行*4歹J,其布局结构如下:123456-7890=/图2-3容器p2的布局显示add(pl,BorderLayout.ORH);add(p2,BorderLa

10、yout.CENTER);窗体布局使用BorderLayout布局,按图所示分别使pl在NORTH位置,p2在CENTER位置。重置123456-789禽0=/图2-3窗体布局的布局显示display.setEditable(false);SetTitIe(“计算器”);setBounds(100,100,350,220);SetVisible(true);setResizable(false);SetDefaultcioseOperation(JFname.EXIT_ON_CLOSE);对计算器的其他布局进行构造,具体为:(1)使输入输出框中的数字输入只能按键输入,使键盘输入无效化。(2)程

11、序的执行窗口上显示“计算器”。(3)确定执行窗口的大小以及在屏幕上出现的位置。(4)使执行窗口可见。(5)使执行窗口大小不可改变。(6)设置是结束程序运行的按键。图3-4简单计算器布局完成图3.2.3事件响应的处理publicvoidactIonPerformed(ActionEvente)Stringstr=;for(inti=0;ill;i+)if(e.getSource()=button_numi)str=display.getText()+button_numi.getActionCommand();display.setTet(str);for(inti=0;i4;i+)if(e.g

12、etSource()=button_boli)str=display.getText()+button_boli.getActionCommand();display.setTet(str);在首先在构造方法中为所有的JBUttOrI对象添加监听器,在actiOnPerformed(ActionEventC)方法中,首先有一个JBUttOn类型的变量用来获取事件源的引用,然后程序根据事件源的不同做出不同的响应。if(e.getSource()=button_bol4)getValue();当事件源为“二”按钮时,除了在display后添加字符“二”,还要调用自定义的方法getValue()得到

13、表达出曲值并将此值添加在display之后。elseif(e.getSource()=button_fun0)display.setText(,);当事件源为“重置”按钮时,Iable中的字符清空。3.2.4运算算法的构造publicvoidgetValue()Stringtext=display.getText();doubleresult=0;Strings=+,-,*7);将四个运算符号作为一个数组。Stringtmp=;intcount=0;for(inti=0;il)DOptionPane.shoiMessageDiaLog(thisi”输入格式错误!”);display.setTe

14、t();找出输入的算式中的运算符号并将它赋值于tmp0if(tmp.equals(,+)tmp=M:H;tet=tet,replace(,+j:elseif(tmp.equals(-)trnp=”;text=text.replace(*-,j,);)elseif(tmp.equals(,*)tmp=;tet=text.replace(*j);)elseif(tmp.equals()tmp=;tet=text.replace(/j,因CCliPSe中无法用“+”、“钎、“/”作为分割字符的标志故分别将其用“:”、“”、“,”、”取代。Stringstr=tet.split(tmp);以tmp为标

15、志将算式进行分割,分割出的两数分别为str0(前者)和str1(后者)。switch(tmp)+case:result=Double.prseDoubte(str0)+Double.prseDoubte(strl);break;case:result=Double.prseDoubte(str0)-Double.parseDoubLe(strl);break;case,:result=Double.prseDoubLe(str0)*Double.prseDoubte(strl);break;case;:if(Double.parseDoubLe(strl)=0)JOptionPane.ShoM

16、MessageDiaLog(this”除数不能为0!”);display.setText();Vesult=Double.parseDoubLe(str0)/Double.parseDoubLe(stvl);break;判断算式中的符号,并根据符号对分割开来的两数进行相对应的运算。Stringst=display.getText()+=,+result;display.setTet(st);得到算式的答案并与算式一起输出,完成getValue()方法。3.3程序的报错处理与分析3.3.1输入格式错误时的报错处理Strings=+,-,*,7);Stringintcount=0;for(inti

17、=0;il)DOptionPane.shoMessageDiaLog(this,”输入格式错误!”);display.setTet(”);)若输入的算式中存在两个或两个以上的符号时,则会跳出对话框显示“输入格式错误!”并清空输入输出框。图3-5进行两个数以上计算时的报错情况图3-6连续输入两个运算符号时的报错情况3.3.2当除数为0时的报错处理一CCIVIVcase;:if(Double.prseDoubte(str1)=0)JOptionPane.ShoMMessageDiaLog(this”除数不能为0!);display,setText(,);return;result=Double.p

18、rseDoubLe(str0)Double.prseDoubte(strl);break;若输入的算式中除数为0,则会跳出对话框显示“除数不能为0”并清空输入输出框。第4章调试及发现问题的解决虽然在程序的编写过程中遇到了很多问题,但是通过上网查阅相关资料,与其它同学讨论,询问指导老师等方式,最终都一一解决了,程序实现及调试过程中遇到的主要问题及解决方法如下。1、如何禁止用键盘对计算器的输入输出框进行修改解决方法:在对计算器的进行布局结构时加入语句:display.setEditable(false);display.SetEditable(booleanb);”语句是判断是否可对display

19、也就是输入输出框进行编辑的语句,若为display.SetEditable(False);”则意为不可对输入输出框进行编辑。2、当算式中存在两个相同得符号时,如何进行错误的判断解决方法:对于加法、减法和乘法运算,先确定两个运算对象及其运算结果的位数,取这三个位数的最大值为Width,然后以Width+4为输出宽度(因为运算数左边可能还有运算符,大整数串和运算符之间还应留少许空白)分三行输出两个运算数及其运算结果。输出每个大整数时,还应按为零、为正数、为负数这三种情况具体讨论。第5章程序测试及分析运行程序,首先跳出执行窗口栏,其中有F-9十个数字键、“+”、“二”五个运算符号键,“重置,键以及输

20、入输出框。.计算器重置123456-789贪O=I图5-1执行窗口栏当随意输入一个数字和符号时,在输入输出框上便会显示这个数字,以4+3为例:计算器_I汉J4+3重置123456-789O=/图5-2输入数字与符号当输入等号时,所的答案会与之前输入的等式一起输出,所得的答案为浮点数。.计算器4+3=70重置123456-789会0=/图5-3输入数字与符号本计算器和可计算小数与小数之间的简单运算。国计算器9邑J计算器2.6+6.5fS2.6+6.5=9.1重置123123456-456-78978910三/0三I图5-3小数与小数之间的运算当进行除法运算时,若两数不能除尽时本计算器的运算结果如

21、下:国计算器I汉J6/9=0.6666666666666666重置123456-789食0=/图5-4两除数无法除尽的情况显示第6章总结通过两周的课程设计,终于独立写出了超过一百行代码的程序,还学会如何gui知识编写执行窗口栏。更重要的是通过这次实践,加深了我对java学科相关知识的理解。总结起来,主要有以下几点体会:1、不仅要用严谨细致的态度去编写程序,而且要有足够的耐心去调试程序;测试程序时,应重点关注边界条件和特殊细节。绝大多数程序不是只要编写完就能运行,所以当程序编写完一定要进行细地测试。如果发现测试结果不对或不够完美,则需要沉下心来,仔细检查程序中的每一个环节和漏洞。比如在简单计算器

22、的调试过程中,我在编写程序的过程中,刚开始就并没有考虑到除数或被除数为零、有多个运算符号、等多种情况,这些问题都是程序的测试阶段才逐步发现并逐步解决的。2、养成良好的学习态度和学习习惯,培养正确的学习方法。编写复杂的计算机程序必须学会独立思考,不懂的地方可以上网或到图书馆查阅资料,遇到实在无法理解或解决的问题时,要主动向老师请教。对于任何一个程序功能,不能仅仅满足于输入正确的数据时能得到正确的运行结果。而当输入错误数据时,还要能及时检查出数据的错误,并允许改正数据,亦即保证程序的健壮性。这次java课程设计,使我在课题分析、布局管理、相关算法的设计,以及编程实践等多方面都得到了锻炼。主要是依靠自身的努力,顺利地完成了本次课程设计任务。感谢在此过程中帮助过我的指导老师和各位同学!参考文献1闫煜鸿.四则运算计算器程序设计(Java-GUI)北京林业大学信息学院2Java大学实用教程.耿祥义,张跃平,编著.2版.北京:电子工业出版社,2008.

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号