个人学分计算小软件0.1--使用对象在校大学生

//这是在学习Java程序设计时的一个简单的学分计算器。有兴趣的同学可以将源码粘下来,继续编写适合自己学校的学分计算器。

import java.awt.*;

import java.awt.event.*;

public class CulFrame
{
    private Frame f;
    private Label lscore,lcredit, lscale,lallscore;
    private Button breset,bload,ballload,ballreset;
    private Panel p1,p2,p3,p4,p5,p6;
    private TextField tfscore,tfcredit,tfscale,tfallscore;    
    private float sum = 0;
    private float sumscore = 0;
    
    
    public static void main(String[] args)
    {
        new CulFrame();
    }
    
    CulFrame( )
    {    
        init();        
    }

    public void init()
    {
        f = new Frame("学分计算器");
        
        lscore = new Label("成绩:");        
        lcredit = new Label("学分:");        
        lscale = new Label("所占比例:");        
        lallscore = new Label("个人总学分:");
        
        breset = new Button ("重置  ");
        bload = new Button ("载入  ");        
        ballload = new Button("已全部载入");
        ballreset = new Button("复位");
        
        
        p1 = new Panel();
        p2 = new Panel();
        p3 = new Panel();
        p4 = new Panel();
        p5 = new Panel();
        p6 = new Panel();
        
        tfscore = new TextField(10);
        tfcredit = new TextField(10);
        tfscale = new TextField(10);
        tfallscore = new TextField(10);        
        
        p1.add(lscore);
        p1.add(tfscore);
        p1.add(lcredit);
        p1.add(tfcredit);
        
        
        p2.add(breset);
        p2.add(bload);
        
        
        p3.add(lscale);        
        p3.add(tfscale);
        
        p4.add(ballload);        
        p4.add(ballreset);
        
        p5.add(lallscore);
        p5.add(tfallscore);
        
        
        
        f.setBounds(400, 300, 320, 200);

        f.add(p1);
        f.add(p2);
        f.add(p3);
        f.add(p4);
        f.add(p5);
        
        f.setLayout(new FlowLayout());
    //f.add(p3,BorderLayout.CENTER);
        myEvent();
        
        f.setVisible(true);
    }
    
    public void myEvent()
    {
        f.addWindowListener(new WindowAdapter()    //关闭窗口的监听
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
        

        
        breset.addMouseListener(new MouseAdapter() //鼠标监听重置
        {
            public void mouseClicked(MouseEvent e)
            {
                reset();
            }
        });
        
        breset.addKeyListener(new KeyAdapter()//键入回车执行重置
        {
            public void keyPressed(KeyEvent e)
            {                
                if(e.getKeyCode()== e.VK_ENTER)
                {
                    reset();
                }
            }
        });
        
        
        ballreset.addMouseListener(new MouseAdapter()//鼠标监听复位
        {
            public void mouseClicked(MouseEvent e)
            {
                allreset();
            }            
        });
        
        tfscore.addKeyListener( new KeyAdapter()
        {
            public void keyPressed(KeyEvent e)//要使用按下某个键时,使用。
            {
                int code = e.getKeyCode();
                if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9 ) &&  code != KeyEvent.VK_PERIOD)
                {
                    System.out.println("非法的字符!");
                    e.consume();
                }
            }
        });
        
        tfcredit.addKeyListener( new KeyAdapter()
        {
            public void keyPressed(KeyEvent e)//要使用按下某个键时,使用。
            {
                
                int code = e.getKeyCode();
                if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9 ) && code != KeyEvent.VK_PERIOD)
                {
                    System.out.println("非法的字符!");
                    e.consume();
                }
            }
        });
        
        tfscale.addKeyListener( new KeyAdapter()
        {
            public void keyPressed(KeyEvent e)//要使用按下某个键时,使用。
            {
                
                int code = e.getKeyCode();
                if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9 ) && code != KeyEvent.VK_PERIOD)
                {
                    System.out.println("非法的字符!");
                    e.consume();
                }
            }
        });
        
        bload.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                calculate();                
            }        
        });
        
        bload.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent e)
            {
                calculate();
            }
        });    
        
        
        bload.addKeyListener(new KeyAdapter()//键入回车执行
        {
            public void keyPressed(KeyEvent e)
            {                
                if(e.getKeyCode()== e.VK_ENTER)
                {
                    calculate();
                }
            }
        });
        
        
        ballload.addKeyListener(new KeyAdapter()//键入回车执行
        {
            public void keyPressed(KeyEvent e)
            {                
                if(e.getKeyCode()== e.VK_ENTER)
                {
                    total();
                }
            }
        });
        
        
        ballload.addMouseListener(new MouseAdapter()
        {            
            public void mouseClicked(MouseEvent e)
            {
                total();
            }
        });
        
    }    
    
    public void reset()//重置学分和成绩
    {
        tfscore.setText(" ");
        tfcredit.setText(" ");
        
    }
    
    public void allreset()//复位的方法
    {
        tfscore.setText(" ");
        tfcredit.setText(" ");
        tfscale.setText(" ");
        tfallscore.setText(" ");
        sum = 0;
    }
    
    
    public void calculate() {
//System.out.printf("sum = %.3f\n",sum);
//
//System.out.printf("sumscore = %.3f\n",sumscore);
        float credit = 0,score = 0;
        try    {            
//System.out.println("Clicked bload!");
            String str_tfscore = tfscore.getText();
            
            if(str_tfscore != null) {
//System.out.println(str_tfscore);
                score  = Float.parseFloat(str_tfscore);
//System.out.printf("score = %.3f\n",score);
            }
                
            
//System.out.println("Clicked bload!  --tfscore");
            String str_tfcredit = tfcredit.getText();
            
            if(str_tfcredit != null ) {
//System.out.println(str_tfcredit);
                credit = Float.parseFloat(str_tfcredit);
//System.out.printf("credit = %.3f\n",credit);
            }
            
            tfscore.setText(" ");
            tfcredit.setText(" ");    
//System.out.printf("%.3f\n",sum);
            sum += score*credit;
            sumscore += credit;
//System.out.printf("sum = %.3f\n",sum);
//System.out.printf("sumscore = %.3f\n", sumscore);
            
        } catch(NumberFormatException e1) {
            System.out.println("空字符串异常!");
//            e1.printStackTrace();
            
        }

    }
    
    public void total() {        
        try
        {
            String strscale = null;
            if((strscale = tfscale.getText()) != null)
            {
                float scale = Float.parseFloat(strscale );    
                
                if(sumscore != 0)
                {
//System.out.printf("sumscore = %.3f\n",sumscore);
                    sum/=sumscore;
//System.out.printf("sum = %.3f\n",sum);
                    sum*=scale;    
//System.out.printf("sum = %.3f",sum);
                }
                tfallscore.setText(String.valueOf(sum));     
            }
    
        } catch(NumberFormatException e1)
        {
//            System.out.println("比例异常");
            e1.printStackTrace();
        }    
    }    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值