学生系统增删改查

一、dao层和biz层以及数据库辅助类以及实体类

1、数据库辅助类:

package com.xnx.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 提供了一组获得或关闭数据库对象的方法
 * 
 */
public class DBHelper {
	private static String driver;
	private static String url;
	private static String user;
	private static String password;

	static {// 静态块执行一次,加载 驱动一次
		try {
			InputStream is = DBHelper.class
					.getResourceAsStream("config.properties");

			Properties properties = new Properties();
			properties.load(is);

			driver = properties.getProperty("driver");
			url = properties.getProperty("url");
			user = properties.getProperty("user");
			password = properties.getProperty("pwd");

			Class.forName(driver);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	/**
	 * 获得数据连接对象
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		try {
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	public static void close(ResultSet rs) {
		if (null != rs) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}

	public static void close(Statement stmt) {
		if (null != stmt) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}

	public static void close(Connection conn) {
		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}
	
	public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if(rs!=null) {
				rs.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(con!=null&&!con.isClosed()) {
				con.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
		close(conn);
	}

	public static boolean isOracle() {
		return "oracle.jdbc.driver.OracleDriver".equals(driver);
	}

	public static boolean isSQLServer() {
		return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver);
	}
	
	public static boolean isMysql() {
		return "com.mysql.jdbc.Driver".equals(driver);
	}

	public static void main(String[] args) {
		Connection conn = DBHelper.getConnection();
		DBHelper.close(conn);
		System.out.println("isOracle:" + isOracle());
		System.out.println("isSQLServer:" + isSQLServer());
		System.out.println("isMysql:" + isMysql());
		System.out.println("数据库连接(关闭)成功");
	}
}

连接数据库:

#oracle9i
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#pwd=123


#sql2005
#driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#url=jdbc:sqlserver://localhost:1433;DatabaseName=test1
#user=sa
#pwd=123


#sql2000
#driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB
#user=sa
#pwd=888888


#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_0614?useUnicode=true&characterEncoding=UTF-8&useSSL=false
user=root
pwd=123456




2、实体类:

①学生类:

package com.xnx.entity;

import java.io.Serializable;
import java.util.List;


public class Student implements Serializable{
	
	
	private static final long serialVersionUID = 7154831938131519366L;
	private int sid;
	private String sname;
	private Teacher t;
	private Class c;
//	private Hobby h;
	private String ss;//用来增加 xiugai
	private List<Hobby> ls;//用来绑值
	//定义一个
	public int getSid() {
		return sid;
	}
	public String getSs() {
		return ss;
	}
	public void setSs(String ss) {
		this.ss = ss;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Teacher getT() {
		return t;
	}
	public void setT(Teacher t) {
		this.t = t;
	}
	public Class getC() {
		return c;
	}
	public void setC(Class c) {
		this.c = c;
	}
	public List<Hobby> getLs() {
		return ls;
	}
	public void setLs(List<Hobby> ls) {
		this.ls = ls;
	}
	public Student() {
		// TODO Auto-generated constructor stub
	}
	public Student(int sid, String sname, Teacher t, Class c, List<Hobby> ls) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.ls = ls;
	}
	
	public Student(String sname, Teacher t, Class c, String ss) {
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.ss = ss;
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", t=" + t + ", c=" + c + ", ls=" + ls + "]";
	}
}

②教员类:

package com.xnx.entity;

import java.io.Serializable;

/**
 * 教师类
 * @author Administrator
 *
 */
public class Teacher implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 4984197172186331612L;
	private int tid;
	private String tname;
	private Class c;
	public int getTid() {
		return tid;
	}
	public void setTid(int tid) {
		this.tid = tid;
	}
	public String getTname() {
		return tname;
	}
	public void setTname(String tname) {
		this.tname = tname;
	}
	public Class getC() {
		return c;
	}
	public void setC(Class c) {
		this.c = c;
	}
	public Teacher() {
		// TODO Auto-generated constructor stub
	}
	public Teacher(int tid, String tname, Class c) {
		this.tid = tid;
		this.tname = tname;
		this.c = c;
	}
	@Override
	public String toString() {
		return "Teacher [tid=" + tid + ", tname=" + tname + ", c=" + c + "]";
	}
}

③班级类:

package com.xnx.entity;

import java.io.Serializable;
/**
 * 班级类
 * @author Administrator
 *
 */
public class Class implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -5145856861606131091L;
	private int cid;
	private String cname;
	public int getCid() {
		return cid;
	}
	public void setCid(int cid) {
		this.cid = cid;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public Class() {
		// TODO Auto-generated constructor stub
	}
	public Class(int cid, String cname) {
		super();
		this.cid = cid;
		this.cname = cname;
	}
	@Override
	public String toString() {
		return "Class [cid=" + cid + ", cname=" + cname + "]";
	}
}

④爱好类:

package com.xnx.entity;

import java.io.Serializable;
/**
 * 爱好类
 * @author Administrator
 *
 */
public class Hobby implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -9120395110708701114L;
	private String hid;
	private String hname;
	public String getHid() {
		return hid;
	}

	public void setHid(String hid) {
		this.hid = hid;
	}

	public String getHname() {
		return hname;
	}

	public void setHname(String hname) {
		this.hname = hname;
	}
	public Hobby() {
		// TODO Auto-generated constructor stub
	}
	public Hobby(String hid, String hname) {
		super();
		this.hid = hid;
		this.hname = hname;
	}
	@Override
	public String toString() {
		return "Hobby [hid=" + hid + ", hname=" + hname + "]";
	}
}

3.dao层

①学生类:

package com.xnx.dao;

import java.sql.Array;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Student;
import com.xnx.entity.Teacher;
import com.xnx.util.DBHelper;

public class StudentDao implements IStudentDao{
	
	//三兄弟
	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	//调用爱好dao层
	IHobbyDao ihd=new HobbyDao();
	
	@Override
	public List<Student> getAll() {
		List<Student> ls=new ArrayList<Student>();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_student";
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {
				//实例化一个爱好数组
				List<Hobby> lss=new ArrayList<>();
				Student stu=new Student();
				stu.setSid(rs.getInt(1));
				stu.setSname(rs.getString(2));
				stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
				stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
				String sa = rs.getString(5);
				//用逗号分割
				String[] io = sa.split(",");
				for (String kk : io) {
					//调用查询单个方法
					Hobby h = ihd.getHobby(kk);
					lss.add(h);
				}
				stu.setLs(lss);
				ls.add(stu);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

	@Override
	public int addStu(Student stu) {
		int n=0;
		try {
			con=DBHelper.getConnection();
			String sql="insert into tb_student(sname,tid,cid,hid) values(?,?,?,?)";
			ps=con.prepareStatement(sql);
			ps.setString(1, stu.getSname());
			ps.setInt(2, stu.getT().getTid());
			ps.setInt(3, stu.getC().getCid());
			ps.setString(4, stu.getSs());
			n=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
	}

	@Override
	public int delStu(int sid) {
		int n=0;
		try {
			con=DBHelper.getConnection();
			String sql="delete from tb_student where sid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, sid);
			n=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
	}

	@Override
	public int updStu(int sid, Student stu) {
		int n=0;
		try {
			con=DBHelper.getConnection();
			String sql="update tb_student set sname=?,tid=?,cid=?,hid=? where sid=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, stu.getSname());
			ps.setInt(2, stu.getT().getTid());
			ps.setInt(3, stu.getC().getCid());
//			ps.setString(4, stu.getH().getHid());
			ps.setString(4, stu.getSs());
			ps.setInt(5, sid);
			n=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
	}
	

	@Override
	public Student getStu(int sid) {
		Student stu=new Student();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_student where sid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, sid);
			rs=ps.executeQuery();
			if(rs.next()) {
				//实例化一个爱好数组
				List<Hobby> lss=new ArrayList<>();
				stu.setSid(rs.getInt(1));
				stu.setSname(rs.getString(2));
				stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
				stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
				String sa = rs.getString(5);
				//用逗号分割
				String[] io = sa.split(",");
				for (String kk : io) {
					//调用查询单个方法
					Hobby h = ihd.getHobby(kk);
					lss.add(h);
				}
				stu.setLs(lss);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return stu;
	}

	@Override
	public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize) {
		List<Student> ls=new ArrayList<Student>();
		int a=(pageInde-1)*pageSize;
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_student where hid like '%"+htr+"%' and tid like '%"+str+"%' and cid like '%"+ctr+"%' limit ?,?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, a);
			ps.setInt(2, pageSize);
			rs=ps.executeQuery();
			while(rs.next()) {
				//实例化一个爱好数组
				List<Hobby> lss=new ArrayList<>();
				Student stu=new Student();
				stu.setSid(rs.getInt(1));
				stu.setSname(rs.getString(2));
				stu.setT(new BjJyAhDao().getTeacher(rs.getInt(3)));
				stu.setC(new BjJyAhDao().getOne(rs.getInt(4)));
				String sa = rs.getString(5);
				//用逗号分割
				String[] io = sa.split(",");
				for (String kk : io) {
					//调用查询单个方法
					Hobby h = ihd.getHobby(kk);
					lss.add(h);
				}
				stu.setLs(lss);
				ls.add(stu);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

	@Override
	public int getRows(String str) {
		int n=0;
		try {
			con=DBHelper.getConnection();
			String sql="select count(*) from "+str;
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			if(rs.next()) {
				n=rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
	}
	
}

②学生接口:

package com.xnx.dao;

import java.util.List;

import com.xnx.entity.Student;

public interface IStudentDao {
	public List<Student> getAll();
	public int addStu(Student stu);
	public int delStu(int sid);
	public int updStu(int sid,Student stu);
	public Student getStu(int sid);
	public List<Student> getMH(String ctr,String htr,String str,int pageInde,int pageSize);
	public int getRows(String str);
}

③教员类:

package com.xnx.dao;

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

import com.xnx.entity.Teacher;
import com.xnx.util.DBHelper;

public class TeacherDao implements ITeacherDao{
	//三兄弟
	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	@Override
	public List<Teacher> getAll() {
		List<Teacher> ls=new ArrayList<Teacher>();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_teacher";
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {
				Teacher t=new Teacher();
				t.setTid(rs.getInt(1));
				t.setTname(rs.getString(2));
				ls.add(t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

	@Override
	public Teacher getTeacher(int tid) {
		Teacher t=new Teacher();
		BjJyAhDao bjJyAhDao = new BjJyAhDao();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_teacher where tid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, tid);
			rs=ps.executeQuery();
			if(rs.next()) {
				t.setTid(rs.getInt(1));
				t.setTname(rs.getString(2));
				t.setC(bjJyAhDao.getOne(rs.getInt(3)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return t;
	}
	
}

④教员接口:

package com.xnx.dao;

import java.util.List;

import com.xnx.entity.Teacher;

public interface ITeacherDao {
	public List<Teacher> getAll();
	public Teacher getTeacher(int tid);
}

⑤班级类:

package com.xnx.dao;

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

import com.xnx.entity.Class;
import com.xnx.util.DBHelper;

public class ClssDao implements IClassDao{

	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	@Override
	public List<Class> getAll() {
		List<Class> ls=new ArrayList<Class>();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_class";
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {
				Class c=new Class();
				c.setCid(rs.getInt(1));
				c.setCname(rs.getString(2));
				ls.add(c);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}
	@Override
	public Class getOne(int cid) {
		Class c=new Class();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_class where cid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, cid);
			rs=ps.executeQuery();
			if(rs.next()) {
				c.setCid(rs.getInt(1));
				c.setCname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return c;
	}
}

⑥班级接口:

package com.xnx.dao;

import java.util.List;

import com.xnx.entity.Class;

public interface IClassDao {
	public List<com.xnx.entity.Class> getAll();
	public Class getOne(int cid);
}

⑦爱好类:

package com.xnx.dao;

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

import com.xnx.entity.Hobby;
import com.xnx.util.DBHelper;

public class HobbyDao implements IHobbyDao{

	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	@Override
	public List<Hobby> getAll() {
		List<Hobby> ls=new ArrayList<Hobby>();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_hobby";
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {
				Hobby h=new Hobby();
				h.setHid(rs.getString(1));
				h.setHname(rs.getString(2));
				ls.add(h);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

	@Override
	public Hobby getHobby(String hid) {
		Hobby h=new Hobby();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_hobby where hid=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, hid);
			rs=ps.executeQuery();
			if(rs.next()) {
				h.setHid(rs.getString(1));
				h.setHname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return h;
	}
	
}

⑧爱好接口:

package com.xnx.dao;

import java.util.List;

import com.xnx.entity.Hobby;

public interface IHobbyDao {
	public List<Hobby> getAll();
	public Hobby getHobby(String hid);
}

⑨共有类:

package com.xnx.dao;

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

import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Teacher;
import com.xnx.util.DBHelper;

public class BjJyAhDao {
	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	public Class getOne(int cid) {
		Class c=new Class();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_class where cid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, cid);
			rs=ps.executeQuery();
			if(rs.next()) {
				c.setCid(rs.getInt(1));
				c.setCname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return c;
	}
	public Teacher getTeacher(int tid) {
		Teacher t=new Teacher();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_teacher where tid=?";
			ps=con.prepareStatement(sql);
			ps.setInt(1, tid);
			rs=ps.executeQuery();
			if(rs.next()) {
				t.setTid(rs.getInt(1));
				t.setTname(rs.getString(2));
				t.setC(getOne(rs.getInt(3)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return t;
	}
	public Hobby getHobby(String hid) {
		Hobby h=new Hobby();
		try {
			con=DBHelper.getConnection();
			String sql="select * from tb_hobby where hid=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, hid);
			rs=ps.executeQuery();
			if(rs.next()) {
				h.setHid(rs.getString(1));
				h.setHname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return h;
	}
}

4、biz层

①学生类:

package com.xnx.biz;

import java.util.List;

import com.xnx.dao.IStudentDao;
import com.xnx.dao.StudentDao;
import com.xnx.entity.Student;

public class StudentBiz implements IStudentBiz{
	
	IStudentDao isd=new StudentDao();
	
	@Override
	public List<Student> getAll() {
		return isd.getAll();
	}

	@Override
	public int addStu(Student stu) {
		return isd.addStu(stu);
	}

	@Override
	public int delStu(int sid) {
		return isd.delStu(sid);
	}

	@Override
	public int updStu(int sid, Student stu) {
		return isd.updStu(sid, stu);
	}

	@Override
	public Student getStu(int sid) {
		return isd.getStu(sid);
	}

	@Override
	public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize) {
		return isd.getMH(ctr, htr, str, pageInde, pageSize);
	}

	@Override
	public int getRows(String str) {
		return isd.getRows(str);
	}

}

②学生接口:

package com.xnx.biz;

import java.util.List;

import com.xnx.entity.Student;

public interface IStudentBiz {
	public List<Student> getAll();
	public int addStu(Student stu);
	public int delStu(int sid);
	public int updStu(int sid,Student stu);
	public Student getStu(int sid);
	public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize);
	public int getRows(String str);
}

③教员类:

package com.xnx.biz;

import java.util.List;

import com.xnx.dao.ITeacherDao;
import com.xnx.dao.TeacherDao;
import com.xnx.entity.Teacher;

public class TeacherBiz implements ITeacherBiz{
	ITeacherDao itd=new TeacherDao();
	@Override
	public List<Teacher> getAll() {
		return itd.getAll();
	}
	@Override
	public Teacher getTeacher(int tid) {
		return itd.getTeacher(tid);
	}

}

④教员接口:

package com.xnx.biz;

import java.util.List;

import com.xnx.entity.Teacher;

public interface ITeacherBiz {
	public List<Teacher> getAll();
	public Teacher getTeacher(int tid);
}

⑤班级类:

package com.xnx.biz;

import java.util.List;

import com.xnx.dao.ClssDao;
import com.xnx.dao.IClassDao;
import com.xnx.entity.Class;

public class ClassBiz implements IClassBiz{
	
	IClassDao icd=new ClssDao();
	@Override
	public List<Class> getAll() {
		return icd.getAll();
	}
	@Override
	public Class getOne(int cid) {
		return icd.getOne(cid);
	}
	
}

⑥班级接口:

package com.xnx.biz;

import java.util.List;

import com.xnx.entity.Class;

public interface IClassBiz {
	public List<com.xnx.entity.Class> getAll();
	public Class getOne(int cid);
}

⑦爱好类:

package com.xnx.biz;

import java.util.List;

import com.xnx.dao.HobbyDao;
import com.xnx.dao.IHobbyDao;
import com.xnx.entity.Hobby;

public class HobbyBiz implements IHobbyBiz{
	IHobbyDao ihd=new HobbyDao();
	@Override
	public List<Hobby> getAll() {
		return ihd.getAll();
	}
	@Override
	public Hobby getHobby(String hid) {
		return ihd.getHobby(hid);
	}

}

⑧爱好接口:

package com.xnx.biz;

import java.util.List;

import com.xnx.entity.Hobby;

public interface IHobbyBiz {
	public List<Hobby> getAll();
	public Hobby getHobby(String hid);
}

二、主界面

1、主界面jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<form method="post" action="IndexServlet">
			<c:if test="${empty la}">
				<jsp:forward page="IndexServlet"></jsp:forward>
			</c:if>
			<c:if test="${not empty la}">
				<select name="str">
					<c:forEach var="t" items="${la}">
						<option value="${t.tid}">${t.tname}</option>
					</c:forEach>
				</select>
			</c:if>
			<c:if test="${empty lc}">
				<jsp:forward page="IndexServlet"></jsp:forward>
			</c:if>
			<c:if test="${not empty lc}">
				<select name="ctr">
					<c:forEach var="c" items="${lc}">
						<option value="${c.cid}">${c.cname}</option>
					</c:forEach>
				</select>
			</c:if>
			<c:if test="${empty lh}">
				<jsp:forward page="IndexServlet"></jsp:forward>
			</c:if>
			<c:if test="${not empty lh}">
				<c:forEach items="${lh}" var="h">
					<input type="checkbox" name="htr" value="${h.hid},"/>${h.hname}
				</c:forEach>
			</c:if>
			<input type="submit" value="查询"/>
		</form>
		<c:if test="${empty ls}">
			<jsp:forward page="IndexServlet"></jsp:forward>
		</c:if>
		<c:if test="${not empty ls}">
			<table border="1px">
				<tr>
					<td>学生编号</td>
					<td>学生姓名</td>
					<td>学生的教员</td>
					<td>学生所在班级</td>
					<td>学生爱好</td>
					<td>操作&nbsp;<a href="add.jsp">增加</a></td>
				</tr>
				<c:forEach items="${ls}" var="s">
					<tr>
						<td>${s.sid}</td>
						<td>${s.sname}</td>
						<td>${s.t.tname}</td>
						<td>${s.c.cname}</td>
						<td>
							<c:forEach items="${s.ls}" var="sd">
								${sd.hname}
							</c:forEach>
						</td>
						<td>
							<a onclick="return confirm('你确定要删除吗?');" href="DeleteServlet?sid=${s.sid}">删除</a>
							<a href="PreUpdateServlet?sid=${s.sid}">修改</a>
						</td>
					</tr>
				</c:forEach>
				<tr>
					<td colspan="6">
						<a href="IndexServlet?pid=1">首页</a>
						<a href="IndexServlet?pid=${pageIndex>1?pageIndex-1:1}">上一页</a>
						[${pageIndex}/${max}]
						<a href="IndexServlet?pid=${pageIndex<max?pageIndex+1:max}">下一页</a>
						<a href="IndexServlet?pid=${max}">尾页</a>
					</td>
				</tr>
			</table>
		</c:if>
	</center>
</body>
</html>

2、主界面servlet代码:

package com.xnx.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.ClassBiz;
import com.xnx.biz.HobbyBiz;
import com.xnx.biz.IClassBiz;
import com.xnx.biz.IHobbyBiz;
import com.xnx.biz.IStudentBiz;
import com.xnx.biz.ITeacherBiz;
import com.xnx.biz.StudentBiz;
import com.xnx.biz.TeacherBiz;
import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Student;
import com.xnx.entity.Teacher;

@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		
		//定义页码页数
		int pageInde=1;
		int pageSize=4;
		//接收表单传值
		String ctr = request.getParameter("ctr");//班级
		String htr = request.getParameter("htr");//爱好
		String str = request.getParameter("str");//教员
		if(str==null) {
			str="";
		}
		if(htr==null) {
			htr="";
		}
		if(ctr==null) {
			ctr="";
		}
		String pid=request.getParameter("pid");
		if(pid!=null) {
			pageInde=Integer.parseInt(pid);
		}
		IStudentBiz isb=new StudentBiz();
		int rows=isb.getRows("tb_student where cid like '%"+ctr+"%' and hid like '%"+htr+"%' and tid like '%"+str+"%'");
		int max=rows/pageSize;
		if(rows%pageSize!=0) {
			max++;
		}
		if(max==0) {
			max=1;
		}
		//查询所有的班级
		IClassBiz icb=new ClassBiz();
		List<Class> lc = icb.getAll();
		//查询所有的教员
		ITeacherBiz itb=new TeacherBiz();
		List<Teacher> lt = itb.getAll();
		//查询所有的学生
//		List<Student> ls = isb.getAll();
		//带模糊查询的分页
		List<Student> ls = isb.getMH(ctr, htr, str, pageInde, pageSize);
		//查询所有的爱好
		IHobbyBiz ihb=new HobbyBiz();
		List<Hobby> lh = ihb.getAll();

		if(ls.size()!=0&&lt.size()!=0&&lc.size()!=0&&lh.size()!=0) {
			request.setAttribute("pageIndex", pageInde);
			request.setAttribute("ls", ls);
			request.setAttribute("la", lt);
			request.setAttribute("lc", lc);
			request.setAttribute("lh", lh);
			request.setAttribute("max", max);
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}
		else {
			System.out.println("集合为空");
		}
	}

}

主界面展示:
在这里插入图片描述
模糊查询:
在这里插入图片描述
分页:
在这里插入图片描述

三、增加功能

1、增加界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	function myf(){
		location.href="index.jsp";
	}
</script>
</head>
<body>
	<center>
		<form action="AddServlet" method="post">
			<table border="1px">
				<tr>
					<td>学生姓名</td>
					<td><input type="text" name="sname"/></td>
				</tr>
				<tr>
					<td>教员</td>
					<td>
						<c:if test="${empty la}">
							<jsp:forward page="PreAddServlet"></jsp:forward>
						</c:if>
						<c:if test="${not empty la}">
							<select name="teacher">
								<c:forEach var="t" items="${la}">
									<option value="${t.tid}">${t.tname}</option>
								</c:forEach>
							</select>
						</c:if>
					</td>
				</tr>
				<tr>
					<td>班级</td>
					<td>
						<c:if test="${empty lc}">
							<jsp:forward page="PreAddServlet"></jsp:forward>
						</c:if>
						<c:if test="${not empty lc}">
							<select name="class">
								<c:forEach var="c" items="${lc}">
									<option value="${c.cid}">${c.cname}</option>
								</c:forEach>
							</select>
						</c:if>
					</td>
				</tr>
				<tr>
					<td>爱好</td>
					<td>
						<c:if test="${empty lh}">
							<jsp:forward page="PreAddServlet"></jsp:forward>
						</c:if>
						<c:if test="${not empty lh}">
							<c:forEach items="${lh}" var="h">
								<input type="checkbox" name="aa" value="${h.hid},"/>${h.hname}
							</c:forEach>
						</c:if>
					</td>
				</tr>
			</table>
			<input type="submit" value="增加"/>
			<input type="button" value="清空" onclick="myf()"/>
		</form>
	</center>
</body>
</html>

2、增加界面的绑值:

package com.xnx.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.ClassBiz;
import com.xnx.biz.HobbyBiz;
import com.xnx.biz.IClassBiz;
import com.xnx.biz.IHobbyBiz;
import com.xnx.biz.ITeacherBiz;
import com.xnx.biz.TeacherBiz;
import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Teacher;

@WebServlet("/PreAddServlet")
public class PreAddServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		
		//调用业务逻辑层
		IHobbyBiz ihb=new HobbyBiz();
		IClassBiz icb=new ClassBiz();
		ITeacherBiz itb=new TeacherBiz();
		List<Hobby> lh = ihb.getAll();
		List<Class> lc = icb.getAll();
		List<Teacher> lt = itb.getAll();
		if(lh.size()!=0&&lc.size()!=0&&lt.size()!=0) {
			request.setAttribute("lh", lh);
			request.setAttribute("lc", lc);
			request.setAttribute("la", lt);
			request.getRequestDispatcher("add.jsp").forward(request, response);
		}
		else {
			System.out.println("集合为空");
		}
	}

}

3、增加界面的servlet代码:

package com.xnx.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.ClassBiz;
import com.xnx.biz.HobbyBiz;
import com.xnx.biz.IClassBiz;
import com.xnx.biz.IHobbyBiz;
import com.xnx.biz.IStudentBiz;
import com.xnx.biz.ITeacherBiz;
import com.xnx.biz.StudentBiz;
import com.xnx.biz.TeacherBiz;
import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Student;
import com.xnx.entity.Teacher;

@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		
		//拿out
		PrintWriter out = response.getWriter();
		
		//接收表单传值
		String sname = request.getParameter("sname");
		String tid = request.getParameter("teacher");
		String cid = request.getParameter("class");
		String[] hobby = request.getParameterValues("aa");
		String ss="";
		for (String string : hobby) {
			ss+=string;
		}
		
		//调用业务逻辑层
		IStudentBiz isb=new StudentBiz();
		ITeacherBiz itb=new TeacherBiz();
		Teacher t = itb.getTeacher(Integer.parseInt(tid));
		IClassBiz icb=new ClassBiz();
		Class c = icb.getOne(Integer.parseInt(cid));
		Student stu=new Student(sname, t, c, ss);
		int n = isb.addStu(stu);
		if(n>0) {//加入成功
			out.print("<script>alert('增加成功');location.href='index.jsp';</script>");
		}
		else {//加入失败
			out.print("<script>alert('增加失败');location.href='add.jsp';</script>");
		}
	}

}

界面展示:
在这里插入图片描述
增加后:
在这里插入图片描述

四、修改功能

1、修改界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<form action="PreUpdateServlet1?sid=${stu.sid}" method="post">
			<table border="1px">
				<tr>
					<td>学生姓名</td>
					<td><input type="text" name="sname" value="${stu.sname}"/></td>
				</tr>
				<tr>
					<td>教员</td>
					<td>
						<select name="teacher">
							<c:forEach var="t" items="${la}">
								<option <c:if test="${t.tid==stu.t.tid}"> selected="selected" </c:if> value="${t.tid}">${t.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				<tr>
					<td>班级</td>
					<td>
						<select name="class">
							<c:forEach var="c" items="${lc}">
								<option <c:if test="${c.cid==stu.c.cid}"> selected="selected" </c:if> value="${c.cid}">${c.cname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				<tr>
					<td>爱好</td>
					<td>
						<c:forEach items="${lh}" var="h">
							<input <c:forEach items="${stu.ls}" var="oo"> <c:if test="${h.hname==oo.hname}"> checked="checked" </c:if> </c:forEach> type="checkbox" name="aa" value="${h.hid},"/>${h.hname}
						</c:forEach>
					</td>
				</tr>
			</table>
			<input type="submit" value="修改"/>
		</form>
	</center>
</body>
</html>

2、修改界面绑值的servlet:

package com.xnx.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.ClassBiz;
import com.xnx.biz.HobbyBiz;
import com.xnx.biz.IClassBiz;
import com.xnx.biz.IHobbyBiz;
import com.xnx.biz.IStudentBiz;
import com.xnx.biz.ITeacherBiz;
import com.xnx.biz.StudentBiz;
import com.xnx.biz.TeacherBiz;
import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Student;
import com.xnx.entity.Teacher;

@WebServlet("/PreUpdateServlet")
public class PreUpdateServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		
		//接收
		String sid = request.getParameter("sid");
		//调用业务逻辑层
		IStudentBiz isb=new StudentBiz();
		Student stu = isb.getStu(Integer.parseInt(sid));
		IHobbyBiz ihb=new HobbyBiz();
		IClassBiz icb=new ClassBiz();
		ITeacherBiz itb=new TeacherBiz();
		List<Hobby> lh = ihb.getAll();
		List<Class> lc = icb.getAll();
		List<Teacher> lt = itb.getAll();
		request.setAttribute("lh", lh);
		request.setAttribute("lc", lc);
		request.setAttribute("la", lt);
		request.setAttribute("stu", stu);
		request.getRequestDispatcher("update.jsp").forward(request, response);
	}

}

3、修改界面的servlet代码:

package com.xnx.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.ClassBiz;
import com.xnx.biz.HobbyBiz;
import com.xnx.biz.IClassBiz;
import com.xnx.biz.IHobbyBiz;
import com.xnx.biz.IStudentBiz;
import com.xnx.biz.ITeacherBiz;
import com.xnx.biz.StudentBiz;
import com.xnx.biz.TeacherBiz;
import com.xnx.entity.Class;
import com.xnx.entity.Hobby;
import com.xnx.entity.Student;
import com.xnx.entity.Teacher;

@WebServlet("/PreUpdateServlet1")
public class PreUpdateServlet1 extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		
		//接收表单传值
		String sid = request.getParameter("sid");
		String sname = request.getParameter("sname");
		String tid = request.getParameter("teacher");
		String cid = request.getParameter("class");
		String[] hobby = request.getParameterValues("aa");
		String ss="";
		for (String string : hobby) {
			ss+=string;
		}
		
		//调用业务逻辑层
		IStudentBiz isb=new StudentBiz();
		ITeacherBiz itb=new TeacherBiz();
		Teacher t = itb.getTeacher(Integer.parseInt(tid));
		IClassBiz icb=new ClassBiz();
		Class c = icb.getOne(Integer.parseInt(cid));
		Student stu=new Student(sname, t, c, ss);
		int n = isb.updStu(Integer.parseInt(sid),stu);
		if(n>0) {//加入成功
			out.print("<script>alert('修改成功');location.href='index.jsp';</script>");
		}
		else {//加入失败
			out.print("<script>alert('修改成功');location.href='PreUpdateServlet?sid="+sid+"';</script>");
		}
	}

}

界面展示:
在这里插入图片描述
修改后:
在这里插入图片描述

五、删除功能

删除的servlet代码:

package com.xnx.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xnx.biz.IStudentBiz;
import com.xnx.biz.StudentBiz;

@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		//接收表单传值
		String sid = request.getParameter("sid");
		//调用业务逻辑层
		IStudentBiz isb=new StudentBiz();
		int n = isb.delStu(Integer.parseInt(sid));
		if(n>0) {
			out.print("<script>alert('删除成功');location.href='index.jsp';</script>");
		}
		else {
			out.print("<script>alert('删除失败');location.href='index.jsp';</script>");
		}
	}

}

删除有提示
在这里插入图片描述
删除后:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供Java单链学生系统增删改查操作的示例代码。首先,我们需要定义一个学生类,包含学生的姓名、年龄、学号等信息。如下所示: ```java public class Student { private String name; private int age; private String id; // 学号 public Student(String name, int age, String id) { this.name = name; this.age = age; this.id = id; } // 省略 getter 和 setter 方法 // ... } ``` 接下来,我们可以定义一个单链类,用于存储学生信息。如下所示: ```java public class StudentList { private Node head; // 头节点 private class Node { private Student data; // 数据域 private Node next; // 指针域 public Node(Student data) { this.data = data; } } // 添加学生信息 public void add(Student student) { Node newNode = new Node(student); if (head == null) { head = newNode; return; } Node p = head; while (p.next != null) { p = p.next; } p.next = newNode; } // 删除学生信息 public void delete(String id) { Node p = head; Node q = null; // 记录待删除节点的前驱节点 while (p != null) { if (p.data.getId().equals(id)) { // 找到待删除节点 if (q == null) { // 待删除节点为头节点 head = p.next; } else { q.next = p.next; } return; } q = p; p = p.next; } } // 修改学生信息 public void update(String id, Student student) { Node p = head; while (p != null) { if (p.data.getId().equals(id)) { // 找到待修改节点 p.data = student; return; } p = p.next; } } // 查找学生信息 public Student find(String id) { Node p = head; while (p != null) { if (p.data.getId().equals(id)) { // 找到待查找节点 return p.data; } p = p.next; } // 没有找到 return null; } } ``` 以上是Java单链学生系统增删改查操作的示例代码。您可以根据自己的实际需求进行修改和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值