📄 student.java
字号:
package xuankexitong;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.sql.*;
import java.lang.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import java.net.*;
import javax.swing.table.*;
public class Student extends JFrame implements ActionListener{
JTextField[] benren=new JTextField[5];
int count;
JTable jt1,jt2,jt3;
JButton tijiao,chexiao;
JTextField j=new JTextField(10);
DataModel data2;
DefaultTableModel data1,data3;
String stunumber;
Connection con;
Statement stmt;
ResultSet res=null;
Object[][] o1,o3;
Vector v,vv,vvv;
String[] column={"课程号","课程名","学分","任课老师"};
public Student(String num){
stunumber=num;
j.setText("");
addConnection();
Container content=getContentPane();
content.setLayout(new BorderLayout());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
});
JTabbedPane tabbed=new JTabbedPane();
JPanel p1=new JPanel(),p2=new JPanel(),p3=new JPanel(),p4=new JPanel();
JPanel pp1=new JPanel(),pp2=new JPanel(),pp3=new JPanel(),pp4=new JPanel();
tabbed.add(p1,"本人信息");
tabbed.add(p2,"已选课程");
tabbed.add(p3,"选定课程");
tabbed.add(p4,"成绩查询");
pp1.setBorder(new TitledBorder("本人信息"));
pp2.setBorder(new TitledBorder("课程信息"));
pp4.setBorder(new TitledBorder("本学期成绩"));
pp1.setLayout(new GridLayout(5,1));
p2.setLayout(new GridLayout(1,1));
p3.setLayout(new GridLayout(1,1));
p4.setLayout(new GridLayout(1,1));
//本人信息面板
JPanel[] pl=new JPanel[5];
JLabel l1=new JLabel("学号");
JLabel l2=new JLabel("姓名");
JLabel l3=new JLabel("性别");
JLabel l4=new JLabel("年龄");
JLabel l5=new JLabel("专业");
for(int i=0;i<5;i++){
benren[i]=new JTextField(15);
pl[i]=new JPanel();
}
try{
res=stmt.executeQuery("select * from student where 学号='"+stunumber+"'");
while(res.next()){
benren[0].setText(res.getString("学号"));
benren[1].setText(res.getString("姓名"));
benren[2].setText(res.getString("性别"));
benren[3].setText(res.getString("年龄"));
benren[4].setText(res.getString("系别"));
}
}catch(SQLException e){
e.printStackTrace(System.out);
}
pl[0].add(l1);
pl[0].add(benren[0]);
pl[1].add(l2);
pl[1].add(benren[1]);
pl[2].add(l3);
pl[2].add(benren[2]);
pl[3].add(l4);
pl[3].add(benren[3]);
pl[4].add(l5);
pl[4].add(benren[4]);
for(int i=0;i<5;i++)
pp1.add(pl[i]);
//课程信息
v=new Vector();
try{
res=stmt.executeQuery("select xuanke.课程号,课程名,学分 from xuanke,course " +
"where xuanke.课程号=course.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Vector vect=new Vector();
vect.add(res.getString("课程号"));
vect.add(res.getString("课程名"));
vect.add(res.getString("学分"));
v.add(vect);
}
}catch(SQLException e){
e.printStackTrace(System.out);
}
count=v.size();
o1=new Object[v.size()][3];
for(int i=0;i<v.size();i++){
Vector ve=(Vector)v.elementAt(i);
for(int j=0;j<3;j++)
o1[i][j]=ve.elementAt(j);
}
data1=new DefaultTableModel(o1,column);
jt1=new JTable(data1);
JScrollPane scrollpane1 =
JTable.createScrollPaneForTable(jt1);
pp2.setLayout(new BorderLayout());
pp2.add(scrollpane1,BorderLayout.CENTER);
//选定课程
JPanel zong=new JPanel();
zong.setLayout(new BorderLayout());
JPanel xuan=new JPanel(),suoyou=new JPanel();
xuan.setBorder(new TitledBorder("选定课程"));
suoyou.setBorder(new TitledBorder("所有课程信息"));
tijiao=new JButton("提交");
chexiao=new JButton("撤销");
tijiao.addActionListener(this);
chexiao.addActionListener(this);
JLabel l=new JLabel("课程号");
xuan.add(l);
xuan.add(j);
xuan.add(tijiao);
xuan.add(chexiao);
String[] col={"课程号","课程名","先行课","学分"};
vv=new Vector();
try{
res=stmt.executeQuery("select * from course");
while(res.next()){
Vector vect=new Vector();
vect.add(res.getString("课程号"));
vect.add(res.getString("课程名"));
vect.add(res.getString("先行课"));
vect.add(res.getString("学分"));
vv.add(vect);
}
}catch(SQLException e){
e.printStackTrace(System.out);
}
data2=new DataModel(vv,col);
jt2=new JTable(data2);
JScrollPane scrollpane2 =
JTable.createScrollPaneForTable(jt2);
suoyou.setLayout(new BorderLayout());
suoyou.add(scrollpane2,BorderLayout.CENTER);
zong.add(xuan,BorderLayout.NORTH);
zong.add(suoyou,BorderLayout.CENTER);
p3.add(zong);
//成绩查询
String[] co={"课程号","课程名","学分","成绩"};
vvv=new Vector();
try{
res=stmt.executeQuery("select * from course,xuanke where course.课程号=xuanke.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Vector vect=new Vector();
vect.add(res.getString("课程号"));
vect.add(res.getString("课程名"));
vect.add(res.getString("学分"));
vect.add(res.getString("成绩"));
vvv.add(vect);
}
}catch(SQLException e){
e.printStackTrace(System.out);
}
o3=new Object[vvv.size()][4];
for(int i=0;i<vvv.size();i++){
Vector ve=(Vector)vvv.elementAt(i);
for(int j=0;j<4;j++)
o3[i][j]=ve.elementAt(j);
}
data3=new DefaultTableModel(o3,co);
jt3=new JTable(data3);
JScrollPane scrollpane3 =
JTable.createScrollPaneForTable(jt3);
pp4.setLayout(new BorderLayout());
pp4.add(scrollpane3,BorderLayout.CENTER);
p1.add(pp1);
p2.add(pp2);
p4.add(pp4);
content.add(tabbed,BorderLayout.CENTER);
Toolkit tk=getToolkit();
Dimension screenSize=tk.getScreenSize();
int frameWidth=600;
int frameHeight=400;
setBounds((screenSize.width-frameWidth)/2,(screenSize.height-frameHeight)/2,frameWidth,frameHeight);
setVisible(true);
}
public void addConnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException g){
JOptionPane.showMessageDialog(null,"驱动器加载失败,无法建立数据库连接");
return;
}
try{
con=DriverManager.getConnection("jdbc:odbc:stu","","");
stmt=con.createStatement();
}
catch(SQLException se){
se.printStackTrace(System.out);
}
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if(s.equals("提交")){
String ss=j.getText();
if(ss.equals("")){
JOptionPane.showMessageDialog(null,"请输入课程号");
}
else{
try{
res=stmt.executeQuery("select * from xuanke where xuanke.课程号='"+ss+"' and xuanke.学号='"+stunumber+"'");
if(res.next()){
JOptionPane.showMessageDialog(null,"你已经选了这门课,不能再选");
}
else{
res=stmt.executeQuery("select * from xuanke,course where xuanke.课程号=course.先行课 and course.课程号='"+ss+"' and xuanke.学号='"+stunumber+"'");
if(res.next()){
int nu=stmt.executeUpdate("insert into xuanke values('"+stunumber+"','"+ss+"',0)");
JOptionPane.showMessageDialog(null,"选课成功");
for(int i=count-1;i>=0;i--){
data1.removeRow(i);
data3.removeRow(i);
System.out.println(i);
}
con.close();
stmt.close();
addConnection();
count--;
try{
res=stmt.executeQuery("select xuanke.课程号,课程名, 学分 from xuanke,course " +
"where xuanke.课程号=course.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Object[] o=new Object[3];
o[0]=res.getString("课程号");
o[1]=res.getString("课程名");
o[2]=res.getString("学分");
data1.addRow(o);
count++;
}
res=stmt.executeQuery("select * from course,xuanke where course.课程号=xuanke.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Object[] ooo=new Object[4];
ooo[0]=res.getString("课程号");
ooo[1]=res.getString("课程名");
ooo[2]=res.getString("学分");
ooo[3]=res.getString("成绩");
data3.addRow(ooo);
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
}
else{
JOptionPane.showMessageDialog(null,"未修先行课,你不能选这门课");
}
}
}catch(SQLException se){
se.printStackTrace(System.out);
}}
}
else if(s.equals("撤销")){
String ss=j.getText();
if(ss.equals("")){
JOptionPane.showMessageDialog(null,"请输入课程号");
}
else{
try{
res=stmt.executeQuery("select * from xuanke where xuanke.课程号='"+ss+"' and xuanke.学号='"+stunumber+"'");
if(!res.next()){
JOptionPane.showMessageDialog(null,"你没有选这门课,不能删除课程");
}
else{
int nu=stmt.executeUpdate("delete from xuanke where 课程号='"+ss+"' and 学号='"+stunumber+"'");
JOptionPane.showMessageDialog(null,"删除成功");
for(int i=count-1;i>=0;i--){
data1.removeRow(i);
data3.removeRow(i);
System.out.println(i);
}
con.close();
stmt.close();
addConnection();
count--;
try{
res=stmt.executeQuery("select xuanke.课程号,课程名, 学分 from xuanke,course " +
"where xuanke.课程号=course.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Object[] o=new Object[3];
o[0]=res.getString("课程号");
o[1]=res.getString("课程名");
o[2]=res.getString("学分");
data1.addRow(o);
}
res=stmt.executeQuery("select * from course,xuanke where course.课程号=xuanke.课程号 and xuanke.学号='"+stunumber+"'");
while(res.next()){
Object[] ooo=new Object[4];
ooo[0]=res.getString("课程号");
ooo[1]=res.getString("课程名");
ooo[2]=res.getString("学分");
ooo[3]=res.getString("成绩");
data3.addRow(ooo);
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
}
}catch(SQLException se){
se.printStackTrace(System.out);
}}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -