[java]代码库
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<Vector> 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<Vector>(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