jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)

Hello,大家好!今天是我第一次写微博,经验不足,希望大家多多包涵,给我多提提建议或意见。我为大家带来一个用jdbc连接Oracle数据库实现学生管理系统的项目,大家如果有正在做这方面的项目,可以拿来参考。好了,闲话不扯一些,下面进入正题:


   一、首先我来给大家屡一下思路:

1.首先需要先导jar包:一共需要两个   一个是ojdbc14.jar,它是用于实现用jdbc连接数据库的。另一个是c3p0-0.9.1.2.jar,它是使用数据库连接池需要导入的一个包。

2.需要建立连接数据库的配置文件,即db.properties

3.建db包:这个包中有两个类,一个是DBHelper,一个是DBManager  这俩都是用来进行数据库连接和管理的。

4.建vo包:这个包里面全是一些实体类,只有get和set方法

5.建mapper包:这是个新名词,以前没见过,感觉好高大上的样子,其实这是一个对查询得到的结果集的一个映射,理解了也就那么回事,每个表对应一个mapper类,具体使用下面代码中会提及。

6.建dao包:这个包中每个类对应一个表,每个类中就是对这个表的增删改查等方法的一个封装。

7.建SuperManagerSystem包:这个是管理员登录界面。

8.之后就是建立StudentManagerSystem包ClazzManagerSystem包...等等一些学生和班级界面的展示了,在这里就不一一介绍了,给你们用图展示出来吧。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第1张图片            jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第2张图片

9.对了,我这个项目是用jdbc连接Oracle数据库实现学生管理系统的项目,所以Oracle数据库怎能没有表存在呢,以我的项目为例

我将数据库中的三个表:student表、clazz表、supermanager表一一展示给大家:

student表:

-- Create table
create table STUDENT
(
  STUID   NUMBER not null,
  STUNAME VARCHAR2(20),
  SEX     VARCHAR2(5),
  CLAID   NUMBER
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table STUDENT
  add primary key (STUID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table STUDENT
  add foreign key (CLAID)
  references CLAZZ (CLAID);

clazz表:
-- Create table
create table CLAZZ
(
  CLAID   NUMBER not null,
  CLANAME VARCHAR2(20) not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table CLAZZ
  add primary key (CLAID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

supermanager表:
create table SUPERMANAGER
(
  USER0     VARCHAR2(20),
  PASSWORD0 VARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );


   二、介绍了这么多,连个效果图都没有,还说什么呀说,有图有真相,下面我们就先来看一下效果图。           

1.这是管理员登录界面。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第3张图片

2.这是学生管理界面。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第4张图片

3.这是学生注册界面。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第5张图片

4.这是学生修改界面,当然,学号一般是不允许修改的,可以隐藏学号或者用JLabel展示出来。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第6张图片

5.删除的话,选中要删除的那一行,点击删除就可以删除了。

6.这里是班级管理管理系统,进行班级的增删改查,不过要注意,如果该班级中存在学生,则无法删除该班级,只有全部删除该班级的学生才可以删除这个班级。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第7张图片

7.这是班级添加,添加后会在班级管理管理系统中显示出来。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第8张图片     jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第9张图片   

   三、接下来就进入编程阶段:

1.导jar包就不多说一些了,把下载下来的jar包放到WebRoot下的WEB-INF下的lib包中。

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第10张图片

2.然后是建立配置文件,选中src右击选择new找到File然后写上你的配置文件名xxx.properties就行了

配置文件主要由4部分组成:

a.驱动字符串:  DRIVER = Oracle.jdbc.driver.OracleDriver    每个单词分别代表:要连接的数据库   连接协议  驱动类

b.连接字符串: URL = jdbc:oracle:thin:@localhost:1521:orcl   每个单词分别代表:连接协议   要连接的数据库  连接方式(直连)  要连接ip  oracle数据库的端口号   数据库实例

c.用户名: USER = scott   这个登录用户名可以改成自己的

d.密码:PASSWORD = tiger  这个密码也可以改成与登录用户相对应的密码

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第11张图片

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)_第12张图片

3.先来看一下数据库连接的第一个类DBHelper。

package com.ruide.db;
import java.util.Properties;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.io.InputStream;

import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBHelper {
	//声明四个变量都为   public static
	public static String DRIVER;
	public static String URL;
	public static String USER;
	public static String PASSWORD;
	public static ComboPooledDataSource cpds=null;//声明cpds对象,但没分配内存
	//静态块里赋值,静态方法可以用类名直接调用
	static{
		//获取配置文件信息
		//要用到 Properties类
		Properties pro=new Properties();
		//获取输入流截取配置文件信息
		InputStream in=DBHelper.class.getClassLoader()
				.getResourceAsStream("db.properties");
		try{
		//将输入流放在Properties类对象中
		pro.load(in);
		}catch(IOException e){
			e.printStackTrace();
		}
		//获取信息
		DRIVER=pro.getProperty("DRIVER");
		URL=pro.getProperty("URL");
		USER=pro.getProperty("USER");
		PASSWORD=pro.getProperty("PASSWORD");
		//注明:千变万化,但是这个类是不变的,只是变配置文件
		
		//数据库连接池 初始化
		cpds=new ComboPooledDataSource();//初始化cpds对象,拿来用,分配内存,存在地址
		try {
			cpds.setDriverClass(DRIVER);
			} catch (PropertyVetoException e) {
			e.printStackTrace();
			}
		cpds.setJdbcUrl(URL);
		cpds.setUser(USER);
		cpds.setPassword(PASSWORD);
		
		cpds.setInitialPoolSize(20);//数据库连接池初始有20个连接
		cpds.setAcquireIncrement(5);//连接不足,每次增加5个
		cpds.setMaxPoolSize(100);//最多有100个连接
		}
	}
4.在写数据库连接的第二个类(DBManager)之前我们需要进行一些准备工作,即建立Student类和IMapper接口和StudentMapper类。
Student类:

package com.ruide.vo;

public class Student {
	int stuid;
	int clazzid;
	String stuname;
	String stusex;
	
	public int getClazzid(){
		return clazzid;
	}
	
	public void setClazzid(int clazzid){
		this.clazzid=clazzid;
	}
	
	public int getStuid() {
		return stuid;
	}
	
	public void setStuid(int stuid) {
		this.stuid = stuid;
	}
	public String getStuname() {
		return stuname;
	}
	
	public void setStuname(String stuname) {
		this.stuname = stuname;
	}
	
	public String getStusex() {
		return stusex;
	}
	
	public void setStusex(String stusex) {
		this.stusex = stusex;
	}
	
	public Student(int stuid, String stuname, String stusex,int clazzid) {
		super();
		this.stuid = stuid;
		this.stuname = stuname;
		this.stusex = stusex;
		this.clazzid=clazzid;
	}
	
	public Student() {
		super();
	}
}
  IMapper接口:
package com.ruide.mapper;
import java.util.List;
import java.sql.ResultSet; 

public interface IMapper{
	//建一个抽象类,抽象方法,返回值是List集合
	List map(ResultSet ret);//映射类:将结果集的一行数据封装成一个vo类对象,把整个结果集封装成一个List集合
}


StudentMapper类:
package com.ruide.mapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.ruide.vo.Student;

public class StudentMapper implements IMapper{
	public List map(ResultSet ret){
		List list=new ArrayList();
		//注意:以后使用的类能往上提就往上提,能用接口(因为他的实现方式多)不用具体的类,特别是数据类型
		try {
			while(ret.next()){
				Student d=new Student();
				d.setStuid(ret.getInt("STUID"));
				d.setStuname(ret.getString("STUNAME"));
				d.setStusex(ret.getString("SEX"));
				d.setClazzid(ret.getInt("CLAID"));
				list.add(d);
				}
			return list;
			}catch (SQLException e){
			e.printStackTrace();
			}
			return null;
			}
	}

5.同理,我们还有Clazz类和IMapper接口和ClazzMapper                 SuperManager类 和IMapper接口和SuperManagerMapper ,因为IMapper是一个接口,写一个即可,在上处展示,所以我就不在这里展示了。

 Clazz类:
package com.ruide.vo;

public class Clazz {
	private int clazzid;
	private String clazzname;

	public int getClazzid(){
		return clazzid;
	}
	
	public void setClazzid(int clazzid){
		this.clazzid=clazzid;
	}
	
	public String getClazzname(){
		return clazzname;
	}
	
	public void setClazzname(String clazzname){
		this.clazzname=clazzname;
	}
	
	public Clazz(int clazzid,String clazzname){
		super();
		this.clazzid=clazzid;
		this.clazzname=clazzname;
	}
	
	
	public Clazz(){
		super();
	}
}
ClazzMapper类:
package com.ruide.mapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.ruide.vo.Clazz;

public class ClazzMapper implements IMapper {
	public List map(ResultSet ret) {
		List list=new ArrayList();
		try {
			while(ret.next()){
			Clazz cl=new Clazz();
			cl.setClazzid(ret.getInt("CLAID"));
			cl.setClazzname(ret.getString("CLANAME"));
			list.add(cl);
			}
			return list;
			} catch (SQLException e) {
			e.printStackTrace();
			}
		return null;
		}
}
SuperManager类:
package com.ruide.vo;

public class SuperManager {
	private String user;
	private String password;
	
	public String getUser() {
		return user;
	}
	
	public void setUser(String user) {
		this.user = user;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public SuperManager(String user, String password) {
		super();
		this.user = user;
		this.password = password;
	}
	
	public SuperManager() {
		super();
	}
}
SuperManagerMapper 类:
package com.ruide.mapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ruide.vo.SuperManager;

public class SuperManagerMapper implements IMapper {
	public List map(ResultSet rst) {
	List list=new ArrayList();
	//注意:以后使用的类能往上提就往上提,能用接口(因为他的实现方式多)不用具体的类,特别是数据类型
	try {
		while(rst.next()){
			SuperManager d=new SuperManager();
			d.setUser(rst.getString("USER0"));
			d.setPassword(rst.getString("PASSWORD0"));
			list.add(d);
			}
		} catch (SQLException e) {
		e.printStackTrace();
		}
	return list;
	}
}

6.有了以上的准备工作之后,我们就可以书写第二个数据库连接类DBManager了。
package com.ruide.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import com.ruide.mapper.IMapper;
public class DBManager {
	
	private Connection getConn() throws SQLException{
		return DBHelper.cpds.getConnection();//从连接池获取连接
	}
	
	public int executeUpdate(String sql,Object params[]){
		Connection conn=null;
		PreparedStatement pst=null;
		try {
			conn=getConn();//设置连接
			pst=conn.prepareStatement(sql);//建立通道
			if(params != null){
				for(int i=0;i

7.接下来就是对DBManager的进一步封装了,也就是StudentDAO类,这里也一样,还有ClazzDAO和SuperManagerDAO。
StudentDAO类:
package com.ruide.dao;
import java.util.List;

import com.ruide.db.DBManager;
import com.ruide.mapper.StudentMapper;
import com.ruide.vo.Student;

public class StudentDAO {
	public int save(Student s){
		String sql="insert into Student values(?,?,?,?) ";
		String student = null;
		Object params[]={s.getStuid(),s.getStuname(),s.getStusex(),s.getClazzid()};
		DBManager db=new DBManager();
		int i=db.executeUpdate(sql, params);
			if(i>0){
				return i;
			}else{
				return -1;
				}
	}
	
	
	public int change(Student s){
		String sql="update student set stuname=?,sex=?,claid=? where stuid=?";
		DBManager db=new DBManager();
		Object params[]={s.getStuname(),s.getStusex(),s.getClazzid(),s.getStuid()};
		int i=db.executeUpdate(sql, params);
			if(i>0){
				return i;
			}else{
				return -1;
				}
		}
	
	
	public List findAll(){
		String sql="select * from Student order by stuid";
		DBManager db=new DBManager();
		StudentMapper mapper=new StudentMapper();
		List list=db.executeQuary(sql,mapper,null);
		return list;
	}
	
	
	public Student findById(int id){
		String sql="select * from Student where stuid=?";
		DBManager db=new DBManager();
		Object params[]={id};
		StudentMapper mapper=new StudentMapper();
		List list=db.executeQuary(sql, mapper,params);
			if(list.size()!=0){
					return list.get(0);
				}else{
					return null;
					}
		}
	
	

	public int delete(int id)throws Exception{
		String sql="delete from Student where stuid=?";
		DBManager db=new DBManager();
		Object params[]={id};
		int i=db.executeUpdate(sql, params);
			if(i>0){
				return i;
			}else{
				return -1;
			}
	}
	
	public Student findByName(String name){
		String sql="select * from Student where stuname=?";
		DBManager db=new DBManager();
		StudentMapper mapper=new StudentMapper();
		Object params[]={name};
		List list=db.executeQuary(sql, mapper, params);
		if(list!=null){
			return list.get(0);
		}else{
			return null;
		}
	}
	
}
ClazzDAO类:
package com.ruide.dao;
import java.util.List;
import com.ruide.db.DBManager;
import com.ruide.mapper.ClazzMapper;
import com.ruide.vo.Clazz;

public class ClazzDAO {
	
	public List findAll(){
		String sql="select * from Clazz";
		DBManager db=new DBManager();
		ClazzMapper mapper=new ClazzMapper();
		List list=db.executeQuary(sql, mapper, null);
		return list;
	}
	
	public Clazz findById(int id){
		String sql="select * from Clazz where claid=?";
		DBManager db=new DBManager();
		ClazzMapper mapper=new ClazzMapper();
		Object params[]={id};
		List list=db.executeQuary(sql, mapper, params);
		if(list.size()>=0){
			return  list.get(0);
		}else{
			return null;
			}
		}
	
	public Clazz findByName(String name){
		String sql="select * from Clazz where claname=?";
		DBManager db=new DBManager();
		ClazzMapper mapper=new ClazzMapper();
		Object params[]={name};
		List list=db.executeQuary(sql, mapper, params);
		if(list.size()!=0){
			return list.get(0);
		}else{
			return null;
		}
	}
	
	public int delete(int id)throws Exception{
		String sql="delete from Clazz where claid=?";
		DBManager db=new DBManager();
		Object params[]={id};
		int i=db.executeUpdate(sql, params);
		return i;
	}
	
	public int save(Clazz c){
		String sql="insert into Clazz values(?,?) ";
		Object params[]={c.getClazzid(),c.getClazzname()};
		DBManager db=new DBManager();
		int i=db.executeUpdate(sql, params);
			return i;
		}
}
SuperManagerDAO类:
package com.ruide.dao;

import java.util.List;
import com.ruide.db.DBManager;
import com.ruide.mapper.IMapper;
import com.ruide.mapper.SuperManagerMapper;
import com.ruide.vo.SuperManager;

	public class SuperManagerDAO {
		
//		public int save(SuperManager s) throws Exception{
//			String sql="insert into SuperManager values(?,?,?)";
//			Object params[]={s.getUser(),s.getPassword()};
//			DBManager db=new DBManager();
//			int i=db.executeUpdate(sql, params);
//			return i;
//	}
	
//	public int delete(int id)throws Exception{
//		String sql="delete from SuperManager where password0=?";
//		DBManager db=new DBManager();
//		Object params[]={id};
//		int i=db.executeUpdate(sql, params);
//		return i;
//		}
	
//	public int change(SuperManager s)throws Exception{
//		String sql="update SuperManager set user0=?,password0=? where password0=?";
//		DBManager db=new DBManager();
//		Object params[]={s.getUser(),s.getPassword()};
//		int i=db.executeUpdate(sql, params);
//		return i;
//		}
//	
//	public List findAll() throws Exception{
//		String sql="select * from SuperManager";
//		DBManager db=new DBManager();
//		SuperManager mapper=new SuperManager();
//		return db.executeQuary(sql, (IMapper) mapper, null);
//		}
	
	public SuperManager findByName(String user0,String password0) throws Exception{
		String sql="select * from SuperManager where user0=? and password0=?";
		DBManager db=new DBManager();
		Object params[]={user0,password0};
		SuperManagerMapper mapper=new SuperManagerMapper();
		List list= db.executeQuary(sql, mapper, params);
			if(list.size()==0){
				return null;
				}
			return list.get(0);
			}
	}

 8.完成了这么多工作,我们的效果怎么样呢,下面就可以看出来了,之后将进入图形化展示阶段
      首先看一下StudentTable类,这个类其实是拖的,先选中src右键new找到Matisse Form然后写上类名 StudentTable最后别忘了选中JFram,在这个类的删除和修改的时候有一个点睛之笔,就是id获取的时候,直接通过选中那一行就能按照id进行操作,真的很神奇。没想到的小伙伴可以观摩一下了 。
StudentTable类:
package StudentManagerSystem;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import com.ruide.ClazzManagerSystem.ClazzManager;
import com.ruide.dao.ClazzDAO;
import com.ruide.dao.StudentDAO;
import com.ruide.vo.Clazz;
import com.ruide.vo.Student;

public class StudentTable extends javax.swing.JFrame {
	public StudentTable() {
		initComponents();
		setLocationRelativeTo(null);
	}
	private void initComponents(){
		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		jButton3 = new javax.swing.JButton();
		jButton4 = new javax.swing.JButton();
		setResizable(false);//禁止改变窗体大小
		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		StudentDAO st=new StudentDAO();
		try {
			List list=new ArrayList();
			list=st.findAll();
		} catch (Exception e) {
			e.printStackTrace();
		}
		StudentDAO stuDAO=new StudentDAO();
		List list1=stuDAO.findAll();
		Object studen[][]=new Object[list1.size()][];
		ClazzDAO clz=new ClazzDAO();
		for(int i=0;i

然后是添加学生方法StudentAdd类:
package StudentManagerSystem;

import java.util.List;

import javax.swing.JOptionPane;

import com.ruide.ClazzManagerSystem.ClazzManager;
import com.ruide.dao.ClazzDAO;
import com.ruide.dao.StudentDAO;
import com.ruide.vo.Clazz;
import com.ruide.vo.Student;
public class StudentAdd extends javax.swing.JFrame {
	protected Object[] params;
	public StudentAdd(){
		initComponents();
		setLocationRelativeTo(null);
	}
	private void initComponents() {
		jLabel1 = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jLabel2 = new javax.swing.JLabel();
		jLabel3 = new javax.swing.JLabel();
		jLabel4 = new javax.swing.JLabel();
		jLabel5 = new javax.swing.JLabel();
		jTextField2 = new javax.swing.JTextField();
		jComboBox1 = new javax.swing.JComboBox();
		jComboBox2 = new javax.swing.JComboBox();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);
		jLabel1.setText("\u6b22\u8fce\u6765\u5230\u5b66\u751f\u6ce8\u518c\u754c\u9762\uff01");

		jTextField1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jTextField1ActionPerformed(evt);
			}
		});

		jLabel2.setText("\u5b66\u751f\u5b66\u53f7\uff1a");

		jLabel3.setText("\u5b66\u751f\u59d3\u540d\uff1a");

		jLabel4.setText("\u5b66\u751f\u6027\u522b\uff1a");

		jLabel5.setText("\u5b66\u751f\u73ed\u7ea7\uff1a");

		jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
				"男", "女" }));
		
		ClazzDAO dao=new ClazzDAO();
		List list=dao.findAll();
		String st[]=new String[list.size()];
		for(int i=0;i list=dao1.findAll();
//				for(int i=0;i list=dao.findAll();
				String st[]=new String[list.size()];
				for(int i=0;i

最后看一下StduentUpdate类:
package StudentManagerSystem;
import java.util.List;
import com.ruide.dao.ClazzDAO;
import com.ruide.dao.StudentDAO;
import com.ruide.vo.Clazz;
import com.ruide.vo.Student;

public class StudentUpdate extends javax.swing.JFrame {
	public StudentUpdate(int id){
		initComponents(id);
		setLocationRelativeTo(null);
	}
	
	private void initComponents(int id){
		jLabel1 = new javax.swing.JLabel();
		jLabel2 = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jLabel3 = new javax.swing.JLabel();
		jLabel4 = new javax.swing.JLabel();
		jComboBox1 = new javax.swing.JComboBox();
		jComboBox2 = new javax.swing.JComboBox();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		jLabel5 = new javax.swing.JLabel();
		jTextField2 = new javax.swing.JTextField();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);

		jLabel1.setText("\u6b22\u8fce\u6765\u5230\u5b66\u751f\u4fee\u6539\u754c\u9762\uff01");

		jLabel2.setText("\u5b66\u751f\u59d3\u540d\uff1a");

		jLabel3.setText("\u5b66\u751f\u6027\u522b\uff1a");

		jLabel4.setText("\u5b66\u751f\u73ed\u7ea7\uff1a");
		StudentDAO st=new StudentDAO();
		Student st1=st.findById(id);
		jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
				"男", "女" }));
		if(st1.getStusex().equals("男")){
			jComboBox1.setSelectedIndex(0);
		}else{
			jComboBox1.setSelectedIndex(1);
		}

		ClazzDAO dao=new ClazzDAO();
		List list=dao.findAll();
		String s[]=new String[list.size()];
		for(int i=0;i

9.同理我们还有ClazzManager类和ClazzAdd类,以及登录的JFrame界面StudentLogin类。
ClazzManager类:
package com.ruide.ClazzManagerSystem;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

import StudentManagerSystem.StudentTable;

import com.ruide.dao.ClazzDAO;
import com.ruide.vo.Clazz;

public class ClazzManager extends javax.swing.JFrame {
	public ClazzManager() {
		initComponents();
		setLocationRelativeTo(null);
	}

	private void initComponents() {

		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		setResizable(false);//禁止改变窗体大小
		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		List list=new ArrayList();
		ClazzDAO st=new ClazzDAO();
		
		try {
			list=st.findAll();
		} catch (Exception e) {
			e.printStackTrace();
		}
		ClazzDAO claDAO=new ClazzDAO();
		List list1=claDAO.findAll();
		Object studen[][]=new Object[list1.size()][];
		ClazzDAO clz=new ClazzDAO();
		for(int i=0;i
ClazzAdd类:
package com.ruide.ClazzManagerSystem;

import com.ruide.dao.ClazzDAO;
import com.ruide.vo.Clazz;

public class ClazzAdd extends javax.swing.JFrame {
	public ClazzAdd() {
		initComponents();
		setLocationRelativeTo(null);
	}
	private void initComponents() {

		jLabel1 = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jLabel2 = new javax.swing.JLabel();
		jLabel3 = new javax.swing.JLabel();
		jTextField2 = new javax.swing.JTextField();
		jLabel4 = new javax.swing.JLabel();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);
		jLabel1.setText("\u8bf7\u6dfb\u52a0\u73ed\u7ea7\u7f16\u53f7\uff1a");

		jLabel2.setText("\u4f8b\uff1a5");

		jLabel3.setText("\u8bf7\u6dfb\u52a0\u73ed\u7ea7\u540d\u79f0\uff1a");

		jLabel4.setText("\u4f8b\uff1a\u4e94\u73ed");

		jButton1.setText("\u6dfb\u52a0");
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
				int id=new Integer(jTextField1.getText());
				String name=new String(jTextField2.getText());
				ClazzDAO dao=new ClazzDAO();
				Clazz cl=new Clazz(id,name);
				int i=dao.save(cl);
				setVisible(false);
				ClazzManager st2=new ClazzManager();
				st2.setVisible(true);
				st2.setLocationRelativeTo(null);
			}
		});

		jButton2.setText("\u91cd\u7f6e");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jTextField1.setText("");
				jTextField2.setText("");
			}
		});

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.LEADING)
												.addGroup(
														layout.createSequentialGroup()
																.addGap(38, 38,
																		38)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING,
																				false)
																				.addGroup(
																						layout.createSequentialGroup()
																								.addPreferredGap(
																										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																								.addComponent(
																										jLabel1)
																								.addPreferredGap(
																										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																								.addComponent(
																										jTextField1,
																										javax.swing.GroupLayout.PREFERRED_SIZE,
																										67,
																										javax.swing.GroupLayout.PREFERRED_SIZE))
																				.addGroup(
																						layout.createSequentialGroup()
																								.addComponent(
																										jLabel3)
																								.addPreferredGap(
																										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																								.addComponent(
																										jTextField2)))
																.addGap(18, 18,
																		18)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING)
																				.addComponent(
																						jLabel2)
																				.addComponent(
																						jLabel4)))
												.addGroup(
														layout.createSequentialGroup()
																.addGap(69, 69,
																		69)
																.addComponent(
																		jButton1)
																.addGap(47, 47,
																		47)
																.addComponent(
																		jButton2)))
								.addContainerGap(38, Short.MAX_VALUE)));
		layout.setVerticalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGap(44, 44, 44)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(jLabel2)
												.addComponent(jLabel1)
												.addComponent(
														jTextField1,
														javax.swing.GroupLayout.PREFERRED_SIZE,
														javax.swing.GroupLayout.DEFAULT_SIZE,
														javax.swing.GroupLayout.PREFERRED_SIZE))
								.addPreferredGap(
										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(jLabel3)
												.addComponent(
														jTextField2,
														javax.swing.GroupLayout.PREFERRED_SIZE,
														javax.swing.GroupLayout.DEFAULT_SIZE,
														javax.swing.GroupLayout.PREFERRED_SIZE)
												.addComponent(jLabel4))
								.addPreferredGap(
										javax.swing.LayoutStyle.ComponentPlacement.RELATED,
										26, Short.MAX_VALUE)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(jButton2)
												.addComponent(jButton1))
								.addGap(23, 23, 23)));

		pack();
	}// 
	//GEN-END:initComponents

	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new ClazzAdd().setVisible(true);
			}
		});
	}
	private javax.swing.JButton jButton1;
	private javax.swing.JButton jButton2;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JLabel jLabel4;
	private javax.swing.JTextField jTextField1;
	private javax.swing.JTextField jTextField2;
}
StudentLogin类:
package com.ruide.SuperManagerSystem;
import javax.swing.JOptionPane;

import StudentManagerSystem.StudentTable;

import com.ruide.dao.SuperManagerDAO;
import com.ruide.vo.SuperManager;
public class StudentLogin extends javax.swing.JFrame {
	public StudentLogin() {
		initComponents();
		setLocationRelativeTo(null);
	}
	private void initComponents() {
		jLabel1 = new javax.swing.JLabel();
		jLabel2 = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jLabel3 = new javax.swing.JLabel();
		jPasswordField1 = new javax.swing.JPasswordField();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);//禁止改变窗体大小
		
		jLabel1.setText("\u5b66\u751f\u7ba1\u7406\u7cfb\u7edf");

		jLabel2.setText("\u8bf7\u8f93\u5165\u7528\u6237\u59d3\u540d\uff1a");

		jLabel3.setText("\u8bf7\u8f93\u5165\u7528\u6237\u5bc6\u7801\uff1a");

		jPasswordField1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jPasswordField1ActionPerformed(evt);
			}
		});

		jButton1.setText("\u767b\u5f55");
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
				String user=new String(jTextField1.getText());
				String psw=new String(jPasswordField1.getPassword());
				SuperManagerDAO dao=new SuperManagerDAO();
				try{
					SuperManager d=dao.findByName(user,psw);
					if(d!=null){
						JOptionPane.showMessageDialog(null, "恭喜您,登陆成功!!");
						setVisible(false);
						StudentTable st=new StudentTable();
						st.setVisible(true);
						st.setLocationRelativeTo(null);
					}else{
						JOptionPane.showMessageDialog(null, "查无此人,请重新登陆!!");
					}
				} catch (Exception e) {
					e.printStackTrace();
				}			
			}
		});

		jButton2.setText("\u91cd\u7f6e");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
				jTextField1.setText("");
				jPasswordField1.setText("");
			}
		});

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.LEADING)
												.addGroup(
														layout.createSequentialGroup()
																.addGap(173,
																		173,
																		173)
																.addComponent(
																		jLabel1,
																		javax.swing.GroupLayout.PREFERRED_SIZE,
																		112,
																		javax.swing.GroupLayout.PREFERRED_SIZE))
												.addGroup(
														layout.createSequentialGroup()
																.addGap(66, 66,
																		66)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.TRAILING)
																				.addComponent(
																						jLabel3)
																				.addComponent(
																						jLabel2))
																.addGap(54, 54,
																		54)
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING,
																				false)
																				.addComponent(
																						jTextField1)
																				.addComponent(
																						jPasswordField1,
																						javax.swing.GroupLayout.DEFAULT_SIZE,
																						132,
																						Short.MAX_VALUE)))
												.addGroup(
														layout.createSequentialGroup()
																.addGap(117,
																		117,
																		117)
																.addComponent(
																		jButton1)
																.addGap(70, 70,
																		70)
																.addComponent(
																		jButton2)))
								.addContainerGap(98, Short.MAX_VALUE)));
		layout.setVerticalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addContainerGap()
								.addComponent(jLabel1,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										26,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addGap(36, 36, 36)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(
														jTextField1,
														javax.swing.GroupLayout.PREFERRED_SIZE,
														javax.swing.GroupLayout.DEFAULT_SIZE,
														javax.swing.GroupLayout.PREFERRED_SIZE)
												.addComponent(
														jLabel2,
														javax.swing.GroupLayout.PREFERRED_SIZE,
														21,
														javax.swing.GroupLayout.PREFERRED_SIZE))
								.addGap(48, 48, 48)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(jLabel3)
												.addComponent(
														jPasswordField1,
														javax.swing.GroupLayout.PREFERRED_SIZE,
														javax.swing.GroupLayout.DEFAULT_SIZE,
														javax.swing.GroupLayout.PREFERRED_SIZE))
								.addPreferredGap(
										javax.swing.LayoutStyle.ComponentPlacement.RELATED,
										45, Short.MAX_VALUE)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(jButton1)
												.addComponent(jButton2))
								.addGap(34, 34, 34)));

		pack();
	}
	private void jPasswordField1ActionPerformed(java.awt.event.ActionEvent evt) {
	}

	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
	}
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new StudentLogin().setVisible(true);
			}
		});
	}
	private javax.swing.JButton jButton1;
	private javax.swing.JButton jButton2;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JPasswordField jPasswordField1;
	private javax.swing.JTextField jTextField1;
}

10.哦对 忘了一件事情,测试类也是很重要的,在项目具体功能展示之前需要写一个测试类测试这些功能,下面我把测试类Test(因为本人比较懒,这里只是把Student的功能测试展示出来)展示给大家。
Test类:
package com.ruide.test;
import java.util.List;
import com.ruide.dao.ClazzDAO;
import com.ruide.dao.StudentDAO;
import com.ruide.vo.Clazz;
import com.ruide.vo.Student;

public class Test {
	public static void main11(String[] args){
		StudentDAO dao=new StudentDAO();
		List list=dao.findAll();
		for(Student st:list){
			System.out.println(st.getStuid()+" "+st.getStuname()+" "+st.getStusex()+" "+st.getClazzid());
		}
	}
	
	
	public static void main10(String[] args){
		StudentDAO dao=new StudentDAO();
		int i=3;
		Student st=dao.findById(i);
		if(st!=null){
		System.out.println(st.getStuid()+" "+st.getStuname()+" "+st.getStusex()+" "+st.getClazzid());
		}else{
			System.out.println("查无此人");
		}
	}
	
	public static void main12(String[] args){
		StudentDAO dao=new StudentDAO();
		try {
			int id=20;
			int i = dao.delete(id);
			if(i>0){
				System.out.println("恭喜您,数据删除成功!");
			}else{
				System.out.println("数据删除失败!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	
	public static void main(String[] args){
		StudentDAO dao=new StudentDAO();
		int id=20;
		String name="赵世飞";
		String sex="男";
		int clazz=3;
		Student st=new Student();
		st.setStuid(id);
		st.setStuname(name);
		st.setStusex(sex);
		st.setClazzid(clazz);
		int i=dao.save(st);
		if(i>0){
			System.out.print("恭喜您,数据添加成功!");
		}else{
			System.out.println("数据添加失败!!");
		}
	}
	
	public static void main9(String[] args){
		StudentDAO dao=new StudentDAO();
		Student st=new Student();
		st.setStuid(20);
		st.setStuname("赵世飞1");
		st.setStusex("女");
		st.setClazzid(5);
		int i=dao.change(st);
		if(i>0){
			System.out.println("恭喜您,数据修改成功!");
		}else{
			System.out.println("数据修改失败!!");
		}
	}
	
	public static void main8(String[] args){
		Student st=new Student();
		StudentDAO dao=new StudentDAO();
		String name="李泽旭";
		st=dao.findByName(name);
		System.out.println(st.getStuid()+" "+st.getStuname()+" "+st.getStusex()+" "+st.getClazzid());
		
	}
}

好了,一个完整的学生管理系统就这么搞出来了,开不开心,惊不惊喜,反正我是既开心又惊喜。最后希望对各位正在学习编程的小伙伴有帮助,祝各位小伙伴在编码的路上勇往直前!

你可能感兴趣的:(jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库))