学生管理系统

目录

一、代码展示

1、数据库辅助类

2、实体类

3、数据库访问层

4、业务逻辑层

5、增

6、删

7、改

8、查


一、代码展示

1、数据库辅助类

package com.yzq.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
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 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/xs?useUnicode=true&characterEncoding=UTF-8&useSSL=false
user=root
pwd=123456



2、实体类

学生实体类

package com.yzq.entity;

import java.io.Serializable;
import java.util.List;
/**
 * 学生实体类
 * @author yanzhongqi
 * 2022年6月20日 下午12:42:52
 */
public class Student implements Serializable{
	
	private static final long serialVersionUID = 1L;
		
	private int sid;
	private String sname;
	private Teacher t;
	private Class c;
	//private Hobby h;
	private String ss;//用来增加 xiugai
	private List<Happy> 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<Happy> getLs() {
		return ls;
	}
	public void setLs(List<Happy> ls) {
		this.ls = ls;
	}
	public Student() {
		// TODO Auto-generated constructor stub
	}
	public Student(int sid, String sname, Teacher t, Class c, List<Happy> 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.yzq.entity;

import java.io.Serializable;

/**
 * 教员实体类
 * @author yanzhongqi
 * 2022年6月20日 下午12:43:08
 */
public class Teacher implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	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.yzq.entity;

import java.io.Serializable;

/**
 * 班级实体类
 * @author yanzhongqi
 * 2022年6月20日 下午12:43:29
 */
public class Class implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	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.yzq.entity;
/**
 * 爱好实体类
 * @author yanzhongqi
 * 2022年6月20日 下午12:43:43
 */
public class Happy {
	
	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 Happy() {
		// TODO Auto-generated constructor stub
	}
	public Happy(String hid, String hname) {
		super();
		this.hid = hid;
		this.hname = hname;
	}
	@Override
	public String toString() {
		return "Happy [hid=" + hid + ", hname=" + hname + "]";
	}

	
}

3、数据库访问层

学生数据库访问层

package com.yzq.dao;

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

import com.yzq.entity.Happy;
import com.yzq.entity.Student;
import com.yzq.util.DBHelper;

/**
 * 学生数据库访问层
 * @author yanzhongqi
 * 2022年6月20日 下午5:10:37
 */
public class StudentDao implements StudentIDao {

	//三兄弟
		private Connection con=null;
		private PreparedStatement ps=null;
		private ResultSet rs=null;
		
		//调用爱好dao层
		HappyIDao ihd=new HappyDao();
		
		@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<Happy> lss=new ArrayList<>();
					Student stu=new Student();
					stu.setSid(rs.getInt(1));
					stu.setSname(rs.getString(2));
					stu.setT(new GyDao().getTeacher(rs.getInt(3)));
					stu.setC(new GyDao().getOne(rs.getInt(4)));
					String sa = rs.getString(5);
					//用逗号分割
					String[] io = sa.split(",");
					for (String kk : io) {
						//调用查询单个方法
						Happy h = ihd.getHappy(kk);
						lss.add(h);
					}
					stu.setLs(lss);
					ls.add(stu);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				DBHelper.close(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.close(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.close(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.close(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<Happy> lss=new ArrayList<>();
					stu.setSid(rs.getInt(1));
					stu.setSname(rs.getString(2));
					stu.setT(new GyDao().getTeacher(rs.getInt(3)));
					stu.setC(new GyDao().getOne(rs.getInt(4)));
					String sa = rs.getString(5);
					//用逗号分割
					String[] io = sa.split(",");
					for (String kk : io) {
						//调用查询单个方法
						Happy h = ihd.getHappy(kk);
						lss.add(h);
					}
					stu.setLs(lss);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				DBHelper.close(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<Happy> lss=new ArrayList<>();
					Student stu=new Student();
					stu.setSid(rs.getInt(1));
					stu.setSname(rs.getString(2));
					stu.setT(new GyDao().getTeacher(rs.getInt(3)));
					stu.setC(new GyDao().getOne(rs.getInt(4)));
					String sa = rs.getString(5);
					//用逗号分割
					String[] io = sa.split(",");
					for (String kk : io) {
						//调用查询单个方法
						Happy h = ihd.getHappy(kk);
						lss.add(h);
					}
					stu.setLs(lss);
					ls.add(stu);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				DBHelper.close(con, ps, rs);
			}
			return ls;
		}
		
		public static void main(String[] args) {
			System.out.println(new StudentDao().getMH("1", "1", "1,2", 1, 4));
		}

		@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.close(con, ps, rs);
			}
			return n;
		}
}

学生数据库访问层接口

package com.yzq.dao;

import java.util.List;

import com.yzq.entity.Student;

/**
 * 学生数据库访问层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:10:04
 */
public interface StudentIDao {

	/**
	 * 查询全部
	 * @return
	 */
	public List<Student> getAll();
	
	/**
	 * 增加学生
	 * @param stu
	 * @return
	 */
	public int addStu(Student stu);
	
	/**
	 * 删除学生
	 * @param sid
	 * @return
	 */
	public int delStu(int sid);
	
	/**
	 * 修改学生
	 * @param sid
	 * @param stu
	 * @return
	 */
	public int updStu(int sid,Student stu);
	
	/**
	 * 单个查询
	 * @param sid
	 * @return
	 */
	public Student getStu(int sid);
	
	/**
	 * 模糊查询
	 * @param ctr
	 * @param htr
	 * @param str
	 * @param pageInde
	 * @param pageSize
	 * @return
	 */
	public List<Student> getMH(String ctr,String htr,String str,int pageInde,int pageSize);
	
	/**
	 * 获取总行数
	 * @param str
	 * @return
	 */
	public int getRows(String str);
}

教员数据库访问层

package com.yzq.dao;

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

import com.yzq.entity.Teacher;
import com.yzq.util.DBHelper;
/**
 * 教员数据库访问层
 * @author yanzhongqi
 * 2022年6月20日 下午5:12:53
 */
public class TeacherDao implements TeacherIDao {

	//三兄弟
		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.close(con, ps, rs);
			}
			return ls;
		}

		@Override
		public Teacher getTeacher(int tid) {
			Teacher t=new Teacher();
			GyDao GyDao = new GyDao();
			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(GyDao.getOne(rs.getInt(3)));
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				DBHelper.close(con, ps, rs);
			}
			return t;
		}

}

教员数据库访问层接口

package com.yzq.dao;

import java.util.List;

import com.yzq.entity.Teacher;
/**
 * 教员数据库访问层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:13:39
 */
public interface TeacherIDao {
	
	/**
	 * 查询全部
	 * @return
	 */
	public List<Teacher> getAll();
	
	/**
	 * 单个查询
	 * @param tid
	 * @return
	 */
	public Teacher getTeacher(int tid);
}

班级数据库访问层

package com.yzq.dao;

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

import com.yzq.entity.Class;
import com.yzq.util.DBHelper;
/**
 * 班级数据库访问层
 * @author yanzhongqi
 * 2022年6月20日 下午5:14:20
 */
public class ClassDao implements ClassIDao {

	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.close(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.close(con, ps, rs);
		}
		return c;
	}

}

班级数据库访问层接口

package com.yzq.dao;

import java.util.List;
import com.yzq.entity.Class;
/**
 * 班级数据库访问层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:15:09
 */
public interface ClassIDao {
	
	/**
	 * 查询全部
	 * @return
	 */
	public List<Class> getAll();
	
	/**
	 * 单个查询
	 * @param cid
	 * @return
	 */
	public Class getOne(int cid);
}

爱好数据库访问层

package com.yzq.dao;

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

import com.yzq.entity.Happy;
import com.yzq.util.DBHelper;
/**
 * 爱好数据库访问层
 * @author yanzhongqi
 * 2022年6月20日 下午5:16:14
 */
public class HappyDao implements HappyIDao {

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

	@Override
	public Happy getHappy(String hid) {
		Happy h=new Happy();
		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.close(con, ps, rs);
		}
		return h;
	}

}

爱好数据看访问层接口

package com.yzq.dao;

import java.util.List;

import com.yzq.entity.Happy;
/**
 * 爱好数据库访问层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:18:14
 */
public interface HappyIDao {
	
	/**
	 * 查询全部
	 * @return
	 */
	public List<Happy> getAll();
	
	/**
	 * 单个查询
	 * @param hid
	 * @return
	 */
	public Happy getHappy(String hid);
}

4、业务逻辑层

学生业务逻辑层

package com.yzq.biz;

import java.util.List;

import com.yzq.dao.StudentDao;
import com.yzq.dao.StudentIDao;
import com.yzq.entity.Student;
/**
 * 学生业务逻辑层
 * @author yanzhongqi
 * 2022年6月20日 下午5:20:22
 */
public class StudentBiz implements StudentIBiz {
	
	StudentIDao sd = new StudentDao();

	@Override
	public List<Student> getAll() {
		// TODO Auto-generated method stub
		return sd.getAll();
	}

	@Override
	public int addStu(Student stu) {
		// TODO Auto-generated method stub
		return sd.addStu(stu);
	}

	@Override
	public int delStu(int sid) {
		// TODO Auto-generated method stub
		return sd.delStu(sid);
	}

	@Override
	public int updStu(int sid, Student stu) {
		// TODO Auto-generated method stub
		return sd.updStu(sid, stu);
	}

	@Override
	public Student getStu(int sid) {
		// TODO Auto-generated method stub
		return sd.getStu(sid);
	}

	@Override
	public List<Student> getMH(String ctr, String htr, String str, int pageInde, int pageSize) {
		// TODO Auto-generated method stub
		return sd.getMH(ctr, htr, str, pageInde, pageSize);
	}

	@Override
	public int getRows(String str) {
		// TODO Auto-generated method stub
		return sd.getRows(str);
	}

	
}

学生业务逻辑层接口

package com.yzq.biz;

import java.util.List;

import com.yzq.entity.Student;
/**
 * 学生业务逻辑层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:21:28
 */
public interface StudentIBiz {

	/**
	 * 查询全部
	 * @return
	 */
	public List<Student> getAll();
	
	/**
	 * 增加学生
	 * @param stu
	 * @return
	 */
	public int addStu(Student stu);
	
	/**
	 * 删除学生
	 * @param sid
	 * @return
	 */
	public int delStu(int sid);
	
	/**
	 * 修改学生
	 * @param sid
	 * @param stu
	 * @return
	 */
	public int updStu(int sid,Student stu);
	
	/**
	 * 单个查询
	 * @param sid
	 * @return
	 */
	public Student getStu(int sid);
	
	/**
	 * 模糊查询
	 * @param ctr
	 * @param htr
	 * @param str
	 * @param pageInde
	 * @param pageSize
	 * @return
	 */
	public List<Student> getMH(String ctr,String htr,String str,int pageInde,int pageSize);
	
	/**
	 * 获取总行数
	 * @param str
	 * @return
	 */
	public int getRows(String str);
}

教员业务逻辑层

package com.yzq.biz;

import java.util.List;

import com.yzq.dao.TeacherDao;
import com.yzq.dao.TeacherIDao;
import com.yzq.entity.Teacher;
/**
 * 教员业务逻辑层
 * @author yanzhongqi
 * 2022年6月20日 下午5:22:17
 */
public class TeacherBiz implements TeacherIBiz {
	
	TeacherIDao td = new TeacherDao();

	@Override
	public List<Teacher> getAll() {
		// TODO Auto-generated method stub
		return td.getAll();
	}

	@Override
	public Teacher getTeacher(int tid) {
		// TODO Auto-generated method stub
		return td.getTeacher(tid);
	}

}

教员业务逻辑层接口

package com.yzq.biz;

import java.util.List;

import com.yzq.entity.Teacher;
/**
 * 教员业务逻辑层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:23:56
 */
public interface TeacherIBiz {

	/**
	 * 查询全部
	 * @return
	 */
	public List<Teacher> getAll();
	
	/**
	 * 单个查询
	 * @param tid
	 * @return
	 */
	public Teacher getTeacher(int tid);
}

班级业务逻辑层

package com.yzq.biz;

import java.util.List;

import com.yzq.dao.ClassDao;
import com.yzq.dao.ClassIDao;
import com.yzq.entity.Class;
/**
 * 班级业务逻辑层
 * @author yanzhongqi
 * 2022年6月20日 下午5:25:40
 */
public class ClassBiz implements ClassIBiz {
	
	ClassIDao cd = new ClassDao();

	@Override
	public List<Class> getAll() {
		// TODO Auto-generated method stub
		return cd.getAll();
	}

	@Override
	public Class getOne(int cid) {
		// TODO Auto-generated method stub
		return cd.getOne(cid);
	}

}

班级业务逻辑层接口

package com.yzq.biz;

import java.util.List;

import com.yzq.entity.Class;
/**
 * 班级业务逻辑层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:27:04
 */
public interface ClassIBiz {

	/**
	 * 查询全部
	 * @return
	 */
	public List<Class> getAll();
	
	/**
	 * 单个查询
	 * @param cid
	 * @return
	 */
	public Class getOne(int cid);
}

爱好业务逻辑层

package com.yzq.biz;

import java.util.List;

import com.yzq.dao.HappyDao;
import com.yzq.dao.HappyIDao;
import com.yzq.entity.Happy;
/**
 * 爱好业务逻辑层
 * @author yanzhongqi
 * 2022年6月20日 下午5:41:17
 */
public class HappyBiz implements HappyIBiz {
	
	HappyIDao hd = new HappyDao();

	@Override
	public List<Happy> getAll() {
		// TODO Auto-generated method stub
		return hd.getAll();
	}

	@Override
	public Happy getHappy(String hid) {
		// TODO Auto-generated method stub
		return hd.getHappy(hid);
	}

}

爱好业务逻辑层接口

package com.yzq.biz;

import java.util.List;

import com.yzq.entity.Happy;
/**
 * 爱好业务逻辑层接口
 * @author yanzhongqi
 * 2022年6月20日 下午5:42:28
 */
public interface HappyIBiz {

	/**
	 * 查询全部
	 * @return
	 */
	public List<Happy> getAll();
	
	/**
	 * 单个查询
	 * @param hid
	 * @return
	 */
	public Happy getHappy(String hid);
}

5、增

增加页面

<%@ 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>

增加servlet

package com.yzq.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.yzq.biz.ClassBiz;
import com.yzq.biz.ClassIBiz;
import com.yzq.biz.StudentBiz;
import com.yzq.biz.StudentIBiz;
import com.yzq.biz.TeacherBiz;
import com.yzq.biz.TeacherIBiz;
import com.yzq.entity.Student;
import com.yzq.entity.Teacher;
import com.yzq.entity.Class;

/**
 * Servlet implementation class AddServlet
 */
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	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;
		}
		
		//调用业务逻辑层
		StudentIBiz isb=new StudentBiz();
		TeacherIBiz itb=new TeacherBiz();
		Teacher t = itb.getTeacher(Integer.parseInt(tid));
		ClassIBiz 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>");
		}
	}
}
package com.yzq.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.yzq.biz.ClassBiz;
import com.yzq.biz.ClassIBiz;
import com.yzq.biz.HappyBiz;
import com.yzq.biz.HappyIBiz;
import com.yzq.biz.TeacherBiz;
import com.yzq.biz.TeacherIBiz;
import com.yzq.entity.Happy;
import com.yzq.entity.Teacher;
import com.yzq.entity.Class;

/**
 * Servlet implementation class PreAddServlet
 */
@WebServlet("/PreAddServlet")
public class PreAddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	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");
		
		//调用业务逻辑层
		HappyIBiz ihb=new HappyBiz();
		ClassIBiz icb=new ClassBiz();
		TeacherIBiz itb=new TeacherBiz();
		List<Happy> 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("集合为空");
		}
	}
}

6、删

删除servlet

package com.yzq.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.yzq.biz.StudentBiz;
import com.yzq.biz.StudentIBiz;

/**
 * Servlet implementation class DeleteServlet
 */
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	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");
		//调用业务逻辑层
		StudentIBiz 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>");
		}
	}

}

7、改

修改页面

<%@ 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>

修改servlet

<%@ 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>
package com.yzq.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.yzq.biz.ClassBiz;
import com.yzq.biz.ClassIBiz;
import com.yzq.biz.StudentBiz;
import com.yzq.biz.StudentIBiz;
import com.yzq.biz.TeacherBiz;
import com.yzq.biz.TeacherIBiz;
import com.yzq.entity.Teacher;
import com.yzq.entity.Class;
import com.yzq.entity.Student;

/**
 * Servlet implementation class PreUpdateServlet1
 */
@WebServlet("/PreUpdateServlet1")
public class PreUpdateServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	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;
		}
		
		//调用业务逻辑层
		StudentIBiz isb=new StudentBiz();
		TeacherIBiz itb=new TeacherBiz();
		Teacher t = itb.getTeacher(Integer.parseInt(tid));
		ClassIBiz 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>");
		}
	}
}

8、查

主界面

<%@ 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>

主界面servlet

package com.yzq.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.yzq.biz.ClassBiz;
import com.yzq.biz.ClassIBiz;
import com.yzq.biz.HappyBiz;
import com.yzq.biz.HappyIBiz;
import com.yzq.biz.StudentBiz;
import com.yzq.biz.StudentIBiz;
import com.yzq.biz.TeacherBiz;
import com.yzq.biz.TeacherIBiz;
import com.yzq.entity.Class;
import com.yzq.entity.Happy;
import com.yzq.entity.Student;
import com.yzq.entity.Teacher;

/**
 * Servlet implementation class IndexServlet
 */
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	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);
		}
		StudentIBiz 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;
		}
		//查询所有的班级
		ClassIBiz icb= new ClassBiz();
		List<Class> lc = icb.getAll();
		//查询所有的教员
		TeacherIBiz itb=new TeacherBiz();
		List<Teacher> lt = itb.getAll();
		//查询所有的学生
//		List<Student> ls = isb.getAll();
		//带模糊查询的分页
		List<Student> ls = isb.getMH(ctr, htr, str, pageInde, pageSize);
		//查询所有的爱好
		HappyIBiz ihb=new HappyBiz();
		List<Happy> 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("集合为空");
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值