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 |
|