學生成績判定-java swing初級編程

有個專科學生讓我幫他指導一下作業,題目是專做一個簡單的界面,輸入成績進行判定。代碼文後可以直接下載。(90-100分優秀,80-90分良好,70-80分中等,60-70分及格,60分以下爲不及格)如圖下所示:

雖然我做程序有幾年了,但是我還真的沒有用過java swing寫過項目。可是我有不太會拒絕別人,於是就答應幫忙做一下。這個東西我搜資料+實現,用了不到40分鐘。同樣是沒有做過swing的,我給大家分享一些經驗。

這個作業的核心是寫出個界面,點擊按鈕獲取輸入的成績,進行邏輯處理,然後顯示判斷結果。邏輯判斷這塊對我來說沒有問題,要不白做這麼多年程序了,最難的就是寫出個界面。那我就想到了學程序必做的經典demo登錄註冊。看了網上的代碼,我知道了JFrame是窗體,JPanel是一種輕量級容器,JLabel是標籤,JTextField是輸入框,JButton是按鈕,ActionListener是點擊事件,GridLayout是網格佈局。於是我就創建了四行一列的網格佈局,把這些組件擺放好,接着就把點擊後的邏輯判斷加上,最後顯示結果。

運行結果如下圖:


解決問題的關鍵就是你知道這個程序哪裏你能解決,哪裏你解決不了,對症下藥。對於初學者,只不過你不知道你卡在哪裏了,所以無從下手。其實有些問題並不是很難,做程序的要給自己信心。


直接上代碼,裏面註釋很全的,適合初學者。

百度盤下載鏈接: https://pan.baidu.com/s/1nSLrqmYpvvC5WRSjecMJKw 密碼: z2sp

package com.queryscore;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
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 Score {
    
    public static JLabel jlb22 ;//顯示結果的
    
    public static void main(String[] args) {
        
        JFrame frame = new JFrame();
        frame.setSize(300, 250);//窗體大小  
        frame.setTitle("學生成績判定");//窗體標籤  
        frame.setLayout(new GridLayout(4, 1));//網格式佈局  
        frame.setLocationRelativeTo(null);//在屏幕中間顯示(居中顯示)
       
        JPanel panel1 = new JPanel();//
        JPanel panel2 = new JPanel();//
        JPanel panel3 = new JPanel();//
        JPanel panel4 = new JPanel();//
        
        //第一行
        JLabel label1 = new JLabel("學生成績判定");
        label1.setFont(new Font("黑體", Font.BOLD,   26));   
        panel1.add(label1);
        
        //第二行
        JLabel jlb1 = new JLabel("請輸入學生成績:");
        jlb1.setFont(new Font("宋體", Font.BOLD,   20));  
        final JTextField jtf1=new JTextField(4); //創建文本框  
        jtf1.setFont(new Font("宋體", Font.BOLD,   20));  
        panel2.add(jlb1);
        panel2.add(jtf1);
        
        //第三行
        JLabel jlb2 = new JLabel("學生成績等級:");
        jlb2.setFont(new Font("宋體", Font.BOLD,   20));  
        jlb22 = new JLabel("待定");
        jlb22.setFont(new Font("宋體", Font.BOLD,   22));
        jlb22.setForeground(Color.red);
        panel3.add(jlb2);
        panel3.add(jlb22);
        
        //第四行創建按鈕  
        JButton jb1 = new JButton("查詢");  
        JButton jb2 = new JButton("取消");
        jb1.setFont(new Font("宋體", Font.PLAIN,   18));
        jb2.setFont(new Font("宋體", Font.PLAIN,   18));
        jb1.setFocusPainted(false); //設置不繪製焦點
        jb2.setFocusPainted(false); //設置不繪製焦點
        panel4.add(jb1);
        panel4.add(jb2);
        
        frame.add(panel1);
        frame.add(panel2);
        frame.add(panel3);
        frame.add(panel4);
        
          
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出關閉JFrame  
        frame.setVisible(true);//顯示窗體  
        frame.setResizable(false);//鎖定窗體    
        
        
        //查詢按鈕添加一個活動監聽  
        jb1.addActionListener(new ActionListener() {  
              
            @Override  
            public void actionPerformed(ActionEvent e) {  
                //System.exit(0);  
                String chengji = jtf1.getText().trim();
                queryscore(chengji);
            }  
        });  
        
        
      //取消按鈕添加一個活動監聽  
        jb2.addActionListener(new ActionListener() {  
              
            @Override  
            public void actionPerformed(ActionEvent e) {  
                //System.exit(0);  
                
                jtf1.setText("");  
                jlb22.setText("待定");
            }  
        });
    }
    
    //判斷成績的函數
    public static void queryscore(String chengjiStr){
        
        try {
            
            double chengji = Double.valueOf(chengjiStr);
            
            if (chengji>100){
                jlb22.setText("無效成績");
            }
            else if (90<=chengji && chengji <= 100){
                jlb22.setText("優秀");
            }
            else if (chengji >= 80 && chengji < 90){
                jlb22.setText("良好");
            }
            else if (chengji >= 70 && chengji < 80){
                jlb22.setText("中等");
            }
            else if (chengji >= 60 && chengji < 70){
                jlb22.setText("及格");
            }else {
                jlb22.setText("不及格");
            }
            
        } catch (NumberFormatException e) {
            
            jlb22.setText("無效成績");
        }
        
    }
   
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章