Calculator

package ch14;

import java.awt.BorderLayout;

import java.awt.event.*;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

import java.sql.*;

import javax.swing.*;

import java.awt.EventQueue;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.border.EmptyBorder; import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.SwingConstants;

import java.awt.Color;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.SystemColor;

import javax.swing.UIManager;

import javax.swing.border.LineBorder; import javax.swing.text.JTextComponent;

import ch14.TimeFrame.JLabelTimerTask; import https://www.360docs.net/doc/5518978065.html,mandAction; import ch14.calculatorJPanel.InsertAction;

import java.awt.event.*;

public class Calculator extends JFrame {

private JPanel contentPane;

private JMenuItem open,exit,about,jtime;

private boolean start=true;

private boolean mid=true;

private boolean flag=false;

private boolean timeflag=false;

private String lastCommand="=";

private String time;

double result;

private double num1,num2;

private JLabel lblNewLabel;

private JLabel lblNewLabel1;

private JLabel lblNewLabel2;

private JLabel label;

private String DEFAULT_TIME_FORMA T = "yyyy-MM-dd HH:mm:ss";

private int ONE_SECOND = 1000;

JTextArea jta=new JTextArea(4,10);

/**

* Launch the application.

*/

public static void main(String[] args) {

try {

Calculator frame = new Calculator();

ImageIcon imageicon=new ImageIcon("/CH/images/计算器.jpg");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLocationRelativeTo(null);

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* Create the frame.

*/

public Calculator() {

setBackground(Color.LIGHT_GRAY);

ImageIcon imageicon=new ImageIcon("/CH/images/计算器.jpg");

setTitle("个人计算器");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 379, 700);

contentPane = new JPanel();

contentPane.setBackground(Color.LIGHT_GRAY);

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

//setContentPane(contentPane);

add(contentPane,BorderLayout.CENTER);

contentPane.setLayout(null);

jta.setLineWrap(true);

jta.setWrapStyleWord(true);

JScrollPane pane=new JScrollPane(jta);

add(pane,BorderLayout.PAGE_END);

JMenuBar jmb=new JMenuBar();

setJMenuBar(jmb);

JMenu fileMenu=new JMenu("文件");

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

JMenu timeMenu=new JMenu("时间");

jmb.add(fileMenu);//将菜单添加到菜单栏上

jmb.add(helpMenu);

jmb.add(timeMenu);

fileMenu.add(open=new JMenuItem("打开"));

fileMenu.add(exit=new JMenuItem("退出"));

helpMenu.add(about=new JMenuItem("关于此简易计算器的使用"));

timeMenu.add(jtime=new JMenuItem("系统时间")); InsertAction insert=new InsertAction();

CommandAction command=new CommandAction();

open.addActionListener(command);

exit.addActionListener(command);

about.addActionListener(command);

jtime.addActionListener(command);

JPanel panel = new JPanel();

panel.setBounds(10, 180, 343, 378);

contentPane.add(panel);

panel.setLayout(new GridLayout(5, 4, 2, 2));

JButton btnNewButton_15 = new JButton("1/n"); btnNewButton_15.addActionListener(command); btnNewButton_15.setFont(new Font("楷体", Font.BOLD, 13)); panel.add(btnNewButton_15);

JButton btnNewButton_16 = new JButton("sqrt"); btnNewButton_16.addActionListener(command); btnNewButton_16.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_16);

JButton btnNewButton_17 = new JButton("n!"); btnNewButton_17.addActionListener(command); btnNewButton_17.setFont(new Font("楷体", Font.BOLD, 13)); panel.add(btnNewButton_17);

JButton btnNewButton_18 = new JButton("一键还原"); btnNewButton_18.addActionListener(command); btnNewButton_18.setFont(new Font("楷体", Font.BOLD, 11)); panel.add(btnNewButton_18);

JButton btnNewButton_7 = new JButton("7"); btnNewButton_7.addActionListener(insert);

btnNewButton_7.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_7);

JButton btnNewButton_8 = new JButton("8"); btnNewButton_8.addActionListener(insert);

btnNewButton_8.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_8);

JButton btnNewButton_9 = new JButton("9"); btnNewButton_9.addActionListener(insert);

btnNewButton_9.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_9);

JButton btnNewButton_14 = new JButton("/"); btnNewButton_14.addActionListener(command);

btnNewButton_14.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_14);

JButton btnNewButton_4 = new JButton("4"); btnNewButton_4.addActionListener(insert);

btnNewButton_4.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_4);

JButton btnNewButton_5 = new JButton("5"); btnNewButton_5.addActionListener(insert);

btnNewButton_5.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_5);

JButton btnNewButton_6 = new JButton("6"); btnNewButton_6.addActionListener(insert);

btnNewButton_6.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_6);

JButton btnNewButton_13 = new JButton("*"); btnNewButton_13.addActionListener(command); btnNewButton_13.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_13);

JButton btnNewButton_1 = new JButton("1"); btnNewButton_1.addActionListener(insert);

btnNewButton_1.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_1);

JButton btnNewButton_2 = new JButton("2"); btnNewButton_2.addActionListener(insert);

btnNewButton_2.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_2);

JButton btnNewButton_3 = new JButton("3"); btnNewButton_3.addActionListener(insert);

btnNewButton_3.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_3);

JButton btnNewButton_12 = new JButton("-"); btnNewButton_12.addActionListener(command); btnNewButton_12.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_12);

JButton btnNewButton_10 = new JButton("."); btnNewButton_10.addActionListener(insert); btnNewButton_10.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_10);

JButton btnNewButton_0 = new JButton("0"); btnNewButton_0.addActionListener(insert);

btnNewButton_0.setFont(new Font("楷体", Font.BOLD, 18)); panel.add(btnNewButton_0);

JButton btnNewButton_19 = new JButton("=");

btnNewButton_19.addActionListener(command);

btnNewButton_19.setFont(new Font("楷体", Font.BOLD, 18));

panel.add(btnNewButton_19);

JButton btnNewButton_11 = new JButton("+");

btnNewButton_11.addActionListener(command);

btnNewButton_11.setFont(new Font("楷体", Font.BOLD, 18));

panel.add(btnNewButton_11);

lblNewLabel = new JLabel(" ");

lblNewLabel.setForeground(Color.BLACK);

lblNewLabel.setBorder(new LineBorder(Color.BLACK));

lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);

lblNewLabel.setFont(new Font("楷体", Font.BOLD, 15));

lblNewLabel.setBounds(10, 25, 343, 73);

contentPane.add(lblNewLabel);

lblNewLabel1=new JLabel(" ");

lblNewLabel1.setVisible(false);

lblNewLabel1.setForeground(Color.GREEN);

lblNewLabel1.setBorder(new LineBorder(Color.GREEN));

lblNewLabel1.setHorizontalAlignment(SwingConstants.CENTER);

lblNewLabel1.setFont(new Font("楷体", Font.BOLD, 18));

lblNewLabel1.setBounds(10, 25, 343, 73);

contentPane.add(lblNewLabel1);

lblNewLabel2=new JLabel(" ");

lblNewLabel2.setVisible(true);

lblNewLabel2.setForeground(Color.RED);

lblNewLabel2.setBorder(new LineBorder(Color.RED));

lblNewLabel2.setHorizontalAlignment(SwingConstants.CENTER);

//lblNewLabel2.setFont(new Font("楷体", Font.BOLD, 18));

lblNewLabel2.setIcon(imageicon);

lblNewLabel2.setBounds(10, 100, 343, 73);

contentPane.add(lblNewLabel2);

}

private void configTimeArea() {

Timer tmr = new Timer();

tmr.scheduleAtFixedRate(new JLabelTimerTask(),new Date(), ONE_SECOND);

}

protected class JLabelTimerTask extends TimerTask{

SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMA T);

@Override

public void run() {

time = dateFormatter.format(Calendar.getInstance().getTime());

lblNewLabel1.setText("Now :"+time);

}

}

private void setIconImage(String string) {

// TODO Auto-generated method stub

}

//定义内部类,实现ActionListener接口

public class InsertAction implements ActionListener

{

public void actionPerformed(ActionEvent event)

{

String input=event.getActionCommand();

if(start)

{

lblNewLabel.setText("");

start=false;

}

lblNewLabel.setText(lblNewLabel.getText()+input);

}

}

public class CommandAction implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String command=e.getActionCommand();

if(command.equals("打开")){

jta.setText(" 欢迎来到此简易计算器系统!\nWelcome to a system of our calculator! \n请先在“帮助”菜单中点击“关于此简易计算器的运算”,在查看说明书" +

"的前提下运行此计算器。");

lblNewLabel.setText("请浏览下面文本框的信息!!!@##@!!!");

lastCommand=command;

}else if(command.equals("退出")){

System.exit(0);

}else if(command.equals("系统时间")){

jta.setText(" 欢迎来到此简易计算器系统!\nWelcome to a system of our calculator! ");

lblNewLabel.setVisible(false);

lblNewLabel1.setVisible(true);

configTimeArea();

lblNewLabel.setText("请先按下“一键还原”键,");

lastCommand=command;

}else if(command.equals("关于此简易计算器的使用")){

jta.setText("此简易计算器系统是学生基于课堂学习,课外交流及网络学习等手段由个人编写的小型Java实用程序。\n\n若运行过程中出现错误或按键不起作用,请重启本系统。\n" +

"每次运行菜单栏结束后先按下“一键还原”键,务必先输入0-9中任意一个数字并按“=”键,然后开始此简易计算器功能的实现;否则将有意想不到的错误出现。在此本人深表歉意。" +

"\n\n1.本简易Java计算器系统的主界面具有菜单栏,并实现了相应的功能,用户完全可以按照功能去实现相应功能。\n2.本简易Java计算器系统实现了系统时间的网络对时。\n" +

"3.本简易Java计算器系统具有按顺序输入并实现两个数的加、减、乘、除运算功能。\n4.本简易Java计算器系统实现单个数的求倒数、开方和平方运算功能

(在进行这三种运算前" +

"先按下单数字键,再按单运算键)。\n4.本简易Java计算器系统还具有一键还原功能,实现错误时的手动复位——重新开始。" +

"\n5.编者能力有限,一切结果,仅供参考。\n6.版权有限,维权必究。\n\n\n 陕西师范大学2013级软件工程1班\n" +

" 代成_41312154_2014年12月20日");

lblNewLabel.setText("请浏览下面文本框中的说明书。");

lastCommand=command;

lblNewLabel1.setVisible(false);

}else if(command.equals("一键还原"))

{

result =0;

lblNewLabel.setVisible(true);

lblNewLabel1.setVisible(false);

lblNewLabel.setText("0");

lastCommand=command;

}else if(command.equals("n!")){

if(Double.parseDouble(lblNewLabel.getText())==0){

result=1;}

else{

result=1;

double t=Double.parseDouble(lblNewLabel.getText());

for(int i=0;i

result=result*t;

t=t-1;

}

lblNewLabel.setText(Double.toString(result));}

}else if(command.equals("1/n")){

double t;

t=Double.parseDouble(lblNewLabel.getText());

if(t==0)

lblNewLabel.setText("分母不能为0");

else{

result=1/Double.parseDouble(lblNewLabel.getText());

lblNewLabel.setText(Double.toString(result));}

}else if(command.equals("sqrt")){

double t;

t=Double.parseDouble(lblNewLabel.getText());

if(t<0)

lblNewLabel.setText("根号下不能小于0");

else{

result=Math.sqrt(Double.parseDouble(lblNewLabel.getText()));

lblNewLabel.setText(Double.toString(result));

}

}

if(start&&mid)

{

if(command.equals("-"))

{

lblNewLabel.setText(command);

start=false;

}

else

lastCommand=command;

}

else

{

count(Double.parseDouble(lblNewLabel.getText()));

if(command.equals("一键还原"))

{

mid=true;

lastCommand="=";

}

else

lastCommand=command;

start=true;

}

}

}

public void count(double x)

{

if(lastCommand.equals("+")) result+=x;

else if(lastCommand.equals("-")) result-=x;

else if(lastCommand.equals("*")) result*=x;

else if(lastCommand.equals("/")) result/=x;

else if(lastCommand.equals("="))

{

result=x;

mid=false;

}

else

{

result+=0;

}

lblNewLabel.setText(Double.toString(result));

}

}

汇编语言实现十进制加减计算器

课程设计 题目十进制数加减计算器学院计算机科学与技术 专业计算机科学与技术 班级计算机0808班 姓名何爽 指导教师袁小玲 2010 年12 月31 日

课程设计任务书 学生姓名:何爽专业班级:计算机0808班 指导教师:袁小玲工作单位:计算机科学与技术学院 题目: 十进制数加减计算器的设计 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)十进制数加减计算器的设计。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2010年12月31日 系主任(或责任教师)签名: 2010年12月31日

十进制4位加法计数器设计

洛阳理工学院 十 进 制 4 位 加 法 计 数 器 系别:电气工程与自动化系 姓名:李奇杰学号:B10041016

十进制4位加法计数器设计 设计要求: 设计一个十进制4位加法计数器设计 设计目的: 1.掌握EDA设计流程 2.熟练VHDL语法 3.理解层次化设计的内在含义和实现 设计原理 通过数电知识了解到十进制异步加法器的逻辑电路图如下 Q3 则可以通过对JK触发器以及与门的例化连接实现十进制异步加法器的设计 设计内容 JK JK触发器的VHDL文本描述实现: --JK触发器描述 library ieee; use ieee.std_logic_1164.all; entity jk_ff is

port( j,k,clk: in std_logic; q,qn:out std_logic ); end jk_ff; architecture one of jk_ff is signal q_s: std_logic; begin process(j,k,clk) begin if clk'event and clk='0' then if j='0' and k='0' then q_s <= q_s; elsif j='0' and k='1' then q_s <= '0'; elsif j='1' and k='0' then q_s <= '1'; elsif j='1' and k='1' then q_s <= not q_s; end if; end if; end process; q <= q_s; qn <= not q_s; end one; 元件门级电路: 与门VHDL文本描述实现: --与门描述library ieee; use ieee.std_logic_1164.all;

用java编写的计算器(Calculator)

import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class Calculator { public static void main(String[] args) { new MyfirstCalculator(); } } class MyfirstCalculator { Frame f=new Frame("calculator"); TextField tf=new TextField(50); ArrayList sa=new ArrayList();//sa用来存储sb中的数据 StringBuilder sb=new StringBuilder();//sb用来存储0-9中的数据 StringBuilder sb1=new StringBuilder();//用作判断,里面数据为:+,-,*,/四个中的任意一个或多个 StringBuilder sb2=new StringBuilder();//用作判断,里面数据为:= MyfirstCalculator() { init(); } public void init() { Button b0=new Button("0"); Button b1=new Button("1"); Button b2=new Button("2"); Button b3=new Button("3"); Button b4=new Button("4"); Button b5=new Button("5"); Button b6=new Button("6"); Button b7=new Button("7"); Button b8=new Button("8"); Button b9=new Button("9"); Button ba=new Button("="); Button bb=new Button("-"); Button bc=new Button("+"); Button bd=new Button("*"); Button be=new Button("/"); //Button bf=new Button("D");//定义一个清空按钮,用来从头开始计数

实验十进制加减法计数器

实验1 十进制加减法计数器 实验地点:电子楼218 实验时间:2012年10月19日指导老师:黄秋萍、陈虞苏 实验要求:设计十进制加减法计数器,保留测试程序、设计程序、仿真结果 1.设计程序: module count(EN,CLK,DOUT,F,RST); input EN,CLK,F,RST; output [3:0]DOUT; reg [3:0]DOUT; always@(posedge CLK) begin :abc if(EN) if(!RST) if(F) begin :a DOUT=DOUT+1; if(DOUT==10) DOUT=0; end //END A else begin :b DOUT=DOUT-1; if(DOUT==15) DOUT=9; end else DOUT=0; else DOUT=DOUT; end endmodule 2.测试程序 `timescale 10ns/1ns module test_count; wire [3:0] DOUT; reg EN,F,RST,CLK; count M(EN,CLK,DOUT,F,RST); initial begin :ABC CLK=0; EN=0;

RST=1; F=1; #100 EN=1; #200 RST=0; #1500 F=0; #3000 $stop; end always #50 CLK=~CLK; initial $monitor("EN=%b,F=%b,RST=%b,DOUT%D",EN,F,RST,DOUT); endmodule 3.测试结果 # EN=0,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT 0 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=1,RST=0,DOUT 6 # EN=1,F=1,RST=0,DOUT 7 # EN=1,F=1,RST=0,DOUT 8 # EN=1,F=1,RST=0,DOUT 9 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 4 # EN=1,F=0,RST=0,DOUT 3 # EN=1,F=0,RST=0,DOUT 2 # EN=1,F=0,RST=0,DOUT 1 # EN=1,F=0,RST=0,DOUT 0 # EN=1,F=0,RST=0,DOUT 9 # EN=1,F=0,RST=0,DOUT 8 # EN=1,F=0,RST=0,DOUT 7 # EN=1,F=0,RST=0,DOUT 6 # EN=1,F=0,RST=0,DOUT 5

10进制加法计数器课程设计

西北师范大学知行学院 数字电子实践论文 课题:74ls161组成的十进制加法计数器 (置数法) 班级:14电本 学号:14040101114 姓名:于能海

指导老师:崔用明 目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (2) 1.3 设计内容及要求 (2) 第2章设计方案 (3) ....................................................................................................................... 错误!未定义书签。 2.1主要芯片功能介绍 (3) 2.2.1 四位二进制计数器74161介绍 (3) ............................................................................................................... 错误!未定义书签。 2.2 工作原理 (4) 第3章硬件设计 (4) 3.1 单元电路设计 (4) 3.2 总硬件电路图 (5) 第4章仿真与试验 (6) 4.1 仿真结果 (6) 4.2 调试中遇到的问题 (7) 第5章结论和体会 (8)

第1章前言 1.1 摘要在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的, 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 关键词:74ls161计数器 Introduction In the course of digital circuit technology, the counter memory function is the number of pulses, it is a digital system, the most widely used basic sequential logic components. The main role of the counter in the micro-computer system is to provide real-time clock for the CPU and I / O devices to achieve the timer interrupt, timing detection, scheduled scanning, the timing display timing control, or to count external events. General computer systems and computer application systems are equipped with a timer / counter circuit, it can as a counter action, but also as a timer, the basic working principle is "minus 1" count. Counter: CLK input pulse is a non-periodic event count pulses to zero when calculating unit, OUT outputs a pulse signal, to show the count is completed. The decimal addition counter is designed based on the 74161 chip, the low potential sensor senses when to rely on external signals, sensors in an object within the sensing range, otherwise it is a high potential. Within the sensing range of the sensor when an object is moved out of date, sensor potential from high to low and then high, appears on the edge. Counter is automatically incremented and displayed on a digital control. The decimal addition counters have two seven-segment LED. It can count from 0 to 99 objects, and easy to expand. The design concept of decimal addition counter is used to count on a factory assembly line products, automatic counting, convenient and simple. Keywords:74ls161counter

多功能科学计算器

学号 Java程序设计实验报告 实验六多功能科学计算器 学生姓名 专业、班级 指导教师 成绩 电子与信息工程系 2012年6月24日

实验六多功能科学计算器 一、实验目的 1.掌握Java图形组件和布局管理器的使用; 2.掌握使用Java事件处理机制的使用; 3.掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。二、实验要求 1.采用布局管理器进行界面的布局; 2.学会对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。 三、实验环境 1.计算机一台; 2.JDK、MyEclipse工具软件。 四、实验内容 1.在随堂练习的简单计算器基础上设计一个多功能计算器。包括复杂的功能:比如记忆功能,三角函数,成方,对数等等。 五、实验步骤 1.运用一种或多种布局管理器,绘制出界面; 2.为各种按钮注册事件监听器,使其点击按钮,并在显示区域同步显示当前输入或运算结果; 3.编译运行程序,检查计算器的正确性。 六、实验程序 package calculator; import java.awt.BorderLayout; import java.awt.Button; import java.awt.GridLayout; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JTextField; public class Calculator

加法计算器

十进制加法计算器设计报告 目录 1、摘要----------------------------------------------------------------------2 2、设计任务和要求--------------------------------------------------------2 3、单片机简要原理--------------------------------------------------------2 3.1 AT89C51的介绍------------------------------------------------3 3.2 单片机最小系统------------------------------------------------6 3.3 七段共阳极数码管---------------------------------------------7 4、硬件设计-----------------------------------------------------------------7 4.1 键盘电路的设计-------------------------------------------------8 4.2 显示电路的设计-----------------------------------------------9 5、软件设计------------------------------------------------------------10 5.1 系统设计------------------------------------------------------10 5.2 显示与按键设计---------------------------------------------12 6、系统调试.-------------------------------------------------------------13 6.1系统初始状态的调试------------------------------------------13 6.2键盘输入功能的调试-----------------------------------------14 6.3系统运算功能的调试------------------------------------------16 7、心得体会与总结---------------------------------------------------------16 参考文献---------------------------------------------------------------------17 附录1 系统硬件电路图--------------------------------------------------18 附录2 程序清单-----------------------------------------------------------19 -----------

Mawell场计算器系列精修订

M a w e l l场计算器系列集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

Maxwell场计算器系列之1:求单点B,画单点B随时间变化 有些人还是找不到,在这里就特别重点强调一下在ansoft12中做fft的方法:这是最简单的,根本没有特殊操作。就是在results上面右键,create report,然后把Domain里面的Sweep改成Spectral即可。我之所以在多个帖子中讲最好用Simplorer是因为它比maxwell的fft方法多,而且更灵活,如果你觉得maxwell里面的就可以,那自然好。 因为大家很多都用上了v12,我这里的步骤就按v12的写,大部分步骤在其他版本中类似:(如果想要命令脚本,修改以后多次运行,请使用tool里面的record script功能,修改脚本用记事本或写字板即可。) 0. 画点 抬头看maxwell最上面一行菜单栏,点Draw>point,可以用鼠标选择一点,或者在右下角输入坐标(直角坐标或者极坐标)。 1. 求单点B 1) 在Field Overlays上面用鼠标右键,最底下一个是Calculator,点这个打开场计算器窗口。 计算器下面有5个分类,分别是:Input、General、Scalar、Vector、Output,为了让大家不晕菜,用到哪个讲哪个。 2) 依次点Input类别里面的Quantity,然后B 3) 依次点Input类别里面的Geometry,然后point,然后选择刚画的那个点,ok 4) 点Output类别里面的Value 5) 点Output类别里面的Eval

十进制加法计数器 (3)

EDA技术与VHDL实验报告 一实验题目:十进制加法计数器 二实验目的: 设计带有异步复位和同步时钟使能的十进制加法计数器。 三实验内容: 编写十进制加法计数器的VHDL实现程序;通过电路仿真和硬件验证,了解变量的使用方法,以及“(OTHERS=>X)”的使用方法。四实验原理: 十进制加法计数器的VHDL描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) IF CQI < 9 THEN CQI := CQI + 1; --允许计数检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF; CQ<= CQI; --将计数值向端口输出END PROCESS; END behav;

简易加减计算器设计(数电)

电子技术课程设计电气与信息工程学院建筑电气与智能化专业题目:简易加减计算器设计 姓名:徐雪娇 学号:094412110 指导教师:祁林

简易加减计算器设计 一、设计目的 1、在前导验证性认知实验基础上,进行更高层次的命题设计实验. 2、在教师指导下独立查阅资料、设计、特定功能的电子电路。 3、培养利用数字电路知识,解决电子线路中常见实际问题的能力. 4、积累电子制作经验,巩固基础、培养技能、追求创新、走向实用。 5、培养严肃认真的工作作风和严谨的科学态度。 二、设计要求 1、用于两位一下十进制的加减运算。 2、以合适方式显示输入数据及计算结果。 三、总体设计 第一步置入两个四位二进制数。例如(1001)2,(0011)2和(0101)2,(1000)2,同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。 第二步通过开关选择加(减)运算方式; 第三步若选择加运算方式所置数送入加法运算电路进行运算;同理若选 择减运算方式,则所置数送入减法运算电路运算; 第四步前面所得结果通过另外两个七段译码器显示。即: 方案一 通过开关J1-J8接不同的高低电平来控制输入端所置的两个一位十进制数, 译码显示器U10和U13分别显示所置入的两个数。数A直接置入四位超前进位 加法器74LS283的A4-A1端,74LS283的B4-B1端接四个2输入异或门。四个 2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关J5-J8,通过开关J5-J8控制数B的输入。当开关S1接低电平时,B与0异或的结果为B, 通过加法器74LS283完成两个数A和B的相加。当开关J1接高电平时,B与1 异或的结果为B非,置入的数B在74LS283的输入端为B的反码,且74LS283 的进位信号C0为1,其完成S=A+B(反码)+1,实际上其计算的结果为S=A-B 完成减法运算。由于译码显示器只能显示0-9,所以当A+B>9时不能显示,我们 在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001) 时加上6(0110)2,产生的进位信号送入译码器U12来显示结果的十位,U11 2 显示结果的个位。由于减法运算时两个一位十进制数相减不会大于10,所以不 会出现上述情况,用一片芯片U11即可显示结果。 方案二 由两异或门两与门和一或门组成全加器,可实现一位二进制加逻辑运算,四 位二进制数并行相加的逻辑运算可采用四个全加器串行进位的方式来实现,将低 位的进位输出信号接到高位的进位输入端,四个全加器依次串行连接,并将最低

十进制加法计数器

十进制加法器设计 1课程设计的任务与要求 课程设计的任务 1、综合应用数字电路知识设计一个十进制加法器。了解各种元器件的原理及其应用。 2、了解十进制加法器的工作原理。 3、掌握multisim 软件的操作并对设计进行仿真。 4、锻炼自己的动手能力和实际解决问题的能力。 5、通过本设计熟悉中规模集成电路进行时序电路和组合电路设计的方法,掌握十进制加法器的设计方法。 课程设计的要求 1、设计一个十进制并运行加法运算的电路。 2、0-9十个字符用于数据输入。 3、要求在数码显示管上显示结果。 2十进制加法器设计方案制定 加法电路设计原理 图1加法运算原理框图 如图1所示 第一步 置入两个四位二进制数。例如(1001)2,(0011)2和(0101)2,(1000)2,同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。

第二步将置入的数运用加法电路进行加法运算。 第三步前面所得结果通过另外两个七段译码器显示。即: 加法运算方式,则(1000)2+(0110)2=(1110)2 十进制8+6=14 并在七段译码显示出14。运算方案 通过开关S1——S8接不同的高低电平来控制输入端所置的两个一位十进制数,译码显示器U8和U9分别显示所置入的两个数。数A直接置入四位超前进位加法器74LS283的A4——A1端,74LS283的B4——B1端接四个2输入异或门。四个2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关S5——S8,通过开关S5——S8控制数B的输入,通过加法器74LS283完成两个数A和B的相加。由于译码显示器只能显示0——9,所以当A+B>9时不能显示,我们在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001)2时加上3(0011)2,产生的进位信号送入译码器U10来显示结果的十位,U11显示结果的个位。 3十进制加法器电路设计 加法电路的实现 用两片4位全加器74LS283和门电路设计一位8421BCD码加法器。由于一位8421BCD 数A加一位数B有0到18这十九种结果。而且由于显示的关系,当大于9的时候要加六转换才能正常显示,所以设计的时候有如下的真值表:

简单计算器可视化程序编程

简单计算器

一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能 对不正确的表达式能指出其错误原因 二、流程图

图1 输入数据子函数流程图 图2 三、 设计步骤 打开Microsoft Visual C++ ,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculter 及其所在位置,点击确定,如图3所示。 N 输入数据子函数

图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。 图4 基本对话框 这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示。 图5 新建的对话框 四、界面设计 1、创建控件 在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6 Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择

十进制加减法

目录 课程设计任务书 (2) 1 问题描述 (3) 2 前期分析 (3) 3 课程设计 (3) 3.1 总体设计 (3) 3.2 模块设计 (4) 3.2.1 求和模块 (4) 3.2.2 输入十进制数模块 (5) 3.2.3 存储器清零模块 (6) 3.2.4 减法模块 (7) 4 程序源代码 (7) 5 调试与分析 (13) 6 测试结果 (13) 7 经验与体会 (15) 评分表 (16)

课程设计任务书 学生姓名:毛习均专业班级:计算机1004班 指导教师:许毅工作单位:计算机科学与技术学院题目: 十进制加减计算器 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧. 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法. 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具 体要求) 进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计.具体的设计任务及要求: 1)编写程序实现十进制数的加减法; 2)将计算结果在屏幕上显示; 3)程序采用子程序结构,结构清晰; 4)友好清晰的用户界面,能识别输入错误并控制错误的修改. 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书. 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》实验2.4 2)《IBM—PC汇编语言程序设计(第2版)》例6.11 时间安排: 设计安排一周:周1、周2:完成系统分析及设计. 周3、周4:完成程序调试,和验收. 周5:撰写课程设计报告. 指导教师签名:年月日 系主任(或责任教师)签名:年月

简单计算器

学院 课程设计 设计课程:信息系统分析与设计题目简单计算器 姓名 姓名 学院学院 专业 指导教师 二O一五年6月20 日

目录 一、概述 (4) 1.1 设计名称 (4) 1.2 编写目的 (4) 1.3 参考资料 (4) 二、需求概述 (4) 2.1 功能需求 (5) 2.2 响应需求 (5) 2.3 精度需求 (5) 2.4 故障处理 (5) 三、环境 (5) 3.1 运行环境 (5) 3.2 开发环境 (5) 四、可行性分析 (5) 五、总体设计 (6) 5.1 第一层 (6) 5.2 第二层 (6) 5.3 第三层 (6) 六、详细设计 (6) 6.1 逻辑设计 (7) 6.2 总体流程图 (7) 七、用户界面设计 (9)

7.1 界面设计 (9) 7.2 操作方式 (10) 八、调试与测试 (10) 九、源程序清单 (14) 十、小结 (17)

一、概述 1.1 设计名称 简单计算器 1.2 编写目的 设计一个计算器,具有以下功能: 1.2.1用图形界面设计一个计算器; 1.2.2系统界面上面一行是数字输入对话框和运算符号的下拉列表; 数字输入框用来编辑并显示所输入的数字,运算符号下拉列表 里面有运算符号+ — * / =,用来实现运算的进行和结束;1.2.3系统界面下面是一个文本框,用来显示输入的操作数和参与运 算的运算符号,直到运算符号为等号,输出等号和运算结果。 1.2.4对操作数与运算符号的逻辑输入和循环输入进行处理,实现四 则运算的连续运算,并且能对各个操作数和运算符号进行有效 的输出; 1.2.5当运算符号选择为“=”时,算法结束,输出最后一个操作数、 “=”和最终的运算结果。 1.3 参考资料 1.3.1 项目来源 市场上出现的各种计算器虽然具有强大的功能,但是使用操作上也增加了技术性,并且价格较贵,所以有必要用自己学习的知识来开发一个实用的计算器,使之能在界面和功能上尽量模拟windows操作系统。应用所学的有关知识,将书面知识和实际需求和应用结合起来,以达到学以致用的目的。 1.3.2 引用资料 1.3. 2.1简单计算器的需求分析,百度文库 1.3. 2.2 教程 二、需求概述 计算器是日常生活中十分便捷有效的计算工具,能实现加、减、乘、除等功能,可以用Java编程来解决该问题。

十进制数加减计算器的设计

十进制数加减计算器的设计 1 问题描述 用汇编语言设计一个十进制数加减计算器,能够实现两个二位十进制数的加减运算,并具有友好的界面。 2 设计说明 该程序数据流程图:

3 详细的算法描述 定义两个数据段,通过键盘输入,存储于AX ,BX 中,选择运算符号“+或-”,自动运算AX ,BX 中的数据,然后将结果转化为十进制输出。 (详细解释见源程序) 4 源程序与执行结果 4.1 源程序:

CURS MACRO A,B MOV AH,2 ;置光标位置 MOV BH,0 ;页号为0 MOV DH,A ;设置光标的坐标为(A.B) MOV DL,B INT 10H ;BIOS调用 ENDM ;------------------------------- DISPMSG MACRO MESSAGE LEA DX,MESSAGE ;传递MESSAGE的偏移地址MOV AH,9 ;显示字符串 INT 21H ;DOS调用 ENDM ;---------------------------------- CLEAR MACRO COLOR ;清屏 MOV AH,6 ;屏幕初始化 MOV AL,0 ;页号 MOV CH,0 ;设置左上角的坐标为(0,0) MOV CL,0 MOV DL,100 ;设置右上角的坐标为(100,100)MOV DH,100 MOV BH,COLOR ;卷入行属性 INT 10H ;BIOS调用 ENDM .MODEL SMALL

.STACK .DATA ;数据段定义 MSG0 DB '* * * * * * * * * * * * * * * * * * * *',0DH,0AH ;,0dh,0ah,0dh,0ah DB ' * *',0DH,0AH ;db '* *',0dh,0ah ;db '* *',0dh,0ah DB ' * --------COUNTER-------- *',0DH,0AH ;,0dh,0ah,0dh,0ah DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * DATA1:' DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH DB ' * DATA2:' DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH DB ' * RESULT:' DB '_______________ *',0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * *',0DH,0AH DB ' * * * * * * * * * * * * * * * * * * * *','$' MSG1 DB 'choose +,-','$'

十进制加法计数器程序

[例5.6.1] 十进制计数器的VHDL描述(sw向上是0(on);灯亮为0 )LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is PORT (cp,r:IN S TD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='0' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="1001" THEN count <="0000"; ELSE count <= count +1; END IF; end if; END PROCESS; q<= count; end Behavioral; [例5.6.1] 十进制计数器的VHDL描述(sw向上是1;灯亮为1)library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is PORT (cp,r:IN S TD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='1' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="1001" THEN count <="0000"; ELSE count <= count +1; END IF; end if; END PROCESS; q<=not count; end Behavioral;

简单计算器可视化程序编程

简单计算器 一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能

图1输入数据子函数流程图 图2 三、设计步骤 打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名Calculter及其所在位置,点击确定,如图3所示。 四、界面设计 1、创建控件 在图5所示的ResoureView选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键

此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图7所示,在该对话框中输入控件的ID值和标题属性。 图7PushButton属性 按照上面的操作过程编辑其他按钮和编辑框等对象的属性。 表1各按钮和编辑框等对象的属性

汇编语言实现十进制加减计算器的设计

十进制数加减计算器的设计

1.需求说明 (4) 2.设计说明 (4) 2.1 简要分析 (4) 2.2 概要设计 (4) 2.2.1 主要模块 (4) 2.2.2 主函数结构 (5) 3.详细的算法描述 (6) 3.1 详细的算法描述 (6) 3.2 算法流程图 (11) 3.2.1 程序流程图 (11) 3.2.2 输入函数(inputdec)流程图 (12) 3.2.3 输出函数(outputdec)流程图 (12) 3.2.4 输出算术表达式函数(show)流程图 (13) 4.源程序与执行结果 (13) 4.1 源程序 (13) 4.2 执行结果 (19) 4.2.1 测试方法 (19) 4.2.2 测试结果 (19) 5.使用说明 (20) 6.总结 (21)

1.需求说明 十进制数加减计算器的设计,要求完成: (1)用汇编语言正确编写程序,完成简单的十进制数的加减运算, (2)求能正确进行输入和输出操作,界面追求友好,尽量实现菜单操作 (3)用若干测试用例来测试程序的正确性 2.设计说明 2.1 简要分析 要正确、友好地完成用汇编语言设计十进制数的加减计算器,我们应该完成以下几个功能: (1)相关菜单及字符输出的设计 (2)十进制数的输入 (3)十进制数的输出 (4)加法运算 (5)减法运算 (6)输出运算表达式 (7)回车换行功能(因为为了控制格式,经常要用到) 2.2 概要设计 2.2.1 主要模块 (1)菜单及字符 menu db ‘|--------------------------------------|’0dh,0ah db ‘| 1.Add |’0dh,0ah db ‘| 2.Sub |’0dh,0ah db ‘| 0.Exit |’0dh,0ah db ‘|--------------------------------------|’0dh,0ah db ‘Please input your choice:$’ mess1 db 'Please input the first number: $' mess2 db 'Please input the second number: $' mess3 db 'The result is : $' mess4 db '-$' mess5 db '+$' mess6 db '=$' (2)十进制数的输入 inputdec proc 实现代码 ret

相关文档
最新文档