teacher.java
来自「自己用java编的选课系统」· Java 代码 · 共 305 行
JAVA
305 行
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 Teacher extends JFrame implements ActionListener{
JTextField[] xinxi=new JTextField[5];
int count,index=0,total;
JTable t1,t2;
String kechenghao;
JTextField[] xiugai=new JTextField[4];
JButton que=new JButton("修改");
String kecheng="数据库";
String name;
String[][] sco;
Connection con;
Statement stmt;
ResultSet res=null;
String[] sss={"学号","姓名","性别","年龄","系别"};
String[] score={"学号","课程号","成绩"};
JButton queding=new JButton("确定");
JButton shang=new JButton("上一条");
JButton xia=new JButton("下一条");
JButton[] cheng=new JButton[3];
JTextField[] sc=new JTextField[3];
public Teacher(String username){
name=username;
addConnection();
try{
res=stmt.executeQuery("select 课程名,shouke.课程号 from shouke,course where shouke.课程号=course.课程号 and 教师号='"+name+"'");
while(res.next()){
kechenghao=res.getString("课程号");
kecheng=res.getString("课程名");
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
Container content=getContentPane();
content.setLayout(new BorderLayout());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
});
String[] ss={"本人信息","选课信息","课程信息","成绩录入"};
JTabbedPane tabbed=new JTabbedPane();
JPanel[] jp=new JPanel[4];
for(int i=0;i<4;i++){
jp[i]=new JPanel();
tabbed.add(jp[i],ss[i]);
}
JPanel temp=new JPanel();
temp.setBorder(new TitledBorder("本人信息"));
temp.setLayout(new GridLayout(5,1));
String[] s={"教师号","姓 名","性 别","年 龄","系 别"};
JLabel[] jl=new JLabel[5];
JPanel[] p=new JPanel[5];
for(int i=0;i<5;i++){
jl[i]=new JLabel(s[i]);
xinxi[i]=new JTextField(15);
p[i]=new JPanel();
p[i].add(jl[i]);
p[i].add(xinxi[i]);
temp.add(p[i]);
}
jp[0].add(temp);
showXinxi();
//选课信息
jp[1].setLayout(new GridLayout(1,1));
JPanel mm=new JPanel();
mm.setLayout(new BorderLayout());
JPanel mp=new JPanel();
mp.setBorder(new TitledBorder("选课人数:"));
mp.add(new JLabel("选课人数"));
JLabel renshu=new JLabel();
mp.add(renshu);
mm.add(mp,BorderLayout.NORTH);
JPanel mp2=new JPanel();
mp2.setBorder(new TitledBorder("选课学生信息"));
mp2.setLayout(new BorderLayout());
//查询选课学生信息
String sql="SELECT s.学号,s.姓名,s.性别,s.年龄,s.系别 FROM student as s,xuanke,shouke where s.学号=xuanke.学号 and xuanke.课程号=shouke.课程号 and shouke.教师号='"+name+"'";
Vector v=new Vector();
try{
res=stmt.executeQuery(sql);
while(res.next()){
Vector vect=new Vector();
for(int i=0;i<5;i++)
vect.add(res.getString(sss[i]));
v.add(vect);
count++;
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
renshu.setText(Integer.toString(count));
t1=new JTable(new DataModel(v,sss));
JScrollPane scrollpane1 =
JTable.createScrollPaneForTable(t1);
mp2.add(scrollpane1,BorderLayout.CENTER);
mm.add(mp2,BorderLayout.CENTER);
jp[1].add(mm);
//修改课程信息
String[] st={"课程号","课程名","先行课","学分"};
jp[2].setLayout(new GridLayout(3,1));
que.addActionListener(this);
JPanel xiu=new JPanel();
xiu.setBorder(new TitledBorder("修改课程信息"));
xiu.setLayout(new GridLayout(3,1));
JPanel[] jppp=new JPanel[4];
for(int i=0;i<4;i++){
xiugai[i]=new JTextField(15);
jppp[i]=new JPanel();
jppp[i].add(new JLabel(st[i]));
jppp[i].add(xiugai[i]);
xiu.add(jppp[i]);
}
jp[2].add(xiu);
JPanel bp=new JPanel();
bp.add(que);
jp[2].add(bp);
String sql2="select course.课程号,course.课程名,course.先行课,course.学分 from course,shouke where shouke.课程号=course.课程号 and shouke.教师号='"+name+"'";
try{
res=stmt.executeQuery(sql2);
while(res.next()){
for(int i=0;i<4;i++)
xiugai[i].setText(res.getString(st[i]));
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
//录入成绩
sco=new String[v.size()][3];
total=v.size();
try{
res=stmt.executeQuery("select * from xuanke where 课程号='"+kechenghao+"'");
int i=0;
while(res.next()){
sco[i][0]=res.getString("学号");
sco[i][1]=res.getString("课程号");
sco[i][2]=res.getString("成绩");
i++;
}
}catch(SQLException se){
System.out.print("SQL Exception:"+se.getMessage());
se.printStackTrace(System.out);
}
jp[3].setLayout(new GridLayout(1,1));
JPanel chang=new JPanel();
chang.setLayout(new BorderLayout());
JPanel p1=new JPanel();
JPanel p2=new JPanel();
p1.setBorder(new TitledBorder(""));
p1.add(new JLabel(kecheng));
p2.setBorder(new TitledBorder("录入成绩"));
p2.setLayout(new GridLayout(4,1));
JPanel[] chengji=new JPanel[4];
for(int i=0;i<3;i++){
chengji[i]=new JPanel();
chengji[i].add(new JLabel(score[i]));
sc[i]=new JTextField(15);
//sc[i].setText(sco[index][i]);
chengji[i].add(sc[i]);
p2.add(chengji[i]);
}
chengji[3]=new JPanel();
chengji[3].add(shang);
chengji[3].add(xia);
chengji[3].add(queding);
shang.addActionListener(this);
xia.addActionListener(this);
queding.addActionListener(this);
p2.add(chengji[3]);
chang.add(p1,BorderLayout.NORTH);
chang.add(p2,BorderLayout.CENTER);
jp[3].add(chang);
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 actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if(s.equals("修改")){
String sqll="update course " +
"set 课程名='"+xiugai[1].getText()+"',先行课='"+xiugai[2].getText()+"',学分='"+Integer.parseInt(xiugai[3].getText())+"' " +
"where 课程号='"+xiugai[0].getText()+"'";
for(int i=0;i<4;i++)
System.out.println(xiugai[i].getText());
try{
int re=stmt.executeUpdate(sqll);}
catch(SQLException se){
System.out.print("SQL Exception:"+se.getMessage());
se.printStackTrace(System.out);
}
JOptionPane.showMessageDialog(null,"修改成功");
}
else if(s.equals("确定")){
String sqll="update xuanke "+
"set 成绩='"+sc[2].getText()+"' where 学号='"+sc[0].getText()+"' and 课程号='"+sc[1].getText()+"'";
try{
int re=stmt.executeUpdate(sqll);}
catch(SQLException se){
System.out.print("SQL Exception:"+se.getMessage());
se.printStackTrace(System.out);
}
}
else if(s.equals("上一条")){
if(index==0)
JOptionPane.showMessageDialog(null,"已经是第一条");
else {
index--;
for(int i=0;i<2;i++){
sc[i].setText(sco[index][i]);
}
try{
res=stmt.executeQuery("select 成绩 from xuanke where 学号='"+sco[index][0]+"' and 课程号='"+sco[index][1]+"'");
while(res.next()){
sc[2].setText(res.getString("成绩"));
}
}
catch(SQLException se){
System.out.print("SQL Exception:"+se.getMessage());
se.printStackTrace(System.out);
}
}
}
else if(s.equals("下一条")){
if(index==total-1)
JOptionPane.showMessageDialog(null,"已经是最后一条");
else{
index++;
for(int i=0;i<2;i++){
sc[i].setText(sco[index][i]);
}
try{
res=stmt.executeQuery("select 成绩 from xuanke where 学号='"+sco[index][0]+"' and 课程号='"+sco[index][1]+"'");
while(res.next()){
sc[2].setText(res.getString("成绩"));
}
}
catch(SQLException se){
System.out.print("SQL Exception:"+se.getMessage());
se.printStackTrace(System.out);
}
}
}
}
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 close(){
try{
stmt.close();
con.close();
}
catch(SQLException se){
System.out.println("database close exception");
}
}
public void showXinxi(){
String sql="SELECT * FROM teacher WHERE 教师号='"+name+"'";
try{
res=stmt.executeQuery(sql);
while(res.next()){
xinxi[0].setText(res.getString("教师号"));
xinxi[1].setText(res.getString("姓名"));
xinxi[2].setText(res.getString("性别"));
xinxi[3].setText(res.getString("年龄"));
xinxi[4].setText(res.getString("系别"));
}
}catch(SQLException se){
se.printStackTrace(System.out);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?