因为之前写了一个学生信息管理系统,但还是处于命令行界面,不美观,于是打算做一个完整的界面出来。
在网上查阅资料后发现C++本身是不支持图形化界面的(可以使用第三方的Qt来做)
权衡之下还是选择了JAVA,自学之路开始!!!
目前只做了登陆界面和学生成绩录入功能(其实主要还是训练自己的界面设计能力,虽然都是一个样子···)
用户名 Paul 密码 123456
Login.java
1 package Menu_UI; 2 3 import Data.StuData; 4 5 import javax.swing.*; 6 import java.awt.*; 7 import java.awt.event.ActionEvent; 8 import java.awt.event.ActionListener; 9 10 public class Login implements ActionListener 11 { 12 13 private String user_name; //用户名 14 private String user_password;//密码 15 16 JTextField jTextField;//用户名文本框 17 JPasswordField jPasswordField;//密码文本框 18 19 JPanel namePanel;//用户名容器 20 JPanel passwordPanel;//密码容器 21 JPanel buttonPanel;//按钮容器 22 JPanel toastPanel;//消息提示容器 23 JPanel windowPanel;//总容器 24 25 JLabel Jname;//用户名提示 26 JLabel Jpassword;//密码提示 27 JLabel Jtoast;//判断信息 28 29 JButton loginButton;//登陆按钮 30 JButton cancelButton;//取消按钮 31 32 JFrame frame;//窗口 33 34 public Login() 35 { 36 user_name="Paul"; 37 user_password="123456"; 38 39 jTextField=new JTextField(20); 40 jPasswordField=new JPasswordField(20); 41 42 namePanel=new JPanel(); 43 passwordPanel=new JPanel(); 44 buttonPanel=new JPanel(); 45 toastPanel=new JPanel(); 46 windowPanel=new JPanel(new GridLayout(4,1)); 47 48 Jname=new JLabel("用户名"); 49 Jpassword=new JLabel("密 码"); 50 Jtoast=new JLabel(""); 51 52 loginButton=new JButton("登陆"); 53 loginButton.addActionListener(this); 54 cancelButton=new JButton("重置"); 55 cancelButton.addActionListener(this); 56 57 58 frame =new JFrame("登陆窗口"); 59 60 frame.setSize(500,300); 61 62 frame.setVisible(true); 63 64 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 65 66 namePanel.add(Jname); 67 namePanel.add(jTextField); 68 69 passwordPanel.add(Jpassword); 70 passwordPanel.add(jPasswordField); 71 72 toastPanel.add(Jtoast); 73 74 buttonPanel.add(loginButton); 75 buttonPanel.add(cancelButton); 76 77 78 windowPanel.add(namePanel); 79 windowPanel.add(passwordPanel); 80 windowPanel.add(toastPanel); 81 windowPanel.add(buttonPanel); 82 frame.setContentPane(windowPanel); 83 84 85 } 86 public static void main(String args[]) 87 { 88 new Login(); 89 } 90 91 public void actionPerformed(ActionEvent e) { 92 String cmd=e.getActionCommand(); 93 if(cmd.equals("登陆")) 94 { 95 if(jTextField.getText().equals(user_name)&&jPasswordField.getText().equals(user_password)) 96 { 97 //Jtoast.setText(jTextField.getText()+" 用户欢迎使用!"); 98 JOptionPane.showMessageDialog(null, "登陆成功"); 99 frame.dispose();//关闭当前窗口 100 new StuData(); 101 } 102 else 103 { 104 Jtoast.setText("用户名或密码错误!"); 105 } 106 } 107 else 108 { 109 jTextField.setText(""); 110 jPasswordField.setText(""); 111 } 112 113 } 114 115 }
StuData.java
1 package Data; 2 3 4 import javax.swing.*; 5 import javax.swing.event.AncestorEvent; 6 import javax.swing.event.AncestorListener; 7 import java.awt.event.ActionListener; 8 import java.util.HashMap; 9 import java.util.Map; 10 import java.awt.*; 11 import java.awt.event.ActionEvent; 12 class addView { 13 JTextField TcourseName;//课程文本框 14 JTextField Tgrades;//成绩文本框 15 JButton addButton;//添加按钮 16 JButton cancelButton;//取消按钮 17 JPanel coursePanel;//课程容器 18 JPanel gradePanel;//成绩容器 19 JPanel buttonPanel;//按钮容器 20 JPanel windowPanel;//总容器 21 JLabel Jcourse; 22 JLabel Jgrades; 23 JFrame frame; 24 String course_name; 25 Double course_grades; 26 SimpleListener addListener; 27 28 public addView(){ 29 addListener=new SimpleListener(); 30 course_grades=0.0; 31 course_name=""; 32 TcourseName = new JTextField(13);//课程文本框 33 Tgrades = new JTextField(13);//成绩文本框 34 addButton = new JButton("添加");//添加按钮 35 addButton.addActionListener(addListener); 36 cancelButton = new JButton("取消");//取消按钮 37 cancelButton.addActionListener(addListener); 38 coursePanel = new JPanel();//课程容器 39 gradePanel = new JPanel();//成绩容器 40 buttonPanel = new JPanel();//按钮容器 41 windowPanel = new JPanel();//总容器 42 Jcourse = new JLabel("课程"); 43 Jgrades = new JLabel("成绩"); 44 frame = new JFrame("成绩录入界面"); 45 frame.setSize(800, 100); 46 frame.setVisible(true); 47 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 48 49 coursePanel.add(Jcourse); 50 coursePanel.add(TcourseName); 51 52 gradePanel.add(Jgrades); 53 gradePanel.add(Tgrades); 54 55 buttonPanel.add(addButton); 56 buttonPanel.add(cancelButton); 57 58 windowPanel.add(coursePanel); 59 windowPanel.add(gradePanel); 60 windowPanel.add(buttonPanel); 61 frame.setContentPane(windowPanel); 62 63 } 64 65 class SimpleListener implements ActionListener { 66 public void actionPerformed(ActionEvent e) { 67 String cmd = e.getActionCommand(); 68 if(cmd.equals("添加")) { 69 try { 70 //set_grades(TcourseName.getText().toString(), Double.parseDouble(Tgrades.getText().toString())); 71 course_name = TcourseName.getText().toString(); 72 course_grades = Double.parseDouble(Tgrades.getText().toString()); 73 JOptionPane.showMessageDialog(null, "学生成绩录入成功"); 74 frame.dispose(); 75 } catch (NumberFormatException error) { 76 JOptionPane.showMessageDialog(null, "你个大坏蛋,输错了啦"); 77 TcourseName.setText(""); 78 Tgrades.setText(""); 79 } 80 } 81 else 82 { 83 TcourseName.setText(""); 84 Tgrades.setText(""); 85 } 86 } 87 } 88 } 89 90 91 92 93 public class StuData { 94 public String name;//学生姓名 95 public String number;//学生学号 96 public String sex;//学生 97 public Map<String, Double> grades_map; 98 public double average; 99 public int total_lesson; 100 101 private void set_grades(String course_name, Double grades) { 102 grades_map.put(course_name, grades); 103 System.out.println("成绩信息添加成功!"); 104 } 105 106 private void print_grades(){ 107 for (Map.Entry<String, Double> entry : grades_map.entrySet()) {//遍历map 108 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); 109 } 110 } 111 112 public StuData(){//构造函数 113 name = ""; 114 number = ""; 115 sex = ""; 116 average = 0.0; 117 total_lesson = 0; 118 grades_map = new HashMap<String, Double>(); 119 } 120 121 public void init(String _name, String _number, String _sex){//初始化学生信息 122 name = _name; 123 number = _number; 124 sex = _sex; 125 } 126 127 public void setGrades(){//公有函数,弹出成绩录入窗口并采集信息 128 129 new addView(); 130 } 131 132 133 134 public static void main(String args[]){ 135 StuData test=new StuData(); 136 test.setGrades(); 137 } 138 }
Welcome.java
1 package Menu_UI; 2 3 4 import java.awt.*; 5 import java.awt.event.*; 6 import javax.swing.*; 7 public class Welcome { 8 9 //待完善,这个界面就是登陆成功后的界面,对学生信息进行查询打印修改等操作 10 11 }