JAVA课程设计报告计算器_第1页
JAVA课程设计报告计算器_第2页
JAVA课程设计报告计算器_第3页
JAVA课程设计报告计算器_第4页
JAVA课程设计报告计算器_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..《JAVA程序设计》课程设计任务书一、课程设计的目的1、培养学生面向对象编程的思想;2、使学生熟悉JAVA语言的使用;3、培养学生JAVA编程的思想和方法;4、使学生掌握JAVA编程调试的基本技能;5、培养学生分析、解决问题的能力。二、课程设计内容与要求1、内容一:1简单计算器[题目描述]使用Java的GUI图形用户界面编程设计并编写一个计算器程序,用户可以通过鼠标或者键盘操作输入参加运算的数值和运算符,要求能进行加、减、乘、除等混合运算。[基本要求]实现加、减、乘、除的双目单类别的基础运算;[实现提示]GUI编程Component的事件响应。参考界面《JAVA程序设计》课程设计一、系统中所使用的数据对象及说明1、Calculator类属性属性名称类型描述JmbJMenuBar菜单栏Jm1jm2jm3JMenu菜单JmiJMenuItem菜单项fJFrame实例化对象Panel11JPanel输入面板CommandsPanelJPanel运算符面板calckeysPanelJPanel数字面板showlineJTextField数据输出框backspaceutton退格键CEutton清空Cutton删除1/Xutton取余daoutton取倒数addutton数字相加jianutton数字相减chengutton数字相乘quzhengutton数字相除dianutton点符号dengutton等于号zeroutton一oneutton二twoutton三threeutton四fourutton五fiveutton六sixutton七sevenutton八eightutton九num1String保存第一个运算数字operatorString保存运算符号方法方法名称功能Calculator计算器布局Add添加组件、面板addMouseListener添加鼠标监听事件setJMenuBar设置菜单系统功能结构及相关算法描述1、系统功能结构计算器计算器按键文本框菜单栏标题栏按键文本框菜单栏标题栏1-9、BackspaceCE、C+、-、*、/%、^、.、1/x=1-9、BackspaceCE、C+、-、*、/%、^、.、1/x=文本框帮助查看编辑标题:计算器关于计算器帮助主题数学分组科学型标准型关于计算器帮助主题数学分组科学型标准型粘贴复制系统功能结构图相关算法流程图〔1加减法流程NY将S添加到show文本框执行加、减法运算得出SMun1是否存在NY将S添加到show文本框执行加、减法运算得出SMun1是否存在乘除法流程NMun1是否存在NMun1是否存在YY执行乘、除法运算得出S执行乘、除法运算得出S将S添加到show文本框将S添加到show文本框乘方取余法流程Mun1是否存在NMun1是否存在NYY执行乘方、取余法运算得出S执行乘方、取余法运算得出S将S添加到show文本框将S添加到show文本框三、系统运行结果〔截图1、主菜单四、课程设计总结通过此次课程设计,使我更加扎实的掌握了有关JAVA图形界面布局等方面的知识,虽然在设计过程中也遇到了很多问题,但经过一次又一次的思考,一遍又一遍检查和反复修改终于找到了原因所在,也暴露了前期我在这方面的知识欠缺。课程设计是一种实践活动,不但可以提升专业知识和专业能力,也培养了我们独立思考,动手操作的能力,使我对抽象的知识有了具体的认识。这对于我们的将来也有很大的帮助。此次课程设计也让我明白没有最完善的程序代码,只有不断地改善才能使程序变得更完美,同时也增强了我对JAVA的兴趣,相信继续保持下去对JAVA的理解一定会更上一层楼。附录:程序源码importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.utton;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JPanel;importjavax.swing.JSeparator;importjavax.swing.JTextField;publicclassCalculatorextendsJFrameimplementsActionListener{ JMenuBarjmb;JMenujm1,jm2,jm3;JMenuItemjmi;/**计算器上的键的显示名字*/privatefinalString[]KEYS={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};/**计算器上的功能键的显示名字*/privatefinalString[]COMMAND={"Backspace","CE","C"};/**计算器上键的按钮*/privateuttonkeys[]=newutton[KEYS.length];/**计算器上的功能键的按钮*/privateuttoncommands[]=newutton[COMMAND.length];/**计算器左边的M的按钮*//**计算结果文本框*/privateJTextFieldresultText=newJTextField<"0">;//标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字privatebooleanfirstDigit=true;//计算的中间结果。privatedoubleresultNum=0.0;//当前运算的运算符privateStringoperator="=";//操作是否合法privatebooleanoperateValidFlag=true;/***构造函数*/publicCalculator<>{super<>;JMenuBarjmb=newJMenuBar<>;this.setJMenuBar<jmb>; JMenujm=newJMenu<"编辑<E>">; jmb.add<jm>;jmi=newJMenuItem<"复制<c>Ctrl+c">; jm.add<jmi>;jmi=newJMenuItem<"粘贴<p>Ctrl+v">; jm.add<jmi>;jm2=newJMenu<"查看<v>">; jmb.add<jm2>;jmi=newJMenuItem<"标准型<T>">;jm2.add<jmi>;jmi=newJMenuItem<"科学型<S>">;jm2.add<jmi>;jm2.add<newJSeparator<>>;jmi=newJMenuItem<"数学分组<I>">;jm2.add<jmi>;jm3=newJMenu<"帮助<H>">; jmb.add<jm3>;jmi=newJMenuItem<"帮助主题<H>">;jm3.add<jmi>;jm3.add<newJSeparator<>>;jmi=newJMenuItem<"关于计算器<A>">;jm3.add<jmi>;//初始化计算器init<>;//设置计算器的背景颜色this.setBackground<Color.LIGHT_GRAY>;this.setTitle<"计算器">;//在屏幕<500,300>坐标处显示计算器this.setLocation<500,300>;//不许修改计算器的大小this.setResizable<false>;//使计算器中各组件大小合适this.pack<>;}/***初始化计算器*/privatevoidinit<>{//文本框中的内容采用右对齐方式resultText.setHorizontalAlignment<JTextField.RIGHT>;//不允许修改结果文本框resultText.setEditable<false>;//设置文本框背景颜色为白色resultText.setBackground<Color.WHITE>;//初始化计算器上键的按钮,将键放在一个面板内JPanelcalckeysPanel=newJPanel<>;//用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calckeysPanel.setLayout<newGridLayout<4,5,3,3>>;for<inti=0;i<KEYS.length;i++>{keys[i]=newutton<KEYS[i]>;calckeysPanel.add<keys[i]>;keys[i].setForeground<Color.blue>;}//运算符键用红色标示,其他键用蓝色表示keys[3].setForeground<Color.red>;keys[8].setForeground<Color.red>;keys[13].setForeground<Color.red>;keys[18].setForeground<Color.red>;keys[19].setForeground<Color.red>;//初始化功能键,都用红色标示。将功能键放在一个面板内JPanelcommandsPanel=newJPanel<>;//用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素commandsPanel.setLayout<newGridLayout<1,3,3,3>>;for<inti=0;i<COMMAND.length;i++>{commands[i]=newutton<COMMAND[i]>;commandsPanel.add<commands[i]>;commands[i].setForeground<Color.red>;}//下面进行计算器的整体布局,将calckeys和command面板放在计算器的中下部//新建一个大的面板,将上面建立的command和calckeys面板放在该面板内JPanelpanel1=newJPanel<>;//面板采用边界布局管理器,面板里组件之间的水平和垂直方向上间隔都为3象素panel1.setLayout<newBorderLayout<3,3>>;panel1.add<"North",commandsPanel>;panel1.add<"Center",calckeysPanel>;//建立一个面板放文本框JPaneltop=newJPanel<>;top.setLayout<newBorderLayout<>>;top.add<"Center",resultText>;//整体布局getContentPane<>.setLayout<newBorderLayout<3,5>>;getContentPane<>.add<"North",top>;getContentPane<>.add<"Center",panel1>;//为各按钮添加事件监听器//都使用同一个事件监听器,即本对象。本类的声明中有implementsActionListenerfor<inti=0;i<KEYS.length;i++>{keys[i].addActionListener<this>;}for<inti=0;i<COMMAND.length;i++>{commands[i].addActionListener<this>;}}/***处理事件*/publicvoidactionPerformed<ActionEvente>{//获取事件源的标签Stringlabel=e.getActionCommand<>;if<label.equals<COMMAND[0]>>{//用户按了"Backspace"键handleBackspace<>;}elseif<label.equals<COMMAND[1]>>{//用户按了"CE"键resultText.setText<"0">;}elseif<label.equals<COMMAND[2]>>{//用户按了"C"键handleC<>;}elseif<"0123456789.".indexOf<label>>=0>{//用户按了数字键或者小数点键handleNumber<label>;//handlezero<zero>;}else{//用户按了运算符键handleOperator<label>;}}/***处理Backspace键被按下的事件*/privatevoidhandleBackspace<>{Stringtext=resultText.getText<>;inti=text.length<>;if<i>0>{//退格,将文本最后一个字符去掉text=text.substring<0,i-1>;if<text.length<>==0>{//如果文本没有了内容,则初始化计算器的各种值resultText.setText<"0">;firstDigit=true;operator="=";}else{//显示新的文本resultText.setText<text>;}}}/***处理数字键被按下的事件**paramkey*/privatevoidhandleNumber<Stringkey>{if<firstDigit>{//输入的第一个数字resultText.setText<key>;}elseif<<key.equals<".">>&&<resultText.getText<>.indexOf<"."><0>>{//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面resultText.setText<resultText.getText<>+".">;}elseif<!key.equals<".">>{//如果输入的不是小数点,则将数字附在结果文本框的后面resultText.setText<resultText.getText<>+key>;}//以后输入的肯定不是第一个数字了firstDigit=false;}/***处理C键被按下的事件*/privatevoidhandleC<>{//初始化计算器的各种值resultText.setText<"0">;firstDigit=true;operator="=";}/***处理运算符键被按下的事件**paramkey*/privatevoidhandleOperator<Stringkey>{if<operator.equals<"/">>{//除法运算//如果当前结果文本框中的值等于0if<getNumberFromText<>==0.0>{//操作不合法operateValidFlag=false;resultText.setText<"除数不能为零">;}else{resultNum/=getNumberFromText<>;}}elseif<operator.equals<"1/x">>{//倒数运算if<resultNum==0.0>{//操作不合法operateValidFlag=false;resultText.setText<"零没有倒数">;}else{resultNum=1/resultNum;}}elseif<operator.equals<"+">>{//加法运算resultNum+=getNumberFromText<>;}elseif<operator.equals<"-">>{//减法运算resultNum-=getNumberFromText<>;}elseif<operator.equals<"*">>{//乘法运算resultNum*=getNumberFromText<>;}elseif<operator.equals<"sqrt">>{//平方根运算resultNum=Math.sqrt<resultNum>;}elseif<operator.equals<"%">>{//百分号运算,除以100resultNum=resultNum/100;}elseif<operator.equals<"+/-">>{//正数负数运算resultNum=resultNu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论