Java?GUI實現(xiàn)學(xué)生成績管理系統(tǒng)
學(xué)習(xí)java有一年多了,一直在做web方面的練習(xí),在一個項目中發(fā)現(xiàn)需要用到GUI的相關(guān)知識,結(jié)果沒法做出來,網(wǎng)上這方面的文章又不是很多,所有只好自己硬著頭皮從頭再學(xué)一遍了,不過學(xué)習(xí)后發(fā)現(xiàn),其實GUI是非常有趣的,他并不像WEB程序一樣依賴互聯(lián)網(wǎng),而且還有許多布局和android相差不是很大,這才發(fā)現(xiàn)自己竟又愛上GUI的開發(fā)了,不多說了,直接上代碼吧,相信有過android或相關(guān)界面開發(fā)的都明白這其中的道理。
先看看效果吧
1.登錄主界面
package edu.gzu.stuManager; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import java.awt.Toolkit; import javax.swing.JTextField; import edu.gzu.stuManager.Dao.UserLoginValid; import edu.gzu.stuManager.Domain.StudentInfo; import edu.gzu.stuManager.View.StudentMainView; import java.awt.Choice; import java.awt.Font; import java.awt.Button; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class MainUI { private JFrame frame; private JTextField textField; private JTextField textField_1; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainUI window = new MainUI(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public MainUI() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frame = new JFrame(); frame.setTitle("\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF\uFF08\u767B\u5F55\uFF09"); frame.setIconImage(Toolkit.getDefaultToolkit().getImage(MainUI.class.getResource("/image/func_list7_privmana.png"))); frame.setBounds(400, 250, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); JLabel lblNewLabel = new JLabel("\u5B66\u751F\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF\u7528\u6237\u767B\u5F55\uFF01"); lblNewLabel.setFont(new Font("宋體", Font.PLAIN, 16)); lblNewLabel.setBounds(111, 17, 287, 15); frame.getContentPane().add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("\u7528\u6237\u540D\uFF1A"); lblNewLabel_1.setFont(new Font("宋體", Font.PLAIN, 14)); lblNewLabel_1.setBounds(87, 67, 67, 15); frame.getContentPane().add(lblNewLabel_1); textField = new JTextField(); textField.setBounds(154, 64, 141, 21); frame.getContentPane().add(textField); textField.setColumns(10); JLabel label = new JLabel("\u5BC6 \u7801\uFF1A"); label.setFont(new Font("宋體", Font.PLAIN, 14)); label.setBounds(87, 108, 67, 15); frame.getContentPane().add(label); textField_1 = new JTextField(); textField_1.setColumns(10); textField_1.setBounds(154, 103, 141, 21); frame.getContentPane().add(textField_1); JLabel lblNewLabel_2 = new JLabel("\u6211\u7684\u8EAB\u4EFD\u662F\uFF1A"); lblNewLabel_2.setFont(new Font("宋體", Font.PLAIN, 14)); lblNewLabel_2.setBounds(105, 150, 97, 15); frame.getContentPane().add(lblNewLabel_2); final Choice choice = new Choice(); choice.setBounds(210, 147, 74, 21); choice.add("學(xué)生"); choice.add("教師"); choice.add("系統(tǒng)管理員"); frame.getContentPane().add(choice); Button button = new Button("\u767B\u5F55"); button.setBounds(87, 194, 76, 23); button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { String user=textField.getText(); String password=textField_1.getText(); String shenfen=choice.getSelectedItem(); if(user.equals("")||user==null){ JOptionPane.showMessageDialog(frame, shenfen+":您好,帳號不能為空!"); return; }else if(password.equals("")||password==null){ JOptionPane.showMessageDialog(frame, shenfen+":您好,密碼不能為空!"); return; }else{ StudentInfo stu=new StudentInfo(Integer.parseInt(user), Integer.parseInt(password),shenfen); UserLoginValid dao=new UserLoginValid(); String result=dao.isValid(stu); if("登錄成功!".equals(result)){ JOptionPane.showMessageDialog(frame,result); StudentMainView index=new StudentMainView(stu); JFrame frame2=index.getFrame(); frame2.setVisible(true); frame.dispose(); }else{ JOptionPane.showMessageDialog(frame,result); } } } }); frame.getContentPane().add(button); Button button_1 = new Button("\u53D6\u6D88"); button_1.setBounds(219, 194, 76, 23); frame.getContentPane().add(button_1); } }
2.登錄驗證邏輯
package edu.gzu.stuManager.Dao; import edu.gzu.stuManager.Domain.StudentInfo; public class UserLoginValid { public String isValid(StudentInfo stu){ int idnum=stu.getIdnum(); int password=stu.getPassword(); String idntify=stu.getIdentify(); String result=null; if("學(xué)生".equals(idntify)){ if(idnum==1207010209&&password==123){ stu.setName("劉明勝 同學(xué)"); result="登錄成功!"; }else{ result="學(xué)生帳號中不存在此用戶,請確認身份后再次登錄!"; } }else if("教師".equals(idntify)){ if(idnum==1174386356&&password==123){ stu.setName("劉明勝 老師"); result="登錄成功!"; }else{ result="教師帳號中不存在此用戶,請確認身份后再次登錄!"; } }else if("系統(tǒng)管理員".equals(idntify)){ if(idnum==999999&&password==123){ stu.setName("系統(tǒng)管理員"); result="登錄成功!"; }else{ result="系統(tǒng)管理員帳號中不存在此用戶,請確認身份后再次登錄!"; } } return result; } }
3.用戶對象(這是一個簡單bean)
package edu.gzu.stuManager.Domain; public class StudentInfo { private int idnum; private String name; private int password; private String identify; public StudentInfo(int idnum,int password, String identify) { super(); this.idnum = idnum; this.password = password; this.identify = identify; } public int getIdnum() { return idnum; } public void setIdnum(int idnum) { this.idnum = idnum; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPassword() { return password; } public void setPassword(int password) { this.password = password; } public String getIdentify() { return identify; } public void setIdentify(String identify) { this.identify = identify; } }
4.登錄成功后的主界面
package edu.gzu.stuManager.View; import java.awt.Button; import java.awt.Canvas; import java.awt.Choice; import java.awt.Color; import java.awt.Toolkit; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import edu.gzu.stuManager.Domain.StudentInfo; public class StudentMainView{ private JFrame frame; private JTextField textField; private JTextField textField_1; private JTextField textField_2; private JTextField textField_3; private StudentInfo info; /** * Create the frame. * @wbp.parser.entryPoint */ public StudentMainView(StudentInfo info) { this.info=info; } public JFrame getFrame(){ initialize(); return frame; } /** * Initialize the contents of the frame. * @wbp.parser.entryPoint */ public void initialize() { frame = new JFrame(); frame.setTitle("\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF\uFF08\u5B66\u751F\u7248\uFF09"); frame.setIconImage(Toolkit.getDefaultToolkit().getImage(StudentMainView.class.getResource("/image/func_list7_privmana.png"))); frame.setBounds(300,150, 550, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); JLabel lblNewLabel = new JLabel("歡迎【"+info.getName()+"】登錄學(xué)生成績管理系統(tǒng)!"); lblNewLabel.setBounds(54, 10, 322, 15); frame.getContentPane().add(lblNewLabel); JPanel panel = new JPanel(); panel.setBounds(29, 52, 250, 180); frame.getContentPane().add(panel); panel.setLayout(null); JLabel lblNewLabel_1 = new JLabel("\u6210\u7EE9\u6570\u636E"); lblNewLabel_1.setBounds(94, 10, 65, 15); panel.add(lblNewLabel_1); JLabel lblNewLabel_2 = new JLabel("\u5B66\u53F7\uFF1A"); lblNewLabel_2.setBounds(22, 37, 40, 15); panel.add(lblNewLabel_2); textField = new JTextField(); textField.setBounds(72, 35, 154, 21); textField.setText(info.getIdnum()+""); panel.add(textField); textField.setColumns(10); JLabel lblNewLabel_3 = new JLabel("\u59D3\u540D\uFF1A"); lblNewLabel_3.setBounds(22, 67, 44, 15); panel.add(lblNewLabel_3); textField_1 = new JTextField(); textField_1.setBounds(72, 66, 154, 21); textField_1.setText(info.getName()); panel.add(textField_1); textField_1.setColumns(10); Canvas canvas = new Canvas(); canvas.setBackground(Color.BLUE); canvas.setBounds(22, 100, 205, 1); panel.add(canvas); JLabel lblNewLabel_4 = new JLabel("\u8BFE\u7A0B\u540D"); lblNewLabel_4.setBounds(22, 116, 47, 15); panel.add(lblNewLabel_4); JLabel lblNewLabel_5 = new JLabel("\u6210\u7EE9"); lblNewLabel_5.setBounds(160, 116, 43, 15); panel.add(lblNewLabel_5); textField_2 = new JTextField(); textField_2.setBounds(22, 140, 123, 21); panel.add(textField_2); textField_2.setColumns(10); textField_3 = new JTextField(); textField_3.setBounds(159, 140, 66, 21); panel.add(textField_3); textField_3.setColumns(10); JPanel panel_1 = new JPanel(); panel_1.setBounds(317, 52, 110, 180); frame.getContentPane().add(panel_1); panel_1.setLayout(null); JLabel lblNewLabel_6 = new JLabel("\u64CD\u4F5C\u83DC\u5355"); lblNewLabel_6.setBounds(15, 10, 54, 15); panel_1.add(lblNewLabel_6); Button button = new Button("\u7B2C\u4E00\u95E8\u8BFE\u7A0B"); button.setBounds(10, 31, 76, 23); panel_1.add(button); Button button_1 = new Button("\u4E0B\u4E00\u95E8\u8BFE\u7A0B"); button_1.setBounds(10, 61, 76, 23); panel_1.add(button_1); Button button_2 = new Button("\u4E0A\u4E00\u95E8\u8BFE\u7A0B"); button_2.setActionCommand("\u4E0A\u4E00\u95E8\u8BFE\u7A0B"); button_2.setBounds(10, 90, 76, 23); panel_1.add(button_2); Button button_3 = new Button("\u6700\u540E\u4E00\u95E8\u8BFE"); button_3.setBounds(10, 117, 76, 23); panel_1.add(button_3); Choice choice = new Choice(); choice.setBounds(10, 149, 76, 21); choice.add("選擇課程"); choice.add("高等數(shù)學(xué)"); choice.add("大學(xué)英語"); choice.add("大學(xué)體育"); choice.add("概率與統(tǒng)計"); choice.add("計算機圖形學(xué)"); choice.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Object[] objs=e.getItemSelectable().getSelectedObjects(); for(Object ob:objs){ // JOptionPane.showMessageDialog(frame, ob.toString()); if("高等數(shù)學(xué)".equals(ob.toString())){ textField_2.setText("高等數(shù)學(xué)"); textField_3.setText("98"); }else if("大學(xué)英語".equals(ob.toString())){ textField_2.setText("大學(xué)英語"); textField_3.setText("87"); }else if("大學(xué)體育".equals(ob.toString())){ textField_2.setText("大學(xué)體育"); textField_3.setText("88"); }else if("概率與統(tǒng)計".equals(ob.toString())){ textField_2.setText("概率與統(tǒng)計"); textField_3.setText("73"); }else if("計算機圖形學(xué)".equals(ob.toString())){ textField_2.setText("計算機圖形學(xué)"); textField_3.setText("97"); } } } }); panel_1.add(choice); } }
這樣就能輕松實現(xiàn)登錄驗證了,本打算從數(shù)據(jù)庫讀取數(shù)據(jù)的,由于時間關(guān)系,這里就簡單的直接驗證了,后續(xù)有時間的話再做其他的部分。
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java線程之Happens before規(guī)則案例詳解
這篇文章主要為大家介紹了java線程之Happens-before規(guī)則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2022-08-08JPA如何設(shè)置表名和實體名,表字段與實體字段的對應(yīng)
這篇文章主要介紹了JPA如何設(shè)置表名和實體名,表字段與實體字段的對應(yīng),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11