课程设计(论文)任务书1.本课程设计的目的(1)使学生巩固和提高Java编程技术(2)培养学生掌握程序设计的基本思路和方法;(3)加强学生研发、调试程序的能力;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。2.课程设计的任务及要求(以制作一个图形编辑系统作为模板)1)任务:设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零等功能。用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。2)创新要求:在基本要求达到后,可进行创新设计,如:如何利用鼠标选取图形,删除。。3)课程设计论文编写要求(1)课程设计任务及要求(2)需求分析(3)设计思路--工作原理、功能规划(4)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。华东交通大学课程设计报告(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7)报告按规定排版打印,要求装订平整,否则要求返工;(8)课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。一、课设任务及要求...........................................................1二、需求分析........................................................................2三、设计思路........................................................................6四、详细设计.......................................................................8五、运行调试与分析讨论................................................15六、设计体会与小结.......................................................20七、参考文献......................................................................21八、源代码.........................................................................23华东交通大学课程设计报告第1页一、课设任务及要求设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零等功能。用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。华东交通大学课程设计报告第2页二、需求分析一、状态定义1,刚启动计算器时的状态:开始计算按键开始键ON2.清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。比如6/0后计算的结果是“0不能做除数”。二、本计算器具有以下功能:用表说明状态操作计算器响应结果状态清零键入数字键,如1显示键入的数字,操作数=键入的数字一个操作数华东交通大学课程设计报告第3页键入减号键相当于键入了-0,但负号不显示,只显示0。一个操作数键入除减号键和数字键以外的键忽略键入的键,仍保留清零状态清零一个操作数键入数字键显示新操作数,新操作数=当前操作数*10+键入的数字一个操作数键入回退键显示新操作数,新操作数=当前操作数除以10取整一个操作数清屏键显示0,但操作数不变一个操作数键入清零(任何状态下,键入清零键都会到清零状态下,以下的状态不再重复)清零清零键入加减乘除中任意键仍显示操作数,跳转到状态“一个操作数和一个两元符号”一个操作数和一个两元符号键入开方键对操作数执行开方运算,显示运算结果运算结果键入=键显示操作数,如果操作数为负数,显示负号和操作数,如“-32”运算结果一个操作数和一个两元符号键入%忽略,不做任何处理一个操作数和一个两元符号键入加减乘除之一用新操作符替换原操作符,如当前是“30+”,接着键入“÷”则变为“30÷”一个操作数和一个两元符号键入=如果操作符为加法,则加0,显示结果;如果操作符为减法,显示为负数;如果操作符为乘法,显示为第一个操作数相乘,如键入12*=,结果为144;如果键入为除法,结果为1。运算结果键入回退键第一个操作数回退一位,操作符保持不变,如:123+,键入回退键后显示12,操作符仍然为+一个操作数和一个两元符号键入开方键执行开方操作,操作符保持不变;例如:当前是“9+”,键入开方键则显示3。运算结果键入数字键、小数点键入的为第二个操作数,例如:当前是“9+”,操作数2元操华东交通大学课程设计报告第4页键入8,显示为8作符操作数运算结果键入加减乘除中任意键结果作为一个操作数,例如:当前是“45”,键入*,显示仍然是45,操作符是*,将执行乘法。一个操作数和一个两元符号键入数字和小数点清除结果,键入的数值作为新的操作数;例如当前是“16开方”后的运算结果,显示是“4”;键入56,显示“56”。一个操作数键入%、=键显示结果。如:当前是“16+开方”后的运算结果,键入=,显示的结果为20。执行16+16开方的运算;当前显示的结果9,或者任意其它值,输入%,运算结果显示“0”。运算结果键入开方键运算结果再执行开方运算运算结果键入回退键结果回退一位,如当前显示“123”,键入回退键,显示“12”。运算结果操作数2元操作符操作数键入加减乘除中任意键先执行前面的计算,显示结果并记下下一个操作符;例如:起始状态键入的是12*6,然后键入+,则显示72一个操作数和一个两元符号键入%例如输入:12+3%,结果0.36;12-3%,结果0.36;12*3%,结果0.36;12÷3%,结果0.36;一律按照乘法计算。运算结果键入=执行运算,得出结果。例如当前是键入了“1+2”,再键入“=”,显示“3”。运算结果键入数字键、回退键、小数点键等待键入第二个操作数完毕操作数2元操作符操作数开方键第二个操作数开方操作数2元操作符运算结果操作符为除号,第二个操作数为0;负数开方不正确的运算错误操作数2元键入数字键、小数点键忽略开方步骤,直接进行操作数与键入数字进行操作符的运算。例如:4+9开方32结果为36;5-9开方65结果为-60。操作数2元操作符操作数键入=计算结果。例如:12+9开方=,先计算9开方=3,运算结果华东交通大学课程设计报告第5页操作符运算结果再12+3=15;12*64开方=,结果96。键入%例如输入:12+9开方,再键入%结果0.36;12-9开方,再键入%结果0.36;12*9开方,再键入%结果0.36;12÷9开方,再键入%结果0.36;一律按照乘法计算。运算结果键入加减乘除中任意键得到运算结果,并记忆操作符;例如12+9开方,键入+得到15+。一个操作数和一个两元符号键入开方、回退键运算结果再次执行开方或者回退操作数2元操作符运算结果错误清零以外的任何键忽略,计算器不做任何响应错误清零键清零清零华东交通大学课程设计报告第6页三、设计思路本应用程序继承自框架类(Frame),此程序使用Frame布局管理器GridBagLayout,将单行文本框加入到0行0列,包含各种按钮的面板Panel3采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Buttonb1=newButton();b1.addActionListener(this);b2.addActionListener(this);事件监听器中的事件处理方法voidactionPerformed(ActionEventevt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。在事件处理。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。华东交通大学课程设计报告第7页四、详细设计一import语句,使用import语句引入java.awt.,java.awt.event.,javax.swing.,Javax.swing.border包中所有的类。Java.awt.event.*引入系统事件类包。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;二实现动作事件监听接口publicclassJiSuanQiextendsJFrameimplementsActionListener注册事件源的动作监听者menuitem1.addActionListener(this);menuitem2.addActionListener(this);menuitem3.addActionListener(this);//注册事件监听器b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b10.addActionListener(this);b11.addActionListener(this);b12.addActionListener(this);b13.addActionListener(this);b14.addActionListener(this);b15.addActionListener(this);b16.addActionListener(this);b17.addActionListener(this);b18.addActionList