JavaSwing计算器设计

JavaSwing计算器设计
JavaSwing计算器设计

JavaSwing计算器设计

《java程序设计》课程设计报告

课题名称:GUI计算器设计

……

提交报告时间:2008 年12 月20 日1. 课程设计题目

基于GUI的计算器设计

2. 课程设计目的

1. 巩固和加深课堂所学知识;

2. 将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力;

3. 通过对java语言程序代码的阅读、修改、设计,理解和掌握复杂的java语言应用程序的编程,提高实践编程能力。

3. 程序运行环境及开发工具

本程序在Windows XP的PC机上利用Jbuilder9.0的软件开发实现,在Windows XP平台上Jbuilder9.0及Eclipse环境中运行通过。

4. 程序功能使用说明

运行该程序后,参与运算的操作数可有鼠标点击相应按钮输入,也可有键盘输入,但操作符应有鼠标点击相应的按钮,当:

1.在简易计算中可以按照常规输入计算,基本无bug,

“%”未设置其用途;

2.简易计算中,可以进行+、-、*、/、乘方(^)、开方(√)及阶乘(!)运算;

3.科学计算中有许多功能为实现,主要能进行加、减、乘、除、乘方、开方、幂、开n次方、倒数、阶乘、ln、e的x 次幂、三角函数等高级运算;

4.例如:

(1). 1 + 9 = 10

(2). 25 + -8 = 17

(3). 98 - 35 = 63

(4). 96 * 2 = 192

(5). 96 / 4 = 24

(6). 4 ^ 3 = 64

(7). 100 √ = 10

(8). -9 √ = 不能执行此操作!!

(9). 20 ! = 2432902008176640000

(10). -20 ! = 不能执行此操作!!

(11). 0 ! = 1

(12). 8 ln =

2.0794415416798357

(13). 2 Exp = 7.38905609893065

(14). 8 x^y 3 = 512

(15). 20 x^2 = 400

(16). 100 n!= 933262154439441526816992388562667004907159682643816 214685929638952175999932299156089414639761565182862 536979208272237582511852109168640000000000000000000 00000

(17). 30 sin = 0.49999999999999994(0.5) (求sin30度)

其他(cos,tan)依次类推;

(18).1/x计算有bug;

(19). 3 x√ 8 = 2 (求8开3

次方);

(20). 95 Mod 10 = 5 (95对10

求余)

5. 关键算法与技术:

1.大数阶乘;

2.界面切换;

3.GirdLayout布局管理器的使用;

4.事件响应;

5.匿名内部类的使用;

6.

6. 设计思路:

本程序采用模块化设计,调试方便,程序的可读性好。在老师的指导下,由主程序启动简易计算器,根据使用者的需要可以在简易计算器中进行运算操作,若不能满足用户功能,可以选择使用科学计算器,具体操作与目前市面上的计算器差不多,用户还可以选择使用说明进行查看具体操作。由于时间及个人水平的问题,科学计算中还有很多功能未实现。

具体思路:用户输入(点击)某一数字或操作符,程序将自行判断是操作数还是操作符,

1. 若为一操作数的首次输入,则将显示区的

“0”替换,若该操作数不为首次输入则将显示区的数字串接上此次输入的数字;

2. 若为操作符,将判断是否为带符号操作数,若是则保存符号,反之为纯操作符:若为二元操作符就将显示区的字符串转化为双精度数;若为等号就进行计算结果并显示结果;若为一目操作符就进行相应的一目运算并显示结果;

3. 进行相应的初始化操作,为下一次输入做准备;

4. 根据自己的理解画了下面的简单的流程图。

7.编码实现:

//package 计算器;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

import java.math.*;

import java.util.*;

/**

* <p>Title: 用户应用界面计算器</p>

* <p>Description: 包含简易计算与功能更加强大的科学计算</p>

* <p>Copyright: Copyright (c) 2008</p>

* <p>Company: 四……学</p>

* @author chwencong@https://www.360docs.net/doc/572489462.html,

* @version 1.0

*/

public class Calculat {

static JTextField show;//设置输入区,显示区

static double opNum = 0;//存放操作数

static String opChar = "=";//存放操作符

static boolean flag = true;//设置标志

public static void main(String[] args) {

new EasyFrame();//产生首界面——简易计算器

}

}

class EasyFrame//构建简易计算器框架界面

{

static JFrame frame;

public EasyFrame()

{

frame = new JFrame("简易计算器");

Toolkit kit = Toolkit.getDefaultToolkit();//设置图标

//下面这条语句不好,不具有可移植性

Image image =

kit.getImage("D:\\jbproject\\netTest\\src\\nettest\\1471.jpg");

frame.setIconImage(image);

frame.addWindowListener(new WindowAdapter() {//响应关闭事件

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

JMenuBar mb = new JMenuBar();//创建菜单栏

JMenu m1 = new JMenu("编辑");//创建菜单

JMenu m2 = new JMenu("操作");

JMenu m3 = new JMenu("帮助");

JMenuItem mi1c = new JMenuItem("复制", KeyEvent.VK_C);//创建菜单项

JMenuItem mi1v = new JMenuItem("粘贴",

KeyEvent.VK_V);

JMenuItem mi21 = new JMenuItem("基本计算");

JMenuItem mi22 = new JMenuItem("科学计算");

JMenuItem mi31 = new JMenuItem("使用说明");

JMenuItem mi32 = new JMenuItem("About...");

frame.setJMenuBar(mb);//添加菜单到窗口

mb.add(m1); mb.add(m2); mb.add(m3);

m1.add(mi1c); m1.add(mi1v);

m2.add(mi21); m2.add(mi22);

m3.add(mi31); m3.add(mi32);

/*菜单项监听事件*/

mi11.addActionListener(new MenuItemListener());//监听复制mi12.addActionListener(new MenuItemListener());//监听粘贴mi22.addActionListener(new MenuItemListener());

mi31.addActionListener(new MenuItemListener());

mi32.addActionListener(new MenuItemListener());

Container cp = frame.getContentPane();//获取内容窗格

cp.add(new easyCalPanel());//将简易计算器面板加入到框架中

frame.setSize(280,250);

//frame.pack();//将框架设置合适的大小

frame.setVisible(true);//设置框架可见

}

}

class AdvanceFrame //构建高级计算器框架界面

{

static JFrame frame;

public AdvanceFrame()

{

frame = new JFrame("科学计算器");

Toolkit kit = Toolkit.getDefaultToolkit();//设置图标Image image =

kit.getImage("D:\\jbproject\\netTest\\src\\nettest\\1471.jpg");

frame.setIconImage(image);

JMenuBar mb = new JMenuBar();//创建菜单栏

JMenu m1 = new JMenu("编辑");

JMenu m2 = new JMenu("操作");

JMenu m3 = new JMenu("帮助");

JMenuItem mi1c = new JMenuItem("复制", KeyEvent.VK_C);

JMenuItem mi1v = new JMenuItem("粘贴", KeyEvent.VK_V);

JMenuItem mi21 = new JMenuItem("基本计算");

JMenuItem mi22 = new JMenuItem("科学计算");

JMenuItem mi31 = new JMenuItem("使用说明");

JMenuItem mi32 = new JMenuItem("About...");

frame.setJMenuBar(mb);//添加菜单栏

mb.add(m1); mb.add(m2); mb.add(m3);//添加菜单

m1.add(mi1c); m1.add(mi1v);

m2.add(mi21); m2.add(mi22);

m3.add(mi31); m3.add(mi32);

mi11.addActionListener(new MenuItemListener());//监听复制mi12.addActionListener(new MenuItemListener());//监听粘贴mi21.addActionListener(new MenuItemListener());//监听简易计算

mi31.addActionListener(new MenuItemListener());//监听使用说明

mi32.addActionListener(new MenuItemListener());//监听关于

Container cp = frame.getContentPane();//获取框架的内容窗格

cp.add(new AdvanceCalPanel());//添加高级计算面板

frame.pack();//设置适当的大小

frame.setVisible(true);//可见

frame.addWindowListener(new WindowAdapter() {//响应关闭按钮

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

}

class MenuItemListener implements ActionListener//响应菜单事件

{

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals("基本计算")) {

new EasyFrame();//切换到简易计算器窗口

AdvanceFrame.frame.setVisible(false);

}

else if (e.getActionCommand().equals("科学计算")) {

new AdvanceFrame();//切换到高级计算界面

EasyFrame.frame.setVisible(false);

}

else if (e.getActionCommand().equals("复制")) {

//

}

else if (e.getActionCommand().equals("粘贴")) {

//

}

else if (e.getActionCommand().equals("使用说明")) {

try{

FileInputStream fis=new FileInputStream("使用说明.txt");

InputStreamReader isr=new InputStreamReader(fis);

BufferedReader br=new BufferedReader(isr);

JTextArea helpArea=new JTextArea(15,48);

//helpArea.enable(false);

helpArea.setEditable(false);

helpArea.setDisabledTextColor(Color.black);

JScrollPane scroll=new JScrollPane(helpArea);

String s;

while((s=br.readLine())!=null)

{

helpArea.append(s);

helpArea.append("\n");

}

JOptionPane.showMessageDialog(null,scroll,"帮助主题

",JOptionPane.PLAIN_MESSAGE);

br.close();

}

catch(IOException ex)

{

ex.printStackTrace();

}

//System.exit(0); //如果加上此句,当关掉JOptionPane时就会关掉JFrame;

}

else if (e.getActionCommand().equals("About...")) {

JTextArea aboutArea=new JTextArea();

aboutArea.setText("版权拥有者:陈文聪\n开发时间:2008-12-16\n个人博客:https://www.360docs.net/doc/572489462.html,/\n");

JOptionPane.showMessageDialog(null,aboutArea,"关于计算器",JOptionPane.PLAIN_MESSAGE);

}

}

}

class AdvanceCalPanel extends JPanel//创建高级计算面板{

public AdvanceCalPanel()

{

setLayout(new BorderLayout());//设置布局方式

Calculat.show = new JTextField("0",27);//显示文本区

Calculat.show.setFont(new

Font("Dialog",Font.PLAIN,16));//设置字体

Calculat.show.setHorizontalAlignment(JTextField.RIGHT);//设置光标位置

JPanel ps = new JPanel();//创建面板加载显示区文本框

ps.add(Calculat.show);

JPanel pbl = new JPanel();//创建面板加载按钮

pbl.setLayout(new GridLayout(10,5,1,1));//设置按钮面板的布局

pbl.setBorder(BorderFactory.createEtchedBorder());//设置边框

//pbr.setLayout(new GridLayout(5,6,1,2));

//pbr.setBorder(BorderFactory.createEtchedBorder());

String[] larr ={//按钮

"Sta","F-E","(",")","MC","clr",

"Avg","dms","Exp","ln","MR","Dec",

"Sum","sin","x^y","log","MS","Bin",

"E(x)","cos","x^2","n!","M+","Oct",

"D(x)","tan","x√","1/x","PI","Hex",

"D","E","F","/","Mod","And",

"A","B","C","*","Or","Xor",

"7","8","9","-","Lsh","Not",

"4","5","6","+","Int","shift",

"1","2","3",".","0","="};

for(int i=0;i<larr.length;i++)

{

addButton(pbl,larr[i]);//创建按钮

}

setBorder(BorderFactory.createEtchedBorder());//设置边框

add(pbl,BorderLayout.CENTER);//分别添加两面板到框架中

add(ps,BorderLayout.NORTH);

}

private void addButton(Container c,String s)//创建按钮,加入

到面板并监听按钮事件

{

JButton bt = new JButton(s);

c.add(bt);

bt.addActionListener(new buttonListener());

}

}

class easyCalPanel extends JPanel //操作基本等同于创建高级计算面板

{

public easyCalPanel()

{

setLayout(new BorderLayout());

Calculat.show = new JTextField("0",17);

Calculat.show.setFont(new

Font("Dialog",Font.PLAIN,18));

Calculat.show.setHorizontalAlignment(JTextField.RIGHT);

JPanel ps = new JPanel();

ps.add(Calculat.show);

JPanel pb = new JPanel();

pb.setLayout(new GridLayout(5,4,1,1));

pb.setBorder(BorderFactory.createEtchedBorder());

String bts = "%^√!789/456*123-0.=+";

for(int i=0;i<bts.length();i++)

{

addButton(pb,bts.substring(i,i+1));

}

add(pb,BorderLayout.CENTER);

add(ps,BorderLayout.NORTH);

}

private void addButton(Container c,String s)

{

JButton bt = new JButton(s);

bt.setFont(new Font("Dialog",Font.PLAIN,18));//设置字体

c.add(bt);

bt.addActionListener(new buttonListener());

}

}

class buttonListener implements ActionListener//响应按钮事件{

public void actionPerformed(ActionEvent e)

{

String s = e.getActionCommand();//获取命令

if('0'<=s.charAt(0) && s.charAt(0)<='9' || s.equals("."))//该命令为正操作数

{

if(Calculat.flag)//若初次输入该操作数(如:输入

“123”中的“1”)

Calculat.show.setText(s);

else//(如:输入“123”中的"2"或"3")

Calculat.show.setText(Calculat.show.getText()+s);

Calculat.flag = false;//修改标志

}

else//命令为操作数为负数或操作符

{

if(Calculat.flag)//初次输入

{

if (s.equals("-")) {//为负数

Calculat.show.setText(s);

Calculat.flag = false;

}

else{//连续输入几个操作符

Calculat.opChar = s; ///

}

}

else//为操作符

{

calculate cal = new calculate();//创建计算类实例

double x =

Double.parseDouble(Calculat.show.getText());//将输入的操作数转换为double型

cal.calopr1(x);//双目运算及处理单目运算的操作数

Calculat.opChar = s;//保存运算符

if

(Calculat.opChar.equals("!")||Calculat.opChar.equals("√" )//操作数必须为正的单目运算

||Calculat.opChar.equals("n!"))

{

if(Calculat.opNum < 0)

Calculat.show.setText("不能执行此操作!!");

else

cal.calopr2((int)Calculat.opNum,Calculat.opChar);//单目运算Calculat.opChar = "=";//保存符号为下一次运算做

准备

}

else if

(Calculat.opChar.equals("1/x")||Calculat.opChar.equals("x^2")

||Calculat.opChar.equals("ln")||Calculat.opChar.equals("log") ||Calculat.opChar.equals("sin")||Calculat.opChar.equals("cos")

||Calculat.opChar.equals("tan")||Calculat.opChar.equals("Exp"))/ /普通单目运算

{

cal.calopr2((int)Calculat.opNum,Calculat.opChar);//单目运算Calculat.opChar = "=";//保存符号为下一次运算做准备

}

Calculat.flag = true;//设置标志为下一次运算做准备

}

}

}

}

编写一个计算器程序课程设计报告-范例

学号 《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 评分细则 评分项优秀良好中等差 上课出勤 上课表现 上机情况 平时作业完成情况 期末大作业: (1)书写认真程度 题目:用Python编写简易计算器程序 学号: 专业: 班级: 姓名: 指导教师: 2016-2017学年第二学期

(2)内容详实程度(3)文字表达能力(4)是否体现观点 简短教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

一、设计内容 ------------------------------------------------------------------------------------------------- - 1 - 1. 课程设计目的:-------------------------------------------------------------------------------------- - 1 - 2.课程设计任务: --------------------------------------------------------------------------------- - 1 - 3.创新要求:---------------------------------------------------------------------------------------------- - 2 - 4.设计要求: ------------------------------------------------------------------------------------------------ - 2 - 二、原理和分析 ---------------------------------------------------------------------------------------------- - 2 - 1.开发的技术及功能 ----------------------------------------------------------------------------------- - 2 - 2.设计思路------------------------------------------------------------------------------------------------ - 2 - 3.设计效果图--------------------------------------------------------------------------------------------- - 2 - 三、设计过程 ------------------------------------------------------------------------------------------------- - 3 - 1. 程序思路: -------------------------------------------------------------------------------------------- - 3 - 2.功能实现:---------------------------------------------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算----------------------------------------------------------------- - 4 - 2)其他运算 ------------------------------------------------------------------------------------------ - 4 - 3)主要方法说明------------------------------------------------------------------------------------ - 5 - 4)程序流程图 --------------------------------------------------------------------------------------- - 5 - 3.算法思路:---------------------------------------------------------------------------------------------- - 6 - 4.数据分析:---------------------------------------------------------------------------------------------- - 7 - 四、设计结果和分析------------------------------------------------------------------------------------------ - 7 - ⒈运行调试------------------------------------------------------------------------------------------------ - 7 - 1)进行加减乘除求余以及指数运算----------------------------------------------------------- - 7 - 2)求倒 ------------------------------------------------------------------------------------------------ - 9 - 3)退格 ------------------------------------------------------------------------------------------------ - 9 - 4)清零 ---------------------------------------------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算 ------------- - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------------------------------- - 11 - 7)异常处理(例:求倒时输入数为0) --------------------------------------------------- - 11 - 五、设计体会和小结 -------------------------------------------------------------------------------------- - 12 - 六、参考文献 ----------------------------------------------------------------------------------------------- - 13 - 七、源程序--------------------------------------------------------------------------------------------------- - 13 - 一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:

计算器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)。 ⑶在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 ⑷计算器完成的是一个数学表达式,如:3+2,所以可以采用一个数组来存储数字或字符,如3,+,2分别存储在数组中,最后运算时,可以一一取出来进行运算。 ⑸利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。 ⑹利用文本框显示操作数和运算结果。

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

Java计算器课程设计报告 - 副本

JAVA课程设计 小型计算器 学生姓名: 指导教师:李明江 系别:计算机科学系 专业:计算机科学与技术 年级:2008 应用2班 提交时间:2010年 12 月 22日学号:

目录 一概述 (3) 二总体方案设计 (4) 三详细设计 (6) 四程序的调试与运行结果说明.. 10 五课程设计总结 (19) 六附录...... 错误!未定义书签。

一设计任务书 1.程序具备的功能: (1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮; (2)完成整数、实数的四则运算(加、减、乘、除); (3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。 2.课程设计的主要设计思想 对于此计算器程序,首先要设计其GUI 界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计

完成。 布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。 在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。 二总体方案设计 1.界面设计 界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt 中的BorderLayout和GridLayout布局管理方

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

MFC做的一个简单的计算器

目录 一.设计题目。 (1) 二.设计目的和内容。 (1) 三.基本功能描述。 (2) 四.设计思路。 (2) 五.软件设计:设计步骤、界面设计、关键功能的实现。 (3) a)设计步骤。 (3) b)界面设计。 (4) c)关键功能的实现。 (5) 六.附录。 (8) 一.设计题目。 小型计算器程序的编写. 二.设计目的和内容。 【设计目的】 1学习Visual C++的MFC开发程序的步骤。 2综合运用所学的类、继承和多态的知识。 3进一步掌握程序的调试方法。 【设计内容】 1利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 第1页

2实现算术加、减、乘、除等运算; 3选做:三角函数的运算、对数运算、指数运算、进制转换等。 三.基本功能描述。 具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果,按‘C E’键清屏。 四.设计思路。 a)首先考虑对所有按键分为两类,数字类和符号类。0,1,2,3,4,5,6,7,8,9为 数字类,+,-,*,/为符号类。数字在计算过程中最多需要保存两个,所以定义了两个double型变量num1和num2来进行存储,符号需要一个char型变量cal来存储。 b)为显示数字的编辑框设立一个double型的关联变量m_Num,为显示符号的编 辑框设立一个CString型的关联变量m_result,设立一个int型的小数点标志dotflag,设立一个int型的键入数字标志numflag,设立一个long型的小数部分权值quan,最后为了防止用户输入错误,设立一个判断输入是否为数字的int型标志mark。 c)然后考虑到在计算过程中num1和num2的储存状态有三种,num1==0和 num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0和num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时候把m_Num的值赋给num1,m_Num归零;num1!=0和num2!=0,把m_Num的值赋给num2,m_Num归零,令m_Num等于num1和num2合并后的值。

LABVIEW计算器设计报告

虚拟仪器大作业——模拟计算器 班级:电1004 姓名: 学号:20102389

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个平方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

在后面板中通过将簇中元素按产生的顺序组成一个一维数组,这样就实现了每个键与数字(0--20)之间的对应。每次按下一个键时,通过 查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程。 2、数字的键入(0~8键入1~9数字) 由于第一个输入和第二个输入所存放的地方不同(第一个存于num1,第二个存于num2→mun3再清空num2),所以有必要对此分开处理。创建2分支(真、假)的case结构。 用change控制分支的选择:在处创建局部变量并转换为读入。由于数字的键入是数据输入,change3用来保证backspace键仅对输入的数据有

第02讲 简易计算器的设计

第02讲计算器 2.1 计算器简介 大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。 图2-1 Windows XP下的标准型计算器 图2-2 Windows XP下的科学型计算器 Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。 接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置 用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。 2.2.1 界面设计 打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。 图2-1 计算器用户界面 2.2.2 属性设置 窗体和各控件的属性设置如表2-1所示。 表2-1 窗体和各控件的属性

2.3 编写代码 本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量: //****************************************************************** double num1, num2, result; // 操作数及运算结果 bool decimalFlag = false; // 判断输入的是否为小数 string myOperator; // 操作类型 //******************************************************************

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年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)参考文献:

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

简易计算器课程设计报告

《C++程序设计》(MFC)课程设计报告 设计题目:简易计算器 班级: 姓名: 学号: 指导教师: 时间:2010年6月30日

目录 1.设计目标…………………………………………………………… 2.设计内容…………………………………………………………… 3.设计思想…………………………………………………………… 4.设计说明…………………………………………………………… 5.设计步骤…………………………………………………………… 6.主要成员函数关系图……………………………………………… 7.程序主要代码……………………………………………………… 8. 难点分析…………………………………………………………… 9. 总结…………………………………………………………………

简易计算器(MFC) 1.设计目标 了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。 2.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 3. 设计思想 基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。 4.设计说明 (1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 5. 设计步骤 (1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮 (2)在生成的设计界面中加入控件,得到计算器应用界面。如图:

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

计算器java课程设计(完整版)

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

相关文档
最新文档