计算器-java程序设计..
- 格式:doc
- 大小:141.50 KB
- 文档页数:14
[java語言與程序設計]简易计算器面板小程序歸真我发表于:2011/8/1822:49:17标签(TAG):简易计算器面板java小程序/**C1.java简易计算器面板小程序*/import java.applet.*;//引入Java系统标准类库中java.applet包import java.awt.*;//引入Java系统标准类库中java.awt包import java.awt.event.*;//引入Java系统标准类库中java.awt.event包public class C1extends Applet{Label b;//标题标签对象TextField t1,t2,t3;//三个文本框对象Button btn1,btn2;//两个按钮对象CheckboxGroup se;//单选按钮组,它由四个互斥的按钮组成,用来选择计算类型。
Checkbox a,s,m,d;//四个单选按钮,分别代表加、减、乘、除四种运算。
public void init(){b=new Label("简易计算器面板设计");//创建标题标签对象t1=new TextField(13);//创建文本框1,用来输入操作数1t2=new TextField(13);//创建文本框2,用来输入操作数2t3=new TextField(13);//创建文本框3,用来输出运算结果btn1=new Button("等于");//创建按钮1“等于”,用来对输入的两操作数进行运算btn2=new Button("重置");//创建按钮2“重置”,用来清空三个文本框,并将计算类型置为初始状态(选中加法)。
se=new CheckboxGroup();//创建单选按钮组a=new Checkbox("加",true,se);//创建单选按钮:加s=new Checkbox("减",false,se);//创建单选按钮:减m=new Checkbox("乘",false,se);//创建单选按钮:乘d=new Checkbox("除",false,se);//创建单选按钮:除add(b);//添加标题标签对象到面板add(t1);//添加输入文本框对象t1到面板add(a);add(s);add(m);add(d);//添加四个单选按钮对象到面板add(t2);//添加输入文本框对象t2到面板add(btn1);//添加运算按钮对象btn1“等于”到面板add(t3);//添加输出文本框对象t3到面板add(btn2);//添加按钮对象btn2“重置”到面板}}//*~程序保存为:C1.java编译时执行:javac C1.java得到字节码:C1.class编写HTML文件:C1.html,将字节码嵌入其中。
第6章习题解答1.简述Java中设计图形用户界面程序的主要步骤。
对于设计图形用户界面程序而言,一般分为两个步骤:第一步,设计相应的用户界面,并根据需要对相关的组件进行布局;第二步,添加相关的事件处理,如鼠标、菜单、按钮和键盘等事件。
2.试说明容器与组件之间的关系。
组件(component)是图形用户界面中的各种部件(如标签、按钮、文本框等等),所有的组件类都继承自JComponent类。
容器(container)是用来放置其他组件的一种特殊部件,在java中容器用Container类描述。
3.阅读下面程序,说明其运行结果和功能。
//filename:MyFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame{public static void main(String agrs[]){JFrame f=new JFrame("简单窗体示例");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel l=new JLabel("习题1");f.getContentPane().add(l,BorderLayout.CENTER);f.pack();f.setVisible(true);}}程序的运行结果如下:4.阅读下面程序,说明其运行结果和功能。
//filename:TestButton.javaimport java.awt.*;import javax.swing.*;public class TestButton extends JFrame{JButton b1,b2;TestButton(String s){super(s);b1=new JButton("按钮1");b2=new JButton("按钮2");setLayout(new FlowLayout());add(b1);add(b2);setSize(300,100);setVisible(true);}public static void main(String args[]){ TestButton test;test=new TestButton("测试按钮"); }}程序的运行结果如下:5.阅读下面程序,说明其运行结果和功能。
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuanqi extends JFrame implements ActionListener,ItemListener{//ItemListener用于捕获带有item的组件产生的事件JTextField text;JTextField textMemory;//内存中记录boolean clickable;double memoryd;int memoryi;String copy;public jisuanqi(){super("计算器");setSize(450,230);}public void init(){clickable = true;JPanel pa1=new JPanel();pa1.setBackground(new Color(236,231,210));//设置背景色text=new JTextField("0.",38);//设置文本框长度text.setHorizontalAlignment(JTextField.RIGHT);//从右到左pa1.add("North",text);//面板添加和按钮的设置JPanel pa=new JPanel();JPanel pa2=new JPanel();JButton bt1=new JButton("Backspace");JButton bt2=new JButton("CE");JButton bt3=new JButton("c");bt3.setForeground(Color.red);bt3.setBackground(Color.gray);JButton bt4=new JButton("π");bt1.addActionListener(this);//添加监听器bt2.addActionListener(this);bt3.addActionListener(this);bt4.addActionListener(this);pa2.add(bt1);pa2.add(bt2);pa2.add(bt3);pa2.add(bt4);pa2.setLayout(new GridLayout(1,5));pa.setLayout(new BorderLayout());pa.add(pa2,"North");JPanel p1=new JPanel();p1.setLayout(new GridLayout(5,2));JButton bt5=new JButton("sin");JButton bt6=new JButton("cos");JButton bt7=new JButton("MC");JButton bt9=new JButton("MR");JButton bt11=new JButton("MS");JButton bt13=new JButton("M+");JButton bt12=new JButton("n!");JButton bt14=new JButton("%");JButton bt8=new JButton("x²");JButton bt10=new JButton("x³");bt5.addActionListener(this);//THIS的意思是指调用该类的实例对象bt6.addActionListener(this);bt7.addActionListener(this);bt8.addActionListener(this);bt9.addActionListener(this);bt10.addActionListener(this);bt11.addActionListener(this);bt12.addActionListener(this);bt13.addActionListener(this);bt14.addActionListener(this);p1.add(bt5);p1.add(bt6);p1.add(bt7);p1.add(bt8);p1.add(bt9);p1.add(bt10);p1.add(bt11);p1.add(bt12);p1.add(bt13);p1.add(bt14);pa.add(p1,"West");JPanel p = new JPanel();p.setLayout(new GridLayout(5, 5));String buttons[] = {"tan","cot","sinh","cosh","tanh","7","8","9","/","sqrt","4","5","6","*","Mod","1","2","3","-","1/x" ,"0","+/-",".","+","="};JButton btn[]=new JButton[buttons.length];for (int i = 0; i < buttons.length; i++){addButton(p, buttons[i]);pa.add(p, "Center");}pa1.add("South",pa);this.getContentPane().add(pa1);}private void addButton(Container c, String s){ JButton b = new JButton(s);c.add(b);b.addActionListener(this);}//功能的实现public void actionPerformed(ActionEvent evt){String s = evt.getActionCommand();if(s.equals("CE")||s.equals("C")){text.setText("");}////////////////////else if(s.equals("+/-"))//单击"+/-"选择输入的运算数是正数还是负数{ double x;x=Double.parseDouble(text.getText().trim());text.setText(""+(-x));}elseif (s == "sqrt") {String s1 = text.getText();if (s1.charAt(0) == '-'&& clickable == true) {text.setText("负数不能开根号");clickable = false;}elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getText()))));}else if(s.equals("x²"))//单击了"x²"按钮{ double x;x=Double.parseDouble(text.getText().trim());text.setText(""+(x*x));}else if(s.equals("x³"))//单击了"x³"按钮{ double x;x=Double.parseDouble(text.getText().trim());text.setText(""+(x*x*x));}else if(s.equals("n!"))//单击了"n!"按钮{ double x;double y=1.0;x=Double.parseDouble(text.getText().trim());for(int i=1;i<=x;i++){y*=i;}text.setText(""+y);}else if(s.equals("%"))//单击了"%"按钮{ double x;x=Double.parseDouble(text.getText().trim());text.setText(""+(x*0.01));}else if(s.equals("π"))//单击了"π"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=x*Math.PI;text.setText(""+x);}else if(s.equals("sin"))//单击了"sin"按钮{ double x;x=Double.parseDouble(text.getText().trim()); //获取文本框中内容功能除去字符串开头和末尾的空格或其他字符x=Math.sin(x*Math.PI/180);text.setText(""+x);}else if(s.equals("cos"))//单击了"cos"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=Math.cos(x*Math.PI/180);text.setText(""+x);}else if(s.equals("tan"))//单击了"tan"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=Math.tan(x*Math.PI/180);text.setText(""+x);}else if(s.equals("cot"))//单击了"sin"按钮{ double x;x=Double.parseDouble(text.getText().trim()); //获取文本框中内容功能除去字符串开头和末尾的空格或其他字符x=1/(Math.tan(x*Math.PI/180));text.setText(""+x);}else if(s.equals("sinh"))//单击了"sinh"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=Math.asin(x)*(180/Math.PI);text.setText(""+x);}else if(s.equals("cosh"))//单击了"cosh"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=Math.acos(x)*(180/Math.PI);text.setText(""+x);}else if(s.equals("tanh"))//单击了"tanh"按钮{ double x;x=Double.parseDouble(text.getText().trim());x=Math.atan(x)*(180/Math.PI);text.setText(""+x);}else if(s.equals("1/x"))//单击了"1/X"按钮{ double x;x=Double.parseDouble(text.getText().trim());if(x==0){text.setText("除数不能为零");}else{text.setText(""+(1/x));}//按下'+/-'按钮时处理if (s== "+/-" && clickable == true) {boolean isNumber = true;String s1 = text.getText();for (int i = 0; i < s.length(); i++)if (! (s1.charAt(i) >= '0' && s1.charAt(i) <= '9' || s1.charAt(i) == '.' ||s1.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {text.setText("");for (int i = 1; i < s1.length(); i++) {char a = s1.charAt(i);text.setText(text.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetext.setText('-' + s);}}//计算器有关内存操作//'MC'的操作,将内存清0elseif (s == "MC" && clickable == true) {memoryd = memoryi = 0;textMemory.setText("");}//'MS'的操作,将当前文本框内容保存入内存,显示'M'elseif (s == "MS" && clickable == true) {boolean isDot = false;textMemory.setText(" M");for (int i = 0; i < text.getText().length(); i++)if ('.' == text.getText().charAt(i)) {isDot = true;break;}//如果是double,则存入memoryd(double存储器)if (isDot == true) {memoryd = Double.parseDouble(text.getText());memoryi = 0; //保证存储器中存放最新的值}//如果是int,则存入memoryi(int存储器)else {memoryi = Integer.parseInt(text.getText());memoryd = 0; //保证存储器中存放最新的值}}//'MR'的操作,将存储器中的信息输出elseif (s == "MR" && clickable == true) {if (memoryd != 0)text.setText(Double.toString(memoryd));if (memoryi != 0)text.setText(Integer.toString(memoryi));}//'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器elseif (s == "M+" && clickable == true) {boolean isDot = false;for (int i = 0; i < text.getText().length(); i++)if ('.' == text.getText().charAt(i)) {isDot = true;break;}if (memoryi != 0) { //存储中是一个int型数if (isDot == false) //被加数是一个int型数memoryi += Integer.parseInt(text.getText());else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi + Double.parseDouble(text.getText());memoryi = 0;}}elsememoryd += Double.parseDouble(text.getText());}}elseif ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")){ // text.setText("");if (start)text.setText(s);else text.setText(text.getText() + s);start = false;}else{ if (start){ if (s.equals("-")){ text.setText(s); start = false; }else op = s;}else{double x=Double.parseDouble(text.getText());calculate(x);op = s;start = true;}}}public void calculate(double n){ if (op.equals("+")) arg += n;else if (op.equals("-")) arg -= n;else if (op.equals("*")) arg *= n;else if (op.equals("/")) arg /= n;else if (op.equals("Mod")) arg %= n;else if (op.equals("=")) arg = n;text.setText("" + arg);}private double arg = 0;private String op = "=";private boolean start = true;public void itemStateChanged(ItemEvent e){}public static void main(String args[]){JFrame frame=new JFrame();jisuanqi myMenu=new jisuanqi();myMenu.init();myMenu.setVisible(true);//设置可见}}。
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator extends JFrame{private JPanel jp;private JTextField tAdd1,tAdd2,tAdd3,tSub1,tSub2,tSub3,tMul1,tMul2,tMul3,tDiv1,tDiv2,tDiv3;private JLabel tShow,label1,label2,label3,label4,label5,label6,label7,label8;private JButton result,exit;//构造器public Calculator(){super("简易计算器");Init();}//初始化public void Init(){ //显示区tShow=new JLabel(" 感谢使用简易计算器!"); tShow.setBounds(0, 0, 300, 20);//加法区tAdd1=new JTextField(); tAdd2=new JTextField(); tAdd3=new JTextField();label1=new JLabel("+"); label2=new JLabel("=");tAdd1.setBounds(5, 25, 80, 20); label1.setBounds(85, 25, 15, 15);tAdd2.setBounds(100,25,80,20); label2.setBounds(180,25,15,15);tAdd3.setBounds(190,25,130,20);//减法区tSub1=new JTextField(); tSub2=new JTextField(); tSub3=new JTextField();label3=new JLabel("-"); label4=new JLabel("=");tSub1.setBounds(5, 50, 80, 20); label3.setBounds(85, 50, 15, 15);tSub2.setBounds(100,50,80,20); label4.setBounds(180,50,15,15);tSub3.setBounds(190,50,130,20);//乘法区tMul1=new JTextField(); tMul2=new JTextField(); tMul3=new JTextField();label5=new JLabel("*"); label6=new JLabel("=");tMul1.setBounds(5, 75, 80, 20); label5.setBounds(85,75, 15, 15);tMul2.setBounds(100,75,80,20); label6.setBounds(180,75,15,15);tMul3.setBounds(190,75,130,20);//除法区tDiv1=new JTextField(); tDiv2=new JTextField(); tDiv3=new JTextField();label7=new JLabel("/"); label8=new JLabel("=");tDiv1.setBounds(5, 100, 80, 20); label7.setBounds(85,100, 15, 15);tDiv2.setBounds(100,100,80,20); label8.setBounds(180,100,15,15);tDiv3.setBounds(190,100,130,20);result=new JButton("开始计算");result.setBounds(10,140,100,40);exit=new JButton("退出");exit.setBounds(180,140,100,40);jp=(JPanel)this.getContentPane();jp.setLayout(null);jp.add(tShow); jp.add(tAdd1); jp.add(label1); jp.add(tAdd2); jp.add(label2); jp.add(tAdd3);jp.add(tSub1); jp.add(label3); jp.add(tSub2); jp.add(label4); jp.add(tSub3); jp.add(tMul1);jp.add(tMul2); jp.add(label5); jp.add(tMul3); jp.add(label6); jp.add(tDiv1); jp.add(label7);jp.add(tDiv2); jp.add(label8); jp.add(tDiv3); jp.add(result); jp.add(exit);//动作事件exit.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSystem.exit(0);}});result.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Double d = null;String a=null,b=null;a=tAdd1.getText(); b=tAdd2.getText();if(!a.isEmpty()&&!b.isEmpty()) //if(a!=null&b!=null&&a!=""&b!="")不行{d=Double.parseDouble(a)+Double.parseDouble(b);tAdd3.setText(d+""); //将d转换为字符串型// tAdd3.setText(String.valueOf(d));}a=tSub1.getText(); b=tSub2.getText();if(!a.isEmpty()&&!b.isEmpty()){d=Double.parseDouble(a)-Double.parseDouble(b);tSub3.setText(d+"");}a=tMul1.getText(); b=tMul2.getText();if(!a.isEmpty()&&!b.isEmpty()){d=Double.parseDouble(a)*Double.parseDouble(b);tMul3.setText(d+"");}a=tDiv1.getText(); b=tDiv2.getText();if(!a.isEmpty()&&!b.isEmpty()){d=Double.parseDouble(a)/Double.parseDouble(b);tDiv3.setText(String.valueOf(d));}}});}//主函数public static void main(String[] args){Calculator cal=new Calculator();cal.setVisible(true);cal.setResizable(false);cal.setSize(330,230);cal.setLocationRelativeTo(null);cal.setDefaultCloseOperation(EXIT_ON_CLOSE);}}。
《Java课程设计》说明书
课程设计报告书目录
一、设计课题
二、设计目的
三、操作环境
四、设计场所(机房号、机器号或自己机器)
五、设计过程(设计内容及及各源代码板块)
六、本次设计中用到的课程知识点(列出主要知识点)
七、设计过程中遇到的问题及解决办法
八、设计心得总结
2.总体设计
本程序是为了实现计算器的基本功能的运行。
利用监听器去实现计算器的基本功能。
3.科学计算器界面截图:
1)功能描述
1、打开计算器。
首先是标准型的计算器,具有基本的加减乘除,开方等
基本功能。
同时,在标准型的计算器中还可以存储文本框中的内容。
如图1所示:
图1标准型计算器界面
2、在标准型的计算器界面中,进行的运算--加法运算。
如计算
2+3=5.0。
如图2
图2加法功能
3、实现减法运算.如计算:4-2=2.0 如图3
图3 减法运算
4、实现取余运算.如计算 12%20=12.0 如图4
图4取余计算
4.程序整体设计说明
【1】程序中所用到的变量
count、line1、line2、leng、input、input1 【2】代码列表:
import java.awt.FlowLayout;。
程序功能简介:从最基本的加、减、乘、除,到基本数学函数处理,再到数的进制转换处理。
代码如下/*文件名:Calculator.java*说明:简易科学计算器*/import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4));JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");button_exp=new JButton("exp");button_CE=new JButton("退格");button_cancel=new JButton("C");JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4));this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4));this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4));this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4));this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("用法");m3_Help.addActionListener(this);dialog = new Dialog(this,"提示",true); //模式窗口dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)|| e.getSource().equals(button_6)||e.getSource().equals(button_7)|| e.getSource().equals(button_8)||e.getSource().equals(button_9) ||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)){ //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("退格")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("C")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getText()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if (e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");dialog.setLocation(400,250);dialog.setVisible(true);}else //各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法double d=0;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;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框 elseSystem.exit(0);public void windowOpened(WindowEvent e) { }public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) { }public void windowClosed(WindowEvent e) { }public void windowIconified(WindowEvent e) { }public void windowDeiconified(WindowEvent e) { }public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}运行结果截图:程序功能实现:1.运用两个面板的叠加做出界面。
北邮JAVA第三次作业科学计算器(附源代码)JAVA第三次作业选题:科学计算器一、设计思路(1)布局1.数字键盘有0~9和小数点2.符号键盘有+某÷,幂,开方,lg,ln3.功能按键有清屏(AC)和删除(Del)(2)计算器流程状态转移图设定的标志位和变量有:booleannumflag=fale;//标志:是否输入数字booleanopflag=fale;//标志:是否输入运算操作符Stringt某t=null;//显示到文本框里的字符串Stringnum_t某t=\;//当前操作数的字符串形式Stringop=\;//存放输入的运算操作符num1=0;//第一个操作数num2=0;//第二个操作数privateBigDecimalbig_num1=newBigDecimal(Double.toString(0)); //解决浮点数的精度丢失问题privateBigDecimalbig_num2=newBigDecimal(Double.toString(0));1.关于操作数操作数为输入数字时会改变的数,有num1和num2。
按下运算符和控制字符,会设定当前下在键入的操作数,由opflag控制,fale表示正在操作num1,true表示正在操作num2。
初始状态下的操作数为num1。
按下AC会恢复操作数为初始状态num1。
按Delete、开方、lg、ln不会改变当前的操作数。
其中后三者只对num1有效。
其他的运算符和控制符都会使操作数为num2。
2.计算器的状态框图输入第一个数,比如53numflag=true(num1)opflag=falenum_t某t=”53”op=””t某t=”53”初始状态numflag=faleopflag=falenum_t某t=””op=””t某t=nullnum1,num2=0按下一个运算符,比如+numflag=faleopflag=truenum_t某t=””op=”+”t某t=”num1+”其中按下按=显示结果,恢复初始状态numflag=true(num1)opflag=falenum_t某t=””op=””t某t=”reult”“=”后,结果存输入第二个数,比如66入numflag=true(num2)opflag=truenum_t某t=”66”op=””t某t=”num1+66”num1,继续输入数字会在num1的结果上处理。
04747java语言程序设计一Java语言程序设计一Java是一种广泛使用的高级编程语言,由Sun Microsystems公司(现属于Oracle公司)的James Gosling在1995年首次发布。
Java语言以其跨平台性、面向对象的特性、健壮性、安全性和多线程能力而闻名。
本课程将介绍Java语言的基础知识,包括语法、数据类型、控制结构、类与对象、异常处理以及输入输出等。
1. Java语言概述Java是一种静态类型、面向对象的编程语言,设计目标是实现“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA)。
Java 程序可以在任何支持Java虚拟机(JVM)的平台上运行,这使得Java 成为了开发跨平台应用程序的理想选择。
2. Java开发环境搭建在开始编写Java程序之前,需要搭建Java开发环境。
首先需要下载并安装Java Development Kit(JDK),然后配置环境变量,确保可以在命令行中使用`javac`和`java`命令。
3. Java基本语法Java的基本语法包括变量声明、数据类型、运算符、控制语句等。
Java是一种强类型语言,所有变量在使用前必须声明其类型。
- 数据类型:Java提供了多种数据类型,包括整型(int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。
- 变量:变量是存储数据的容器,需要指定类型和名称。
- 运算符:包括算术运算符、关系运算符、逻辑运算符、位运算符等。
- 控制语句:包括条件语句(if, switch)、循环语句(for, while, do-while)。
4. 面向对象编程面向对象编程(OOP)是Java的核心特性之一。
OOP基于类和对象的概念,类是对象的蓝图,而对象是类的实例。
- 类:定义了一组具有相同属性和方法的对象的结构。
- 对象:类的实例,具有类定义的属性和方法。
计算器源代码一、计算器源代码文件名:computer1.javaimport java.awt.*;import java.awt.event.*;public class computer1 extends Frame implements ActionListener{//声明窗口类并实现动作事件接口。
Button n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;//声明数字按钮Button op,os,om,od,oe,oc;//声明操作按钮TextField tfd;//声明文本框String flg,rslt;//声明标志串、结果串Panel p1,p2,p3;//声明面板int i1,i2;float flt;computer1(){super("加减乘除计算器");n0 = new Button("0");//实现各按钮n1 = new Button("1");n2 = new Button("2");n3 = new Button("3");n4 = new Button("4");n5 = new Button("5");n6 = new Button("6");n7 = new Button("7");n8 = new Button("8");n9 = new Button("9");op = new Button("加");os = new Button("减");om = new Button("乘");od = new Button("除");oe = new Button("=");oc = new Button("c");tfd = new TextField(20);//实现文本框p1=new Panel();//实现各面板p2=new Panel();p3=new Panel();setLayout(new FlowLayout());//布局设计,用于安排按钮位置p1.add(n0);//将各数字按钮放入p1中p1.add(n1);p1.add(n2);p1.add(n3);p1.add(n4);p1.add(n5);p1.add(n6);p1.add(n7);p1.add(n8);p1.add(n9);p2.add(op);//将各操作按钮放入p2、p3中p2.add(os);p2.add(om);p2.add(od);p3.add(oe);p3.add(oc);setLayout(new BorderLayout());//布局设计,用于安排面板位置add("North",tfd);add("West",p1);add("Center",p2);add("East",p3);n0.addActionListener(this);//注册监听器到各按钮n1.addActionListener(this);n2.addActionListener(this);n3.addActionListener(this);n4.addActionListener(this);n5.addActionListener(this);n6.addActionListener(this);n7.addActionListener(this);n8.addActionListener(this);n9.addActionListener(this);op.addActionListener(this);os.addActionListener(this);om.addActionListener(this);od.addActionListener(this);oe.addActionListener(this);oc.addActionListener(this);addWindowListener(new closeWin());setSize(600,100);//确定窗口的尺寸setVisible(true);}public static void main (String args[]){new computer1();}public void actionPerformed(ActionEvent e){//处理鼠标事件的方法try{//异常处理if(e.getSource()==n0)//按数字键时tfd.setText(tfd.getText()+"0");if(e.getSource()==n1)tfd.setText(tfd.getText()+"1");if(e.getSource()==n2)tfd.setText(tfd.getText()+"2");if(e.getSource()==n3)tfd.setText(tfd.getText()+"3");if(e.getSource()==n4)tfd.setText(tfd.getText()+"4");if(e.getSource()==n5)tfd.setText(tfd.getText()+"5");if(e.getSource()==n6)tfd.setText(tfd.getText()+"6");if(e.getSource()==n7)tfd.setText(tfd.getText()+"7");if(e.getSource()==n8)tfd.setText(tfd.getText()+"8");if(e.getSource()==n9)tfd.setText(tfd.getText()+"9");if(e.getSource()==op){//按加号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "op";}if(e.getSource()==os){//按减号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "os";}if(e.getSource()==om){//按乘号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "om";}if(e.getSource()==od){//按除号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "od";}if(e.getSource()==oe){//按等号键时i2 = Integer.parseInt(tfd.getText());if(flg=="op"){rslt=Integer.toString(i1+i2);}if(flg=="os"){rslt=Integer.toString(i1-i2);}if(flg=="om"){rslt=Integer.toString(i1*i2);}if(flg=="od"){//除法需做小数处理flt=((float)i1)/((float)i2);rslt=Float.toString(flt);}tfd.setText(rslt);}if(e.getSource()==oc){//按清除键时tfd.setText("");flg = "";}}catch(Exception ex){}//扑捉到异常,但不进行处理}}class closeWin extends WindowAdapter{ //关闭窗口public void windowClosing(WindowEvent e){Frame frm=(Frame)(e.getSource());frm.dispose();System.exit(0);}}二、计算器界面三、修改后计算器界面。
java程序设计实践题目
Java程序设计实践题目可以涵盖各个方面,包括基本语法、面向对象编程、数据结构、算法等。
下面是一些常见的Java程序设计实践题目:
1. 实现一个学生管理系统,包括学生信息的录入、查询、修改和删除功能。
2. 编写一个简单的计算器程序,实现基本的加减乘除运算。
3. 设计一个图书管理系统,包括图书的录入、借阅、归还和查询功能。
4. 实现一个简单的银行账户管理系统,包括开户、存款、取款和查询余额功能。
5. 编写一个简单的日程管理程序,可以添加、删除和查询日程安排。
6. 设计一个简单的电商平台,包括商品的展示、购买和结算功
能。
7. 实现一个简单的迷宫游戏,用户通过键盘操作控制角色移动
并找到出口。
8. 编写一个简单的网络爬虫程序,可以爬取指定网站上的信息
并保存到本地。
9. 设计一个简单的在线聊天室,可以实现多人聊天和私聊功能。
10. 实现一个简单的文件管理器,包括文件的创建、复制、移
动和删除功能。
以上题目只是一些示例,你可以根据自己的兴趣和需求进行扩
展和修改。
在解决这些题目时,可以考虑代码的可读性、模块化设计、异常处理等方面,以提高程序的质量和可维护性。
希望这些题
目能够帮助你提升Java程序设计的实践能力。
@ 目录 1.课程设计目的 ........................................... 2 2.设计题目分析 ........................................... 3 2.1 题目简介 ......................................... 3 2.2 设计要求及需求分析 ............................... 3 3.课程设计内容 ........................................... 3 3.1 总体设计 ......................................... 3 计算器功能模块设计 .................................... 4 — 计算器算法流程设计 .................................... 5
类的设计 .............................................. 6 3.5代码实现: ....................................... 6 3.5 设计结果与分析 ................................... 9 4.设计心得与总结 ........................................ 10 参考文献: .............................................. 11 附录: .................................................. 12
》 1.课程设计目的 通过课程设计把知识形成系统,把自己所学的知识在实际问题中加以运用。如果自己编写的程序能够给更多的人带来方便,并且得到人们的好评,那么自己编写的程序就可以实现商品化,形成产品给更多的人利用,并实现一定的商品价值。 ; 因此本次课程设计有目的有以下几点: (1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控。 (2)提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。 (3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2.设计题目分析
2.1 题目简介 设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成家法、减法、乘法、除法。
2.2 设计要求及需求分析 》 设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。 背景需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3.课程设计内容 3.1 总体设计 本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。包含各种按钮的面板Panel p 采用4行4列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Button b=new Button();(事件监听器); 》 事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主
要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。 触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。计算器完成的是一个数学表达式,如:3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。
计算器设计外形及结构如下: 系统总体设计框架
Panel:4*4的数字及运算键 Panel2:输入及运行结果显示及倒退清空键
计算器功能模块设计 ! 以下为标准计算器的基本功能:
(1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。 (3)乘法 两个数相乘操作。 (4)除法
、 两个数相除操作。
(5)清零 清除显示框的数据。 具体的计算器功能模块图如下:
]
Panel1 ? Panel2
计算器算法流程设计 计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的button按钮选项按键输入进去,里面录入的为字符型的数据,若要进行运算,要将输入的字符转换成double型,以防运算出错。 实现计算器算法功能的流程图如下所示:
^
- ( %
计算器加 减 | 乘 除 清零
用户点击按键或键盘输入
触发事件 文本框接收
调用计算函数 文本框显示结果
开始 主界面 输入 运算数据 运算符号 结果输出 " 类的设计 class jisuan extends JFrame implements ActionListener — { };
import .*; 这三项是系统初始时需要引入的主类以达到完成界面的目的。
3.5代码实现: 1、引入主类: import .*; 。 import .*;
public class jisuan extends JFrame implements ActionListener { 2、实现计算器界面的关闭与扩展 private static final long serialVersionUID = -86457L; private class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent we) {(0);} } 【 3、建立按键并为每个按键赋予相应的字符
int i; private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1","2", "3", "-", ".", "0", "=", "+" }; JButton[] buttons = new JButton[]; JButton reset = new JButton("CE"); JTextField display = new JTextField("0"); 4、设计计算器界面 public jisuan() { & super("jisuan");
JPanel panel1 = new JPanel(new GridLayout(4, 4));
继续 for (i = 0; i < ; i++) { buttons[i] = new JButton(str[i]); (buttons[i]); } JPanel panel2 = new JPanel(new BorderLayout()); ("Center", display); ) ("East", reset);
getContentPane().setLayout(new BorderLayout()); getContentPane().add("North", panel2); getContentPane().add("Center", panel1); 5、为各个按键及显示框添加事件监听
for (i = 0; i < ; i++) buttons[i].addActionListener(this); ! (this);
(this); addWindowListener(new WindowCloser()); setSize(800, 800); setVisible(true); pack(); } 6、实现各个功能函数的调度
\ public void actionPerformed(ActionEvent e) {
Object target = (); String label = (); if (target == reset) handleReset(); else if ("09.".indexOf(label) > 0) handleNumber(label); else ^ handleOperator(label);
}
boolean isFirstDigit = true; public void handleNumber(String key) { if (isFirstDigit) (key); ) else if ((".")) && ().indexOf(".") < 0))