package student; import javax.swing.*; import java.util.Vector; import java.awt.*; import java.sql.*; import java.awt.event.*; @SuppressWarnings("serial") public class MainFrame extends JFrame implements Runnable, ActionListener { CardLayout cards; Font font; JMenuBar menuBar; Statement state; String sql; // 定义外来码时用到 Vector MID; // 记录下一个空ID static int stuID; static int majorID; // 学生操作对应的面板 JPanel SR; JPanel SQ; JPanel SD; JPanel SU; // 专业操作对应的面板 JPanel MR; JPanel MQ; JPanel MD; JPanel MU; // 学生信息登记面板组件 JTextField SR_ID; JTextField SR_Name; JTextField SR_Sex; JTextField SR_Class; // JTextField SR_Major; JComboBox SR_Major; JButton SR_Yes; JButton SR_No; // 学生信息查询面板的组件 JTextField SQ_ID; JTextField SQ_Name; JTextField SQ_Sex; JTextField SQ_Class; JTextField SQ_Major; JButton SQ_Yes; // 学生信息更新面板的组件 JTextField SU_ID; JTextField SU_Name; JTextField SU_Sex; JTextField SU_Class; JTextField SU_Major; JButton SU_Update; JButton SU_Show; // 学生信息删除面板的组件 JTextField SD_Field; // 专业信息登记面板的组件 JTextField MR_ID; JTextField MR_Name; JButton MR_Yes; JButton MR_No; // 专业信息查询面板的组件 JTextField MQ_ID; JTextField MQ_Name; JButton MQ_Yes; // 专业信息更新面板的组件 JTextField MU_ID; JTextField MU_Name; JButton MU_Update; // 专业信息删除面板的组件 JLabel MD_Tip; JTextField MD_Field; JButton MD_Delete; // 菜单项 JMenuItem stuR; JMenuItem stuQ; JMenuItem stuD; JMenuItem stuU; JMenuItem majorR; JMenuItem majorQ; JMenuItem majorD; JMenuItem majorU; public MainFrame() { SR = new JPanel(); SQ = new JPanel(); SD = new JPanel(); SU = new JPanel(); MR = new JPanel(); MQ = new JPanel(); MU = new JPanel(); MD = new JPanel(); majorID = 1; stuID = 1; new Thread(this).start(); cards = new CardLayout(); font = new Font("myFont", Font.PLAIN, 15); MID = new Vector(); // 当Major的ID的删除完时,显示 MID.add(""); // 菜单条 menuBar = new JMenuBar(); Main_Menu(); setTitle("学生管理"); setSize(400, 377); setLocation(530, 200); Main_Pane(this.getContentPane()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void Main_Pane(Container pane) { pane.setLayout(cards); pane.add(SR, "0"); pane.add(SQ, "1"); pane.add(SU, "2"); pane.add(SD, "3"); pane.add(MR, "4"); pane.add(MQ, "5"); pane.add(MU, "6"); pane.add(MD, "7"); } public void Main_Menu() { stuR = new JMenuItem("登记"); stuQ = new JMenuItem("查询"); stuD = new JMenuItem("删除"); stuU = new JMenuItem("更新"); JMenu stu = new JMenu("学生"); stu.add(stuR); stu.add(stuQ); stu.add(stuU); stu.add(stuD); majorR = new JMenuItem("登记"); majorQ = new JMenuItem("查询"); majorU = new JMenuItem("更新"); majorD = new JMenuItem("删除"); JMenu major = new JMenu("专业"); major.add(majorR); major.add(majorQ); major.add(majorU); major.add(majorD); menuBar.add(stu); menuBar.add(major); this.setJMenuBar(menuBar); // 增加监听器 stuR.addActionListener(this); stuQ.addActionListener(this); stuD.addActionListener(this); stuU.addActionListener(this); majorR.addActionListener(this); majorQ.addActionListener(this); majorD.addActionListener(this); majorU.addActionListener(this); } @Override public void run() { SR_Pane(); SQ_Pane(); SD_Pane(); SU_Pane(); MR_Pane(); MQ_Pane(); MU_Pane(); MD_Pane(); } // 学生登记和查询面板 public void SR_Pane() { SR.setLayout(new GridLayout(6, 2)); JLabel labelID = new JLabel("学号", JLabel.CENTER); JLabel labelName = new JLabel("姓名", JLabel.CENTER); JLabel labelSex = new JLabel("性别", JLabel.CENTER); JLabel labelClass = new JLabel("班级", JLabel.CENTER); JLabel labelMajor = new JLabel("专业码", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); labelSex.setFont(font); labelClass.setFont(font); labelMajor.setFont(font); SR_ID = new JTextField(); SR_ID.setText(String.valueOf(stuID)); SR_Name = new JTextField(); SR_Sex = new JTextField(); SR_Class = new JTextField(); SR_Major = new JComboBox(MID); SR_Yes = new JButton("登记"); SR_No = new JButton("取消"); SR_Yes.addActionListener(this); SR_No.addActionListener(this); SR.add(labelID); SR.add(SR_ID); SR.add(labelName); SR.add(SR_Name); SR.add(labelSex); SR.add(SR_Sex); SR.add(labelClass); SR.add(SR_Class); SR.add(labelMajor); SR.add(SR_Major); SR.add(SR_Yes); SR.add(SR_No); } public void SQ_Pane() { SQ.setLayout(new GridLayout(6, 2)); JLabel labelID = new JLabel("学号", JLabel.CENTER); JLabel labelName = new JLabel("姓名", JLabel.CENTER); JLabel labelSex = new JLabel("性别", JLabel.CENTER); JLabel labelClass = new JLabel("班级", JLabel.CENTER); JLabel labelMajor = new JLabel("专业码", JLabel.CENTER); JLabel SD_Tip = new JLabel("输入学号", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); labelSex.setFont(font); labelClass.setFont(font); labelMajor.setFont(font); SD_Tip.setFont(font); SQ_ID = new JTextField(); SQ_Name = new JTextField(); SQ_Sex = new JTextField(); SQ_Class = new JTextField(); SQ_Major = new JTextField(); SQ_Yes = new JButton("查询"); SQ_Yes.addActionListener(this); SQ.add(labelID); SQ.add(SQ_ID); SQ.add(labelName); SQ.add(SQ_Name); SQ.add(labelSex); SQ.add(SQ_Sex); SQ.add(labelClass); SQ.add(SQ_Class); SQ.add(labelMajor); SQ.add(SQ_Major); SQ.add(SD_Tip); SQ.add(SQ_Yes); } public void SD_Pane() { SD.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); JLabel label = new JLabel("学号", JLabel.CENTER); SD_Field = new JTextField(); JButton delete = new JButton("删除"); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 1; c.insets = new Insets(10, 10, 10, 10); SD.add(label, c); c.gridx = 1; c.gridwidth = 3; c.ipadx = 120; SD.add(SD_Field, c); c.gridwidth = 1; c.gridx = 3; c.ipadx = 0; SD.add(delete, c); delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { sql = "Delete from student where ID="; sql += SD_Field.getText(); sql += ";"; System.out.println(sql); try { int i = Integer.valueOf(SD_Field.getText()); if (isStuExist(i)) { state.execute(sql); JOptionPane.showMessageDialog(SD, "已删除"); } else { JOptionPane.showMessageDialog(SD, "删除失败"); } } catch (SQLException e1) { JOptionPane.showMessageDialog(SD, "删除失败"); } } }); } public void SU_Pane() { SU.setLayout(new GridLayout(6, 2)); JLabel labelID = new JLabel("学号", JLabel.CENTER); JLabel labelName = new JLabel("姓名", JLabel.CENTER); JLabel labelSex = new JLabel("性别", JLabel.CENTER); JLabel labelClass = new JLabel("班级", JLabel.CENTER); JLabel labelMajor = new JLabel("专业码", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); labelSex.setFont(font); labelClass.setFont(font); labelMajor.setFont(font); SU_ID = new JTextField(); SU_Name = new JTextField(); SU_Sex = new JTextField(); SU_Class = new JTextField(); SU_Major = new JTextField(); SU_Update = new JButton("更新"); SU_Update.addActionListener(this); SU_Show = new JButton("显示"); SU_Show.addActionListener(this); SU.add(labelID); SU.add(SU_ID); SU.add(labelName); SU.add(SU_Name); SU.add(labelSex); SU.add(SU_Sex); SU.add(labelClass); SU.add(SU_Class); SU.add(labelMajor); SU.add(SU_Major); SU.add(SU_Show); SU.add(SU_Update); } public void MR_Pane() { MR.setLayout(new GridLayout(3, 2)); JLabel labelID = new JLabel("专业码", JLabel.CENTER); JLabel labelName = new JLabel("专业名", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); MR_ID = new JTextField(); MR_Name = new JTextField(); MR_ID.setText(String.valueOf(majorID)); MR_Yes = new JButton("登记"); MR_Yes.addActionListener(this); MR_No = new JButton("取消"); MR_No.addActionListener(this); MR.add(labelID); MR.add(MR_ID); MR.add(labelName); MR.add(MR_Name); MR.add(MR_Yes); MR.add(MR_No); } public void MQ_Pane() { MQ.setLayout(new GridLayout(3, 2)); JLabel labelID = new JLabel("专业码", JLabel.CENTER); JLabel labelName = new JLabel("专业名", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); MQ_ID = new JTextField(); MQ_Name = new JTextField(); MQ_Yes = new JButton("查询"); MQ_Yes.addActionListener(this); MQ.add(labelID); MQ.add(MQ_ID); MQ.add(labelName); MQ.add(MQ_Name); MQ.add(new JLabel("输入专业码", JLabel.CENTER)); MQ.add(MQ_Yes); } public void MU_Pane() { MU.setLayout(new GridLayout(3, 2)); JLabel labelID = new JLabel("专业码", JLabel.CENTER); JLabel labelName = new JLabel("专业名", JLabel.CENTER); labelID.setFont(font); labelName.setFont(font); MU_ID = new JTextField(); MU_Name = new JTextField(); MU_Update = new JButton("更新"); MU_Update.addActionListener(this); MU.add(labelID); MU.add(MU_ID); MU.add(labelName); MU.add(MU_Name); MU.add(new JLabel("输入专业码", JLabel.CENTER)); MU.add(MU_Update); } public void MD_Pane() { MD.setLayout(new GridLayout(2, 2)); JLabel labelID = new JLabel("专业码", JLabel.CENTER); MD_Tip = new JLabel("输入专业码", JLabel.CENTER); labelID.setFont(font); MD_Field = new JTextField(); MD_Delete = new JButton("删除"); MD_Delete.addActionListener(this); MD.add(labelID); MD.add(MD_Field); MD.add(MD_Tip); MD.add(MD_Delete); } @Override public void actionPerformed(ActionEvent e) { Object source = e.getSource(); Container pane = getContentPane(); try { if (source == SR_Yes) { String ID = SR_ID.getText(); String Name = SR_Name.getText(); String Sex = SR_Sex.getText(); String Class = SR_Class.getText(); String Major = String.valueOf(SR_Major.getSelectedItem()); if (ID.length() > 0 && Name.length() > 0 && Sex.length() > 0 && Class.length() > 0 && Major.length() > 0) { sql = "Insert into student values(" + ID + ", '" + Name + "' , '" + Sex + "' ," + Class + "," + Major + ");"; state.execute(sql); stuID++; SR_ID.setText(String.valueOf(stuID)); SR_Name.setText(""); SR_Sex.setText(""); SR_Class.setText(""); } } if (source == SR_No) { SR_Name.setText(""); SR_Sex.setText(""); SR_Class.setText(""); } if (source == SQ_Yes) { String ID = SQ_ID.getText(); if (ID.length() > 0) { if (isStuExist(Integer.valueOf(ID))) { sql = "Select * from student where ID="+ID+";"; ResultSet rs = state.executeQuery(sql); while (rs.next()) { SQ_Name.setText(rs.getString(2)); SQ_Sex.setText(rs.getString(3)); SQ_Class.setText(String.valueOf(rs.getInt(4))); SQ_Major.setText(String.valueOf(rs.getInt(5))); } } else JOptionPane.showMessageDialog(this, "输入的ID不存在"); } } if (source == SU_Show) { showInformation_SU_Pane(); } if (source == SU_Update) { String SUID = SU_ID.getText(); if (SUID.length() > 0) { String Name = SU_Name.getText(); String Sex = SU_Sex.getText(); String Class = SU_Class.getText(); String Major = SU_Major.getText(); sql = "Update student Set Name = '" + Name + "', Sex= ' " + Sex + "', Class= " + Class + ", Major = " + Major + " Where ID =" + SUID; state.executeUpdate(sql); JOptionPane.showMessageDialog(this, "更新成功"); } } if (source == MR_Yes) { String ID = MR_ID.getText(); String MName = MR_Name.getText(); if (ID.length() > 0 && MName.length() > 0) { sql = "Insert into major values( " + ID + ",'" + MName + "');"; state.execute(sql); majorID++; MID.add(Integer.valueOf(ID)); MR_ID.setText(String.valueOf(majorID)); MR_Name.setText(""); } } if (source == MR_No) { MR_Name.setText(""); } if (source == MQ_Yes) { String ID = MQ_ID.getText(); if (ID.length() > 0) { if (isMajorExist(Integer.valueOf(ID))) { sql = "Select * from major where ID=" + ID + ";"; ResultSet rs = state.executeQuery(sql); while (rs.next()) MQ_Name.setText(rs.getString(2)); } else JOptionPane.showMessageDialog(this, "输入的ID不存在"); } } if (source == MU_Update) { String ID = MU_ID.getText(); String Name = MU_Name.getText(); if (ID.length() > 0 && Name.length() > 0) { sql = "Update major set Name = '" + Name + "' where ID =" + ID; state.executeUpdate(sql); JOptionPane.showMessageDialog(this, "更新成功"); } } if (source == MD_Delete) { String ID = MD_Field.getText(); if (ID.length() > 0) { int i = Integer.valueOf(ID); if (isMajorExist(i)) { try { sql = "Delete from major where ID = " + ID; state.execute(sql); MID.remove((Integer) i); SR_Major.setSelectedItem(""); JOptionPane.showMessageDialog(this, "已删除"); } catch (SQLException e2) { JOptionPane.showMessageDialog(this, "删除失败 ,学生中包含相关专业"); } } else JOptionPane.showMessageDialog(this, "删除失败"); } } } catch (SQLException e1) { e1.printStackTrace(); } if (source == stuR) { cards.show(pane, "0"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 377); } if (source == stuQ) { cards.show(pane, "1"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 377); } if (source == stuU) { cards.show(pane, "2"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 377); } if (source == stuD) { cards.show(pane, "3"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 377); } if (source == majorR) { cards.show(pane, "4"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 250); } if (source == majorQ) { cards.show(pane, "5"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 250); } if (source == majorU) { cards.show(pane, "6"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 250); } if (source == majorD) { cards.show(pane, "7"); Reset_S_Pane(); Reset_M_Pane(); setSize(400, 250); } } public void Reset_S_Pane() { SR_Name.setText(""); SR_Sex.setText(""); SR_Class.setText(""); SR_Major.setSelectedItem(""); SQ_ID.setText(""); SQ_Name.setText(""); SQ_Sex.setText(""); SQ_Class.setText(""); SQ_Major.setText(""); SU_ID.setText(""); SU_Name.setText(""); SU_Sex.setText(""); SU_Class.setText(""); SU_Major.setText(""); SD_Field.setText(""); } public void Reset_M_Pane() { MR_Name.setText(""); MQ_ID.setText(""); MQ_Name.setText(""); MU_ID.setText(""); MU_Name.setText(""); MD_Field.setText(""); } public boolean isStuExist(int ID) { try { ResultSet rs = state.executeQuery("Select * from student"); while (rs.next()) { int rsID = rs.getInt("ID"); stuID = rsID; SR_ID.setText(String.valueOf(++stuID)); if (ID == rsID) return true; } } catch (SQLException e) { e.printStackTrace(); } return false; } public boolean isMajorExist(int ID) { try { ResultSet rs = state.executeQuery("Select *from major"); while (rs.next()) { int rsID = rs.getInt("ID"); if (!MID.contains(rsID)) MID.add(rsID); majorID = rsID; MR_ID.setText(String.valueOf(++majorID)); if (ID == rsID) return true; } } catch (SQLException e) { e.printStackTrace(); } return false; } public void showInformation_SU_Pane() { String SuID = SU_ID.getText(); if (SuID.length() > 0) { sql = "Select * from student where ID="+SuID+";"; try { ResultSet rs = state.executeQuery(sql); while (rs.next()) { SU_Name.setText(rs.getString(2)); SU_Sex.setText(rs.getString(3)); SU_Class.setText(String.valueOf(rs.getInt(4))); SU_Major.setText(String.valueOf(rs.getInt(5))); } } catch (SQLException e1) { e1.printStackTrace(); } } } public static void main(String args[]) { try { UIManager .setLookAndFeel("org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { e.printStackTrace(); } JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); MainFrame MF = new MainFrame(); new StuDataBase(MF); } } //源代码片段来自云代码http://yuncode.net