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 + -
显示快捷键?