教学信息管理系统+SQL

第一章  需求分析

1.课程设计的目的:

通过本次综合实训,使学生完成以下目标:

(1)掌握数据库的基础知识,具有分析和解决数据库领域复杂工程问题的能力;

(2)能基于数据库技术的专业知识,具备针对复杂数据库应用系统开展需求分析、方案设计与优化、物理实现和综合评价等工程实践活动的能力;

(3)能基于数据库设计的基本理念,具备在数据库应用工程项目开发中合理划分设计模块、并撰写相关设计文档的能力;

(4)能及时跟踪数据库领域及相关行业发展状况,针对复杂数据库应用工程问题,具备针对具体应用场合选择和使用恰当的技术和工具的能力。

2.课程设计题目描述:

教学信息管理系统

3.系统需求分析:

随着互联网技术的发展,越来越多的技术工作早已深入计算机系统,像员工信息管理系统、合同管理系统、财务管理系统,以及关乎到我们学习信息的教学信息管理系统,都与互联网技术密切结合。

而今天我要做的教学信息管理系统也是如此,设计要求如下:

(1)根据素材文档和主题设计表结构,建立表的关系

(2)结合所学开发工具实现数据库应用程序的开发

(3)撰写实训报告

另外,系统实现功能分析如下:

登录功能:不同身份进入不同的操作界面;

管理员

学生

任课教师

辅导员

管理员权限:最高管理权限

  • 添加数据:能对课程、学生、成绩、教学任务等添加新数据;
  • 修改数据:能对课程、学生、成绩等修改;
  • 删除数据: 能对课程、学生、成绩等删除数据;
  • 查询:查询各专业课程信息,每门课成绩信息信息、每个老师的授课情况;
  • 统计:每门课不及格人员信息、学生学分;

普通学生权限:查询成绩信息、课程信息(如教材、任课教师等)、每学期开课情况,修改个人信息等;

任课教师权限:录入任课班级所教课程的学生成绩;

辅导员选修:查询所带班级的学生学号,姓名,课程号,课程名,成绩。

第二章  概念设计

1. 根据以上对系统的需求分析来进行系统设计,本系统使用的数据库实体分别为学生信息实体、课程信息实体、教材信息实体、成绩信息实体以及任课教师信息实体。

(1)学生信息实体(student)

学生信息实体主要包括学号、姓名、班级等属性信息,E-R如下:

(2)课程信息实体(course)

课程信息实体主要包括课程类别、课程编号、课程名称、考核模式、学分、学时、课程备注、课程性质以及学年等属性信息,具体E-R如下图:

(3)教材信息实体(book)

教材信息实体主要包括课程编号、课程名称和教材名称等属性信息,具体E-R图如下:

(4)成绩信息实体(grade)

成绩信息实体主要包括学号、姓名、课程名称以及成绩等属性信息,具体E-R图如下:

(5)任课教师信息实体(teacher)

任课教师信息实体主要包括课程名称、课程备注、班级以及任课教师等属性信息,具体E-R图如下:

(6)用户信息实体(user)

用户信息实体主要包括管理员、学生、任课教师和辅导员等属性信息,具体E-R如下:

2.学生、课程、教材、成绩和任课教师总概念结构关系E-R图如下:

第三章 逻辑设计

1.实体属性表

学生(student)

学号、姓名、班级

课程(course)

课程类别、课程编号、课程名称、考核模式、学分、学时、课程备注、课程性质、学年

教材(book)

课程编号、课程名称、教材名称、ISBM号、版本信息、定价、使用班级

成绩(grade)

学号、姓名、课程名称、成绩

任课教师(teacher)

课程名称、课程备注、班级、任课教师

用户(user)

管理员、学生、任课教师、辅导员

2. 设计学生信息实体表(student)、课程信息实体表(course)、教材信息实体表(book)、成绩信息实体表(grade)、任课教师信息实体表(teacher)用户信息表(user)。

(1)学生信息表(student)

学生信息表主要包括学号、姓名和班级等属性信息,如下图:

(2)课程信息表(course)

课程信息表主要包括课程类别、课程编号、课程名称、考核模式、学分、学时、课程备注、课程性质以及学年等属性信息,如下图:

(3)教材信息表(book)

教材信息表主要包括课程编号、课程名称、教材名称ISBM号、版本信息、定价以及使用班级等属性信息,如下图:

(4)成绩信息表

成绩信息表主要包括学号、姓名、课程名称以及成绩等属性信息,如下图:

(5)任课教师信息表

任课教师信息表主要包括课程名称、课程备注、班级以及任课教师等属性信息,如下图:

(6)用户表(user)

用户表主要包括管理员、学生、任课教师和辅导员四个属性信息,如下图:

第四章 数据库设计与实现

1.根据总概念分析E-R图建立各个信息表之间的联系,确定表、字段、数据类型、约束、外键、触发器等,建立数据库关系图,如下图:

2.SQL语句实现

创建教学管理系统中各个数据表,如下:

USE `教学信息管理系统`;

(1)学生信息表的创建

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

  `学号` char(12) NOT NULL,

  `姓名` char(10) NOT NULL,

  `班级` char(20) NOT NULL,

  PRIMARY KEY (`学号`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)课程信息表的创建

DROP TABLE IF EXISTS `course`;

CREATE TABLE `course` (

  `课程类别` char(10) NOT NULL,

  `课程编号` char(10) NOT NULL,

  `课程名称` char(20) NOT NULL,

  `考核模式` char(10) NOT NULL,

  `学分` int DEFAULT NULL,

  `学时` int DEFAULT NULL,

  `课程备注` char(20) DEFAULT NULL,

  `课程性质` char(10) DEFAULT NULL,

  `学年` char(10) DEFAULT NULL,

  PRIMARY KEY (`课程名称`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(3)教材信息表的创建

DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

  `课程编号` char(10) NOT NULL,

  `课程名称` char(20) NOT NULL,

  `教材名称` char(20) DEFAULT NULL,

  `ISBM号` char(20) DEFAULT NULL,

  `版本信息` char(20) DEFAULT NULL,

  `定价` double DEFAULT NULL,

  `使用班级` char(20) DEFAULT NULL,

  PRIMARY KEY (`课程名称`)

CONSTRAINT `book_ibfk_1` FOREIGN KEY (`课程名称`) REFERENCES `course` (`课程名称`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(4)成绩信息表的创建

DROP TABLE IF EXISTS `grade`;

CREATE TABLE `grade` (

  `学号` char(12) NOT NULL,

  `姓名` char(10) NOT NULL,

  `课程名称` char(20) NOT NULL,

  `成绩` double DEFAULT NULL,

  KEY `学号` (`学号`),

  KEY `课程名称` (`课程名称`),

CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`学号`) REFERENCES `student` (`学号`),

  CONSTRAINT `grade_ibfk_2` FOREIGN KEY (`课程名称`) REFERENCES `course` (`课程名称`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(5)任课教师信息表的创建

DROP TABLE IF EXISTS `teacher`;

CREATE TABLE `teacher` (

  `课程名称` char(20) NOT NULL,

  `课程备注` char(20) DEFAULT NULL,

  `班级` char(10) NOT NULL,

  `任课教师` char(10) DEFAULT NULL,

  PRIMARY KEY (`课程名称`),

  CONSTRAINT `teacher_ibfk_1` FOREIGN KEY (`课程名称`) REFERENCES `course` (`课程名称`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(6)用户信息表的创建

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

  `管理员` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

  `学生` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

`任课教师` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

`辅导员` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第五章 数据库实现

1.数据的载入(此处图片省略,附上sql文件代码,有需要可以查看运行截图)

链接:aql.sqlhttps://gitcode.net/Pluto_ssy/mysql

(1)在SQLyog中教学信息管理系统数据库的student表中导入学生信息数据,如下图:

(2)向course表中导入课程信息数据,如下图:

(3)向grade表中导入成绩数据,如下图:

(4)向teacher表中导入任课老师的信息数据,如下图:

(5)向book表中导入教材的信息数据,如下图:

(6)向user表中导入使用者的信息数据,如下图:

2.另外建立四个表来存放管理数据库的用户账号密码,分别为管理员密码表(admin)、学生密码表(studentpswd)、任课教师密码表(teacherpswd)和 辅导员密码表(coach)。

(1)管理员密码表(admin)

(2)学生密码表(studentpswd)

(3)任课教师密码表(teacherpswd)

(4)辅导员密码表(coach)

第六章 应用程序设计

1.教学信息管理系统用户登录模板,如下图:

2.用户操作模板。

(1)管理员操作模板,如下图:

(2)辅导员操作模板,如下图:

(3)任课教师操作模板,如下图:

(4)学生操作模板,如下图:

3.具体用户操作功能实现。(此处列举任课教师登录情况举例,别的图片省略,可自行运行代码截图)

(1)在登陆界面选择“管理员”角色,输入正确的ID和密码。验证成功则可进入管理员管理界面。管理员号和登录密码存在数据库中的管理员密码信息表(admin),表中存在的管理员才允许登录。

(i)点击教师信息管理按钮,出现相关操作按钮,可以实现相应要求。

添加,如下图:

删除,如下图:

修改,如下图:

查询,如下图:

(ii)点击学生信息管理按钮、课程信息管理按钮和成绩信息管理按钮,出现相关操作按钮与操作均与教师信息按钮类似,可以实现相应要求,如下图相关操作略。

(2)在登陆界面选择“辅导员”角色,输入正确的ID和密码。验证成功则可进入辅导员管理界面。辅导员号和登录密码存在数据库中的辅导员密码信息表(coach),表中存在的辅导员才允许登录。

(i)在出现相关操作按钮,点击可以实现相应要求。

点击个人信息修改密码,如下图。

à

查询相关信息(学生、课程、成绩),如下图:

(3)在登陆界面选择“任课教师”角色,输入正确的ID和密码。验证成功则可进入系统管理员管理界面。任课教师职工号和登录密码存在数据库中的任课教师员密码信息表(teacherpswd),表中存在的任课教师才允许登录。

(i)在出现相关操作按钮,点击可以实现相应要求。

点击个人信息修改密码,如下图:

à

点击成绩信息管理,可以修改相关学生成绩,如下图。

 à

点击学生信息查询和课程信息查询,会出现相应内容,如下图:

(4)在登陆界面选择“学生”角色,输入正确的ID和密码。验证成功则可进入学生管理界面。学生学号和登录密码存在数据库中的学生密码信息表(studentpswd),表中存在的学生才允许登录。

(i)在出现相关操作按钮,点击可以实现相应要求。

个人信息管理、修改密码,如下图:

à

成绩信息查询和课程信息查询,如下图:

第七章 附录代码(乱序)

Check.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class Check {
	static String s;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		final JFrame f=new JFrame("MyPanel");
		Panel p=new MyPanel();
		//s=p.s1;
		System.out.println(s);
		f.add(new MyPanel());
		
		//f.setLocation(400,600);
		f.setSize(200, 100);
		f.setLocationRelativeTo(null);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

CM.java

package sqlyog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

public class CM extends JFrame implements ActionListener{
	//定义菜单按钮
    Button btnadd=new Button("添加");
    Button btndelete=new Button("删除");
    Button btnupdate=new Button("修改");
    Button btnsearch=new Button("查询");
    Button btndisplay=new Button("刷新显示");
    Button btnreturn=new Button("返回");
    //定义菜单栏
    JMenuBar mb=new JMenuBar();
    //定义滚轮面板
    JScrollPane jsp;
    JScrollPane jsp1;
    //定义表格
    JTable tb;
    JTable tb1;
    //定义字体
    Font f1=new Font("行楷",Font.BOLD,15);
    Font f2=new Font("宋体",Font.ITALIC,36);
    
    //创建连接数据库变量对象
    Connection conn;
    Statement stmt;
    ResultSet rs;
    
  //设置端口常量
    String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
    String username="root";
    String userpwd="123456";
    
    //定义一个Object数组
    Object[][] arr;
    
    public void connDB() { //连接数据库方法
    	try {
    		conn=DriverManager.getConnection(dbURL,username,userpwd);
    		stmt=conn.createStatement();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }
	
    public void closeDB() {  //关闭数据库方法
    	try {
    		rs.close();
    		stmt.close();
    		conn.close();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }
    
    public CM() {  //无参构造方法
    	super("课程信息管理");
    	//设置按钮字体和颜色
    	btnadd.setFont(f1);
    	btnadd.setBackground(new Color(131,175,155));
		btnupdate.setFont(f1);
		btndelete.setBackground(new Color(131,175,155));
    	btnupdate.setFont(f1);
    	btnupdate.setBackground(new Color(131,175,155));
    	btnsearch.setFont(f1);
    	btnsearch.setBackground(new Color(131,175,155));
    	btndisplay.setFont(f1);
    	btndisplay.setBackground(new Color(131,175,155));
    	btnreturn.setFont(f1);
    	btnreturn.setBackground(new Color(131,175,155));
    	//将按钮添加进菜单栏
    	mb.add(btnadd);
    	mb.add(btndelete);
    	mb.add(btnupdate);
    	mb.add(btnsearch);
    	mb.add(btndisplay);
    	mb.add(btnreturn);
    	//连接数据库
    	this.connDB();
    	
        //注册事件监听器
    	btnadd.addActionListener(this);
    	btndelete.addActionListener(this);
    	btnupdate.addActionListener(this);
    	btnsearch.addActionListener(this);
    	btndisplay.addActionListener(this);
    	btnreturn.addActionListener(this);
    	
    	setSize(500,300);
    	setDefaultCloseOperation(EXIT_ON_CLOSE);
    	setLocationRelativeTo(null);
    	setVisible(true);
    	//将菜单栏添加进容器中
    	this.setJMenuBar(mb);
    }   
    
    public void update() {
		String cno1=null; //局部变量一定要初始化
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from course");
				while(rs.next() && x<=row) {
					cno1=rs.getString("课程编号");
					x++;
				}
				this.dispose();
				new CMupdate(cno1);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		
	}
    
    public void display() {
    	int i=0,j=0;
    	//定义一个数组来存储所有数据
    	ArrayList list=new ArrayList();
    	try {
    		rs=stmt.executeQuery("select * from course");
    		while(rs.next()) {
    			list.add(rs.getString("课程类别"));
    			list.add(rs.getString("课程编号"));
    			list.add(rs.getString("课程名称"));
    			list.add(rs.getString("考核模式"));
    			list.add(rs.getString("学分"));
    			list.add(rs.getString("学时"));
    			list.add(rs.getString("课程备注"));
    			list.add(rs.getString("课程性质"));
    			list.add(rs.getString("学年"));
    			i++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    	arr=new Object[i][9];
    	String[] listname= {"课程类别","课程编号","课程名称","考核模式","学分","学时","课程备注","课程性质","学年"};
    	//用二维数组来存储所有数据
    	try {
    		rs=stmt.executeQuery("select * from course order by 课程类别");
    		while(rs.next()) {
    			arr[j][0]=rs.getString("课程类别");
    			arr[j][1]=rs.getString("课程编号");
    			arr[j][2]=rs.getString("课程名称");
    			arr[j][3]=rs.getString("考核模式");
    			arr[j][4]=rs.getString("学分");
    			arr[j][5]=rs.getString("学时");
    			arr[j][6]=rs.getString("课程备注");
    			arr[j][7]=rs.getString("课程性质");
    			arr[j][8]=rs.getString("学年");
    			j++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    	tb=new JTable(arr,listname);
    	jsp=new JScrollPane(tb);
    	this.add(jsp);
    }
    public void delete() {   //删除信息方法
		String tno=null;  //定义字符变量,来接收教师号   
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from course");
				while(rs.next() && x<=row) {
					tno=rs.getString("课程编号");
					x++;
				}
				stmt.executeUpdate("delete from teacher where 课程编号="+tno);   //局部变量一定要初始化
				JOptionPane.showMessageDialog(null,"删除成功!");
				this.dispose();
				new CM().display();
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
     
    public void show(String str) {   //查询结果方法
		JFrame f=new JFrame("查询结果");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f1);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		arr=new Object[1][9];
		try {
			rs=stmt.executeQuery("select * from course where 课程编号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("课程类别");
    			arr[0][1]=rs.getString("课程编号");
    			arr[0][2]=rs.getString("课程名称");
    			arr[0][3]=rs.getString("考核模式");
    			arr[0][4]=rs.getString("学分");
    			arr[0][5]=rs.getString("学时");
    			arr[0][6]=rs.getString("课程备注");
    			arr[0][7]=rs.getString("课程性质");
    			arr[0][8]=rs.getString("学年");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list={"课程类别","课程编号","课程名称","考核模式","学分","学时","课程备注","课程性质","学年"};
		tb1=new JTable(arr,list); //创建表格
		jsp1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
			}
		});
	}
    
    //该方法用来确认是否在数据库中找到课程编号
  	public boolean searchtest(String str) {
  		boolean x=false;
  		this.connDB();
  		try {
  			rs=stmt.executeQuery("select * from course");
  			while(rs.next()) {
  				if(rs.getString("课程编号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
  					x=true;
  				}
  			}
  			//return x;
  		}catch(Exception e) {
  			e.printStackTrace();
  		}
  		return x;
  	}
    
    public void search() {   //等效于将一个窗口写在方法里面
		JFrame f=new JFrame("查询");
		f.setLayout(new FlowLayout());
		f.setSize(240,180);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		JPanel p1=new JPanel();
		JPanel p2=new JPanel();
		JLabel stuno=new JLabel("输入课程编号:");
		JTextField stuno1=new JTextField(10);
		Button ok=new Button("确定");
		Button cancel=new Button("取消");
		p1.add(stuno);
		p1.add(stuno1);
		p2.add(ok);
		p2.add(cancel);
		f.add(p1);
		f.add(p2);
		//为组件注册监听器
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(stuno1.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"请输入课程号");
				}else {
					if(!(searchtest(stuno1.getText().trim()))) {
						f.dispose();
						JOptionPane.showMessageDialog(null,"对不起,该课程不存在!");
					}else {
					    f.dispose();            
					    //new SM(stuno1.getText());
					    show(stuno1.getText());
					}
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				//
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w=(Window)e.getComponent();  
				w.dispose();
			}
		});
	}
    
	public void actionPerformed(ActionEvent e) {
		//对事件进行相对应得处理
    	if(e.getSource()==btnadd) {  
    		this.dispose();
    		new CMadd();
    	}
    	if(e.getSource()==btndelete) {
    		JOptionPane.showMessageDialog(null,"删除操作,谨慎操作!");
    		this.delete();
    	}
    	if(e.getSource()==btnupdate) {
    		//this.dispose();
    		this.update();
    	}
    	if(e.getSource()==btnsearch) {
    		this.search();
    	}
    	if(e.getSource()==btndisplay) {
    		this.dispose();
    		new CM().display();
    	}
    	if(e.getSource()==btnreturn) {
    		this.dispose();
    		new GLFrame();
    	}
    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new CM().display();
	}

}

CMadd.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class CMadd extends JFrame implements ActionListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel by=new JLabel("课程类别:");
	JTextField tby=new JTextField(10);
	JLabel no=new JLabel("课程编号:");
	JTextField cno=new JTextField(10);
	JLabel name=new JLabel("课程名称:");
	JTextField cname=new JTextField(10);
	JLabel ks=new JLabel("考核模式:");
	JTextField tks=new JTextField(10);
	JLabel f=new JLabel("学分:");
	JTextField tf=new JTextField(10);
	JLabel t=new JLabel("学时:");
	JTextField tt=new JTextField(10);
	JLabel bu=new JLabel("课程备注:");
	JTextField tbu=new JTextField(10);
	JLabel xz=new JLabel("课程性质:");
	JTextField txz=new JTextField(10);
	JLabel xn=new JLabel("学年:");
	JTextField txn=new JTextField(10);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public CMadd() {  //构造方法
		super("课程信息添加页面");
		setLayout(new FlowLayout());
		
		//设置字体
		by.setFont(f3);
		no.setFont(f3);
		name.setFont(f3);
		ks.setFont(f3);
		f.setFont(f3);
		t.setFont(f3);
		bu.setFont(f3);
		xz.setFont(f3);
		xn.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(8,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(by);
		p1.add(tby);
		p1.add(no);
		p1.add(cno);
		p1.add(name);
		p1.add(cname);
		p1.add(ks);
		p1.add(tks);
		p1.add(f);
		p1.add(tf);
		p1.add(t);
		p1.add(tt);
		p1.add(bu);
		p1.add(tbu);
		p1.add(xz);
		p1.add(txz);
		p1.add(xn);
		p1.add(txn);
				
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
		
	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into course values("+"'"+tby.getText().trim()+"'"+","+"'"+cno.getText().trim()+"'"+","+"'"+cname.getText().trim()+"'"+","+"'"+tks.getText().trim()+"'"+","+"'"+tf.getText().trim()+"'"+","+"'"+tt.getText().trim()+"'"+","+"'"+tbu.getText().trim()+"'"+","+"'"+txz.getText().trim()+"'"+","+"'"+txn.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"课表信息添加成功!");
		    this.dispose();
		    new CM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	//判断是否找到课程号
	public boolean searchtest(String str) {
  		boolean x=false;
  		this.connDB();
  		try {
  			rs=stmt.executeQuery("select * from grade");
  			while(rs.next()) {
  				if(rs.getString("学号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
  					x=true;
  				}
  			}
  			//return x;
  		}catch(Exception e) {
  			e.printStackTrace();
  		}
  		return x;
  	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(tby.getText().equals("") || cno.getText().equals("") || cname.getText().equals("") || tks.getText().equals("") || tf.getText().equals("") || tt.getText().equals("") || tbu.getText().equals("") || txz.getText().equals("") || txn.getText().equals("")) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else if(searchtest(cno.getText())){
				JOptionPane.showMessageDialog(null,"该课程已经存在!请重新修改");
				tby.setText("");
				cno.setText("");
				cname.setText("");
				tks.setText("");
				tf.setText("");
				tt.setText("");
				tbu.setText("");
				txz.setText("");
				txn.setText("");
			}else {
				this.insert();
			}
		}
		if(e.getSource()==btnagain) {
			tby.setText("");
			cno.setText("");
			cname.setText("");
			tks.setText("");
			tf.setText("");
			tt.setText("");
			tbu.setText("");
			txz.setText("");
			txn.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new CM().display();;
			//System.exit(0);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new CMadd();
    }

}

CMupdate.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class CMupdate extends JFrame implements ActionListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel by=new JLabel("课程类别:");
	JTextField tby=new JTextField(10);
	JLabel no=new JLabel("课程编号:");
	JTextField cno=new JTextField(10);
	JLabel name=new JLabel("课程名称:");
	JTextField cname=new JTextField(10);
	JLabel ks=new JLabel("考核模式:");
	JTextField tks=new JTextField(10);
	JLabel f=new JLabel("学分:");
	JTextField tf=new JTextField(10);
	JLabel t=new JLabel("学时:");
	JTextField tt=new JTextField(10);
	JLabel bu=new JLabel("课程备注:");
	JTextField tbu=new JTextField(10);
	JLabel xz=new JLabel("课程性质:");
	JTextField txz=new JTextField(10);
	JLabel xn=new JLabel("学年:");
	JTextField txn=new JTextField(10);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public CMupdate(String str) {  //含参构造方法
		super("课程信息修改页面");
		setLayout(new FlowLayout());
		
		cno.setText(str);
		cno.setEditable(false);
		
		//设置字体
		by.setFont(f3);
		no.setFont(f3);
		name.setFont(f3);
		ks.setFont(f3);
		f.setFont(f3);
		t.setFont(f3);
		bu.setFont(f3);
		xz.setFont(f3);
		xn.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(4,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(by);
		p1.add(tby);
		p1.add(no);
		p1.add(cno);
		p1.add(name);
		p1.add(cname);
		p1.add(ks);
		p1.add(tks);
		p1.add(f);
		p1.add(tf);
		p1.add(t);
		p1.add(tt);
		p1.add(bu);
		p1.add(tbu);
		p1.add(xz);
		p1.add(txz);
		p1.add(xn);
		p1.add(txn);
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
	
	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into course values("+"'"+tby.getText().trim()+"'"+","+"'"+cno.getText().trim()+"'"+","+"'"+cname.getText().trim()+"'"+","+"'"+tks.getText().trim()+"'"+","+"'"+tf.getText().trim()+"'"+","+"'"+tt.getText().trim()+"'"+","+"'"+tbu.getText().trim()+"'"+","+"'"+txz.getText().trim()+"'"+","+"'"+txn.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"课表信息修改成功!");
		    this.dispose();
		    new CM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void delete(String s) {   //删除信息方法
		try {
			//stmt.executeUpdate("delete  from 教师表  where 教师号="+s);   //局部变量一定要初始化
			stmt.executeUpdate("delete  from course where 课程编号="+s);
			//JOptionPane.showMessageDialog(null,"删除成功!");
		}catch(Exception e) {
			e.printStackTrace();
		}
    }
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(tby.getText().equals("") || cno.getText().equals("") || cname.getText().equals("") || tks.getText().equals("") || tf.getText().equals("") || tt.getText().equals("") || tbu.getText().equals("") || txz.getText().equals("") || txn.getText().equals("")) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else {
				this.delete(cno.getText());
				this.insert();
			}
		}
		if(e.getSource()==btnagain) {
			tby.setText("");
			cno.setText("");
			cname.setText("");
			tks.setText("");
			tf.setText("");
			tt.setText("");
			tbu.setText("");
			txz.setText("");
			txn.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new CM().display();;
			//System.exit(0);
		}
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new CMadd();
    }
}

CoachFrame.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;

public class CoachFrame extends JFrame implements ActionListener{
	JLabel l=new JLabel("--辅导员页面--");
	//定义面板容器
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	//设置字体类型
	Font f1=new Font("宋体",Font.BOLD,30);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,17);
    Font f4=new Font("隶书",Font.PLAIN,40);
	
	//设置6个按钮,以便管理员操作
	JButton btnTmg=new JButton("个人信息管理");
	JButton btnSsh=new JButton("学生信息查询");
	JButton btnCsh=new JButton("课程信息查询");
	JButton btnSCmg=new JButton("成绩信息查询");
	JButton btnEXIT=new JButton("退出");
	
	String tno;
	String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
	String useName="root";
	String usePwd="123456";
	
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	Object[][] arr;
	String tpwd;
	JScrollPane scroll1,scroll2,scroll3,scroll4;
	JTable tb1,tb2,tb3,tb4; 
	int row;
	
	public CoachFrame(String str) {   //构造方法
		super("辅导员页面");
		setLayout(new FlowLayout());
		//设置标签的颜色
	    l.setFont(f1);
	    l.setForeground(Color.blue);
	    //设置按钮字体和颜色
	    btnTmg.setFont(f3);
	    btnTmg.setContentAreaFilled(false);
	    //btnTM.setBackground(Color.blue);
	    btnSsh.setFont(f3);
	    btnSsh.setContentAreaFilled(false);
	    btnCsh.setFont(f3);
	    btnCsh.setContentAreaFilled(false);
	    btnSCmg.setFont(f3);
	    btnSCmg.setContentAreaFilled(false);
	    btnEXIT.setFont(f3);
	    btnEXIT.setContentAreaFilled(false);
	    
	    this.tno=str;
	    
		p1.add(l);	
		p1.setOpaque(false);
		p2.setOpaque(false);
		p2.setLayout(new GridLayout(3,2,10,10));
		p2.add(btnTmg);
		p2.add(btnSsh);
		p2.add(btnCsh);
		p2.add(btnSCmg);
		p2.add(btnEXIT);
		 
		//布局管理器
		this.add(p1);
		this.add(p2);
		
		//设置顶层容器的大小、位置、可见性及close功能
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(350,300);
		setLocationRelativeTo(null);
		setVisible(true);
		
		this.connDB();
		
		btnTmg.addActionListener(this);
		btnSsh.addActionListener(this);
		btnCsh.addActionListener(this);
		btnSCmg.addActionListener(this);
		btnEXIT.addActionListener(this);
	}
	
	public void connDB() {
		try {
			conn=DriverManager.getConnection(dbURL,useName,usePwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void closeDB() {
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void tmg(String str) {   //个人信息管理方法
		JFrame f=new JFrame("个人信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnchange=new Button("修改密码");
		Button btnrt=new Button("返回");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		arr=new Object[1][7];
		try {
			rs=stmt.executeQuery("select * from coach where 辅导员号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("辅导员号");
				arr[0][1]=rs.getString("密码");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"辅导员号","密码"};
		tb1=new JTable(arr,list); //创建表格
		scroll1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnchange);
		f.add(btnrt);
		f.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new CoachFrame(tno);
			}
		});
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				change();
			}
		});
	}
	
	public void change() {  //创建修改密码页面,新窗口用于修改密码
		this.connDB();
		JFrame f=new JFrame("修改密码");
		f.setLayout(new FlowLayout());
		JPanel p=new JPanel();
		JPanel p1=new JPanel();
		p.setLayout(new GridLayout(3,2));
		JLabel btn1=new JLabel("初始密码:");
		btn1.setFont(f3);
		JTextField tf1=new JTextField(10);
		JLabel btn2=new JLabel("修改密码:");
		btn2.setFont(f3);
		JTextField tf2=new JTextField(10);
		Button ok=new Button("确定");
		ok.setBackground(new Color(131,175,155));
		Button cancel=new Button("取消");
		cancel.setBackground(new Color(131,175,155));
		p.add(btn1);
		p.add(tf1);
		p.add(btn2);
		p.add(tf2);
		p1.add(ok);
		p1.add(cancel);
		f.add(p);
		f.add(p1);
		
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setLocation(530,300);
		//f.setLocationRelativeTo(null);
		f.setSize(300,150);
		f.setVisible(true);
		
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				try {   //获取初始密码
					rs=stmt.executeQuery("select * from coach where 辅导员号="+tno);
					while(rs.next()) {
						tpwd=rs.getString("密码").trim();
					}
				}catch(Exception e1) {
					e1.printStackTrace();
				}
				
				if(tf2.getText().equals("") || tf1.getText().equals("")) {
					JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
				}else{
					if(!tpwd.equals(tf1.getText().trim())) {     //spwd.equals(tf1.getText().trim())
					    JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!");  //"原密码是"+spwd+"输入密码是"+tf1.getText();
					    tf1.setText("");
					    tf2.setText("");
					}else {
						try {
							stmt.executeUpdate("update coach set 密码 ="+tf2.getText().trim()+"where 职工号="+tno);
						}catch(Exception e1) {
							e1.printStackTrace();
						}
						JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
						f.dispose();
						new DLFrame();
					}
					
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new CoachFrame(tno);
			}
		});
	}
	
	public void ssh(String str) {  //学生信息查询
		JFrame f=new JFrame("学生信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("班级"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][3];
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("班级");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","班级"};
		tb2=new JTable(arr,list); //创建表格
		scroll2=new JScrollPane(tb2);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll2);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new CoachFrame(tno);
			}
		});
	}
	
	public void csh(String str) {  //课程信息查询
		JFrame f=new JFrame("课程信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select  distinct 课程类别,课程编号,课程名称,考核模式,学分,学时,课程备注,课程性质,学年  from course");
			while(rs.next()) {
				al.add(rs.getString("课程类别"));
				al.add(rs.getString("课程编号"));
				al.add(rs.getString("课程名称"));
				al.add(rs.getString("考核模式"));
				al.add(rs.getInt("学分"));
				al.add(rs.getInt("学时"));
				al.add(rs.getString("课程备注"));
				al.add(rs.getString("课程性质"));
				al.add(rs.getString("学年"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][9];
		try {
			rs=stmt.executeQuery("select  distinct 课程类别,课程编号,课程名称,考核模式,学分,学时,课程备注,课程性质,学年  from course");
			while(rs.next()) {
				arr[j][0]=rs.getString("课程类别");
				arr[j][1]=rs.getString("课程编号");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("考核模式");
				arr[j][4]=rs.getInt("学分");
				arr[j][5]=rs.getInt("学时");
				arr[j][6]=rs.getString("课程备注");
				arr[j][7]=rs.getString("课程性质");
				arr[j][8]=rs.getString("学年");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"课程类别","课程编号","课程名称","考核模式","学分","学时","课程备注","课程性质","学年"};
		tb3=new JTable(arr,list); //创建表格
		scroll3=new JScrollPane(tb3);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll3);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new CoachFrame(tno);
			}
		});
	}
	
	public void scmg(String str) {  //成绩信息管理
		JFrame f=new JFrame("学生成绩信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from grade");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("课程名称"));
				al.add(rs.getString("成绩"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select * from grade");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("成绩");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","课程名称","成绩"};
		tb4=new JTable(arr,list); //创建表格
		scroll4=new JScrollPane(tb4);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll4);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new CoachFrame(tno);
			}
		});
	}
	
	//bug方法  只能新建类来解决
	/*public void scmg(String s1,String s2) { //精确到班级成绩的页面
		String csname=null;
		this.connDB();
		try {
			rs=stmt.executeQuery("select distinct 班级号 ,班级名称 from 学生信息表 where 班级号="+"'"+s2+"'");
			while(rs.next()) {
				csname=rs.getString("班级名称").trim();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		JFrame f=new JFrame(csname+" --学生成绩信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		Button btnchange=new Button("修改");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);
		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号='"+s2+"'");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("性别"));
				al.add(rs.getInt("年龄"));
				al.add(rs.getString("班级名称"));
				al.add(rs.getString("课程号"));
				al.add(rs.getString("课程名"));
				al.add(rs.getString("成绩"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		arr=new Object[i][8];
		try {
			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号= '"+s2+"'");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("性别");
				arr[j][3]=rs.getString("年龄");
				arr[j][4]=rs.getString("班级名称");
				arr[j][5]=rs.getString("课程号");
				arr[j][6]=rs.getString("课程名");
				arr[j][7]=rs.getString("成绩");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","性别","年龄","班级名称","课程号","课程名","成绩"};
		tb5=new JTable(arr,list); //创建表格
		scroll5=new JScrollPane(tb5);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnchange);
		f.add(btnrt);
		f.add(scroll5);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		
		//String sno1=null; //局部变量一定要初始化,获取学生学号
		String cno=null; //获取课程号
		
		/
		//*Bug:千万不要在同一个方法里定义获取行数!!!!!!!!!!!无法执行                    //
		//row=tb5.getSelectedRow();  //代表鼠标选定的行数                                              //
		/
		
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				scmg(tno);
			}
		});
		
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(row==-1) {  //表示未被选中
					JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
				}else {
					//int x=0;
					try {
						//String sno1=(String)tb1.getModel().getValueAt(row,column);
						f.dispose();
						//scchange1(sno1,cno);
					}catch(Exception e1) {
						e1.printStackTrace();
					}
				}
				//f.dispose();
				//scchange();
			}
		});
	   }
	public void test() {  //用来获取行数
		
	}*/
	
	public void actionPerformed(ActionEvent e) {
		//按钮为“教师信息管理”,跳转页面
		if(e.getSource().equals(btnTmg)) {
			this.dispose();
			this.tmg(tno);
		}
		//按钮为“学生信息管理”,跳转页面
		if(e.getSource().equals(btnSsh)) {
			//new SM().display();
			this.dispose();
			this.ssh(tno);
		}
		//按钮为“课程信息管理”,跳转页面
		if(e.getSource().equals(btnCsh)) {
			this.dispose();
			this.csh(tno);
		}
		//按钮为“成绩信息管理”,跳转页面
		if(e.getSource().equals(btnSCmg)) {
			this.dispose();
			this.scmg(tno);
		}
		//按钮为“退出管理系统”,程序退出
		if(e.getSource().equals(btnEXIT)) {
        	//System.exit(0);
			this.dispose();
			new DLFrame();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new CoachFrame("20050002");
	}

}

DLFrame.java

//登录页面
package sqlyog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//import java.util.EventListener;
import java.sql.*;
//登录页面
public class DLFrame extends JFrame implements ActionListener,ItemListener{
	JPanel p1,p2,p3;
	Font f1,f2,f3,f4;
    /*Font f1=new Font("宋体",Font.BOLD,26);  //如果变量已经声明,则再定义必须放在方法里面(*此处出错)
    Font f2=new Font("幼圆",Font.ITALIC,20);
    Font f3=new Font("黑体",Font.BOLD,30);
    Font f4=new Font("隶书",Font.PLAIN,40);*/
    JLabel head1=new JLabel("用户登录 ");
    /*head1.setFont(f1);
    head1.setForeground(Color.BLUE);
    head2.setFont(f2);
    head2.setForeground(Color.GRAY);*/
    
    //定义标签和文本框以及下拉列表
    //用户名标签和输入文本框
	JLabel usename=new JLabel("用户ID:");
	JTextField usenametext=new JTextField(12);
	
	//密码标签和密码文本框,JPasswordField对象会自动对密码进行隐藏处理
	JLabel password=new JLabel("密 码:");
	JPasswordField txtPwd=new JPasswordField(10);
	
	//添加验证码
	JLabel test=new JLabel("验证码:");
	//此处后期需要重写
	
	//角色标签和下拉列表,此处使用swing中的JComboBox类,也可使用awt中的Choice类
	JLabel role=new JLabel("角色:");
	JComboBox boxrole=new JComboBox();
	
	//创建三个选择按钮
	JButton a=new JButton("登录");
	JButton b=new JButton("重置");
	JButton c=new JButton("取消");
	
	//创建Connection和Statement对象
	//连接数据库和调用数据库
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	//定义连接字符
	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
	String userName = "root";
	String userPwd = "123456";
	
	//定义变量来接收下拉列表的索引值,也可返回具体值
	int index=0;
	String index1;
	
	static int ok=1;
	static int cancel=0;
	int actionCode=0;
	
	public DLFrame(){        //构造方法
		super("教学信息管理系统");
		setLayout(new FlowLayout());
		p1=new JPanel();
		p2=new JPanel();
		p3=new JPanel();
		f1=new Font("宋体",Font.BOLD,40);
	    f2=new Font("幼圆",Font.ITALIC,40);
	    f3=new Font("楷书",Font.BOLD,28);
	    f4=new Font("隶书",Font.PLAIN,50);
	    
	    //设置面板1的标签
	    head1.setFont(f1);
	    head1.setForeground(Color.BLUE);
	    //p1.setBackground(new Color(255,240,240));
	    p1.setBackground(null);
	    p1.setOpaque(false);
		p1.add(head1);
	    
	    //面板2为4行2列的网格布局管理器
	    p2.setLayout(new GridLayout(4,2));
	    /*usename.setFont(f3);
	    password.setFont(f3);
	    role.setFont(f3);*/
	    //下拉列表中添加数据
	    boxrole.addItem("管理员");
	    boxrole.addItem("任课教师");
	    boxrole.addItem("学生");
	    boxrole.addItem("辅导员");
	    //p2.setBackground(new Color(240,255,240));
	    p2.setBackground(null);
	    p2.setOpaque(false);
	    boxrole.setOpaque(false);
	    usenametext.setOpaque(false);
	    txtPwd.setOpaque(false);
	    p2.add(role);
	    p2.add(boxrole);
	    p2.add(usename);
	    p2.add(usenametext);
	    p2.add(password);
	    p2.add(txtPwd);
	    	    
	    //将3个按钮添加进面板3中
	    //p3.setBackground(new Color(230,230,250));
	    p3.setBackground(null);
	    p3.setOpaque(false);//设置透明
	    a.setContentAreaFilled(false);
	    b.setContentAreaFilled(false);
	    c.setContentAreaFilled(false);
	    //setGround(a);
	    p3.add(a);
	    p3.add(b);
	    p3.add(c);
	    
	    //将三个面板添加进框架容器中
	    this.add(p1);
	    this.add(p2);
	    this.add(p3);
	    //this.add(new MyPanel());
	    
	    //设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(350,300);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册事件监听器
	    //这里的this就是本类,已经是ActionListener的实现类    --有待探究
	    boxrole.addItemListener(this);  
	    a.addActionListener(this);
	    b.addActionListener(this);
	    c.addActionListener(this);
	}
	
	public void connDB() {   //连接数据库方法
		//对于jdbc4版本,加载驱动可以选择性省略
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//System.out.println("加载成功");
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			//连接数据库
			//两条语句选择性使用,Debug时此处出问题!
			//conn=DriverManager.getConnection("jdbc:mysql://localhost:3306;DatabaseName=教学信息管理系统","root","123456");
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	//实现ItemListener的抽象方法
	//对下拉列表进行事件处理
	public void itemStateChanged(ItemEvent e) {
		//该高级事件用于监听用户的选定与否
		if(e.getStateChange()==ItemEvent.SELECTED) {  //判断下拉列表是否选定
			JComboBox j=(JComboBox)e.getSource();  //强制类型转换+获取事件源
			index=j.getSelectedIndex();
			//index1=j.getSelectedItem();
		}
	}
	
	//该方法用来确认是否在数据库中找到学号
	public boolean searchsno(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from studentpswd");
			while(rs.next()) {
				if(rs.getString("学号").trim().equals(str)) {
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	//该方法用来确认是否在数据库中找到任课教师职工号
	public boolean searchtno(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from teacherpswd");
			while(rs.next()) {
				if(rs.getString("职工号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	//该方法用来确认是否能在数据库中找到管理员ID
	public boolean searchmanagerno(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from admin");
			while(rs.next()) {
				if(rs.getString("管理员号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	//该方法用来确认是否在数据库中找到辅导员号
		public boolean searchcoach(String str) {
			boolean x=false;
			this.connDB();
			try {
				rs=stmt.executeQuery("select * from coach");
				while(rs.next()) {
					if(rs.getString("辅导员号").trim().equals(str)) {
						x=true;
					}
				}
				//return x;
			}catch(Exception e) {
				e.printStackTrace();
			}
			return x;
		}
	
	//实现ActionListener的抽象方法
	//对三个按钮进行事件处理
	public void actionPerformed(ActionEvent e){
		Object source=e.getSource();
		String un;
		String pw;
		boolean success= false;  //用于判断是否登录成功
		if(source==a) {  //如果事件源是“确定”按钮
			if(usenametext.getText().equals("") || txtPwd.getText().equals("")) {  //判断用户名和密码是否为空
				//JOptionPane类用作提示框,常见方法:1.showMessageDialog; 2.showOptionDialog
				JOptionPane.showMessageDialog(null,"登录名和密码不能为空!");
			}else {
				//用户名和密码均不为空,进行连接数据库
				this.connDB();
				//这里先连接数据库,再执行数据库操作步骤,等效为将一个try{}catch{}分解成几个,效果一样!
				try {
					if(index==0) {  //管理员登录
						//trim()方法:从当前 String 对象移除所有前导空白字符和尾部空白字符
						
						if(!searchmanagerno(usenametext.getText().trim())) {
							JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
							usenametext.setText("");
							txtPwd.setText("");
						}else {
							rs=stmt.executeQuery("select * from admin  where 管理员号="+ usenametext.getText().trim());
							while(rs.next()) {
								pw=rs.getString(2).trim();
								if(txtPwd.getText().equals(pw)) {
									JOptionPane.showMessageDialog(null,"管理员登录成功!");
									this.setVisible(false);
									new GLFrame();  //进入管理员界面
								}else {
									JOptionPane.showMessageDialog(null,"密码错误!请重试");
									txtPwd.setText("");
								}
							}
						}
					}
					/
					/*
					此处仍然有bug,就是对于不存在的用户无法准确识别
			                    记于11/22,后续完善!
					*/
					/
					/*if(index==0) {  //管理员登录
						rs=stmt.executeQuery("select * from 管理员");
						while(rs.next()) {
							un=rs.getString(1).trim();
							pw=rs.getString(2).trim();
							if(un==usename.getText().trim() && pw==txtPwd.getText().trim()) {
								success=true;
								break;
							}
						}
						if(success==false) {
							JOptionPane.showMessageDialog(null,"登录失败!");
						}else {
							JOptionPane.showMessageDialog(null,"管理员登录成功!");
							this.setVisible(false);
							//new ManagerFrame();  //进入管理员界面
						}
					}*/
					//*该bug已经通过布尔类型的search方法改进,记于12/07!
					if(index==1) {  //任课教师登录
						if(!searchtno(usenametext.getText().trim())) {
							JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
							usenametext.setText("");
							txtPwd.setText("");
						}else {
							rs=stmt.executeQuery("select * from teacherpswd  where 职工号="+ usenametext.getText().trim());
							while(rs.next()) {
								pw=rs.getString("密码").trim();
								if(txtPwd.getText().equals(pw)) {
									JOptionPane.showMessageDialog(null,"任课教师登录成功!");
									this.setVisible(false);
									new TeacherFrame(usenametext.getText());  //进入教师界面
								}
								else {
									JOptionPane.showMessageDialog(null,"密码错误!请重试");
									txtPwd.setText("");
								}
							}
						}
					}
					if(index==2) {  //学生登录
						if(!searchsno(usenametext.getText().trim())) {
							JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
							usenametext.setText("");
							txtPwd.setText("");
						}else {
							rs=stmt.executeQuery("select * from studentpswd where 学号="+ usenametext.getText().trim());
							while(rs.next()) {
								pw=rs.getString("密码").trim();
								if(txtPwd.getText().equals(pw)) {
									JOptionPane.showMessageDialog(null,"学生登录成功!");
									this.setVisible(false);
									new StudentFrame(usenametext.getText());  //进入学生界面
								}
								else {
									JOptionPane.showMessageDialog(null,"密码错误!请重试");
									txtPwd.setText("");
								}
							}
						}
					}
					if(index==3) {  //辅导员登录
						if(!searchcoach(usenametext.getText().trim())) {
							JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
							usenametext.setText("");
							txtPwd.setText("");
						}else {
							rs=stmt.executeQuery("select * from coach where 辅导员号="+ usenametext.getText().trim());
							while(rs.next()) {
								pw=rs.getString("密码").trim();
								if(txtPwd.getText().equals(pw)) {
									JOptionPane.showMessageDialog(null,"辅导员登录成功!");
									this.setVisible(false);
									new CoachFrame(usenametext.getText());  //进入学生界面
								}
								else {
									JOptionPane.showMessageDialog(null,"密码错误!请重试");
									txtPwd.setText("");
								}
							}
						}
					}
				}catch(Exception e1) {
					e1.printStackTrace();
					//System.out.println("连接失败!");
				}
				closeDB();
			}
		}
		if(source==b) {   //如果事件源是“重置”按钮
			usenametext.setText("");    
			txtPwd.setText("");
		}
		if(source==c) {   //如果事件源是“取消”按钮
		    //System.exit(0);
			this.dispose();
			new DLFrame();
		}
	}
	
	public static void main(String[] args){
		new DLFrame();
	}
}

GLFrame.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GLFrame extends JFrame implements ActionListener{

	///注意
	//在类里面只有成员变量和方法,切忌在成员变量里直接定义
	//“管理员”标签
	JLabel l=new JLabel("--管理员--");
	//定义面板容器
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	//设置字体类型
	Font f1=new Font("宋体",Font.BOLD,30);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
	
	//设置6个按钮,以便管理员操作
	JButton btnTM=new JButton("教师信息管理");
	JButton btnSM=new JButton("学生信息管理");
	JButton btnCM=new JButton("课程信息管理");
	JButton btnSCM=new JButton("成绩信息管理");
	JButton btnEXIT=new JButton("退出管理系统");
	
	public GLFrame() {   //构造方法
		super("管理员管理页面");
		setLayout(new FlowLayout());
		//设置标签的颜色
	    l.setFont(f1);
	    l.setForeground(Color.blue);
	    //设置按钮字体和颜色
	    btnTM.setFont(f3);
	    btnTM.setContentAreaFilled(false);
	    //btnTM.setBackground(Color.blue);
	    btnSM.setFont(f3);
	    btnSM.setContentAreaFilled(false);
	    btnCM.setFont(f3);
	    btnCM.setContentAreaFilled(false);
	    btnSCM.setFont(f3);
	    btnSCM.setContentAreaFilled(false);
	    btnEXIT.setFont(f3);
	    btnEXIT.setContentAreaFilled(false);
	    
		p1.add(l);
		p1.setOpaque(false);
		p2.setLayout(new GridLayout(3,2,10,10));
		p2.setOpaque(false);
		p2.add(btnTM);
		p2.add(btnSM);
		p2.add(btnCM);
		p2.add(btnSCM);
		p2.add(btnEXIT);
		 
		//布局管理器
		this.add(p1);
		this.add(p2);
		
		//设置顶层容器的大小、位置、可见性及close功能
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(350,300);
		setLocationRelativeTo(null);
		setVisible(true);
		
		btnTM.addActionListener(this);
		btnSM.addActionListener(this);
		btnCM.addActionListener(this);
		btnSCM.addActionListener(this);
		btnEXIT.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent e) {
		//按钮为“教师信息管理”,跳转页面
		if(e.getSource().equals(btnTM)) {
			this.dispose();
			new TM().display();
		}
		//按钮为“学生信息管理”,跳转页面
		if(e.getSource().equals(btnSM)) {
			//new SM().display();
			this.dispose();
			new SM().display();
		}
		//按钮为“课程信息管理”,跳转页面
		if(e.getSource().equals(btnCM)) {
			this.dispose();
			new CM().display();
		}
		//按钮为“成绩信息管理”,跳转页面
		if(e.getSource().equals(btnSCM)) {
			this.dispose();
			new SCM().display();
		}
		//按钮为“退出管理系统”,程序退出
		if(e.getSource().equals(btnEXIT)) {
        	//System.exit(0);
			this.dispose();
			new DLFrame();
		}
	}

	public static void main(String[] args) {
		new GLFrame();
	}

}

MyPane.java

package sqlyog;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.util.Random;

class MyPanel extends Panel{
	static String s1;
	public void paint(Graphics g){
		int width=70;
		int height=40;
		g.setColor(Color.LIGHT_GRAY);
		g.fillRect(0,0, width, height);
		g.setColor(Color.green);            //设置上下文颜色
		g.drawRect(0,0,width-1,height-1); //绘制边框
		Random r=new Random();  //产生随机数
		//绘制背景圆点
		for(int i=0;i<200;i++){
			int x=r.nextInt(width)-2;
			int y=r.nextInt(height)-2;
			g.drawOval(x, y, 2, 2);
		}
		g.setFont(new Font("黑体",Font.BOLD,30));
		g.setColor(Color.yellow);
		char[] chars=("0123456789"+"abcdefghijklmnopqrstuvwxyz"+"HIJKLMNOPQRSTUVWXYZ").toCharArray();
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<4;i++){
			int pos=r.nextInt(chars.length);
			char c=chars[pos];
			sb.append(c+" ");
		}
		g.drawString(sb.toString(),20,30);
		s1=sb.toString();
		
		g.setColor(Color.red);
		for(int i=0;i<200;i++){
			int x=r.nextInt(width)-2;
			int y=r.nextInt(height)-2;
			g.drawOval(x, y, 2, 2);
		}
	}
	
	public static void main(String[] args) {
		new MyPanel();
	}
}

SCM.java

package sqlyog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

public class SCM extends JFrame implements ActionListener{
	//定义菜单按钮
    Button btnadd=new Button("添加");
    Button btndelete=new Button("删除");
    Button btnupdate=new Button("修改");
    Button btnsearch=new Button("查询");
    Button btndisplay=new Button("刷新显示");
    Button btnreturn=new Button("返回");
    //定义菜单栏
    JMenuBar mb=new JMenuBar();
    //定义滚轮面板
    JScrollPane jsp;
    JScrollPane jsp1;
    //定义表格
    JTable tb;
    JTable tb1;
    //定义字体
    Font f1=new Font("行楷",Font.BOLD,15);
    Font f2=new Font("宋体",Font.ITALIC,36);
    
    //创建连接数据库变量对象
    Connection conn;
    Statement stmt;
    ResultSet rs;
    
  //设置端口常量
    String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
    String username="root";
    String userpwd="123456";
    
    //定义一个Object数组
    Object[][] arr;
    
    public void connDB() { //连接数据库方法
    	try {
    		conn=DriverManager.getConnection(dbURL,username,userpwd);
    		stmt=conn.createStatement();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }
	
    public void closeDB() {  //关闭数据库方法
    	try {
    		rs.close();
    		stmt.close();
    		conn.close();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }
    
    public SCM() {  //无参构造方法
    	super("成绩信息管理");
    	//设置按钮字体和颜色
    	btnadd.setFont(f1);
    	btnadd.setBackground(new Color(131,175,155));
		btndelete.setFont(f1);
		btndelete.setBackground(new Color(131,175,155));
    	btnupdate.setFont(f1);
    	btnupdate.setBackground(new Color(131,175,155));
    	btnsearch.setFont(f1);
    	btnsearch.setBackground(new Color(131,175,155));
    	btndisplay.setFont(f1);
    	btndisplay.setBackground(new Color(131,175,155));
    	btnreturn.setFont(f1);
    	btnreturn.setBackground(new Color(131,175,155));
    	//将按钮添加进菜单栏
    	mb.add(btnadd);
    	mb.add(btndelete);
    	mb.add(btnupdate);
    	mb.add(btnsearch);
    	mb.add(btndisplay);
    	mb.add(btnreturn);
    	//连接数据库
    	this.connDB();
    	
        //注册事件监听器
    	btnadd.addActionListener(this);
    	btndelete.addActionListener(this);
    	btnupdate.addActionListener(this);
    	btnsearch.addActionListener(this);
    	btndisplay.addActionListener(this);
    	btnreturn.addActionListener(this);
    	
    	setSize(500,300);
    	setDefaultCloseOperation(EXIT_ON_CLOSE);
    	setLocationRelativeTo(null);
    	setVisible(true);
    	//将菜单栏添加进容器中
    	this.setJMenuBar(mb);
    }
    
    public void update() {
		String sno1=null,cno1=null; //局部变量一定要初始化
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from grade");
				while(rs.next() && x<=row) {
					sno1=rs.getString("学号");
					cno1=rs.getString("课程名称");
					x++;
				}
				this.dispose();
				new SCMupdate(sno1,cno1);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}		
	}
    
    public void display() {
    	int i=0,j=0;
    	//定义一个数组来存储所有数据
    	ArrayList list=new ArrayList();
    	try {
    		rs=stmt.executeQuery("select * from grade ");
    		while(rs.next()) {
    			list.add(rs.getString("学号"));
    			list.add(rs.getString("姓名"));
    			list.add(rs.getString("课程名称"));
    			list.add(rs.getString("成绩"));
    			i++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    	arr=new Object[i][4];
    	String[] listname= {"学号","姓名","课程名称","成绩"};
    	//用二维数组来存储所有数据
    	try {
    		rs=stmt.executeQuery("select * from grade order by 学号");
    		while(rs.next()) {
    			arr[j][0]=rs.getString("学号");
    			arr[j][1]=rs.getString("姓名");
    			arr[j][2]=rs.getString("课程名称");
    			arr[j][3]=rs.getString("成绩");
    			j++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    	tb=new JTable(arr,listname);
    	jsp=new JScrollPane(tb);
    	this.add(jsp);
    	
    }
     
    public void delete() {   //删除信息方法
		String sno=null;  //定义字符变量,来接收学号   
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from grade");
				while(rs.next() && x<=row) {
					sno=rs.getString("学号");
					x++;
				}
				stmt.executeUpdate("delete from grade where 学号="+sno);   //局部变量一定要初始化
				JOptionPane.showMessageDialog(null,"删除成功!");
				this.dispose();
				new SCM().display();
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
    
    public void show(String s1) {   //查询结果方法
    	int i=0,j=0;
		JFrame f=new JFrame("查询结果");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f1);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		ArrayList list=new ArrayList();
    	try {
    		rs=stmt.executeQuery("select * from grade ");
    		while(rs.next()) {
    			list.add(rs.getString("学号"));
    			list.add(rs.getString("姓名"));
    			list.add(rs.getString("课程名称"));
    			list.add(rs.getString("成绩"));
    			i++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select * from grade where 学号="+s1);
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
    			arr[j][1]=rs.getString("姓名");
    			arr[j][2]=rs.getString("课程名称");
    			arr[j][3]=rs.getString("成绩");
    			j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] listname={"学号","姓名","课程名称","成绩"};
		tb1=new JTable(arr,listname); //创建表格
		jsp1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
			}
		});
	}
    
    //该方法用来确认是否在数据库中找到学号
  	public boolean searchtestsno(String str) {
  		boolean x=false;
  		this.connDB();
  		try {
  			rs=stmt.executeQuery("select * from grade");
  			while(rs.next()) {
  				if(rs.getString("学号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
  					x=true;
  				}
  			}
  			//return x;
  		}catch(Exception e) {
  			e.printStackTrace();
  		}
  		return x;
  	}
    
   //该方法用来确认是否在数据库中找到课程名称
   public boolean searchtestcno(String str) {
  		boolean x=false;
  		this.connDB();
  		try {
  			rs=stmt.executeQuery("select * from grade");
  			while(rs.next()) {
  				if(rs.getString("课程名称").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
  					x=true;
  				}
  			}
  			//return x;
  		}catch(Exception e) {
  			e.printStackTrace();
  		}
  		return x;
  	}
  	
    public void searchsno() {   //用于学号查询
		JFrame f=new JFrame("查询");
		f.setLayout(new FlowLayout());
		f.setSize(240,180);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		JPanel p1=new JPanel();
		JPanel p2=new JPanel();
		JLabel stuno=new JLabel("输入学号:");
		JTextField stuno1=new JTextField(10);
		Button ok=new Button("确定");
		Button cancel=new Button("取消");
		p1.add(stuno);
		p1.add(stuno1);
		p2.add(ok);
		p2.add(cancel);
		f.add(p1);
		f.add(p2);
		//为组件注册监听器
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(stuno1.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"请输入学号");
				}else {
					if(!(searchtestsno(stuno1.getText().trim()))) {
						f.dispose();
						JOptionPane.showMessageDialog(null,"对不起,该记录不存在!");
					}else {
					    f.dispose();            
					    //new SM(stuno1.getText());
					    show(stuno1.getText());
					}
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				search();
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w=(Window)e.getComponent();  
				w.dispose();
			}
		});
	}
    
    public void searchcno() {   //用于课程查询
		JFrame f=new JFrame("查询");
		f.setLayout(new FlowLayout());
		f.setSize(240,180);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		JPanel p1=new JPanel();
		JPanel p2=new JPanel();
		JLabel stuno=new JLabel("输入课程名称:");
		JTextField stuno1=new JTextField(10);
		Button ok=new Button("确定");
		Button cancel=new Button("取消");
		p1.add(stuno);
		p1.add(stuno1);
		p2.add(ok);
		p2.add(cancel);
		f.add(p1);
		f.add(p2);
		//为组件注册监听器
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(stuno1.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"请输入课程名称");
				}else {
					if(!(searchtestcno(stuno1.getText().trim()))) {
						f.dispose();
						JOptionPane.showMessageDialog(null,"对不起,该记录不存在!");
					}else {
					    f.dispose();            
					    //new SM(stuno1.getText());
					    show(stuno1.getText());
					}
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				search();
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w=(Window)e.getComponent();  
				w.dispose();
			}
		});
	}
    
    public void search() {  //查询成绩页面,供选择查询方式
    	Frame f=new Frame("成绩查询选择");
    	f.setLayout(new FlowLayout());
    	f.setSize(240,100);
    	f.setLocationRelativeTo(null);
    	f.setVisible(true);
    	Button btnsno=new Button("学号查询");
    	Button btncno=new Button("课程名称查询");
    	Button btncancel=new Button("取消");
    	btnsno.setBackground(new Color(131,175,155));
    	btncno.setBackground(new Color(131,175,155));
    	btncancel.setBackground(Color.GRAY);
    	f.add(btnsno);
    	f.add(btncno);
    	f.add(btncancel);    	
    	btnsno.addMouseListener(new MouseAdapter() {
    		public void mouseClicked(MouseEvent e) {
    			f.dispose();
    			searchsno();
    		}
    	});
    	btncno.addMouseListener(new MouseAdapter() {
    		public void mouseClicked(MouseEvent e) {
    			f.dispose();
    			searchcno();
    		}
    	});
    	btncancel.addMouseListener(new MouseAdapter() {
    		public void mouseClicked(MouseEvent e) {
    			f.dispose();
    		}
    	});
    	f.addWindowListener(new WindowAdapter() {
    		public void windowClosing(WindowEvent e) {
    			Window window=(Window)e.getComponent();
    			window.dispose();
    		}
    	});
    }
    
	public void actionPerformed(ActionEvent e) {
		//对事件进行相对应得处理
    	if(e.getSource()==btnadd) {  
    		this.dispose();
    		new SCMadd();
    	}
    	if(e.getSource()==btndelete) {
            JOptionPane.showMessageDialog(null,"删除,请谨慎操作!");
			this.delete();
    	}
    	if(e.getSource()==btnupdate) {
    		//this.dispose();
    		this.update();
    	}
    	if(e.getSource()==btnsearch) {
    		this.search();
    	}
    	if(e.getSource()==btndisplay) {
    		this.dispose();
    		new SCM().display();
    	}
    	if(e.getSource()==btnreturn) {
    		this.dispose();
    		new GLFrame();
    	}
    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SCM().display();
	}

}

SCMadd.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class SCMadd extends JFrame implements ActionListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel sno=new JLabel("学号:");
	JTextField sno1=new JTextField(12);
	JLabel name=new JLabel("姓名:");
	JTextField cname=new JTextField(10);
	JLabel cno=new JLabel("课程名称:");
	JTextField cno1=new JTextField(20);
	JLabel sc=new JLabel("成绩:");
	JTextField sc1=new JTextField(10);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public SCMadd() {  //构造方法
		super("成绩信息添加页面");
		setLayout(new FlowLayout());
		
		//设置字体
		sno.setFont(f3);
		name.setFont(f3);
		cno.setFont(f3);
		sc.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(8,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(sno);
		p1.add(sno1);
		p1.add(name);
		p1.add(cname);
		p1.add(cno);
		p1.add(cno1);
		p1.add(sc);
		p1.add(sc1);
		
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
		
	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into grade values("+"'"+sno1.getText().trim()+"'"+","+"'"+cname.getText().trim()+"'"+","+"'"+cno1.getText().trim()+"'"+","+"'"+sc1.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"成绩信息添加成功!");
		    this.dispose();
		    new SCM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public boolean searchtest(String s1,String s2) {
  		boolean x=false;
  		this.connDB();
  		try {
  			rs=stmt.executeQuery("select * from grade");
  			while(rs.next()) {
  				if(rs.getString("学号").trim().equals(s1) && rs.getString("课程名称").trim().equals(s2)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
  					x=true;
  				}
  			}
  			//return x;
  		}catch(Exception e) {
  			e.printStackTrace();
  		}
  		return x;
  	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(sno1.getText().equals("") || cname.getText().equals("") || cno1.getText().equals("") || sc1.getText().equals("") ) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else if(searchtest(sno1.getText(),cno1.getText())){
				JOptionPane.showMessageDialog(null,"该条成绩记录已经存在!请重新添加!");
				sno1.setText("");
				cname.setText("");
				cno1.setText("");
				sc1.setText("");
			}else {
				this.insert();
			}
		}
		if(e.getSource()==btnagain) {
			sno1.setText("");
			cname.setText("");
			cno1.setText("");
			sc1.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new SCM().display();;
			//System.exit(0);
		}
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SCMadd();
    }

}

SCmg.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;

public class SCmg extends JFrame implements ActionListener{
	
	Font f1=new Font("宋体",Font.BOLD,30);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,17);
    Font f4=new Font("隶书",Font.PLAIN,40);
    
	Button btnrt=new Button("返回");
	Button btnchange=new Button("修改");
	
	String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
	String useName="root";
	String usePwd="123456";
	
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	JTable tb;
	JScrollPane scroll;
	
	//int row;
	Object[][] arr;
	String csname;
	String csno;
	String tno;
	
	public void connDB(){  //连接数据库方法
		try {
			conn=DriverManager.getConnection(dbURL,useName,usePwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public SCmg(String s1,String s2) {
		tno=s1;
		csno=s2;
		this.connDB();
		try {
			rs=stmt.executeQuery("select distinct 姓名 from student where 学号="+"'"+s2+"'");
			while(rs.next()) {
				csname=rs.getString("姓名").trim();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		this.setTitle(csname+" --学生成绩信息");
		setLayout(new FlowLayout());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(500,150);
		setVisible(true);
		setLocationRelativeTo(null);
		
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from grade where 学号='"+s2+"'");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("课程名称"));
				al.add(rs.getString("成绩"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select * from grade where 学号='"+s2+"'");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("成绩");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","课程名称","成绩"};
		tb=new JTable(arr,list); //创建表格
		scroll=new JScrollPane(tb);
		//f.add(btnrt,BorderLayout.NORTH);
		add(btnchange);
		add(btnrt);
		add(scroll);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//row=tb.getSelectedRow();
		
		btnchange.addActionListener(this);
		btnrt.addActionListener(this);
		
	}
	
	public void scchange(String sno,String cno) {  //成绩修改精确到个人页面
		String sname=null; 
		String cname=null;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from grade where 学号="+sno+"and 课程名称="+cno);
			while(rs.next()) {
				sname=rs.getString("姓名").trim();
				cname=rs.getString("课程名称").trim();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		JFrame f=new JFrame(sname+"同学 --成绩页面");
		f.setLayout(new FlowLayout());
		f.setLocation(470,280);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(320,200);
		f.setVisible(true);
		JPanel p=new JPanel();
		p.setLayout(new GridLayout(4,2));
		JLabel l0=new JLabel("学号");
		JTextField tf0=new JTextField(10);
		tf0.setText(sno);
		tf0.setEditable(false);
		JLabel l1=new JLabel("姓名");
		JTextField tf1=new JTextField(10);
		tf1.setText(sname);
		tf1.setEditable(false);
		JLabel l2=new JLabel("课程名称");
		JTextField tf2=new JTextField(10);
		tf2.setText(cname);
		tf2.setEditable(false);
		JLabel l3=new JLabel("成绩");
		JTextField tf3=new JTextField(10);
		JButton btn1=new JButton("确定");
		btn1.setFont(f3);
		JButton btn2=new JButton("取消");
		btn2.setFont(f3);
		p.setOpaque(false);
		p.add(l0);
		p.add(tf0);
		p.add(l1);
		p.add(tf1);
		p.add(l2);
		p.add(tf2);
		p.add(l3);
		p.add(tf3);
		f.add(p);
		f.add(btn1);
		f.add(btn2);
		
		btn1.addMouseListener(new MouseAdapter() {  //确认数据更新
			public void mouseClicked(MouseEvent e) {
			    f.dispose();
				try {
					stmt.executeUpdate("update grade set 成绩="+"'"+tf3.getText()+"'"+" where 学号="+sno+"and 课程名称="+cno);
					JOptionPane.showMessageDialog(null,"成绩修改成功!");
					new TeacherFrame(tno);
				}catch(Exception e1) {
					e1.printStackTrace();
				}
			}
		});
		btn2.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
			}
		});
	}
	
	public void se() {
		this.connDB();
		int row=tb.getSelectedRow();
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
		}else {
			//int x=0;
			try {
				String sno=(String)tb.getModel().getValueAt(row,0);
				String cno=(String)tb.getModel().getValueAt(row,2);
				this.dispose();
				scchange(sno,cno);
			}catch(Exception e1) {
				e1.printStackTrace();
			}
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnchange) {
			se();
		}
		if(e.getSource()==btnrt) {
			this.dispose();
			new TeacherFrame(tno).scmg(tno);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SCmg("201903060410","形势与政策");
	}

}

SCMupdate.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class SCMupdate extends JFrame implements ActionListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel sno=new JLabel("学号:");
	JTextField sno1=new JTextField(12);
	JLabel name=new JLabel("姓名:");
	JTextField cname=new JTextField(10);
	JLabel cno=new JLabel("课程名称:");
	JTextField cno1=new JTextField(20);
	JLabel sc=new JLabel("成绩:");
	JTextField sc1=new JTextField(10);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public SCMupdate(String s1,String s2) {  //含参构造方法
		super("成绩信息修改页面");
		setLayout(new FlowLayout());
		
		sno1.setText(s1);
		sno1.setEditable(false);
		cno1.setText(s2);
		cno1.setEditable(false);
		
		//设置字体
		sno.setFont(f3);
		name.setFont(f3);
		cno.setFont(f3);
		sc.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(4,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(sno);
		p1.add(sno1);
		p1.add(name);
		p1.add(cname);
		p1.add(cno);
		p1.add(cno1);
		p1.add(sc);
		p1.add(sc1);
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
	
	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into grade values("+"'"+sno1.getText().trim()+"'"+","+"'"+cname.getText().trim()+"'"+"'"+cno1.getText().trim()+"'"+","+"'"+sc1.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"成绩信息添加成功!");
		    this.dispose();
		    new CM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void delete(String s1,String s2) {   //删除信息方法
		try {
			//stmt.executeUpdate("delete  from 教师表  where 教师号="+s);   //局部变量一定要初始化
			stmt.executeUpdate("delete  from grade where 学号="+s1+"and 课程名称="+s2);
			//JOptionPane.showMessageDialog(null,"删除成功!");
		}catch(Exception e) {
			e.printStackTrace();
		}
    }
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(sno1.getText().equals("") || cname.getText().equals("") ||cno1.getText().equals("") || sc1.getText().equals("") ) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else {
				this.delete(sno1.getText(),cno1.getText());
				this.insert();
			}

		}
		if(e.getSource()==btnagain) {
			sno1.setText("");
			cname.setText("");
			cno1.setText("");
			sc1.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new SCM().display();;
			//System.exit(0);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SCMupdate(" "," ");
    }
}

SM.java

package sqlyog;
import java.util.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SM extends JFrame implements ActionListener{   //学生管理系统
	//定义面板
	//JPanel p1=new JPanel();
	//JPanel p2=new JPanel();
	//创建5个按钮
	Button btnAdd=new Button("添加");
	Button btnDelete=new Button("删除");
	Button btnUpdate=new Button("修改");
	Button btnSearch=new Button("查询");
	Button btnDisplay=new Button("刷新显示");
	Button btnCancel=new Button("返回");
	//设置字体类型
	Font f1=new Font("宋体",Font.BOLD,30);
	Font f2=new Font("幼圆",Font.ITALIC,30);
	Font f3=new Font("行楷",Font.BOLD,15);
    Font f4=new Font("隶书",Font.PLAIN,40);
	//创建菜单栏
	JMenuBar mb=new JMenuBar();
	//定义表格
	JTable stable;
	JTable stable1;
	//定义滚动栏
	JScrollPane scroll;
	JScrollPane scroll1;
	
	//定义连接数据库对象
	//连接数据库和调用数据库
	Connection conn;
	Statement stmt;
	ResultSet rs;
		
	//定义连接字符
	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
	String userName = "root";
	String userPwd = "123456";
	
	//定义数组
	Object[][] arr;  //由于Object为所有类的父类,可以接收任意数据类型的数组元素
	
	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public SM() {
		super("学生信息管理页面");
		//布局管理
		//this.add("South",p1);
		//this.add("center",p1);
		//设置字体
		btnAdd.setFont(f3);
		btnAdd.setBackground(new Color(131,175,155)); //淡草色
		btnDelete.setFont(f3);
		btnDelete.setBackground(new Color(131,175,155));
		btnUpdate.setFont(f3);
		btnUpdate.setBackground(new Color(131,175,155));
		btnSearch.setFont(f3);
		btnSearch.setBackground(new Color(131,175,155));
		btnDisplay.setFont(f3);
		btnDisplay.setBackground(new Color(131,175,155));
		btnCancel.setFont(f3);
		btnCancel.setBackground(new Color(131,175,155));
		
		//将按钮添加进菜单栏中,与直接放进面板的按钮不同
		mb.add(btnAdd);
		mb.add(btnDelete);
		mb.add(btnUpdate);
		mb.add(btnSearch);
		mb.add(btnDisplay);
		mb.add(btnCancel);
		
		//连接数据库
		this.connDB();
		
		//注册时间监听器
		btnAdd.addActionListener(this);
		btnDelete.addActionListener(this);
		btnUpdate.addActionListener(this);
		btnSearch.addActionListener(this);
		btnDisplay.addActionListener(this);
		btnCancel.addActionListener(this);

		//设置窗口的大小和位置
		setSize(500,300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setJMenuBar(mb);  //添加菜单栏以后则不需要用监听器来关闭窗口
		this.setVisible(true);
	}
	
	
	public void display() {  //显示所有学生的信息
		int i=0,j=0,k=0;
		//长度可变数组集合
		ArrayList al=new ArrayList();
		
		//注意:该try{}catch{}目的即求数据库中数据的组数
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {   //首先用数组al来接收所有信息
				//注意:如果trim()匹配到null数据,则数据库会报错
				al.add(rs.getString("学号").trim());
				al.add(rs.getString("姓名").trim());
				al.add(rs.getString("班级").trim());
				i++;  //用来统计信息组数
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		//定义二维数组
		arr=new Object[i][6];
		//创建菜单栏头部名
		String[] columnNames= {"学号","姓名","班级"};
		//该代码块才是最终对信息进行分组
		try {
			rs=stmt.executeQuery("select * from student order by 学号");
			while(rs.next()) {   //首先用数组al来接收所有信息
				arr[j][0]=rs.getString("学号").trim();
				arr[j][1]=rs.getString("姓名").trim();
				arr[j][2]=rs.getString("班级").trim();
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		stable=new JTable(arr,columnNames); //创建表格
		scroll=new JScrollPane(stable);
		this.add(scroll);  //创建滚条
	}
	
	public void delete() {   //删除信息方法
		String sno=null;  //定义字符变量,来接收学号   
		int row=stable.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from student");
				while(rs.next() && x<=row) {
					sno=rs.getString("学号");
					x++;
				}
				stmt.executeUpdate("delete  from student where 学号="+sno);   //局部变量一定要初始化
				stmt.executeUpdate("delete  from grade where 学号="+sno);
				JOptionPane.showMessageDialog(null,"删除成功!");
				this.dispose();
				new SM().display();
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public void update() {
		String sno1=null; //局部变量一定要初始化
		int row=stable.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from student");
				while(rs.next() && x<=row) {
					sno1=rs.getString("学号");
					x++;
				}
				this.dispose();
				new SMupdate(sno1);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		
	}
	public void show(String str) {   //查询结果方法
		JFrame f1=new JFrame("查询结果");
		f1.setLayout(new FlowLayout());
		f1.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f1.setSize(500,150);
		f1.setVisible(true);
		f1.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));

		this.connDB();
		arr=new Object[1][6];
		try {
			rs=stmt.executeQuery("select * from student  where 学号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("学号");
				arr[0][1]=rs.getString("姓名");
				arr[0][2]=rs.getString("班级");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] columnNames= {"学号","姓名","班级"};
		stable1=new JTable(arr,columnNames); //创建表格
		scroll1=new JScrollPane(stable1);
		f1.add(btnrt);
		f1.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt);
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f1.dispose();
			}
		});
	}
	
	//该方法用来确认是否在数据库中找到学号
	public boolean searchtest(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				if(rs.getString("学号").trim().equals(str)) {
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	public void search() {   //等效于将一个窗口写在方法里面
		JFrame f=new JFrame("查询");
		f.setLayout(new FlowLayout());
		f.setSize(240,180);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		JPanel p1=new JPanel();
		JPanel p2=new JPanel();
		JLabel stuno=new JLabel("输入学号:");
		JTextField stuno1=new JTextField(10);
		Button ok=new Button("确定");
		Button cancel=new Button("取消");
		p1.add(stuno);
		p1.add(stuno1);
		p2.add(ok);
		p2.add(cancel);
		f.add(p1);
		f.add(p2);
		//为组件注册监听器
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(stuno1.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"请输入学号");
				}else {
					if(!(searchtest(stuno1.getText().trim()))) {
						f.dispose();
						JOptionPane.showMessageDialog(null,"对不起,该学生不存在!");
					}else {
					    f.dispose();            
					    //new SM(stuno1.getText());
					    show(stuno1.getText());
					}
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				//
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w=(Window)e.getComponent();  
				w.dispose();
			}
		});
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnAdd) {
			this.dispose();
			new SMadd();
		}
		if(e.getSource()==btnDelete) {
            JOptionPane.showMessageDialog(null,"删除,请谨慎操作!");
			this.delete();
		}
        if(e.getSource()==btnUpdate) {
			this.update(); 
		}
        if(e.getSource()==btnSearch) {
        	this.search(); 
        }
        if(e.getSource()==btnDisplay) {
        	this.dispose();
        	new SM().display();
        }
        if(e.getSource()==btnCancel) {
        	this.dispose();
        	new GLFrame();
        }
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SM().display();
	}

}

SMadd.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class SMadd extends JFrame implements ActionListener,ItemListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel no=new JLabel("学号:");
	JTextField sno=new JTextField(10);
	JLabel name=new JLabel("姓名:");
	JTextField sname=new JTextField(20);
	JLabel classno=new JLabel("班级:");
	JTextField sclassno=new JTextField(20);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public SMadd() {  //构造方法
		super("学生信息添加页面");
		setLayout(new FlowLayout());
		
		//设置字体
		no.setFont(f3);
		name.setFont(f3);
		classno.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(7,2));
		//p2.setLayout(new GridLayout(4,2));

		//将标签和文本框添加进面板
		p1.add(no);
		p1.add(sno);
		p1.add(name);
		p1.add(sname);
		p1.add(classno);
		p1.add(sclassno);
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
	
	public void itemStateChanged(ItemEvent e) {
		if(e.getStateChange()==ItemEvent.SELECTED) {
			JComboBox j=(JComboBox)e.getSource();
		}
	}
	
	public void insert() {  //添加插入方法
		//用来插入数据
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into student values("+"'"+sno.getText().trim()+"'"+","+"'"+sname.getText().trim()+"'"+","+"'"+sclassno.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"信息添加成功!");
		    this.dispose();
		    new SM();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}	
	
	//用来寻找学号是否存在
	public boolean searchtest(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				if(rs.getString("学号").trim().equals(str)) {
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			//先判断填入信息是否为空,在判断密码是否正确
			if(sno.getText().equals("") || sname.getText().equals("") || sclassno.getText().equals("")) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else if(searchtest(sno.getText())) {
				JOptionPane.showMessageDialog(null,"该学生已存在");
				sno.setText("");
				sname.setText("");
				sclassno.setText("");
			}else {
				this.insert();
			}

		}
		if(e.getSource()==btnagain) {
			sno.setText("");
			sname.setText("");
			sclassno.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new SM().display();;
			//System.exit(0);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SMadd();
    }

}

SMupdate.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class SMupdate extends JFrame implements ActionListener,ItemListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel no=new JLabel("学号:");
	JTextField sno=new JTextField(10);
	JLabel name=new JLabel("姓名:");
	JTextField sname=new JTextField(20);
	JLabel classno=new JLabel("班级:");
	JTextField sclassno=new JTextField(20);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
    
	public SMupdate(String str) {  //含参构造方法
		super("学生信息修改页面");
		setLayout(new FlowLayout());
			
		sno.setText(str);
		sno.setEditable(false);
			
		//设置字体
		no.setFont(f3);
		name.setFont(f3);
		classno.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(7,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(no);
		p1.add(sno);
		p1.add(name);
		p1.add(sname);
		p1.add(classno);
		p1.add(sclassno);
			
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
			
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
			
		//设置顶层容器的大小、位置、可见性及close功能
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(500,350);
		setLocationRelativeTo(null);
		setVisible(true);
		    
	    //注册监听器
		btnsure.addActionListener(this);
		btnagain.addActionListener(this);
		btncancel.addActionListener(this);
	}
	
	public void itemStateChanged(ItemEvent e) {
		if(e.getStateChange()==ItemEvent.SELECTED) {
			JComboBox j=(JComboBox)e.getSource();
		}
	}
	
	public void insert() {  //添加插入方法
		//用来插入数据
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into student values("+"'"+sno.getText().trim()+"'"+","+"'"+sname.getText().trim()+"'"+","+sclassno.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"信息修改成功!");
		    this.dispose();
		    new SM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}	
	
	public void delete(String s) {   //删除信息方法
		try {
			stmt.executeUpdate("delete  from grade where 学号="+s);
			stmt.executeUpdate("delete  from student where 学号="+s);   //局部变量一定要初始化	
			//JOptionPane.showMessageDialog(null,"删除成功!");
		}catch(Exception e) {
			e.printStackTrace();
		}
}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			//先判断填入信息是否为空,在判断密码是否正确
			if(sno.getText().equals("") || sname.getText().equals("") || sclassno.getText().equals("")) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else {
				this.delete(sno.getText());
				this.insert();
			}

		}
		if(e.getSource()==btnagain) {
			sno.setText("");
			sname.setText("");
			sclassno.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new SM().display();;
			//System.exit(0);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SMupdate(" ");
    }
	
}

StudentFrame.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;

public class StudentFrame extends JFrame implements ActionListener{

	///注意
	//在类里面只有成员变量和方法,切忌在成员变量里直接定义
	//“管理员”标签
	JLabel l=new JLabel("--学生页面--");
	//定义面板容器
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	//设置字体类型
	Font f1=new Font("宋体",Font.BOLD,30);
    Font f2=new Font("幼圆",Font.ITALIC,20);
    Font f3=new Font("楷体",Font.BOLD,15);
    Font f4=new Font("隶书",Font.PLAIN,18);
	
	//设置6个按钮,以便管理员操作
	Button btnSelf=new Button("个人信息管理");
	Button btnSCsh=new Button("成绩信息查询");
	Button btnCsh=new Button("课程信息查询");
	Button btnEXIT=new Button("退出");
	
	//
	String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
	String userName="root";
	String userPwd="123456";
	
	//
	Connection conn;
	Statement stmt;
	ResultSet rs;
	//
	Object[][] arr;
	String sno;
	String spwd;
	JScrollPane scroll1;
	JScrollPane jsp1;
	JTable stable1;
	JTable tb1;
	public void connDB() {
		try {
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void closeDB() {
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public StudentFrame(String str) {   //构造方法
		super("学生页面");
		setLayout(new FlowLayout());
		//设置标签的颜色
	    l.setFont(f1);
	    l.setForeground(Color.blue);
	    //设置按钮字体和颜色
	    btnSelf.setFont(f2);
	    btnSelf.setBackground(new Color(0,255,255));
	    btnSCsh.setFont(f3);
	    btnSCsh.setBackground(new Color(255,160,122));
	    btnCsh.setFont(f4);
	    btnCsh.setBackground(new Color(30,144,255));
	    btnEXIT.setFont(f2);
	    btnEXIT.setBackground(new Color(220,20,60));
	    
		p1.add(l);
		p1.setOpaque(false);
		p2.setLayout(new GridLayout(4,2,10,10));
		p2.setOpaque(false);
		p2.add(btnSelf);
		p2.add(btnSCsh);
		p2.add(btnCsh);
		p2.add(btnEXIT);
		
		this.connDB();
		this.sno=str;
		//布局管理器
		this.add(p1);
		this.add(p2);
		
		//设置顶层容器的大小、位置、可见性及close功能
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(350,300);
		setLocationRelativeTo(null);
		setVisible(true);
		
		btnSelf.addActionListener(this);
		btnSCsh.addActionListener(this);
		btnCsh.addActionListener(this);
		btnEXIT.addActionListener(this);
	}
	
	public void csearch(String str) {   //课程查询方法
		JFrame f=new JFrame("课程信息页面");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);
        
		int i=0,j=0;
		ArrayList ar=new ArrayList();
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from course");
			while(rs.next()){
				ar.add(rs.getString("课程类别"));
				ar.add(rs.getString("课程编号"));
				ar.add(rs.getString("课程名称"));
				ar.add(rs.getString("考核模式"));
				ar.add(rs.getInt("学分"));
				ar.add(rs.getInt("学时"));
				ar.add(rs.getString("课程备注"));
				ar.add(rs.getString("课程性质"));
				ar.add(rs.getString("学年"));
				j++;
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		arr=new Object[j][9];
		try {
			rs=stmt.executeQuery("select * from course");
			while(rs.next()) {
				arr[j][0]=rs.getString("课程类别");
				arr[j][1]=rs.getString("课程编号");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("考核模式");
				arr[j][4]=rs.getInt("学分");
				arr[j][5]=rs.getInt("学时");
				arr[j][6]=rs.getString("课程备注");
				arr[j][7]=rs.getString("课程性质");
				arr[j][8]=rs.getString("学年");
    			i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list={"课程类别","课程编号","课程名称","考核模式","学分","学时","课程备注","课程性质","学年"};
		tb1=new JTable(arr,list); //创建表格
		jsp1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new StudentFrame(sno);
			}
		});
	}
	
	public void scsearch(String str) {  //查询成绩页面
		int i=0,j=0;
		JFrame f=new JFrame("成绩信息页面");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,200);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		ArrayList list=new ArrayList();
    	try {
    		rs=stmt.executeQuery("select * from grade where 学号="+str);
    		while(rs.next()) {
    			list.add(rs.getString("学号"));
    			list.add(rs.getString("姓名"));
    			list.add(rs.getString("课程名称"));
    			list.add(rs.getString("成绩"));
    			i++;
    		}
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select * from grade");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("成绩");
    			j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] listname={"学号","姓名","课程名称","成绩"};
		tb1=new JTable(arr,listname); //创建表格
		jsp1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new StudentFrame(str);
			}
		});   	
    }
	
	public void display(String str) {   //用来显示个人信息
		JFrame f1=new JFrame("个人信息");
		f1.setLayout(new FlowLayout());
		f1.setSize(500,150);
		f1.setVisible(true);
		f1.setLocationRelativeTo(null);
		Button btnchange=new Button("修改密码");
		Button btnrt=new Button("返回");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));

		this.connDB();
		arr=new Object[1][3];
		try {
			rs=stmt.executeQuery("select * from student where 学号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("学号");
				arr[0][1]=rs.getString("姓名");
				arr[0][2]=rs.getString("班级");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] columnNames= {"学号","姓名","班级"};
		stable1=new JTable(arr,columnNames); //创建表格
		scroll1=new JScrollPane(stable1);
		f1.add(btnchange);
		f1.add(btnrt);
		f1.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt);
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f1.dispose();
				new StudentFrame(sno);
			}
		});
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f1.dispose();
				change();
			}
		});
	}
	
	public void change() {  //创建修改密码页面,新窗口用于修改密码
		this.connDB();
		JFrame f=new JFrame("修改密码");
		f.setLayout(new FlowLayout());
		JPanel p=new JPanel();
		JPanel p1=new JPanel();
		p.setLayout(new GridLayout(3,2));
		JLabel btn1=new JLabel("初始密码:");
		btn1.setFont(f3);
		JTextField tf1=new JTextField(10);
		JLabel btn2=new JLabel("修改密码:");
		btn2.setFont(f3);
		JTextField tf2=new JTextField(10);
		Button ok=new Button("确定");
		ok.setBackground(new Color(131,175,155));
		Button cancel=new Button("取消");
		cancel.setBackground(new Color(131,175,155));
		p.add(btn1);
		p.add(tf1);
		p.add(btn2);
		p.add(tf2);
		p1.add(ok);
		p1.add(cancel);
		f.add(p);
		f.add(p1);
		
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setLocation(530,300);
		//f.setLocationRelativeTo(null);
		f.setSize(300,150);
		f.setVisible(true);
		
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				try {   //获取初始密码
					rs=stmt.executeQuery("select * from studentpswd where 学号="+sno);
					while(rs.next()) {
						spwd=rs.getString("密码").trim();  //!!!对于数据库中传回来的值一定要用trim();因为后面会有多余的空格!!!
						/*bug:数据库中数据会有空格,mmp,记于12/10/凌晨1:56,耻!*/
						//spwd="123";
					}
				}catch(Exception e1) {
					e1.printStackTrace();
				}
				
				if(tf1.getText().equals("") || tf2.getText().equals("")) {
					JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
				}else {
					if(!spwd.equals(tf1.getText())) {     //spwd.equals(tf1.getText().trim())
					    JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!");  //"原密码是"+spwd+"输入密码是"+tf1.getText();
					    tf1.setText("");
					    tf2.setText("");
				    }else {
					    try {
						    stmt.executeUpdate("update studentpswd set 密码 ="+"'"+tf2.getText().trim()+"'"+"where 学号="+sno);
					    }catch(Exception e1) {
						    e1.printStackTrace();
					    }
					    JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
					    f.dispose();
					    new DLFrame();
				    }
			    }
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new StudentFrame(sno);
			}
		});
	}
	
	public void actionPerformed(ActionEvent e) {
		//按钮为“个人信息修改”,跳转页面
		if(e.getSource().equals(btnSelf)) {
			this.dispose();
			this.display(sno);
		}
		//按钮为“成绩信息查询”,跳转页面
		if(e.getSource().equals(btnSCsh)) {
			//new SM().display();
			this.dispose();
			this.scsearch(sno);
		}
		//按钮为“课程信息查询”,跳转页面
		if(e.getSource().equals(btnCsh)) {
			this.dispose();
			this.csearch(sno);
		}
		//按钮为“退出管理系统”,程序退出
		if(e.getSource().equals(btnEXIT)) {
        	//System.exit(0);
			this.dispose();
			new DLFrame();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new StudentFrame("201903060401");
	}

}

TeacherFrame.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;

public class TeacherFrame extends JFrame implements ActionListener{
	JLabel l=new JLabel("--教师页面--");
	//定义面板容器
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	//设置字体类型
	Font f1=new Font("宋体",Font.BOLD,30);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,17);
    Font f4=new Font("隶书",Font.PLAIN,40);
	
	//设置6个按钮,以便管理员操作
	JButton btnTmg=new JButton("个人信息管理");
	JButton btnSsh=new JButton("学生信息查询");
	JButton btnCsh=new JButton("课程信息查询");
	JButton btnSCmg=new JButton("成绩信息管理");
	JButton btnEXIT=new JButton("退出");
	
	String tno;
	String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
	String useName="root";
	String usePwd="123456";
	
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	Object[][] arr;
	String tpwd;
	JScrollPane scroll1,scroll2,scroll3,scroll4,scroll5;
	JTable tb1,tb2,tb3,tb4,tb5; 
	int row;
	
	public TeacherFrame(String str) {   //构造方法
		super("教师页面");
		setLayout(new FlowLayout());
		//设置标签的颜色
	    l.setFont(f1);
	    l.setForeground(Color.blue);
	    //设置按钮字体和颜色
	    btnTmg.setFont(f3);
	    btnTmg.setContentAreaFilled(false);
	    //btnTM.setBackground(Color.blue);
	    btnSsh.setFont(f3);
	    btnSsh.setContentAreaFilled(false);
	    btnCsh.setFont(f3);
	    btnCsh.setContentAreaFilled(false);
	    btnSCmg.setFont(f3);
	    btnSCmg.setContentAreaFilled(false);
	    btnEXIT.setFont(f3);
	    btnEXIT.setContentAreaFilled(false);
	    
	    this.tno=str;
	    
		p1.add(l);	
		p1.setOpaque(false);
		p2.setOpaque(false);
		p2.setLayout(new GridLayout(3,2,10,10));
		p2.add(btnTmg);
		p2.add(btnSsh);
		p2.add(btnCsh);
		p2.add(btnSCmg);
		p2.add(btnEXIT);
		 
		//布局管理器
		this.add(p1);
		this.add(p2);
		
		//设置顶层容器的大小、位置、可见性及close功能
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(350,300);
		setLocationRelativeTo(null);
		setVisible(true);
		
		this.connDB();
		
		btnTmg.addActionListener(this);
		btnSsh.addActionListener(this);
		btnCsh.addActionListener(this);
		btnSCmg.addActionListener(this);
		btnEXIT.addActionListener(this);
	}
	
	public void connDB() {
		try {
			conn=DriverManager.getConnection(dbURL,useName,usePwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void closeDB() {
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void tmg(String str) {   //个人信息管理方法
		JFrame f=new JFrame("个人信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnchange=new Button("修改密码");
		Button btnrt=new Button("返回");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		arr=new Object[1][7];
		try {
			rs=stmt.executeQuery("select * from teacher where 职工号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("课程名称");
				arr[0][1]=rs.getString("课程备注");
				arr[0][2]=rs.getString("班级");
				arr[0][3]=rs.getString("任课教师");
				arr[0][4]=rs.getString("职工号");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"课程名称","课程备注","班级","任课教师","职工号"};
		tb1=new JTable(arr,list); //创建表格
		scroll1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnchange);
		f.add(btnrt);
		f.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new TeacherFrame(tno);
			}
		});
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				change();
			}
		});
	}
	
	public void change() {  //创建修改密码页面,新窗口用于修改密码
		this.connDB();
		JFrame f=new JFrame("修改密码");
		f.setLayout(new FlowLayout());
		JPanel p=new JPanel();
		JPanel p1=new JPanel();
		p.setLayout(new GridLayout(3,2));
		JLabel btn1=new JLabel("初始密码:");
		btn1.setFont(f3);
		JTextField tf1=new JTextField(10);
		JLabel btn2=new JLabel("修改密码:");
		btn2.setFont(f3);
		JTextField tf2=new JTextField(10);
		Button ok=new Button("确定");
		ok.setBackground(new Color(131,175,155));
		Button cancel=new Button("取消");
		cancel.setBackground(new Color(131,175,155));
		p.add(btn1);
		p.add(tf1);
		p.add(btn2);
		p.add(tf2);
		p1.add(ok);
		p1.add(cancel);
		f.add(p);
		f.add(p1);
		
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setLocation(530,300);
		//f.setLocationRelativeTo(null);
		f.setSize(300,150);
		f.setVisible(true);
		
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				try {   //获取初始密码
					rs=stmt.executeQuery("select * from teacherpswd where 职工号="+tno);
					while(rs.next()) {
						tpwd=rs.getString("密码").trim();
					}
				}catch(Exception e1) {
					e1.printStackTrace();
				}
				
				if(tf2.getText().equals("") || tf1.getText().equals("")) {
					JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
				}else{
					if(!tpwd.equals(tf1.getText().trim())) {     //spwd.equals(tf1.getText().trim())
					    JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!");  //"原密码是"+spwd+"输入密码是"+tf1.getText();
					    tf1.setText("");
					    tf2.setText("");
					}else {
						try {
							stmt.executeUpdate("update teacherpswd set 密码 ="+tf2.getText().trim()+"where 职工号="+tno);
						}catch(Exception e1) {
							e1.printStackTrace();
						}
						JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
						f.dispose();
						new DLFrame();
					}
					
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new TeacherFrame(tno);
			}
		});
	}
	
	public void ssh(String str) {  //学生信息查询
		JFrame f=new JFrame("学生信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("班级"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][3];
		try {
			rs=stmt.executeQuery("select * from student");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("班级");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","班级"};
		tb2=new JTable(arr,list); //创建表格
		scroll2=new JScrollPane(tb2);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll2);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new TeacherFrame(tno);
			}
		});
	}
	
	public void csh(String str) {  //课程信息查询
		JFrame f=new JFrame("课程信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select  distinct 课程名称,考核模式,学分,学时  from course");
			while(rs.next()) {
				al.add(rs.getString("课程名称"));
				al.add(rs.getString("考核模式"));
				al.add(rs.getInt("学分"));
				al.add(rs.getInt("学时"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select  distinct 课程名称,考核模式,学分,学时  from course");
			while(rs.next()) {
				arr[j][0]=rs.getString("课程名称");
				arr[j][1]=rs.getString("考核模式");
				arr[j][2]=rs.getInt("学分");
				arr[j][3]=rs.getInt("学时");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"课程名称","考核模式","学分","学时"};
		tb3=new JTable(arr,list); //创建表格
		scroll3=new JScrollPane(tb3);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll3);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new TeacherFrame(tno);
			}
		});
	}
	
	public void scmg(String str) {  //成绩信息管理
		JFrame f=new JFrame("学生成绩信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		Button btnchange=new Button("修改成绩");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from grade");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("课程名称"));
				al.add(rs.getString("成绩"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		arr=new Object[i][4];
		try {
			rs=stmt.executeQuery("select * from grade");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("课程名称");
				arr[j][3]=rs.getString("成绩");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","课程名称","成绩"};
		tb4=new JTable(arr,list); //创建表格
		scroll4=new JScrollPane(tb4);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnchange);
		f.add(btnrt);
		f.add(scroll4);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new TeacherFrame(tno);
			}
		});
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				scchange();
			}
		});
	}
	
	public void scchange() {  //修改成绩页面
		JFrame f=new JFrame("修改成绩");
		f.setLayout(new FlowLayout());
		JLabel l=new JLabel("输入学号");
		JTextField tf=new JTextField(12);
		JButton jb1=new JButton("确定");
		jb1.setFont(f3);
		jb1.setBackground(new Color(131,175,155));
		JButton jb2=new JButton("返回");
		jb2.setFont(f3);
		jb2.setBackground(new Color(131,175,155));
		
		f.add(l);
		f.add(tf);
		f.add(jb1);
		f.add(jb2);
		
		jb1.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				new SCmg(tno,tf.getText());  //重新刷新成绩页面,为班级成绩
			}
		});
		jb2.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				scmg(tno);  //取消按钮,重新显示页面
			}
		});
		
		f.setSize(200,150);
		f.setLocationRelativeTo(null);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setVisible(true);
	}
	
	//bug方法  只能新建类来解决
	/*public void scmg(String s1,String s2) { //精确到班级成绩的页面
		String csname=null;
		this.connDB();
		try {
			rs=stmt.executeQuery("select distinct 班级号 ,班级名称 from 学生信息表 where 班级号="+"'"+s2+"'");
			while(rs.next()) {
				csname=rs.getString("班级名称").trim();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		JFrame f=new JFrame(csname+" --学生成绩信息");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		Button btnchange=new Button("修改");
		btnchange.setFont(f3);
		btnchange.setBackground(new Color(131,175,155));
		btnrt.setFont(f3);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);
		this.connDB();
		int i=0,j=0;
		ArrayList al=new ArrayList();
		try {
			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号='"+s2+"'");
			while(rs.next()) {
				al.add(rs.getString("学号"));
				al.add(rs.getString("姓名"));
				al.add(rs.getString("性别"));
				al.add(rs.getInt("年龄"));
				al.add(rs.getString("班级名称"));
				al.add(rs.getString("课程号"));
				al.add(rs.getString("课程名"));
				al.add(rs.getString("成绩"));
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		arr=new Object[i][8];
		try {
			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号= '"+s2+"'");
			while(rs.next()) {
				arr[j][0]=rs.getString("学号");
				arr[j][1]=rs.getString("姓名");
				arr[j][2]=rs.getString("性别");
				arr[j][3]=rs.getString("年龄");
				arr[j][4]=rs.getString("班级名称");
				arr[j][5]=rs.getString("课程号");
				arr[j][6]=rs.getString("课程名");
				arr[j][7]=rs.getString("成绩");
				j++;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"学号","姓名","性别","年龄","班级名称","课程号","课程名","成绩"};
		tb5=new JTable(arr,list); //创建表格
		scroll5=new JScrollPane(tb5);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnchange);
		f.add(btnrt);
		f.add(scroll5);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		
		//String sno1=null; //局部变量一定要初始化,获取学生学号
		String cno=null; //获取课程号
		
		/
		//*Bug:千万不要在同一个方法里定义获取行数!!!!!!!!!!!无法执行                    //
		//row=tb5.getSelectedRow();  //代表鼠标选定的行数                                              //
		/
		
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				scmg(tno);
			}
		});
		
		btnchange.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(row==-1) {  //表示未被选中
					JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
				}else {
					//int x=0;
					try {
						//String sno1=(String)tb1.getModel().getValueAt(row,column);
						f.dispose();
						//scchange1(sno1,cno);
					}catch(Exception e1) {
						e1.printStackTrace();
					}
				}
				//f.dispose();
				//scchange();
			}
		});
	   }
	public void test() {  //用来获取行数
		
	}*/
	
	public void actionPerformed(ActionEvent e) {
		//按钮为“教师信息管理”,跳转页面
		if(e.getSource().equals(btnTmg)) {
			this.dispose();
			this.tmg(tno);
		}
		//按钮为“学生信息管理”,跳转页面
		if(e.getSource().equals(btnSsh)) {
			//new SM().display();
			this.dispose();
			this.ssh(tno);
		}
		//按钮为“课程信息管理”,跳转页面
		if(e.getSource().equals(btnCsh)) {
			this.dispose();
			this.csh(tno);
		}
		//按钮为“成绩信息管理”,跳转页面
		if(e.getSource().equals(btnSCmg)) {
			this.dispose();
			this.scmg(tno);
		}
		//按钮为“退出管理系统”,程序退出
		if(e.getSource().equals(btnEXIT)) {
        	//System.exit(0);
			this.dispose();
			new DLFrame();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TeacherFrame("20050002");
	}

}

TM.java

package sqlyog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

public class TM extends JFrame implements ActionListener,ItemListener{
	//定义按钮,添加进JMenuBar
	Button btnadd=new Button("添加");
	Button btndelete=new Button("删除");
	Button btnupdate=new Button("修改");
	Button btnsearch=new Button("查询");
	Button btndisplay=new Button("刷新显示");
	Button btnreturn=new Button("返回");
	//定义菜单栏
	JMenuBar mb=new JMenuBar();
	//定义字体
	Font f1=new Font("行楷",Font.BOLD,15);
	Font f2=new Font("楷体",Font.ITALIC,24);
	
	//定义表格
	JTable tb;
	JTable tb1;
	//定义滚轮面板
	JScrollPane jsp;
	JScrollPane scroll1;
	
	//定义数据库对象,定义连接变量
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	//定义连接字符串
	String dbURL="jdbc:mysql://localhost:3306/教学信息管理系统";
	String username="root";
	String userpwd="123456";
	
	Object[][] arr;
	//连接数据库
	public void connDB(){  //连接数据库方法
		try {
			conn=DriverManager.getConnection(dbURL,username,userpwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public TM() {   //构造方法
		super("教师信息管理系统");
		//设置按钮颜色和字体
		btnadd.setFont(f1);
		btnadd.setBackground(new Color(131,175,155));
		btndelete.setFont(f1);
		btndelete.setBackground(new Color(131,175,155));
		btnupdate.setFont(f1);
		btnupdate.setBackground(new Color(131,175,155));
		btnsearch.setFont(f1);
		btnsearch.setBackground(new Color(131,175,155));
		btndisplay.setFont(f1);
		btndisplay.setBackground(new Color(131,175,155));
		btnreturn.setFont(f1);
		btnreturn.setBackground(new Color(131,175,155));
		
		//将按钮添加进菜单栏中
		mb.add(btnadd);
		mb.add(btndelete);
		mb.add(btnupdate);
		mb.add(btnsearch);
		mb.add(btndisplay);
		mb.add(btnreturn);
		
		//连接数据库
		this.connDB();
		//给按钮注册监听器
		btnadd.addActionListener(this);
		btndelete.addActionListener(this);
		btnupdate.addActionListener(this);
		btnsearch.addActionListener(this);
		btndisplay.addActionListener(this);
		btnreturn.addActionListener(this);
		
		setSize(500,300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		this.setJMenuBar(mb);
	}
	
	public void display() {
		//this.connDB();
		String sql="select * from teacher";
		ArrayList ar=new ArrayList();  //建立数列进行存储数据库成员信息
		int i=0,j=0;
		try {
			rs=stmt.executeQuery(sql);
			while(rs.next()) {
				ar.add(rs.getString("课程名称"));
				ar.add(rs.getString("课程备注"));
				ar.add(rs.getString("班级"));
				ar.add(rs.getString("任课教师"));
				ar.add(rs.getString("职工号"));
				i++;
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		//创建二维数组进行存储
		arr=new Object[i][7];
		String[] list= {"课程名称","课程备注","班级","任课教师","职工号"};
		try {
			rs=stmt.executeQuery("select * from teacher order by 课程名称");
			while(rs.next()) {
				arr[j][0]=rs.getString("课程名称");
				arr[j][1]=rs.getString("课程备注");
				arr[j][2]=rs.getString("班级");
				arr[j][3]=rs.getString("任课教师");
				arr[j][4]=rs.getString("职工号");
				j++;
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		tb=new JTable(arr,list);
		jsp=new JScrollPane(tb);
		this.add(jsp);
	}
	
	public void delete() {   //删除信息方法
		String tno=null;  //定义字符变量,来接收教师号   
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from teacher");
				while(rs.next() && x<=row) {
					tno=rs.getString("职工号");
					x++;
				}
				stmt.executeUpdate("delete from teacher where 职工号="+tno);   //局部变量一定要初始化
				JOptionPane.showMessageDialog(null,"删除成功!");
				this.dispose();
				new TM().display();
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
			
	public void update() {
		String sno1=null; //局部变量一定要初始化
		int row=tb.getSelectedRow();  //代表鼠标选定的行数
		if(row==-1) {  //表示未被选中
			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
		}else {
			int x=0;
			try {
				rs=stmt.executeQuery("select * from teacher");
				while(rs.next() && x<=row) {
					sno1=rs.getString("职工号");
					x++;
				}
				this.dispose();
				new TMupdate(sno1);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public void show(String str) {   //查询结果方法
		JFrame f=new JFrame("查询结果");
		//JPanel p=new JPanel();
		f.setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,150);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		Button btnrt=new Button("返回");
		btnrt.setFont(f1);
		btnrt.setBackground(new Color(131,175,155));
		//btnrt.setSize(20,10);

		this.connDB();
		arr=new Object[1][5];
		try {
			rs=stmt.executeQuery("select * from teacher where 职工号="+str);
			while(rs.next()) {
				arr[0][0]=rs.getString("课程名称");
				arr[0][1]=rs.getString("课程备注");
				arr[0][2]=rs.getString("班级");
				arr[0][3]=rs.getString("任课教师");
				arr[0][4]=rs.getString("职工号");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		String[] list= {"课程名称","课程备注","班级","任课教师","职工号"};
		tb1=new JTable(arr,list); //创建表格
		scroll1=new JScrollPane(tb1);
		//f.add(btnrt,BorderLayout.NORTH);
		f.add(btnrt);
		f.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
		//f1.add(btnrt); 
		btnrt.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
			}
		});
	}
	
	//该方法用来确认是否在数据库中找到教师号
	public boolean searchtest(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from teacher");
			while(rs.next()) {
				if(rs.getString("职工号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}
	
	//查找方法
	public void search() {   //等效于将一个窗口写在方法里面
		JFrame f=new JFrame("查询");
		f.setLayout(new FlowLayout());
		f.setSize(240,180);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		JPanel p1=new JPanel();
		JPanel p2=new JPanel();
		JLabel stuno=new JLabel("输入教师职工号:");
		JTextField stuno1=new JTextField(10);
		Button ok=new Button("确定");
		Button cancel=new Button("取消");
		p1.add(stuno);
		p1.add(stuno1);
		p2.add(ok);
		p2.add(cancel);
		f.add(p1);
		f.add(p2);
		//为组件注册监听器
		ok.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if(stuno1.getText().equals("")) {
					JOptionPane.showMessageDialog(null,"请输入教师职工号");
				}else {
					if(!searchtest(stuno1.getText().trim())) {
						f.dispose();
						JOptionPane.showMessageDialog(null,"对不起,该教师不存在!");
					}else {
					    f.dispose();
					    //new SM(stuno1.getText());
					    show(stuno1.getText());
					}
				}
			}
		});
		cancel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				f.dispose();
				//
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w=(Window)e.getComponent();  
				w.dispose();
			}
		});
	}
	
	public void itemStateChanged(ItemEvent e) {
		
	}
	
    public void actionPerformed(ActionEvent e) {
    	if(e.getSource()==btnadd) {
    		this.dispose();
    		new TMadd();
    	}
    	if(e.getSource()==btndelete) {
    		JOptionPane.showMessageDialog(null,"删除操作,谨慎操作!");
    		this.delete();
    	}
    	if(e.getSource()==btnupdate) {
    		//this.dispose();
    		this.update(); 
    	}
    	if(e.getSource()==btnsearch) {
    		this.search();
    	}
    	if(e.getSource()==btndisplay) {
    		this.dispose();
    		new TM().display();
    	}
    	if(e.getSource()==btnreturn) {
    		this.dispose();
        	new GLFrame();
    	}
    }
    
	public static void main(String[] args) {
		new TM();
	}
	

}

TMadd.java

package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class TMadd extends JFrame implements ActionListener,ItemListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	/*Panel psno=new Panel();
	Panel psname=new Panel();
	Panel pssex=new Panel();
	Panel psage=new Panel();
	Panel psclass=new Panel();
	Panel pspwd=new Panel();*/
	//定义属性标签及文本框
	JLabel name=new JLabel("课程名称:");
	JTextField tname=new JTextField(20);
	JLabel bz=new JLabel("课程备注:");
	JTextField tbz=new JTextField(20);
	//JTextField ssex=new JTextField(4);
	JLabel xl=new JLabel("班级:");
	JTextField txl=new JTextField(20);
	JLabel zc=new JLabel("任课教师:");
	JTextField tzc=new JTextField(10);
	JLabel no=new JLabel("职工号:");
	JTextField tno=new JTextField(12);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public TMadd() {  //构造方法
		super("教师信息添加页面");
		setLayout(new FlowLayout());
		
		//设置字体
		name.setFont(f3);
		bz.setFont(f3);
	    xl.setFont(f3);
		zc.setFont(f3);
		no.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(8,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(name);
		p1.add(tname);
		p1.add(bz);
		p1.add(tbz);
		p1.add(xl);
		p1.add(txl);
		p1.add(zc);
		p1.add(tzc);
		p1.add(no);
		p1.add(tno);
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
	
	public void itemStateChanged(ItemEvent e) {
		if(e.getStateChange()==ItemEvent.SELECTED) {
			JComboBox j=(JComboBox)e.getSource();
		}
	}
	
	//该方法用来确认是否在数据库中找到教师职工号
	public boolean searchtest(String str) {
		boolean x=false;
		this.connDB();
		try {
			rs=stmt.executeQuery("select * from teacher");
			while(rs.next()) {
				if(rs.getString("职工号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
					x=true;
				}
			}
			//return x;
		}catch(Exception e) {
			e.printStackTrace();
		}
		return x;
	}

	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into teacher  values('"+tname.getText().trim()+"'"+","+"'"+tbz.getText().trim()+"'"+","+"'"+txl.getText().trim()+"'"+","+"'"+tzc.getText().trim()+"'"+","+"'"+tno.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"信息添加成功!");
		    this.dispose();
		    new TM().display();;
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	                                               
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(tname.getText().equals("") || tbz.getText().equals("") || txl.getText().equals("") || tzc.getText().equals("") || tno.getText().equals("") ) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else if(searchtest(tno.getText())) {
				JOptionPane.showMessageDialog(null,"该教师已存在!请重新添加!");
				tname.setText("");
				tbz.setText("");
				txl.setText("");
				tzc.setText("");
				tno.setText("");
			}else {
				this.insert();
			}

		}
		if(e.getSource()==btnagain) {
			tname.setText("");
			tbz.setText("");
			txl.setText("");
			tzc.setText("");
			tno.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new TM().display();;
			//System.exit(0);
		}
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TMadd();
    }

}

TMupdate.java

//更新类
package sqlyog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class TMupdate extends JFrame implements ActionListener,ItemListener{
	//定义面板
	Panel p=new Panel();
	Panel p1=new Panel();
	Panel p2=new Panel();
	//定义属性标签及文本框
	JLabel name=new JLabel("课程名称:");
	JTextField tname=new JTextField(20);
	JLabel bz=new JLabel("课程备注:");
	JTextField tbz=new JTextField(20);
	//JTextField ssex=new JTextField(4);
	JLabel xl=new JLabel("班级:");
	JTextField txl=new JTextField(20);
	JLabel zc=new JLabel("任课教师:");
	JTextField tzc=new JTextField(10);
	JLabel no=new JLabel("职工号:");
	JTextField tno=new JTextField(12);
	//定义字体
	Font f1=new Font("宋体",Font.BOLD,20);
    Font f2=new Font("幼圆",Font.ITALIC,30);
    Font f3=new Font("楷体",Font.BOLD,18);
    Font f4=new Font("隶书",Font.PLAIN,40);
    //定义按钮
    Button btnsure=new Button("确定");
    Button btnagain=new Button("重置");
    Button btncancel=new Button("取消");
    
    //定义连接字符
  	String dbURL = "jdbc:mysql://localhost:3306/教学信息管理系统";
  	String userName = "root";
  	String userPwd = "123456";
  	Connection conn;
  	Statement stmt;
  	ResultSet rs;
  	
  	public void connDB() {   //连接数据库方法
		try {
			//连接数据库
			conn=DriverManager.getConnection(dbURL,userName,userPwd);
			stmt=conn.createStatement();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("连接失败!");
		}
	}
	
	public void closeDB() {  //关闭数据库方法
		try {
			rs.close();
			stmt.close();
			conn.close();
		}catch(Exception e) {
			e.printStackTrace();
			//System.out.println("关闭失败!");
		}
	}
	
	public TMupdate(String str) {  //含参构造方法
		super("教师信息修改页面");
		setLayout(new FlowLayout());
		
		tno.setText(str);
		tno.setEditable(false);
		
		//设置字体
		name.setFont(f3);
		bz.setFont(f3);
	    xl.setFont(f3);
		zc.setFont(f3);
		no.setFont(f3);
		//按钮字体、颜色
		btnsure.setFont(f1);
		btnsure.setBackground(new Color(131,175,155)); //淡草色
		btncancel.setFont(f1);
		btncancel.setBackground(new Color(131,175,155)); //淡草色
		btnagain.setFont(f1);
		btnagain.setBackground(new Color(131,175,155)); //淡草色
		//设置面板的网格布局管理
		p1.setLayout(new GridLayout(8,2));
		//p2.setLayout(new GridLayout(4,2));
		//将标签和文本框添加进面板
		p1.add(name);
		p1.add(tname);
		p1.add(bz);
		p1.add(tbz);
		p1.add(xl);
		p1.add(txl);
		p1.add(zc);
		p1.add(tzc);
		p1.add(no);
		p1.add(tno);
		
		//将按钮添加进面板
		p.add(btnsure);
		p.add(btnagain);
		p.add(btncancel);
		
		//添加面板
		this.add(p1);
		//this.add(p2);
		this.add(p);
		
		//设置顶层容器的大小、位置、可见性及close功能
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setSize(500,350);
	    setLocationRelativeTo(null);
	    setVisible(true);
	    
	    //注册监听器
	    btnsure.addActionListener(this);
	    btnagain.addActionListener(this);
	    btncancel.addActionListener(this);
	}
	public void itemStateChanged(ItemEvent e) {
		if(e.getStateChange()==ItemEvent.SELECTED) {
			JComboBox j=(JComboBox)e.getSource();
		}
	}
	
	public void delete(String s) {   //删除信息方法
		try {
			stmt.executeUpdate("delete from teacher where 职工号="+s);   //局部变量一定要初始化
			JOptionPane.showMessageDialog(null,"删除成功!");
		}catch(Exception e) {
			e.printStackTrace();
		}
}
	
	public void insert() {  //插入方法
		try {
			this.connDB();
			//插入数据
			stmt.executeUpdate("insert into teacher values("+tname.getText().trim()+","+"'"+tbz.getText().trim()+"'"+","+"'"+txl.getText().trim()+"'"+","+"'"+tzc.getText().trim()+"'"+","+"'"+tno.getText().trim()+"'"+")");
			//System.out.println("insert success!");
			JOptionPane.showMessageDialog(null,"信息修改成功!");
		    this.dispose();
		    new TM().display();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==btnsure) {
			if(tname.getText().equals("") || tbz.getText().equals("") || txl.getText().equals("") || tzc.getText().equals("") || tno.getText().equals("") ) {
				JOptionPane.showMessageDialog(null,"信息不能为空!");
			}else {
				//确认时,将删除信息再重新添加
				this.delete(tno.getText());
				this.insert();
			}

		}
		if(e.getSource()==btnagain) {
			//tno.setText("");
			tname.setText("");
			tbz.setText("");
			txl.setText("");
			tzc.setText("");
			tno.setText("");
		}
		if(e.getSource()==btncancel) {
			this.dispose();
			new TM().display();;
			//System.exit(0);
		}
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TMupdate(" ");
    }
}

还有些许代码问题,但是无伤大雅。

  • 27
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
教务管理系统(SQL数据库) 摘要 :课题目标是设计并实现一个B/S体系结构的教务信息管理系统。结合实践,理解网页开 发技术和数据库的基本知识,学习相关开发工具和应用软件,熟悉系统设计的过程,熟 练掌握网络数据库编程方法。 本系统用JSP技术来编写本系统,数据库SQL SERVER 2000来连接系统。本论文主要涉及软件,数据库与网络技术等。涵盖知识面广,可有效地 提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培 养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后 进一步学习与工作奠定了良好的基础. 关键词:教务信息管理系统数据库;JSP 目 录 1 引言 1 2 系统分析 2 2。1 功能需求分析 2 2。2 本系统采用的关键技术 3 2。2。1 JSP技术 3 2.2.2 JavaBean技术 4 2。2。3 JDBC技术 5 2。3 可行性分析 6 2。4 系统运行环境 7 3 系统总体设计 8 3.1 总体功能 8 3。2 处理流程设计 9 3。2.1 系统操作流程 9 3。2.2 数据增加流程 10 3。2。3 数据修改流程 10 3。3.4 数据删除流程 11 4 系统详细设计 13 4。1 后台数据库设计 13 4。1。1 SQL SERVER 介绍 13 4.1。2 数据库表结构 14 4。3 系统模块设计 16 4。3.1 用户登陆 16 4。3。2 学生信息管理 16 4.3。2 教师信息管理 18 5 系统调试与测试 20 5。1 程序调试 20 5.2 程序的测试 20 5。2.1 测试的重要性及目的 20 5.2。2 测试的步骤 22 5.2.3 测试的主要内容 22 6 结论 24 6。1 系统评价 24 6.2 安全性问题 24 致谢 26 参考文献 27 功能需求分析 经过调研,基于B/S的教务信息管理系统的要求描述如下: 针对基于B/S的教务信息管理系统用户群情况,我们决定将本系统分为三个部分:学生用 户部分,教师用户部分和超级管理员用户部分.考虑到数据信息的隐私性问题,我们也对 各个用户的功能设置做了调整。例如成绩属于个人隐私,学生用户只允许查看自己的成绩 ,无权查看其他用户的成绩等。总体来说,学生用户只具有查看权限,而教师用户具有 比学生用户高的管理权限,但只局限于成绩部分。超级管理员用户具有最高权限,可以 修改查看学生用户教师用户乃至超级管理员用户的全部信息。 用户进入登陆页面会通过登陆框中用户所输入的信息判断用户是学生用户,教师用户,超 级管理员用户或者非法用户.并通过判断进入相对应的页面。 在学生用户界面中,用户只拥有最基本的查看权限,不具备任何的修改权限.用户可以查 看学生的基本信息,自己的各种课程信息,显示自己各门功课的成绩。 在教师用户界面中,教师对部分信息具有修改权限。例如录入学生成绩。 在超级管理员用户界面中,用户拥有最高权限。可以添加修改包括学生,教师和管理员 在内的任何信息。更新数据的过程中,所有的数据都尽最大可能的作到数据的级联。在 添加学生基本信息的同时做到对相关信息的级联添加.所有的添加操作之前都要确定数据 库中是否存在相同的记录,以确保数据的唯一性,把数据库被破坏的可能性降到最低。 所有的添加功能都在添加的同时把数据更新到数据库,并马上在界面上显示出结果以能 够让用户及时的知道更新的内容。超级管理员对所有的数据都具有添加,删除,修改,查看 等基本功能。在所有的删除操作之前,系统都级联的删除其他表中的相关信息。 以下是部分界面图,如图片不清,请直接点击图片,如需要看更详细的资料,请直接联系 客服! 图1(双击并最大化图片,可看清晰 图片) 图2(双击并最大化图片,可看清 晰图片) 图3(双击并最大化图片,可看清晰 图片) ----------------------- 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第1页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第2页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第3页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第4页。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pluto_ssy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值