当前位置:文档之家› 科学计算器

科学计算器

科学计算器
科学计算器

import java.awt.*;

import javax.swing.*;

import java.util.regex.*;

import java.awt.event.*;

import java.util.Stack;

@SuppressWarnings("serial")

public class Calculator extends JFrame

{

JFrame f1=new JFrame("计算器");

JTextField t1=new JTextField(30);

JTextField t2=new JTextField("0",20);

JTextArea history=new JTextArea();

JButton button;

JButton jbt1=new JButton("ln");

JButton jbt2=new JButton("sin");

JButton jbt3=new JButton("sih");

JButton jbt4=new JButton("cos");

JButton jbt5=new JButton("coh");

JButton jbt6=new JButton("tan");

JButton jbt7=new JButton("tah");

JButton jbt8=new JButton("π");

JMenuBar mb=new JMenuBar();

JRadioButtonMenuItem rb1;

JRadioButtonMenuItem rb2;

JRadioButtonMenuItem rb3;

JRadioButtonMenuItem rb4;

JMenuItem j1;

JMenuItem j2;

JMenuItem j3;

JMenuItem j4;

JMenu m1;

JMenu m2;

JMenu m3;

JPanel bt1=new JPanel();

JPanel bt2=new JPanel();

JPanel bt3=new JPanel();

JPanel bt4=new JPanel();

JPanel bt5=new JPanel();

JPanel jr1=new JPanel();

JPanel jr2=new JPanel();

JPanel t=new JPanel();

ButtonGroup group=new ButtonGroup();

GridBagConstraints gbc=new GridBagConstraints();

GridBagLayout gridbag=new GridBagLayout();

String str[]=new String[10];

int i;

String string;

String result;

int flag=1;

public Calculator()

{

ImageIcon icon=new ImageIcon("images/sign.jpg"); //窗口图标f1.setIconImage(icon.getImage());

bt1.setLayout(gridbag);

bt2.setLayout(gridbag);

bt3.setLayout(gridbag);

t.setLayout(new BorderLayout());

t.setBorder(BorderFactory.createLineBorder(Color.black));

bt4.setLayout(new BorderLayout());

bt5.setLayout(new BorderLayout());

jr1.setLayout(new FlowLayout());

jr2.setLayout(new FlowLayout());

f1.setLayout(new BorderLayout());

f1.setJMenuBar(mb);//主窗口

f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f1.pack();

f1.setVisible(true);

f1.setSize(334, 346);

f1.setLocationRelativeTo(null);

f1.setResizable(false);

addJTextField(t1,"North",14);

addJTextField(t2,"South",22);

addJButton1("MC",0,3,1,1,Color.red,16,new ButtonToTextAction());//设置按钮 addJButton1("MR",1,3,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("MS",2,3,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("M+",3,3,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("M-",4,3,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("←",0,4,1,1,Color.red,18,new ButtonToTextAction());

addJButton1("CE",1,4,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("C",2,4,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("±",3,4,1,1,Color.red,18,new ButtonToTextAction());

addJButton1("n!",4,4,1,1,Color.red,16,new ButtonToTextAction());

addJButton1("7",0,5,1,1,Color.blue,18,new ButtonToTextAction());

addJButton1("8",1,5,1,1,Color.blue,18,new ButtonToTextAction());

addJButton1("9",2,5,1,1,Color.blue,18,new ButtonToTextAction());

addJButton1("/",3,5,1,1,Color.red,18,new ButtonToTextAction());

addJButton1("%",4,5,1,1,Color.red,18,new ButtonToTextAction());

addJButton1("4",0,6,1,1,Color.blue,18,new ButtonToTextAction());

addJButton1("5",1,6,1,1,Color.blue,18,new ButtonToTextAction());

addJButton1("6",2,6,1,1,Color.blue,18,new ButtonToTextAction()); addJButton1("*",3,6,1,1,Color.red,18,new ButtonToTextAction()); addJButton1("1/x",4,6,1,1,Color.red,16,new ButtonToTextAction()); addJButton1("1",0,7,1,1,Color.blue,18,new ButtonToTextAction()); addJButton1("2",1,7,1,1,Color.blue,18,new ButtonToTextAction()); addJButton1("3",2,7,1,1,Color.blue,18,new ButtonToTextAction()); addJButton1("-",3,7,1,1,Color.red,18,new ButtonToTextAction()); addJButton1("=",4,7,1,2,Color.red,18,new ButtonToTextAction()); addJButton1("0",0,8,2,1,Color.blue,18,new ButtonToTextAction()); addJButton1(".",2,8,1,1,Color.red,18,new ButtonToTextAction()); addJButton1("+",3,8,1,1,Color.red,18,new ButtonToTextAction()); addJButton2(" Inv ",1,0,1,1,Color.magenta,18,new ButtonToTextAction()); addJButtonln();

addJButton2("(",3,0,1,1,Color.magenta,16,new ButtonToTextAction()); addJButton2(")",4,0,1,1,Color.magenta,16,new ButtonToTextAction()); addJButton2("Int",0,1,1,1,Color.magenta,16,new ButtonToTextAction()); addJButtonsin();

addJButtonsih();

addJButton2("x^2",3,1,1,1,Color.magenta,16,new ButtonToTextAction()); addJButton2("sqrt",4,1,1,1,Color.magenta,18,new ButtonToTextAction()); addJButton2("abs",0,2,1,1,Color.magenta,16,new ButtonToTextAction()); addJButtoncos();

addJButtoncoh();

addJButton2("x^y",3,2,1,1,Color.magenta,16,new ButtonToTextAction()); addJButton2("y√x",4,2,1,1,Color.magenta,18,new ButtonToTextAction()); addJButtontan();

addJButtontah();

addJButtonpi();

addJButton2("x^3",3,3,1,1,Color.magenta,16,new ButtonToTextAction());

addJButton2("3√x",4,3,1,1,Color.magenta,18,new ButtonToTextAction());

addJButton2("e",0,4,1,1,Color.magenta,16,new ButtonToTextAction());

addJButton2("Exp",1,4,1,1,Color.magenta,16,new ButtonToTextAction());

addJButton2("Mod",2,4,1,1,Color.magenta,16,new ButtonToTextAction());

addJButton2("log",3,4,1,1,Color.magenta,16,new ButtonToTextAction());

addJButton2("10^x",4,4,1,1,Color.magenta,18,new ButtonToTextAction());

addJButton3("A",0,0,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("B",1,0,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("C",2,0,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("D",0,1,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("E",1,1,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("F",2,1,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Mod",0,2,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("RoL",1,2,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("RoR",2,2,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Or",0,3,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Xor",1,3,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Lsh",2,3,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Rsh",0,4,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("Not",1,4,1,1,Color.gray,18,new ButtonToTextAction());

addJButton3("And",2,4,1,1,Color.gray,18,new ButtonToTextAction());

addMenu();

addJRadioButton1();

addJRadioButton2();

f1.add("Center",bt4);

f1.add("West",bt5);

bt4.setVisible(false);

bt5.setVisible(false);

f1.add("North",t);

}

private void addMenu()//设置菜单

{

m1=new JMenu("查看(V)");

m1.setMnemonic('V');

rb1=new JRadioButtonMenuItem("标准型(T) Alt+1");

rb2=new JRadioButtonMenuItem("科学型(S) Alt+2");

rb3=new JRadioButtonMenuItem("程序员(P) Alt+3");

rb4=new JRadioButtonMenuItem("历史记录(A) Alt+4");

rb1.addActionListener(new MenuItemAction());

rb2.addActionListener(new MenuItemAction());

rb3.addActionListener(new MenuItemAction());

rb4.addActionListener(new MenuItemAction());

j1=new JMenuItem("复制(C)");

j2=new JMenuItem("粘贴(P)");

j3=new JMenuItem("查看帮助(V)");

j4=new JMenuItem("关于计算器(A)");

j1.addActionListener(new MenuItemAction());

j2.addActionListener(new MenuItemAction());

j3.addActionListener(new MenuItemAction());

j4.addActionListener(new MenuItemAction());

rb1.setMnemonic('1');

rb2.setMnemonic('2');

rb3.setMnemonic('3');

rb4.setMnemonic('4');

group.add(rb1);

group.add(rb2);

group.add(rb3);

m1.add(rb1);

m1.add(rb2);

m1.add(rb3);

m1.add(rb4);

mb.add(m1);

m2=new JMenu("编辑(E)");

m2.setMnemonic('E');

j1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_ MASK));//快捷方式

j2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_ MASK));

m2.add(j1);

m2.add(j2);

mb.add(m2);

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

m3.setMnemonic('H');

j3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));

m3.add(j3);

m3.add(j4);

mb.add(m3);

}

public void addJTextField(JTextField tf,String side,int size)//设置文本框

{

tf.setHorizontalAlignment(JTextField.RIGHT);

tf.setEditable(false);

tf.setFont(new Font("微软雅黑",Font.PLAIN,size));

tf.setBorder(null);

t.add(side,tf);

}

public void addJButtonln()//可变按钮的设置

{

gbc.gridx=2;

gbc.gridy=0;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt1.setForeground(Color.magenta);

gridbag.setConstraints(jbt1,gbc);

bt2.add(jbt1);

jbt1.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt1.addActionListener(new ButtonToTextAction());

}

public void addJButtonsin()

{

gbc.gridx=2;

gbc.gridy=1;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt2.setForeground(Color.magenta);

gridbag.setConstraints(jbt2,gbc);

bt2.add(jbt2);

jbt2.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt2.addActionListener(new ButtonToTextAction());

}

public void addJButtonsih()

{

gbc.gridx=1;

gbc.gridy=1;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt3.setForeground(Color.magenta);

gridbag.setConstraints(jbt3,gbc);

bt2.add(jbt3);

jbt3.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt3.addActionListener(new ButtonToTextAction());

}

public void addJButtoncos()

{

gbc.gridx=2;

gbc.gridy=2;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt4.setForeground(Color.magenta);

gridbag.setConstraints(jbt4,gbc);

bt2.add(jbt4);

jbt4.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt4.addActionListener(new ButtonToTextAction());

}

public void addJButtoncoh()

{

gbc.gridy=2;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt5.setForeground(Color.magenta);

gridbag.setConstraints(jbt5,gbc);

bt2.add(jbt5);

jbt5.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt5.addActionListener(new ButtonToTextAction());

}

public void addJButtontan()

{

gbc.gridx=2;

gbc.gridy=3;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt6.setForeground(Color.magenta);

gridbag.setConstraints(jbt6,gbc);

bt2.add(jbt6);

jbt6.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt6.addActionListener(new ButtonToTextAction());

}

public void addJButtontah()

{

gbc.gridx=1;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt7.setForeground(Color.magenta);

gridbag.setConstraints(jbt7,gbc);

bt2.add(jbt7);

jbt7.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt7.addActionListener(new ButtonToTextAction());

}

public void addJButtonpi()

{

gbc.gridx=0;

gbc.gridy=3;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

jbt8.setForeground(Color.magenta);

gridbag.setConstraints(jbt8,gbc);

bt2.add(jbt8);

jbt8.setFont(new Font("微软雅黑",Font.PLAIN,16));

jbt8.addActionListener(new ButtonToTextAction());

}

public void addJButton2(String name,int gridx,int gridy,int gridwidth,int gridheight,Color se,int size, ActionListener action)//科学型按钮

{

gbc.gridx=gridx;

gbc.gridy=gridy;

gbc.gridwidth=gridwidth;

gbc.gridheight=gridheight;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

button=new JButton(name);

button.setForeground(se);

gridbag.setConstraints(button,gbc);

bt2.add(button);

bt4.add("South",bt2);

button.setFont(new Font("微软雅黑",Font.PLAIN,size));

button.addActionListener(new ButtonToTextAction());

}

public void addJRadioButton1()//单选按钮

{

JRadioButton jrb1=new JRadioButton("度 ");

JRadioButton jrb2=new JRadioButton("弧度 ");

JRadioButton jrb3=new JRadioButton("梯度");

ButtonGroup group1=new ButtonGroup();

group1.add(jrb1);

group1.add(jrb2);

group1.add(jrb3);

jrb1.setFont(new Font("微软雅黑",Font.PLAIN,12));

jrb2.setFont(new Font("微软雅黑",Font.PLAIN,12));

jrb3.setFont(new Font("微软雅黑",Font.PLAIN,12));

jr1.add(jrb1);

jr1.add(jrb2);

jr1.add(jrb3);

jr1.setBorder(BorderFactory.createTitledBorder (""));

}

public void addJButton3(String name,int gridx,int gridy,int gridwidth,int gridheight,Color se,int size, ActionListener action)//程序员按钮

{

gbc.gridx=gridx;

gbc.gridy=gridy;

gbc.gridwidth=gridwidth;

gbc.gridheight=gridheight;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

button=new JButton(name);

button.setForeground(se);

gridbag.setConstraints(button,gbc);

bt3.add(button);

bt5.add("South",bt3);

button.setFont(new Font("微软雅黑",Font.PLAIN,size));

button.addActionListener(new ButtonToTextAction());

}

public void addJRadioButton2()//单选按钮

{

JRadioButton jrb4=new JRadioButton("十六进制");

JRadioButton jrb5=new JRadioButton("十进制");

JRadioButton jrb6=new JRadioButton("八进制");

JRadioButton jrb7=new JRadioButton("二进制");

ButtonGroup group2=new ButtonGroup();

group2.add(jrb4);

group2.add(jrb5);

group2.add(jrb7);

jrb4.setFont(new Font("微软雅黑",Font.PLAIN,10));

jrb5.setFont(new Font("微软雅黑",Font.PLAIN,10));

jrb6.setFont(new Font("微软雅黑",Font.PLAIN,10));

jrb7.setFont(new Font("微软雅黑",Font.PLAIN,10));

jr2.add(jrb4);

jr2.add(jrb5);

jr2.add(jrb6);

jr2.add(jrb7);

jr2.setBorder(BorderFactory.createTitledBorder (""));

bt5.add("North",jr2);

}

public void addhistory()//历史记录

{

history.append(t1.getText()+"="+"\n");

history.append(t2.getText()+"\n");

history.append("***********************************\n");

}

public void addJButton1(String name,int gridx,int gridy,int gridwidth,int gridheight,Color se,int size, ActionListener action)//标准型按钮

{

gbc.gridx=gridx;

gbc.gridy=gridy;

gbc.gridwidth=gridwidth;

gbc.gridheight=gridheight;

gbc.insets=new Insets(3,3,3,3);

gbc.fill=GridBagConstraints.BOTH;

button=new JButton(name);

button.setForeground(se);

gridbag.setConstraints(button,gbc);

bt1.add(button);

f1.add("East",bt1);

button.setFont(new Font("微软雅黑",Font.PLAIN,size));

button.addActionListener(new ButtonToTextAction());

}

class MenuItemAction implements ActionListener{ //监听菜单按钮事件 public void actionPerformed(ActionEvent e)

{

Object temp = e.getSource();

if(temp==rb1)//标准型窗口

{

bt4.setVisible(false);

bt5.setVisible(false);

f1.setSize(334, 346);

}

if(temp==rb2)//科学型窗口

{

bt4.setVisible(true);

bt5.setVisible(false);

f1.setSize(710,346);

}

if(temp==rb3)//程序员窗口

{

bt5.setVisible(true);

bt4.setVisible(false);

f1.setSize(610,346);

}

if(temp==j1)

{

string=t2.getText();

}

if(temp==j2)

{

t1.setText(t1.getText()+string);

}

if(temp==j3)//帮助窗口

{

JFrame f2=new JFrame("帮助");

f2.setSize(750, 200);

f2.setResizable(false);

f2.setLocationRelativeTo(null);

f2.setVisible(true);

JTextArea text1 = new JTextArea();

text1.append("1.计算器一共有3种类型,分别是标准型,科学型和程序员,在查看菜单可以改变。\n");

text1.append("2.错误判断将在后续版本实现,请按正确运算规则使用。\n");

text1.append("2.点击历史记录可以查看进行过的运算。\n");

text1.append("3.其他使用方法请参照实物计算器说明书。\n");

text1.append("4.程序员面板功能尚未实现。");

text1.setEditable(false);

text1.setFont(new Font("楷体",Font.PLAIN,20));

text1.setForeground(Color.darkGray);

f2.add(text1);

}

if(temp==j4)//关于计算器窗口

{

JFrame f3=new JFrame("关于计算器");

f3.setSize(400, 250);

f3.setResizable(false);

f3.setLocationRelativeTo(null);

f3.setVisible(true);

JTextArea text2=new JTextArea();

text2.append("计算器版本1.0\n");

text2.append("广东工业大学软件工程专业\n");

text2.append("作者:吴家健\n");

text2.append("QQ:282605998\n");

text2.append("版权所有(C)2011\n");

text2.setEditable(false);

text2.setFont(new Font("楷体",Font.PLAIN,20)); text2.setForeground(Color.darkGray);

f3.add(text2);

}

if(temp==rb4) //历史窗口

{

JFrame f4= new JFrame("历史记录");

f4.setSize(300,350);

f4.setResizable(false);

history.setEditable(false);

history.setLineWrap(true);

f4.add(new JScrollPane(history));

f4.setLocationRelativeTo(null);

f4.setVisible(true);

}

}

}

class ButtonToTextAction implements ActionListener{ //监听按钮事件 public void actionPerformed(ActionEvent e)

{

if(e.getActionCommand()=="-") t1.setText(t1.getText()+"-");

if(e.getActionCommand()=="+") t1.setText(t1.getText()+"+");

if(e.getActionCommand()=="±") t1.setText(t1.getText()+"-");

if(e.getActionCommand()=="sqrt") t1.setText(t1.getText()+"sqrt(");

if(e.getActionCommand()=="*") t1.setText(t1.getText()+"*");

if(e.getActionCommand()=="/") t1.setText(t1.getText()+"/");

if(e.getActionCommand()==".") t1.setText(t1.getText()+".");

if(e.getActionCommand()=="1/x") t1.setText(t1.getText()+"1/");

if(e.getActionCommand()=="%") t1.setText(t1.getText()+"%");

if(e.getActionCommand()=="0") t1.setText(t1.getText()+"0");

if(e.getActionCommand()=="1") t1.setText(t1.getText()+"1");

if(e.getActionCommand()=="2") t1.setText(t1.getText()+"2");

if(e.getActionCommand()=="3") t1.setText(t1.getText()+"3");

if(e.getActionCommand()=="4") t1.setText(t1.getText()+"4");

if(e.getActionCommand()=="5") t1.setText(t1.getText()+"5");

if(e.getActionCommand()=="6") t1.setText(t1.getText()+"6");

if(e.getActionCommand()=="7") t1.setText(t1.getText()+"7");

if(e.getActionCommand()=="8") t1.setText(t1.getText()+"8");

if(e.getActionCommand()=="9") t1.setText(t1.getText()+"9");

if(e.getActionCommand()=="(") t1.setText(t1.getText()+"(");

if(e.getActionCommand()==")") t1.setText(t1.getText()+")");

if(e.getActionCommand()=="ln") t1.setText(t1.getText()+"ln(");

if(e.getActionCommand()=="sin") t1.setText(t1.getText()+"sin(");

if(e.getActionCommand()=="cos") t1.setText(t1.getText()+"cos(");

if(e.getActionCommand()=="tan") t1.setText(t1.getText()+"tan(");

if(e.getActionCommand()=="sih") t1.setText(t1.getText()+"sih(");

if(e.getActionCommand()=="coh") t1.setText(t1.getText()+"coh(");

if(e.getActionCommand()=="tah") t1.setText(t1.getText()+"tah(");

if(e.getActionCommand()=="e^x") t1.setText(t1.getText()+"e^");

if(e.getActionCommand()=="asin") t1.setText(t1.getText()+"asin("); if(e.getActionCommand()=="acos") t1.setText(t1.getText()+"acos("); if(e.getActionCommand()=="atan") t1.setText(t1.getText()+"atan("); if(e.getActionCommand()=="asih") t1.setText(t1.getText()+"asih("); if(e.getActionCommand()=="acoh") t1.setText(t1.getText()+"acoh("); if(e.getActionCommand()=="atah") t1.setText(t1.getText()+"atah("); if(e.getActionCommand()=="x^2") t1.setText(t1.getText()+"^2");

if(e.getActionCommand()=="n!") t1.setText(t1.getText()+"!");

if(e.getActionCommand()=="x^y") t1.setText(t1.getText()+"^");

if(e.getActionCommand()=="y√x") t1.setText(t1.getText()+"√");

if(e.getActionCommand()=="x^3") t1.setText(t1.getText()+"^3");

if(e.getActionCommand()=="3√x") t1.setText(t1.getText()+"3√");

if(e.getActionCommand()=="log") t1.setText(t1.getText()+"log");

if(e.getActionCommand()=="abs") t1.setText(t1.getText()+"abs(");

if(e.getActionCommand()=="Mod") t1.setText(t1.getText()+"M");

if(e.getActionCommand()=="Int") t1.setText(t1.getText()+"Int(");

if(e.getActionCommand()=="10^x") t1.setText(t1.getText()+"10^"); if(e.getActionCommand()=="π") t1.setT ext(t1.getText()+Math.PI);

if(e.getActionCommand()=="2*π") t1.setText(t1.getText()+2*Math.PI); if(e.getActionCommand()=="e") t1.setText(t1.getText()+Math.E);

if(e.getActionCommand()=="Exp") t1.setText(t1.getText()+"E");

if(e.getActionCommand()=="="&&t1.getText()!="")

{

result=returnValue(t1.getText())+"";

t2.setText("");

t2.setText(t2.getText()+returnValue(t1.getText()));

addhistory();

}

if(e.getActionCommand()=="C")

{

t2.setText("0");

t1.setText("");

for(i=0;i<9;i++)

str[i]="";

i=0;

}

if(e.getActionCommand()=="CE")

{

t1.setText("");

t2.setText("0");

}

if(e.getActionCommand()=="←")

{

if(t1.getText().length()!=0)

{

t1.setText(t1.getText().substring(0,t1.getText().length()-1));

}

}

if(e.getActionCommand()=="MC")

{

for(i=0;i<9;i++)

str[i]="";

i=0;

C++ 科学计算器-课程设计报告

DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY 课程名称:堆栈计算器 系别:计算机 年级专业:11级计算机科学与技术 学号:1150303040 姓名:蔡新云 任课教师:林励成绩: 2013 年 6 月13 日

引言 堆栈计算器 简介: 计算带括号的数学算式,可以判断优先级,错误判断等功能。友好的操作界面,美观的视觉效果。 截图 界面: 计算演示: 结果:

错误判断: 数据结构:应用了栈,做数值缓存,应用了递归处理括号内算式。其他知识:mfc界面设计;c++类的封装(.h与.cpp分离)。 编译环境:使用了vs2012,通过修改vs2010也可以打开。

程序简单流程图: (注:eval 的代码在下面。。。) 功能实现原理与代码: //栈的实现 //初始化 stack::stack(int len) { lengh=len; date=new double[len]; date[0]=0; top=0; } stack::stack() { date=new double[100]; MFC 文本框 按钮事件 = 事件 Cal.eval() 调用函数eval(),返回结果到文本框 当 =事件 发生 从文本框取出表达式到eval ()函数

date[0]=0; top=0; } //判断为空 bool stack::is_empty() { if(top==0) { return true; } return false; } //进栈 void stack::push(double number) { date[top++]=number; } //出栈 double stack::pop() { if(!is_empty()) return date[--top]; } //calculator类(核心代码) 初始化 calculator::calculator() { error="null"; } 是否为数字 bool calculator::is_num(char num) { if(num<='9' && num>='0'||num=='.') { return true; }

计算器功能键介绍

M+是计算结果并加上已经储存的数;M-是计算结果并用已储存的数字减去目前的结果;MR是读取储存的数据;MC是清除储存数据;AC,CE归零是有一个是清除现有数据重新输入,另一个是清除全部数据结果和运算符. 按钮功能 % 按百分比的形式显示乘积结果。输入一个数,单击“*”,输入第二个数,然后单击“%”。例如,50 * 25% 将显示为 12.5。也可执行带百 分数的运算。输入一个数,单击运算符(“+”、“-”、“*”或“/”), 输入第二个数,单击“%”,然后单击“=”。例如,50 + 25%(指的 是 50 的 25%)= 62.5。 1/x 计算显示数字的倒数。 A–F 在数值中输入选中字母。只有在十六进制模式为开启状态时该按钮才可用。 And 计算按位 AND。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先单击“Sta”,该按钮才可用。Backspace 删除当前显示数字的最后一位。 站将显示数字转换为二进制数字系统。最大的无符号二进制数值是将 64 位全都设置为 1。 C 清除当前的计算。 CE 清除显示数字。 cos 计算显示数字的余弦。若要计算反余弦,请使用“Inv”+“cos”。若要计算双曲余弦,请使用“Hyp”+“cos”。若要计算反双曲余弦,请 使用“Inv”+“Hyp”+“cos”。cos 只能用于十进制数字系统。 Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。 十进制将显示数字转换为十进制数字系统。 度数在十进制模式下将三角函数输入设置为度数。 dms 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。 若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分- 秒格式表示的),请使用“Inv”+“dms”。dms 只能用于十进制数字 系统。 Exp 允许输入用科学计数法表示的数字。指数限制为四位数。指数中只能使用十进制数(键 0-9)。Exp 只能用于十进制数字系统。 F-E 打开或关闭科学计数法。大于 10^32 的数总是以指数形式表示。F-E 只能用于十进制数字系统。 梯度在十进制模式中,将三角函数输入设置为梯度。 十六进制将显示数字转换为十六进制数字系统。最大的无符号十六进制数值是将 64 位全都设置为 1。 Hyp 设置“sin”、“cos”和“tan”的双曲函数。完成一次计算后自动关闭双曲函数功能。 Int 显示十进制数值的整数部分。若要显示十进制数值的小数部分,请使用“Inv”+“Int”。 Inv 设置“sin”、“cos”、“tan”、“PI”、“x^y”、“x^2”、“x^3”、

计算机科学中的数学理论

致力于打造高品质文档计算机科学中的数学理论 计算机科学中的数学理论 计算机科学中的数学理论 计算机科学中的数学理论 精品源自化学科 引言 随着计算机现代智能的高速发展,计算机已经完全融入我们的生活,甚至占据了重要领域,从国家核心科技到每个人生活的小细节,都离不开计算机的覆盖和使用。我们简单的在键盘上操作几个键,打出一系列符号命令,就能使计算机按照人类的要求,高速运行和进展,从而达到人力所不能达到的速度和正确率。 1 计算机中所需要的数学理论 计算机学科最初是来源于数学学科和电子学学科,计算机硬件制造的基础是电子科学和技术,计算机系统设计、算法设计的基础是数学,所以数学和电子学知识是计算机学科重要的基础知识。计算机学科在基本的定义、公理、定理和证明技巧等很多方面都要依赖数学知识和数学方法。计算机数学基础是计算机应用技术专业必修并且首先要学习的一门课程。它大概可分类为: 1.1 高等数学高等数学主要包含函数与极限、导数与微分、微分中值定理与导数的应用、不定积分、定积分及应用、空间解析几何与向量代数、多元函数微分法及其应用、重积分、曲线积分与曲面积分、无穷级数、微分方程等。各种微积分的运算正是计算机运算的基础。 1.3 概率论与数理统计概率统计与数理统计包含随机事件与概率、随机变量的分布和数学特征、随机向量、抽样分布、统计估计、假设检验、回归分析等。概率论与数理统计是研究随机现象客观规律并付诸应用的数学学科,通过学习概率论与数理统计,使我们掌握概率论与数理统计的基本概念和基本理论,初步学会处理随机现象的基本思想和方法,培养解决实际问题的能力。这些都是计算机编程过程中不可或缺的基础理论知识和技能。 2 计算机编程中数学理论的应用 计算机的主要专业知识包括计算机组成原理、操作系统、计算机网络、高级语言程序设计、数据结构、编译原理、数据库原理、软件工程等。计算机程序设计主要包括如:C语言、C++、JA V A、编译语言、汇编语言等编程语言的基本概念、顺序结构程序设计、分支结构程序设计、循环结构设计、函数、指针、数组、结构、联合以及枚举类型、编译预处理、位运算、文件等内容,掌握利用各种编程语言进行程序设计的基本方法,以及编程技巧。算法是编程的核心,算法的运用离不开数学,数学运算正是编程的基础。 计算机科学是对计算机体系,软件和应用进行探索性、理论性研究的技术科学。由于计算机与数学有其特殊的关系,故计算机科学一直在不断地从数学的概念、方法和理论中吸取营养;反过来,计算机科学的发展也为数学研究提供新的问题、领域、方法和工具。近年来不少人讨论过数学与计算机科学的关系问题,都强调其间的密切联系。同时,人们也都承认,计算机科学仍有其自己的特性,它并非数学的一个分支,而有自身的独立性。正确说法应该是:由于计算机及程序的特殊性,

科学计算器壳套模具设计

二、注射机的选择 塑件:科学计算器壳套 重量: 材料:ABS 材料密度:~cm3,取密度为cm3。 体积:V=M/ρ==。 ABS 注塑模工艺条件 注射机类型:螺杆式注射机。 干燥处理:吸湿性较大,成型前应干燥处理,湿度应小于%,建议干燥条件为80~85℃, 2~3小时。 熔化温度:230~300℃。 模具温度:50~80℃。 注射压力:70~100MPa 。 注射速度:中等注射速度,将摩擦热降至最低。 型腔数的选择 按生产进度算: 型腔数n= 其中 ——故障系数; ——成型周期 N ——一副模具的订货量; ——所在厂每月工作时间(h); ——订货至交货 期(月); ——模具制造时间(月)。 由于计算器壳套的体积较大,需要的注射量较大,所以模具选用一模两腔。 注射机的选择 最大注射量 根据生产经验总结,在设计模具以容量计算时 ——注射机最大注射量,cm3; 0*1.053600() c h m N t t t t ?-c t h t 0t max V 0.8V ≤塑

——塑件与浇注系统体积总和,cm3。 ——塑件成型时所需要的注射量,cm3或g ; n ——型腔个数; ——每个塑件的质量或体积,cm3或g ; ——浇注系统的质量或体积,cm3或g 。 浇注系统凝料体积初步计算,按塑件体积倍计算。 代入产品体积,浇注系统体积,型腔数为4个。 则 3345.8830.882.13(4cm cm G =+?=)塑 3max 56.1108.045.888.0cm G G =÷=÷=塑 公称注射容量 注射机多以公称注射容量来表示 c ——料筒温度下塑料的体积膨胀率的矫正系数,对于结晶形塑料,c=;对于非结晶形 塑料,c=; ——所用塑料在常温下的密度; G ——注射机的公称注射容量。 代入 3/05.1cm g =ρ, 取c=; 则 3max 96.107)05.193.0/(56.110/cm c G G =?==ρ。 锁模力 模具从分型面涨开的力必须小于注射机规定的锁模力 T ——注射机的额定锁模力; F ——塑件与浇注系统在分型面上的总投影面积; K ——安全系数,通常取~; q ——熔融塑料在模腔内的压 力,. 代入数据, 22237.15855.34cm cm F =??=π 根据《塑料成形模具设计》表4-1,取q=300 G =n *M +M 塑塑浇 max G c G ρ=1000 T K F q ≥??2/kg cm 2 /kg cm

数据结构课程设计计算器

数据结构课程设计报告 实验一:计算器 设计要求 1、问题描述:设计一个计算器,可以实现计算器的简单运算,输出并检验结果的正确性,以及检验运算表达式的正确性。 2、输入:不含变量的数学表达式的中缀形式,可以接受的操作符包括+、-、*、/、%、(、)。 具体事例如下: 3、输出:如果表达式正确,则输出表达式的正确结果;如果表达式非法,则输出错误信息。 具体事例如下: 知识点:堆栈、队列 实际输入输出情况: 正确的表达式

对负数的处理 表达式括号不匹配 表达式出现非法字符 表达式中操作符位置错误 求余操作符左右出现非整数 其他输入错误 数据结构与算法描述 解决问题的整体思路: 将用户输入的中缀表达式转换成后缀表达式,再利用转换后的后缀表达式进行计算得出结果。 解决本问题所需要的数据结构与算法: 用到的数据结构是堆栈。主要算法描述如下: A.将中缀表达式转换为后缀表达式: 1. 将中缀表达式从头逐个字符扫描,在此过程中,遇到的字符有以下几种情况: 1)数字 2)小数点 3)合法操作符+ - * / %

4)左括号 5)右括号 6)非法字符 2. 首先为操作符初始化一个map priority,用于保存各个操作符的优先级,其中+ -为0,* / %为1 3. 对于输入的字符串from和输出的字符串to,采用以下过程: 初始化遍历器std::string::iterator it=infix.begin() 在当it!=from.end(),执行如下操作 4. 遇到数字或小数点时将其加入到后缀表达式: case'1':case'2':case'3':case'4':case'5':case'6':case'7':case '8':case'9':case'0':case'.': { to=to+*it; break; } 5. 遇到操作符(+,-,*,/,%)时,如果此时栈顶操作符的优先级比此时的操作符优先级低,则将其入栈,否则将栈中的操作符从栈顶逐个加入到后缀表达式,直到栈空或者遇到左括号,并将此时的操作符加入到栈中,在此过程中需判断表达式中是否出现输入错误: case'+':case'-':case'*':case'/':case'%': { if((it+1)==from.end()) { cout<<"输入错误:运算符号右边缺少运算数"<

计算机科学与技术专业课程设计

专业教育 ─我所认识的计算机专业 1.对专业的最初认识 1.1为什么选择计算机专业 计算机使当代社会的经济、政治、军事、科研、教育、服务等方面在概念和技术上发生了革命性的变化,对人类社会的进步已经并还将产生极为深刻的影响。目前,计算机是世界各发达国家激烈竞争的科学技术领域之一。 随着信息时代的到来,计算机逐渐成为技术及科学领域的核心。随着计算机的普及,其应用领域逐渐广泛,深刻影响着我们的学习,工作及生活。因而,计算机的学习与我们的生活息息相关。 1.2最初的认识 虽然对于这个专业刚开始的时候不了解它具体是干什么的,但是从小就对于计算机十分感兴趣,因此在高考完填报志愿时就报了这个专业。进入大学之后,看到培养计划发现这个专业应用还是挺多的,但是因此让自己更加的对以后的职业感到很迷茫,不知道究竟是该干什么了。但是既来之,则安之。相信在以后的学习过程中会慢慢地找到方向,并为之努力的。因此说对于计算机专业还是抱有很大的热情的。 2.学习的方法 2.1培养对专业的兴趣 俗话说兴趣是最好的老师,因此要想真正做好一件事情,学好自己的专业首先就要培养自己对本专业的兴趣。那么应该如何培养呢?可能阅读专业书籍对于刚刚步入大学的自己来说有点困难,也很枯燥,那么不妨先从科普书籍看起。科普书籍是了解理论、获得应用知识最好的途径。相信不少理工科的同学被量子物理和相对论搞得头昏脑胀过。究其原因,是我们的现实生活与抽象的数学模型之间存在思想意识上的鸿沟。然而要是读读斯蒂芬·霍金的《时间简史》,你就会被书中有趣的故事和例证所吸引,从而对抽象的理论有了感性的认识——即使仍然没有读懂,你也至少了解了这个学科研究的领域和目标是什么,也必然有所收获。 2.2认真学习专业课程,学好数学 大学计算机专业对数学的要求较高,其重要性不必多言。数学令不少同学头痛,除了其“繁”与“难”外,很大程度上是因为他们没有理解这些抽象理论的实际应用方向。与本科数学专业的课程设置相比,计算机专业的数

科学计算器的科学用法

科学计算器在统计学中的应用 一.均差、方差的算法 如图中所圈出的按键是计算均值和方差过程中所需要用的键,下面开始具体的操作讲解。1.首先进入方差分析的计算模式 打开科学计算器——MODE键——此时会出现三个选项(COMP/SD/REG),直接按数字键2就可以进入方差分析的模式。 PS:观察计算器的顶端位置会出现SD字样,说明已经进入该计算模式 2.录入待计算数据(此处以22,12,54,34,43,23六个数为例)

直接输入第一个数字22——按M+键输入第二个数字12——按M+键输入第三个数字54,依次类推,到最后一个数字结束时按M+键结束 3.进行计算 数据录取完毕之后按shift键(部分计算器是2ndf)——按数字键2此时会出现三个选项x、x6n和x6n-1,其中第一个就是所求的均值,第三个就是所求的样本方差 点击数字键1然后输入等号就可以得到均值 点击数字键3然后输入等号就可以得到方差 值得注意的是计算完均值需要输出方差的时候需要先按shift键再按数字键3才可以的 此处例子的均值为31.11,方差为15.41 4.强调(恢复初始状态) 在用科学计算器进行均值和方差的计算时,在每次计算完毕之后需要将计算器恢复到默认状态,然后再进行其他的计算。 首先按shift键——然后按MODE键,此时已经进清除状态,界面会显示三个状态,分别是Mcl、Mode和All,选择其中任意一个然后输入=键就完成了相应的清除功能了。 选择2就是清除了方差和均值的计算模式, 选择3则清除了你对计算器所有的设置,回到了默认状态 另外,如果在一次方差和均值计算中不小心输错了数据,则需要首先清除方差均值计算模式,再次进入后重新计算,否则容易出现错误。二.排列组合的运算 排列组合所需要的是nPr、nCr这两个函数,,他们为同一个按键,按shift可以相互转换。其中nPr在计算排列即A n m时用到,而nCr则是在计算组合即C n m时用到,此处分别以( m=5、n=2)进行举例计算

计算机科学计算答案 第一章 绪论

矩阵与数值分析学习指导和典型例题分析

目录 第一章误差分析与向量与矩阵的范数 (1) 1. 1.1内容提要 ................................. 错误!未定义书签。 2. 1.2典型例题分析 ............................. 错误!未定义书签。 3. 1.3习题 ..................................... 错误!未定义书签。 4. 1.4习题解答 ................................. 错误!未定义书签。第二章矩阵变换与计算................................ 错误!未定义书签。 5. 2.1内容提要 ................................. 错误!未定义书签。 6. 2.2典型例题分析 ............................. 错误!未定义书签。 7. 2.3习题 ..................................... 错误!未定义书签。 8. 2.4习题解答 ................................. 错误!未定义书签。第三章矩阵分析...................................... 错误!未定义书签。 9. 3.1内容提要 ................................. 错误!未定义书签。 10.3.2典型例题分析 ............................. 错误!未定义书签。 11.3.3习题 ..................................... 错误!未定义书签。 12.3.4习题解答 ................................. 错误!未定义书签。第四章逐次逼近...................................... 错误!未定义书签。 13.4.1内容提要 ................................. 错误!未定义书签。 14.4.2典型例题分析 ............................. 错误!未定义书签。 15.4.3习题 ..................................... 错误!未定义书签。 4.4习题解答..................................... 错误!未定义书签。第五章插值与逼近.................................... 错误!未定义书签。 16.5.1内容提要 ................................. 错误!未定义书签。 17.5.2典型例题分析 ............................. 错误!未定义书签。 18.5.3习题 ..................................... 错误!未定义书签。 5.4习题解答..................................... 错误!未定义书签。第六章插值函数的应用................................ 错误!未定义书签。 19.6.1内容提要 ................................. 错误!未定义书签。 20.6.2典型例题分析 ............................. 错误!未定义书签。 21.6.3习题 ..................................... 错误!未定义书签。 6.4习题解答..................................... 错误!未定义书签。第七章常微分方程数值解.............................. 错误!未定义书签。 22.7.1内容提要 ................................. 错误!未定义书签。 23.7.2典型例题分析 ............................. 错误!未定义书签。

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于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 程序清单..................................

计算机科学和数学的关系

计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。但不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical underpinning of computer science(计算机科学的数学基础)——也就是理论计算机科学。 现代计算机科学和数学的另一个交叉是计算数学/数值分析/科学计算,传统上不包含在理论计算机科学以内。所以本文对计算数学全部予以忽略。最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关系是如此密切,以至于它们在不少场合下成为同义词。传统上,数学是以分析为中心的。数学系的同学要学习三四个学期的数学分析,然后是复变,实变,泛函等等。实变和泛函被很多人认为是现代数学的入门。在物理,化学,工程上应用的,也以分析为主。 随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的对象是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。人们从而称这些分支为“离散数学”。“离散数学”的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为“连续数学”。 离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学科: 1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基础。 2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机科学的核心是算法,而大量的算法建立在图和组合的基础上。 3) 抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中,人们惊讶地发现代数竟然有如此之多的应用。但是,理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗?一直到大约十几年前,终于有一位大师告诉我们:不是。 D.E.Knuth在Stanford开设了一门全新的课程Concrete Mathematics。Concrete 这个词在这里有两层含义: 第一,针对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以他只能自己去创造一些数学。为了直接面向应用的需要,他要提倡“具体”的数学。 在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题--公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映射都是什么样的,数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就是这些具体的东西。Knuth 能够首先看到这一点,不愧为当世计算机第一人。 第二,Concrete是Continuous(连续)加上discrete(离散)。不管连续数学还是离散数学,都是有用的数学!

微机课设简易计算器

微机课程设计报告 题目简易计算器仿真 学院(部)信息学院 专业通信工程 班级2011240401 学生姓名张静 学号33 12 月14 日至12 月27 日共2 周 指导教师(签字)吴向东宋蓓蓓

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

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

科学计算器使用

科学计算器使用 Prepared on 22 November 2020

第一章科学计算器使用第一节计算器下载与安装及标准型的界面打开简介 科学计算器在华军软件园>教育教学>理科工具>科学计算器多功能版可下载安装。 科学计算器在计算机中本身就带有该软件【在电脑屏幕的开始按钮按一下出现下拉菜单程序在下拉附件下拉计算器】也可在计算机直接使用后面好详细介绍. 科学计算器 普通计算器只能进行(+)、减(-)、乘(×)、除(÷)、根号开方(√)等一些简单计算,这些当然可以满足日常使用,但是对于其他一些高级或是学术性的数学则无能为力,所以有的人就开发了科学计算器,可以进行圆周率(π)、倒数(1/x)正弦(Sin)余弦(COS)多级幂指数或科学计算器开n次方根等复杂计算,利用电脑的强大计算

能力,可以轻松得到答案,还省去了买计算器的花 该步骤可在下图表中搜索。 计算机中有一个小软件——计算器,除了最基本的加减乘数运算之外,它还可以进行乘方、指数、三角函数、统计甚至程序员运算等等方面的运算,还可以对程序进行异或,逻辑判断与移位操作。下面具体介绍一种类型的计算器使用方法——标准型。 课堂练习打开计算器的标准型科学型界面 第二节功能区域划分 1标准型计算器:区域划分 图1 标题栏:即所使用程序的名称。 菜单栏: 查看:根据不同用户需求变换计算器类型。

编辑:可以对用户粘贴板内容进行复制剪切,并能查看用户所做过的历史操作。 帮助:提供计算器的信息以及基本的计算器使用说明。 显示区:显示用户输入的数据以及最终运算结果 记忆存储区: MC:清除用户之前存储在计算器内的数据。 MR:读取用户存储的数据并显示到显示区。 MS:存储用户输入的数据。 M+:将存储的数据与用户现在输入的数据之和替换存储到计算器。 M-:将存储的数据减去用户现在输入的数据所得结果替换存储到计算器 清除区: ←:删除用户输入数据的最后一位。 CE:清除所有显示的数据。 C:清除所有数据。 运算符号区: ±:更改输入数据的正负。 √:对输入的数据进行开方运算。 /:对输入的数据进行除法运算。

计算机科学计算答案 第一章 绪论

计算机科学计算答案第一章绪论 矩阵与数值分析学习指导和典型例题分析目录第一章误差分析与向量与矩阵的范数 (1) 1. 内容提要................................. 错误!未定义书签。 2. 典型例题分析............................. 错误!未定义书签。 3. 习题..................................... 错误!未定义书签。 4. 习题解答................................. 错误!未定义书签。第二章矩阵变换与计算................................ 错误!未定义书签。 5. 内容提要................................. 错误!未定义书签。 6. 典型例题分析............................. 错误!未定义书签。 7. 习题..................................... 错误!未定义书签。 8. 习题解答................................. 错误!未定义书签。第三章矩阵分

析...................................... 错误!未定义书签。9. 内容提要................................. 错误!未定义书签。10. 典型例题分析............................. 错误!未定义书签。11. 习题..................................... 错误!未定义书签。12. 习题解答................................. 错误!未定义书签。第四章逐次逼近...................................... 错误!未定义书签。13. 内容提要................................. 错误!未定义书签。14. 典型例题分析............................. 错误!未定义书签。15. 习题..................................... 错误!未定义书签。习题解答..................................... 错误!未定义书签。第五章插值与逼近.................................... 错误!未定义书签。16. 内容提要................................. 错误!未定义书签。17. 典型例题分析............................. 错误!未定义书签。18. 习题..................................... 错误!未定义

基于安卓的计算器的设计与实现

安卓应用程序设计 ——简易计算器的实现院(系)名称 专业名称 学生姓名 学生学号 课程名称 2016年6月日

1.系统需求分析 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android 的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。基于android的计算器的设计,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。 2.系统概要设计 2.1计算器功能概要设计 根据需求,符合用户的实际要求,系统应实现以下功能:计算器界面友好,方便使用,,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有清除功能。 图2.1系统功能图 整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。 输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及 响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结

VB程序语言设计科学计算器

VB程序语言设计 课程大作业 题目名称:科学计算器设计 班级: 12020742 姓名: 学号: 课程教师:温海骏 学期:2014-2015学年第2学期 完成时间: 2015年5月

一、实验内容 《科学计算器》设计 本科学计算器是一种能实现加、减、乘、除、倒数、乘方、正玄、余玄、正切、In、n!函数、进制、弧度转换等运算功能,并带有存储器、统计框等,基本实现了Windows自带计算器的所有功能。要实现计算器的这些功能就用到我们所学的VB知识编写程序来实现运算功能并解决问题,也是我们实训要达到的目的。 二、实验目的 1、通过本实验,进一步理解Visual Basic的编程方法。 2、提高运用Visual Basic编程的能力。 3、培养对所学知识的综合运用能力。 4、用所学的VB知识编写程序来实现运算功能并解决问题,达到实训的目的 三、实验设备 计算机、VB软件 四、实验过程 1、课题的选材过程(设计思路) 由VB程序设计的科学计算器是一种能实现加、减、乘、除、倒数、乘方、正玄、余玄、正切、In、n!函数、进制、弧度转换等运算功能,并带有存储器、统计框等,基本实现了Windows自带计算器的所有功能。 思路:为实现上述功能,我的基本思路是在窗体上建立4个控件数组,第一个控件数组是标准型,实现简单的四则运算;第二个控件数组是科学型,用来进行正弦余弦、正切余切、正割余割、反正弦反余弦、对数和n!等函数功能;第三个控件数组为程序员,实现进制转换;另外一个按钮实现单位转换。 2、设计的将要达到的目标 实现加、减、乘、除、倒数、乘方、正玄、余玄、正切、In、n!函数、进制、弧度转换等运算功能,并带有存储器、统计框等,基本实现Windows自带计算器的所有功能。 3、总体设计结构与功能 (1)总体设计结构介绍(绘制:结构流程图) 结构流程图如下:

计算机科学

计算机科学(Computer Science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。[1][2]它通常被形容为对那些创造、描述以及转换信息的算法处理的系统学习。计算机科学包含很多分支领域;其中一些,比如计算机图形学强调特定结果的计算,而另外一些,比如计算复杂性理论是学习计算问题的性质。还有一些领域专注于挑战怎样实现计算。比如编程语言理论学习描述计算的方法,而程序设计是应用特定的编程语言解决特定的计算问题,人机交互则是专注于挑战怎样使计算机和计算变得有用、可用,以及随时随地为人所用。 有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序。 早期计算机科学创建的基础得追溯到现代电子计算机的发明。那些计算固定数值任务的机器,比如算盘,自古希腊时期即已存在。Wilhelm Schickard在1623年设计了世界上第一台机械计算器,但没有完成它的建造。[4]布莱兹·帕斯卡在1642年设计并且建造了世界上第一台可以工作的机械计算器Pascaline。Ada Lovelace协助[5]查尔斯·巴贝奇在维多利亚时代设计了差分机。[6] 1900年左右,打孔机[7]问世。然而以上这些机器都局限在只能完成单个任务,或者充其量是所有可能任务的子集。 到了20世纪40年代,随着更新更强大的计算机器被发明,术语“计算机”开始用于指代那些机器而不是它们的祖先。[8]计算机的概念变得更加清晰,它不仅仅用于数学运算,总的来说计算机科学的领域也扩展到了对于计算的研究。20世纪50年代至20世纪60年代早期,计算机科学开始被确立为不同种类的学术学科。[9]世界上第一个计算机科学学位点由普渡大学在1962年设立。[10]随着实用计算机的出现,很多计算的应用都以它们自己的方式逐渐转变成了研究的不同领域。 虽然最初很多人并不相信计算机可能成为科学研究的领域,但是随后的50年里也逐渐被学术界认可。[11]IBM公司是那段时期计算机科学革命的参与者之一。在那段探索时期,IBM(International Business Machines的缩写)发布的IBM 704以及之后的IBM 709计算机被广泛使用。“不过,使用IBM电脑工作仍然是一件很沮丧的事情。如果你弄错了一条指令中的一个字母,程序将会崩溃,而你也得从头再来。”[11]到了20世纪60年代后期,计算机科学学科得到了长足发展,这在当时是一件很寻常的事情。 随着时间的推移,计算机科学技术在可用性和有效性上都有显著提升。现代社会见证了计算机从仅仅由专业人士使用到被广大用户接受的重大转变。最初,计算机非常昂贵,要有效利用它们,某种程度上必须得由专业的计算机操作员来完成。然而,随着计算机变得普及和低廉,已经几乎不需要专人的协助,虽然某些时候援助依旧存在。 虽然计算机科学被认定为正式学术学科的历史很短暂,但仍对科学和社会作出了很多基础贡献。包括: ?“数字革命”的开端:信息时代与互联网。[13] ?对于计算和可计算理论的正式定义,证明了存在计算上不可解及难解型问题。[14]?编程语言的概念,一种在不同抽象级别上精确表达方法信息(methodological information)的工具。[15]

相关主题
文本预览
相关文档 最新文档