淮海工学院计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:简单计算器的设计与实现姓名:严超学号:110912128专业班级:网络工程网络091系(院):计算机工程学院设计时间:2011.6.13~2011.6.24设计地点:软件实验室、教室指导教师评语:签名:年月日成绩:面向对象课程设计报告第2页,共18页1.课程设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。熟练运用GUI标准组件和布局管理器,正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型,编写图形界面组件的事件处理程序;理解Java多线程机制,掌握线程使用方法。2.课程设计任务与要求:课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2)类、包、接口的定义与使用3)常用工具类与算法的实现(数组、向量、字符串、链表)4)Java常用标准GUI组件及其事件处理5)Java的异常处理机制6)Java的数据库连接技术7)Java的多线程技术与动画制作Java的网络编程面向对象课程设计报告第3页,共18页3.课程设计说明书一、需求分析现在生活中,银行、超市、酒店等只要与买卖有关的行业甚至可以说任何行业都离不开计算器,连我们学习中也不可避免的用到计算器,在此设计一个简单计算器提供简单的加、减、乘、除运算。系统使用者加减乘清零除**********二、概要设计计算器的实现主要包含图形界面的排版和计算方法图形界面:1.定义一些按钮和文本框并初始化2.将这些按钮和文本框进行排版、美化面向对象课程设计报告第4页,共18页3.为按钮注册事件监听器4.设计计算方法5.进行最后整合计算按钮响应计算结果除按钮添加文本框、按钮初始化减加乘计算方法界面排版、美化初始化定义文本框、按钮面向对象课程设计报告第5页,共18页三、详细设计1.加载工具包2.publicvoidinit()//初始化按钮、文本框并进行界面排版{1).定义界面中的数字按钮和文本框2).按钮出事初始化并确定其值,确定文本框大小3).将界面进行排版、美化4).按钮响应}3.publicvoidactionPerformed(ActionEvente)//动作事件,各按钮响应;判断是什么运算{if()/{判断它是不是加法运算}elseif(operator==bsubtract){判断它是不是减法运算}elseif(operator==bmultiply){判断它是不是乘法运算}elseif(operator==bdivision){判断它是不是除法运算}elseif(operator==bdelete){判断它是不是清零}elseif(operator==bequals){判断它是不是求值}}4.publicStringresult(){通过前面的判断进行求值}5.publicclassCalculator//计算{调用函数,将代码进行整合形成完整的程序}面向对象课程设计报告第6页,共18页4.课程设计成果//对界面进行初始化、排版、美化frame=newJFrame(欢迎使用计算器);//初始化框架,设置标题text=newJTextField(18);//文本框长度text.setHorizontalAlignment(JTextField.RIGHT);//文本框里显示数据是从右到左text.setEditable(false);//文本框不可以编辑text.setText(0);//文本框初始值为0text.setForeground(Color.blue);//框架颜色设为蓝色container=frame.getContentPane();//取得内容面板b0=newJButton(0);//设置按钮的值b1=newJButton(1);b2=newJButton(2);b3=newJButton(3);b4=newJButton(4);b5=newJButton(5);b6=newJButton(6);b7=newJButton(7);b8=newJButton(8);b9=newJButton(9);badd=newJButton(+);bsubtract=newJButton(-);bmultiply=newJButton(*);bdivision=newJButton(/);bequals=newJButton(=);bdelete=newJButton(c);//清零bdian=newJButton(.);pane=newJPanel();pane1=newJPanel();pane2=newJPanel();面向对象课程设计报告第7页,共18页pane3=newJPanel();pane4=newJPanel();pane1.setLayout(newGridLayout(1,4));//面板布局,1行4列pane2.setLayout(newGridLayout(1,4));pane3.setLayout(newGridLayout(1,4));pane4.setLayout(newGridLayout(1,5));//设计界面,将其美化pane.add(text);pane1.add(b7);pane1.add(b8);pane1.add(b9);pane1.add(badd);pane2.add(b4);pane2.add(b5);pane2.add(b6);pane2.add(bsubtract);pane3.add(b1);pane3.add(b2);pane3.add(b3);pane3.add(bmultiply);pane4.add(b0);pane4.add(bdian);pane4.add(bdelete);pane4.add(bequals);pane4.add(bdivision);container.setLayout(newGridLayout(5,1));//将下面5个组件添加到界面中container.add(pane);container.add(pane1);container.add(pane2);container.add(pane3);面向对象课程设计报告第8页,共18页container.add(pane4)//监听事件处理,判断运算是属于“+,-,/,*”中的哪个ActionListenera=newActionListener(){publicvoidactionPerformed(ActionEvente)//动作事件,各按钮响应{JButtonoperator=(JButton)e.getSource();if(operator==badd)//判断它是不是加法运算{operation=add;firstNum=text.getText();flag=1;}elseif(operator==bsubtract)//判断它是不是减法运算{operation=subtract;firstNum=text.getText();flag=1;}elseif(operator==bmultiply)//判断它是不是乘法运算{operation=multiply;firstNum=text.getText();flag=1;}elseif(operator==bdivision)//判断它是不是除法运算{operation=division;firstNum=text.getText();flag=1;}elseif(operator==bdelete)面向对象课程设计报告第9页,共18页{text.setText(0);//清零flag=1;}elseif(operator==bequals){secondNum=text.getText();text.setText(result());//调用result()函数flag=1;}else{if(flag==0){Stringstr=text.getText();if(str.length()==28){}//文本框最长显示28elseif((newDouble(str)).doubleValue()==0){text.setText(operator.getActionCommand());}else{text.setText(str+operator.getActionCommand());}}else{text.setText(operator.getActionCommand());flag=0;}}面向对象课程设计报告第10页,共18页}};//计算方法publicStringresult(){doublenum1=(newDouble(firstNum)).doubleValue();doublenum2=(newDouble(secondNum)).doubleValue();if(operation.equals(add)){return(+(num1+num2));}elseif(operation.equals(subtract)){return(+(num1-num2));}elseif(operation.equals(multiply)){return(+(num1*num2));}elseif(operation.equals(division)){return(+(num1/num2));}return(0);}面向对象课程设计报告第11页,共18页以下是程序运算运行界面如图1图1加法运算:计算45+5运行过程如图2和图3图2面向对象课程设计报告第12页,共18页图3计算结果如图4图4面向对象课程设计报告第13页,共18页运算后清零,如图5图5减法运算:计算42.5-8运行过程如图6和图7图6面向对象课程设计报告第14页,共18页图7计算结果如图8图8面向对象课程设计报告第15页,共18页乘法运算:计算25.2*2运行过程如图9和图10图9图10面向对象课程设计报告第16页,共18页计算结果如图11图11除法运算:计算25/5运行过程如图12和图13图12面向对象课程设计报告第17页,共18页图13计算结果如图14图14面向对象课程设计报告第18页,共18页5.课程设计心得这次的课程设计做的是计算器的设计与实现,一开始拿到这个题目时先大致的把计算器所需要的都罗列出来。想了想程序大致需要三个部分,首先,就是计算器的图形界面,然后就是它的计算方法的判断,最后就是求计算结果。然后按照这个大体方向把每一步都具体化就得到了完整的程序,其中遇到的一些困难在同学的帮助下基本都解决了。通过这次的课程设计能让我对GUI标准组件更加理解,能更熟练的运用GUI标准组件和布局管理器,正确合理地利用常用AWT和Swing组件进行图形界面的设计。通过这次实践加深了我对面向对象程序设计的理论、方法和基础知识的理解,能更轻松的掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。同时这也是检验自己在这学期里对java这门课程学习情况,看看自己到底学会了哪些,还有哪些没有掌握牢固,以便以后更有目的地的学习。参考资料:实验指导书;http: