JAVA保存计算过程的计算器课程设计报告
大学java课程设计实验报告--计算器

JAVA课程设计报告组员信息:第(二)组计算器的实现问题问题描述:制作一个计算器基本要求:要求实现类似Windows操作系统里面的标准计算器。
在此基础上实现部分科学性的功能。
测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测试算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用addActionListener()对各个时间进行监听。
调用系统库函数对数值进行运算。
模块划分:1、主函数main()创建一个计算器。
2、void actionPerformed(ActionEvent e)对鼠标点击的事件进行响应以及在文本框中的显示。
3、各Buuton对应的功能:“开方”:对输入数字开方“平方”:对输入数字平方“getResult()”:对四则运算进行分别运算操作“backspace”:取消上一次的操作“CE”:取消上一次运算的操作“C”:清空作用“sin”:对输入数据进行sin运算“cos”:对输入数据进行cos运算“tan”:对输入数据进行tan运算“+/-”:对输入的数据取反“+”,“-”,“*”,“/”:对数据进行四则运算源程序:package hechongwei;import ng.String;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import ng.Math;class Calculator extends JFrame implementsActionListener {JTextField tf = new JTextField(" ");String str1 = " ", str2 = " ", str3 = " "; // str1和str2存放两个输入的数Panel pn1 = new Panel();// new 一个Panel存放符号与数字String a[] = { "平方", "开方", "backspace", "CE", "C", "7", "8", "9", "/","sin", "4", "5", "6", "*", "cos", "1", "2", "3", "-", "tan", "0","+/-", ".", "+", "="};// 用于对每个Button 进行赋值boolean frist = true;// 判断是否输入的为第一个字符int operCount = 0;int i; // 统计符号的数目String Operate = null;// 存放操作数的符号boolean error = false;double num1 = 0.0, num2 = 0.0;// 两个输入的数作运算时转化为double存放double result = 0.0;// 暂时保留计算结果public Calculator() {super("简单计算机 ");tf.setHorizontalAlignment(JTextField.RIGHT) ;// 显示框中由右想左输出tf.setEditable(false);Button b[] = new Button[25];for (i = 0; i < 5; i++) { // 将符号加到对应的Button上b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);// 调用addActionListener()方法注册事件监听器}for (i = 5; i <= 7; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[8] = new Button(String.valueOf(a[8]));pn1.add(b[8]);b[8].setActionCommand("oper");b[8].addActionListener(this);b[9] = new Button(String.valueOf(a[9]));pn1.add(b[9]);b[9].setActionCommand(a[9]);b[9].addActionListener(this);for (i = 10; i <= 12; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[13] = new Button(String.valueOf(a[13])); pn1.add(b[13]);b[13].setActionCommand("oper");b[13].addActionListener(this);b[14] = new Button(String.valueOf(a[14])); pn1.add(b[14]);b[14].setActionCommand(a[14]);b[14].addActionListener(this);for (i = 15; i <= 17; i++) {b[i] = new Button(String.valueOf(a[i]));pn1.add(b[i]);b[i].setActionCommand("number");b[i].addActionListener(this);}b[18] = new Button(String.valueOf(a[18])); pn1.add(b[18]);b[18].setActionCommand("oper");b[18].addActionListener(this);b[19] = new Button(String.valueOf(a[19])); pn1.add(b[19]);b[19].setActionCommand(a[19]);b[19].addActionListener(this);for (i = 20; i <= 22; i++) {b[i] = new Button(a[i]);pn1.add(b[i]);b[i].setActionCommand(a[i]);b[i].addActionListener(this);}b[23] = new Button(String.valueOf(a[23])); pn1.add(b[23]);b[23].setActionCommand("oper");b[23].addActionListener(this);b[24] = new Button(String.valueOf(a[24])); pn1.add(b[24]);b[24].setActionCommand(a[24]);b[24].addActionListener(this);pn1.setLayout(new GridLayout(5, 5));add(tf, "North"); // 界面的处理add(pn1, "Center");setSize(400, 300);setVisible(true);tf.setText("0.0");addWindowListener(new WindowAdapter() { //程序结束public void windowClosing(WindowEvent e) {System.exit(1);}});}public void actionPerformed(ActionEvent e) { Button temp = (Button) e.getSource();try {if(e.getActionCommand().equals("number")) {if (frist) {str1 = str1 + temp.getLabel();tf.setText(str1); // 将输入的str1在显示框中显示} else {str2 = str2 + temp.getLabel();tf.setText(str2);// 将输入的str2在显示狂中显示}} else if(e.getActionCommand().equals("oper")) {if (str1 == " ") {operCount= 0;// 如果还没有输入数就点击运算符,执行iffrist = true;} else {operCount++;if (operCount > 1) {// 若输入的字符多余一个,则可进行运算getResult();}Operate= temp.getLabel(); // 存放加,减,乘,除等的符号frist = false;}} else if(e.getActionCommand().equals("=")) {if((str1== "") || (str2== "")) // 两个数没有输全就点击等号,执行if{operCount = 0;// 将按键计数器清零frist = true;} else {getResult();operCount = 0;}} else if(e.getActionCommand().equals("平方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.pow(Double.parseDouble(str1), 2);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("开方")) {if (str1 == " ")tf.setText("0.0");else {double d =Math.sqrt(Double.parseDouble(str1));str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("sin")) {if (str1 == " ") { // 处理sin0 ,cos0等tf.setText("0.0");str1 = "0";}else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.sin(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("cos")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.cos(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("tan")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);k = k * Math.PI / 180;double d = Math.tan(k);str1 = String.valueOf(d);tf.setText(str1);frist = false;}} else if(e.getActionCommand().equals("C")) {operCount = 0;// 清空frist = true;str1 = " ";str2 = " ";str3 = " ";tf.setText("0.0");} else if(e.getActionCommand().equals("+/-")) {if (str1 == " ") {tf.setText("0.0");str1 = "0";} else {double k = Double.parseDouble(str1);str1 = String.valueOf(-k);tf.setText(str1);}} else if(e.getActionCommand().equals("CE")) { // 取消上一步的运算tf.setText(str1);frist = true;operCount = 0;str2 = " ";} else if(e.getActionCommand().equals("backspace")) {{// 退格String s = tf.getText();tf.setText("");char b[] = new char[20];for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);b[i] = a;tf.setText(tf.getText() + a);}if (operCount == 0)str1 = tf.getText();elsestr2 = tf.getText();}}} catch (Exception f) {System.out.println(f.getMessage());}}void getResult() {num1 = Double.parseDouble(str1);num2 = Double.parseDouble(str2);if (Operate.equals("+")) {result = num1 + num2;} else if (Operate.equals("-")) { result = num1 - num2;} else if (Operate.equals("*")) { result = num1 * num2;}if (Operate.equals("/")) {if (num2 == 0.0) {error = true;} else {result = num1 / num2;}}if (error) {tf.setText("error");} else {tf.setText(String.valueOf(result));str3 = str1;str1 = String.valueOf(result);str2 = " ";}}public static void main(String args[]) {new Calculator();}}程序流程:if (e.getActionCommand().equals("number"))else if (e.getActionCommand().equals("oper"))else if (e.getActionCommand().equals("="))else if (e.getActionCommand().equals("平方"))else if (e.getActionCommand().equals("开方"))else if (e.getActionCommand().equals("C")) else if (e.getActionCommand().equals("CE"))void getResult()Main()主函数流程:测试情况:图形界面示意图:测试情况测试数据:输入4 ,平方显示结果为16输入4,开方显示结果为2输入4,+,2 显示结果为6输入4,-,2 显示结果为2输入4,*,2显示结果为8输入4,/,2显示结果为2输入1,+,2, +,4,CE,+8 显示结果为11输入1,+,22,Backspace ,= 显示结果为3 输入C 显示结果为0输入30,sin 显示结果为0.5。
计算器设计的java课程设计报告

计算器设计的java 课程设计报告华东交通大学课程设计课程设计题目:计算器设计课程: Java程序设计题目:计算器设计年级:级专业:信息一班学号:姓名:组员:指导教师:课程设计(论文)任务书基础学院信息与计算科学专业—1班一、课程设计(论文)题目计算器的设计二、课程设计(论文)工作自年 6 月23日起至年6月27日止。
三、课程设计(论文) 地点: 计算机中心四、课程设计(论文)内容要求:1.本课程设计的目的(1)使学生掌握系统各功能模块的基本工作原理;(2)掌握Java的基本编程原理和基本的编程方法;(3)使学生学会系统调试;(4)培养学生分析、解决问题的能力;(5)提高学生的软件文档写作能力和团队合作精神。
2.课程设计的任务及要求1)基本要求:(1)分析系统各功能模块的工作原理;(2)提出系统的设计方案;(3)对所进行编程、调试、修改。
2)创新要求:在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。
3)课程设计论文编写要求(1)要按照书稿的规格打印誊写设计论文;(2)论文包括目录、摘要、正文、总结等;(3)毕业论文装订按学校的统一要求完成。
4)答辩与评分标准:(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;(2)能正确回答老师所提问题,可增加10分;(3)课程设计报告书写规范整齐,可增加10分;(4)心得体会认真总结,可增加10分;(5)程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不及格五个等级。
不及格者需重做。
5)参考文献:(1)丁振凡.《J ava语言程序设计》清华大学出版社(2)丁振凡.《J ava语言程序设计实验指导与习题解析》清华大学出版社(3)http:/ /6)课程设计进度安排内容天数地点总体需求与分析构思及收集资料 1图书馆各模块的编程实现,调试与修改 3机房撰写论文与答辩 1图书馆,机房学生签名:年6 月18 日课程设计(论文)评审意见(1)态度评价(20分):优()、良()、中()、一般()、差();(2)任务难度(20分):优()、良()、中()、一般()、差();(3)设计分析(20分):优()、良()、中()、一般()、差();(4)创新性评价(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)论文格式规范性及考勤是否降等级:是()、否()。
Java计算器课程设计报告

《Java计算器》Java课程设计报告姓名:********学号:********专业:************一.程序要实现的功能:基础功能:类似windows计算器-普通计算器所具有的,数的输入、加、减、乘、除、开根号、求倒数、退格、清空,以及数字储存器中的MR(显示)、MC (清空)、M+(相加)、MS(储存)扩展功能: 类似windows计算器-科学计算器所具有的,各种函数(包括正三角反三角函数)计算,不同进制转换,逻辑与或非等操作。
二.程序算法&功能实现(大概)以下为运算功能简易示意图:不同进制转换:此功能独立于计算器其他功能,计算器运行过程中设定一个变量carry储存当前进制转态,每次运算时先将屏幕显示的数字转化成十进制然后带入运算,对于要显示在计算器屏幕的结果也要先进行十进制转换为当前进制然后显示。
三.遇到问题及解决方案1.普通计算器到科学计算器的界面转换:科学计算器的界面显然比普通计算器界面要复杂,按钮要多,而无论怎样修改布局都无法完整得在科学计算器和普通计算器之间切换。
解决方案:将计算器的界面布局的类设为扩展JPanel的类CreateButton,该类中设置两个方法,一个方法进行科学计算器的界面布局,一个方法进行普通计算器的界面布局,两个方法依靠CreateButton类构造函数种的参数决定调用哪个方法,在主的类里面若要在科学计算器和普通计算器之间切换,只要为当前面板new一个CreateButton,并设置好参数,就可以换一个界面。
2.不同进制输入输出与运算问题:由于科学型计算器涉及不同进制的输入输出与运算,而不同的进制运算规则稍有不同,因此不同进制输入输出与运算就成了一个问题。
解决方案:设置一个全局变量表示当前进制状态,而程序运行过程处理数据都以十进制形式,也就是仅在显示时,按照当前进制状态,将十进制转化为相应进制。
3.JAVA已有的函数计算精度不够:例如sin函数计算,java对sin函数计算的参数是弧度制,但是如果用Math.sin ()计算Pi/6(即sin30度),那么结果是0.4999999999999999而不是0.5。
计算器java课程设计报告(完整版)

《面向对象程序设计》课程设计报告课程设计题目:计算器****:***专业:信息管理与信息系统班级:1424603****:***2016年 5 月25 日一、课设任务及要求1)课设任务:⑴设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算)。
⑵有求倒数、退格和清零功能。
2)创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。
3)设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零功能。
②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。
二、设计思路⑴本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。
包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。
如:Button b=new Button();b.addActionListener(事件监听器);⑵事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。
事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。
java课程设计计算器

java课程设计 计算器一、课程目标知识目标:1. 理解Java基本语法和程序结构,掌握算术表达式的编写;2. 掌握使用Java进行数值运算的方法,理解数据类型转换规则;3. 了解简单的异常处理机制,理解其与计算器程序的关系。
技能目标:1. 能够运用所学知识,独立编写一个具备基本功能的计算器程序;2. 学会使用Java控制台输入输出,实现用户与程序的交互;3. 能够通过调试和修改代码,解决计算器程序中的常见错误。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和解决问题的热情;2. 培养学生的团队协作意识,使其学会在编程过程中互相帮助和分享经验;3. 培养学生的逻辑思维能力,提高其分析问题和解决问题的能力。
本课程针对具有一定Java基础的学生设计,结合计算器项目实践,旨在巩固和拓展所学知识,提高学生的编程能力和实际应用能力。
课程注重培养学生的动手实践能力,强调理论与实践相结合,使学生能够在实践中掌握Java编程技巧,培养良好的编程习惯。
通过本课程的学习,学生将能够独立完成一个简单的计算器程序,提高其在实际编程中的问题解决能力。
二、教学内容1. Java基本语法与程序结构复习(教材第3章)- 简单的变量声明与赋值- 基本算术运算符的使用- 程序的控制流程:顺序、分支(if-else)、循环(for、while)2. Java数据类型与运算(教材第4章)- 数据类型转换规则- 运算符优先级- 算术表达式编写3. Java控制台输入输出(教材第5章)- 使用Scanner类进行输入- 使用System.out.print和System.out.println进行输出4. 简单异常处理(教材第7章)- 异常的概念与分类- try-catch语句的使用- 异常处理在计算器程序中的应用5. 计算器程序设计实践- 设计计算器功能需求- 编写计算器程序代码- 调试与优化计算器程序教学内容安排与进度:第一课时:复习Java基本语法与程序结构,明确计算器项目需求第二课时:学习Java数据类型与运算,编写计算器核心算法第三课时:掌握Java控制台输入输出,实现计算器用户交互第四课时:了解简单异常处理,优化计算器程序第五课时:计算器程序设计实践,调试与改进教学内容注重理论与实践相结合,通过逐步引导,使学生能够将所学知识应用于计算器程序设计,提高编程实践能力。
Java课程设计报告计算器

Java课程设计报告-计算器第一部分设计的内容要求1.1 Windows自带计算器版面设计1.2计算器计算功能算法实现第二部分设计思想2.1根据图形用户界面设计方法设计计算器版面。
①容器类(窗口--Window类,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。
②事件处理机制:监听器类WinClose(),actionPerformed()。
2.2计算器计算功能实现,即按钮监听器的实现自定义变量:x,y为操作数,op为操作符。
根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。
第三部分详细设计3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:第四部分运行效果图4.1运行初始图:4.2 计算功能测试图:-1+23.4 将textp中数据赋给yN Y单击”1”~”9”将单击数字插入到textp中数据后,并将textp中数据赋给y 将textp赋0,并str.stelength(0);结束4.2 数学分组功能测试图:第五部分心得与体会5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。
5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。
5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。
第六部分附录6.1计算器计算功能算法(按钮"="):if(e.getSource()==b26) // "="{str.setLength(0);switch(op){case 0 :if(flag==1)textp.setText(String.valueOf(x+y));else{str.setLength(0);str.append(x+y);fun();}break;case 1 :if(flag==1)textp.setText(String.valueOf(x-y)); else{str.setLength(0);str.append(x-y);fun();}break;case 2 :if(flag==1)textp.setText(String.valueOf(x*y)); else{str.setLength(0);str.append(x*y);fun();}break;case 3 :if(y==0){textp.setText("除数不能为零");str.setLength(0);y=0;}else{if(flag==1)textp.setText(String.valueOf(x/y)); else{str.setLength(0);str.append(x/y);fun();}}break;}}6.2 fun()函数(数学分组功能)public void fun(){flag=0;int t=0;StringBuffer temp;String sstr=str.toString();if(sstr.trim().indexOf("-")==1){temp=new StringBuffer(str.substring(1));t=1;}elsetemp=new StringBuffer(str.substring(0));if(sstr.trim().indexOf(".")==-1){int j=temp.length();for(int i=j;i>3;){temp.insert(i-3,",");i=i-3;}if(t==0)textp.setText(temp.toString());elsetextp.setText('-'+temp.toString());}else{int i=sstr.indexOf('.');StringBuffer s1=new StringBuffer(sstr.substring(0,i));StringBuffer s2=new StringBuffer(sstr.substring(i+1));for(int j=s1.length();j>3;){s1.insert(j-3,",");j=j-3;}if(t==0)textp.setText(s1.toString()+'.'+s2.toString());elsetextp.setText('-'+s1.toString()+'.'+s2.toString());}}。
java计算器设计报告

设计报告课题名称:计算器设计学院:专业班级:学号:学生:指导教师:教务处年月日学生指导教师课题名称JAVA计算器课程设计设计时间设计地点设计目的图形界面设计,熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。
从而检测对这门课的掌握情况,有助于及时查漏补缺。
1.1功能模块设计以下为标准计算器的基本功能:(1)加法两个数据进行加操作,可以为小数。
(2)减法两个数据进行减操作,可以为负数相减。
(3)乘法两个数相乘操作。
(4)除法两个数相除操作。
(5)开平方对任意一个数进行开方运算,可以是小数。
(6)百分号对任意一个数进行百分号运算。
(7)倒数对任意一个数进行倒数运算。
1.2标准计算器界面(图1-1)图1-1 1.3系统功能图(图1-2)2标准计算器演示(1)启动计算器(图2-1)图2-1(2)加法、乘法运算分别输入9和3然后分别计算其加法、乘法运算(图2-2,图2-3)图2-2(加法运算)图2-3(乘法运算)(3)开平方运算sqrt(图2-4)图2-4(4)百分号运算%(图2-5)图2-5(5)倒数运算1/x(图2-6)图2-63程序设计过程中的问题该设计目前还不太完整全面,在测试时有以下问题:1.在进行aqrt 、%、 1/x这三个运算后再输入数据就在文本框中继续输入,不能重新输入。
需要按下清零键才可继续输入下一数据再进行运算。
2.菜单栏中虽然设计了“查看—标准型、科学型、数字分组”以及“帮助—帮助主题、关于计算器”可是其功能并没有时间。
3.该计算器设计了有关内存的操作,可是并没有达到预期中的效果。
java课设计算器报告

java课设计算器报告随着计算机的快速发展,计算机科学正在成为21世纪最重要的学科之一。
同时,作为计算机科学的一部分,Java语言也正在发展壮大。
因此,Java的课程也随之增加,如程序设计,软件工程,数据库,机器学习等等。
作为一名Java专业的学生,在学习课程的同时,我也做了一次课程设计,即实现一个Java算法计算器,如加,减,乘,除以及整数,小数,次方,根号等功能。
首先,我们需要完成一些准备工作,即使用Java语言实现功能。
为了实现上述功能,我们按照以下步骤进行:首先,使用if..else 语句来判断输入是操作数还是操作符;其次,使用switch语句来实现操作;最后,使用System.out.print()函数将结果显示在控制台中。
在实现完上述步骤之后,算法计算器功能就完成了,我们可以开始进行测试。
在测试过程中,我们输入各种操作数和操作符,并检查计算器是否能够正确计算出结果,并且检查算法是否能够实现各种功能,如加减乘除等。
我们最终实现了加减乘除,整数,小数,次方,根号等功能,在测试中结果都正确,证明算法可以实现预期的功能。
最后,总结一下这次实现Java算法计算器的过程:首先,我们使用if..else语句和switch语句来实现功能;其次,我们使用System.out.print()函数来显示结果;最后,在测试中结果都正确,证明算法可以实现预期的功能。
本次实验表明,当我们使用编程语言实现算法时,可以正确地实现我们预期的功能。
本次实验也使我对Java语言有了更深的理解,并且也使我对算法的原理有了更深的认识。
综上所述,我们实现的Java算法计算器可以满足本次实验的需要,具有正确的功能,并且在实验过程中,我们也对算法和Java语言都有了更深的了解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J A V A保存计算过程的计算器课程设计报告-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN保存计算过程的java计算器目录1 概述 ....................................................................................................... 错误!未定义书签。
课程设计目的....................................................................... 错误!未定义书签。
课程设计内容....................................................................... 错误!未定义书签。
2 系统需求分析 .......................................................................................... 错误!未定义书签。
系统目标............................................................................... 错误!未定义书签。
主体功能............................................................................... 错误!未定义书签。
开发环境............................................................................... 错误!未定义书签。
3 系统概要设计 .......................................................................................... 错误!未定义书签。
系统的功能模块划分........................................................... 错误!未定义书签。
系统流程图........................................................................... 错误!未定义书签。
4系统详细设计 .......................................................................................... 错误!未定义书签。
5 测试........................................................................................................... 错误!未定义书签。
测试方案............................................................................... 错误!未定义书签。
测试结果............................................................................... 错误!未定义书签。
6 小结........................................................................................................... 错误!未定义书签。
参考文献...................................................................................................... 错误!未定义书签。
附录 .......................................................................................................... 错误!未定义书签。
附录1 源程序清单 ...................................... 错误!未定义书签。
1 概述课程设计目的1.掌握JAVA语言编程的基础知识并能熟练运用。
2.熟悉类声明与对象的使用。
3.理解委托时间处理模型。
4.了解JAVA语言的图形用户界面JAVAS WING的设计知识。
5.运用JAVA SWING编写简单计算器程序,并实现其功能。
课程设计内容设计GUI界面的计算机程序,用户可以通过鼠标依次输入参加计算的数值,进行加,减,乘,除,等混合运算。
2 系统需求分析系统目标一个简单的计算器程序。
用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。
主体功能1.按下数字键在文本框上会显示数字,这是计算器最基本的功能2.在任何时候按下“+-”键,计算器文本框上的数字置反3.上面一个文本框显示计算过程,下面一个文本框显示输入的数字4.当按下的运算符号时前面已经按下过运算符号时,下面一个文本框显示上一个运算符号以及两个数之间的运算结果。
5. 按下清除“C”键,数据被全部清除。
开发环境JDK3 系统概要设计系统的功能模块划分1.主界面模块2.事件相应模块系统流程图4系统详细设计1.主界面模块详细设计顶层容器:ComputerPad类实现主窗口,顶层容器中包含了1个panel容器,1个resultshow文本框,1个process文本框。
各组件作用:其中panel容器用于放数字按钮,小数点,运算符按钮,清零按钮,正负转换按钮以及退格按钮。
两个文本框一个用于显示输入数据和计算结果,另一个用于显示计算过程。
布局方式:顶层容器用BroadLayOut布局,process和resultshow文本框以及panel容器分别放在定岑容器的noth,center以及south面,panel容器用GridLayOut布局部分代码如下数字按钮类:实现数字按钮的定义public class NumberButton extends Button{}运算符按钮类:实现运算符号的定义public class OperationButton extends Button{}主窗口类实现监视器的注册,窗口布局,组件颜色大小等的设置public class ComputerPad extends Frame implements ActionListener{NumberButton numberButton[];OperationButton oprationButton[];Button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;Panel panel;JTextField resultShow;JTextField process;String 运算符号[]={"+","-","*","/"};LinkedList 链表;boolean 是否按下等号=false;public ComputerPad(){super("计算器");链表=new LinkedList();ddActionListener(this);}oprationButton=new OperationButton[4];for(int i=0;i<4;i++){oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this);}小数点按钮=new Button(".");正负号按钮 =new Button("+/-");等号按钮=new Button("=");求倒数按钮=new Button("1/x");退格按钮=new Button("退格");清零按钮=new Button("C");清零按钮.setForeground;退格按钮.setForeground;等号按钮.setForeground;求倒数按钮.setForeground;正负号按钮.setForeground;小数点按钮.setForeground;退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);求倒数按钮.addActionListener(this);ize()==0) {}else if(链表.size()==1&&是否按下等号==false){}else if(链表.size()==1&&是否按下等号==true) {}else if(链表.size()==2) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==2) {}else if(链表.size()==3) {}}ize()==1||链表.size()==2) {}else if(链表.size()==3) {}}ize()==0) {}else if(链表.size()==1) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==3) {}}ize()==1||链表.size()==2) {}else if(链表.size()==3) {}}Java2实用教程(第三版)[M] . 北京:清华大学出版社,2006 [2]耿祥义.? Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004 [3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004附录附录1 源程序清单import .*;import .*;public class NumberButton extends Button{int number;public NumberButton(int number){super(""+number);=number;setForeground;}public int getNumber(){return number;}}import .*;import .*;public class OperationButton extends Button{String 运算符号;public OperationButton(String s){super(s);运算符号=s;setForeground;}public String get运算符号(){return 运算符号;}}import .*;import .*;import class ComputerPad extends Frame implements ActionListener {NumberButton numberButton[];OperationButton oprationButton[];Button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;Panel panel;JTextField resultShow;JTextField process;String 运算符号[]={"+","-","*","/"};LinkedList 链表;boolean 是否按下等号=false;public ComputerPad(){super("计算器");链表=new LinkedList();numberButton=new NumberButton[10];for(int i=0;i<=9;i++){numberButton[i]=new NumberButton(i);numberButton[i].addActionListener(this);}oprationButton=new OperationButton[4];for(int i=0;i<4;i++){oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this);}小数点按钮=new Button(".");正负号按钮 =new Button("+/-");等号按钮=new Button("=");求倒数按钮=new Button("1/x");退格按钮=new Button("退格");清零按钮=new Button("C");清零按钮.setForeground;退格按钮.setForeground;等号按钮.setForeground;求倒数按钮.setForeground;正负号按钮.setForeground;小数点按钮.setForeground;退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);求倒数按钮.addActionListener(this);process=new JTextField(10);;;(new Font("TimesRoman",,14));(new SoftBevelBorder);;(false);resultShow=new JTextField(10);;;(new Font("TimesRoman",,14));(new SoftBevelBorder);;(false);panel=new Panel(); (new GridLayout(5,4));(清零按钮);(退格按钮);(numberButton[1]);(numberButton[2]);(numberButton[3]);(numberButton[4]);(numberButton[5]);(numberButton[6]);(numberButton[7]);(numberButton[8]);(numberButton[9]);(numberButton[0]);(oprationButton[0]);(oprationButton[1]);(oprationButton[2]);(oprationButton[3]);(求倒数按钮);(正负号按钮);(小数点按钮);(等号按钮);add(panel,;add(resultShow,;add(process,;addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){(0);}});setVisible(true);setBounds(100,50,170,190);setResizable(false);validate();}public void actionPerformed(ActionEvent e){if() instanceof NumberButton){NumberButton b=(NumberButton)();if(链表.size()==0){int number=();链表.add(""+number);(""+number);(""+number);是否按下等号=false;}else if(链表.size()==1&&是否按下等号==false) {int number=();String num=(String)链表.getFirst();String s=(""+number);链表.set(0,s);(s);(s);}else if(链表.size()==1&&是否按下等号==true) {int number=();链表.removeFirst();链表.add(""+number);是否按下等号=false;(""+number);(""+number);}else if(链表.size()==2){int number=();链表.add(""+number);(""+number);(""+((String)链表.get(0))+((String)链表.get(1))+number);}else if(链表.size()==3){int number=();String num=(String)链表.getLast();String s=(""+number);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+number);链表.set(2,s);(s);}}else if() instanceof OperationButton){OperationButton b=(OperationButton)();if(链表.size()==1){String fuhao=运算符号();(""+((String)链表.get(0))+fuhao);链表.add(fuhao);}else if(链表.size()==2){String fuhao=运算符号();链表.set(1,fuhao);(""+((String)链表.get(0))+((String)链表.get(1))); }else if(链表.size()==3){String fuhao=运算符号();String number1=(String)链表.getFirst();String number2=(String)链表.getLast();String 运算符号=(String)链表.get(1);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+运算符号);try{double n1=(number1);double n2=(number2);double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}链表.clear();链表.add(""+n);链表.add(fuhao);(""+n);}catch(Exception ee){}}}else if()==等号按钮){是否按下等号=true;if(链表.size()==1||链表.size()==2) {String num=(String)链表.getFirst();(""+num);(num+"=");}else if(链表.size()==3){String number1=(String)链表.getFirst();String number2=(String)链表.getLast();String 运算符号=(String)链表.get(1);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+"=");try{double n1=(number1);double n2=(number2);double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}(""+n);链表.set(0,""+n);链表.removeLast();链表.removeLast();}catch(Exception ee){}}}else if()==小数点按钮){if(链表.size()==0){是否按下等号=false;}else if(链表.size()==1){String dot=小数点按钮.getLabel();String num=(String)链表.getFirst();String s=null;if(dot)==-1){s=(dot);链表.set(0,s);}else{s=num;}链表.set(0,s);(s);(s);}else if(链表.size()==3){String dot=小数点按钮.getLabel();String num=(String)链表.getLast();String s=null;if(dot)==-1){s=(dot);链表.set(2,s);}else{s=num;}(s);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}}else if()==退格按钮){if(链表.size()==1){String num=(String)链表.getFirst();if()>=1){num=(0,()-1);链表.set(0,num);(num);(""+((String)链表.get(0)) );}else{链表.removeLast();("0");}}else if(链表.size()==3){String num=(String)链表.getLast();if()>=1){ num=(0,()-1);链表.set(2,num);(num);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}else{链表.removeLast();("0");}}}else if()==正负号按钮){if(链表.size()==1){String number1=(String)链表.getFirst();try{double d=(number1);d=-1*d;String str=(d);链表.set(0,str);(str);(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=(number2);d=-1*d;String str=(d);链表.set(2,str);(str);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}catch(Exception ee){}}}else if()==求倒数按钮){if(链表.size()==1||链表.size()==2){String number1=(String)链表.getFirst();try{double d=(number1);d=d;String str=(d);链表.set(0,str);(str);(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=(number2);d=d;String str=(d);链表.set(2,str);(str);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)));}catch(Exception ee){}}}else if()==清零按钮){是否按下等号=false;("0");("0");链表.clear();}}public static void main(String args[]){new ComputerPad();}}。