18.学生-主页面
19.学生-个人中心-修改资料
20.学生-个人中心-我的选题
21.学生-开始选题-选题列表
22.学生-开始选题-选题明细
三、部分代码
StudentManager
TeacherManager
TopicManager
DB
Login.jsp
index.jsp
news.jsp
四、其他
1.更多系统
Java+JSP系统系列实现
Java+Servlet系统系列实现
Java+SSM系统系列实现
Java+SSH系统系列实现
Java+Springboot系统系列实现
2.源码下载
3.运行项目
4.备注
5.支持博主
一、系统介绍
======
1.开发环境
开发工具:IDEA2018
JDK版本:Jdk1.8
Mysql版本:8.0.13
2.技术选型
Java+Jsp+Mysql
3.系统功能
1.管理员登录系统,管理学生信息,管理教师信息,管理课题信息,系统维护功能;
2.教师登录系统,修改个人信息,添加课题,查看课题;
3.学生登录系统,修改个人信息,查看选题,选择课题;
4.数据库文件
/*
Navicat Premium Data Transfer
Source Server : MYSQL
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : jsp_select_topic
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 12/04/2022 09:04:43
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
– Table structure for msg
DROP TABLE IF EXISTS msg
;
CREATE TABLE msg
(
title
varchar(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
text
varchar(1000) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
PRIMARY KEY (title
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = gb2312 COLLATE = gb2312_chinese_ci ROW_FORMAT = Dynamic;
– Records of msg
INSERT INTO msg
VALUES (‘毕业设计选题系统初步完成’, ‘整个系统流程大致为:老师发布课题,管理员审核\r\n\r\n课题,学生选题,学生完成设计’);
INSERT INTO msg
VALUES (‘学生相关功能’, ‘请各位学生登录系统,给自己选择一个课题!’);
– Table structure for student_info
DROP TABLE IF EXISTS student_info
;
CREATE TABLE student_info
(
sno
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
sname
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
ssex
varchar(2) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
sclass
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
stel
varchar(11) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
semail
varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
sgroup
varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
spassword
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT ‘6-10位字符’,
PRIMARY KEY (sno
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;
– Records of student_info
INSERT INTO student_info
VALUES (‘1001’, ‘张三’, ‘男’, ‘4’, ‘15523457667’, ‘336688@qq.com’, ‘2’, ‘123456’);
INSERT INTO student_info
VALUES (‘1002’, ‘李四’, ‘男’, ‘2’, ‘14456789876’, ‘6699334@qq.com’, ‘2’, ‘123456’);
INSERT INTO student_info
VALUES (‘1003’, ‘王五’, ‘男’, ‘3’, ‘14456789876’, ‘6699334@qq.com’, ‘3’, ‘123456’);
INSERT INTO student_info
VALUES (‘1004’, ‘赵六’, ‘男’, ‘3’, ‘14456789876’, ‘6699334@qq.com’, ‘3’, ‘admin’);
– Table structure for teacher_info
DROP TABLE IF EXISTS teacher_info
;
CREATE TABLE teacher_info
(
tno
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
tname
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
tsex
varchar(2) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
tdept
varchar(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
tdegree
varchar(8) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
ttitle
varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
tright
bit(1) NOT NULL,
ttel
varchar(11) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
temail
varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
tgroup
varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
tpassword
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
PRIMARY KEY (tno
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;
– Records of teacher_info
INSERT INTO teacher_info
VALUES (‘101’, ‘admin’, ‘男’, ‘计算机科学与技术系’, ‘硕士’, ‘教授’, b’0’, ‘15315614829’, ‘12345678@qq.com’, ‘4’, ‘admin’);
INSERT INTO teacher_info
VALUES (‘102’, ‘王老师’, ‘男’, ‘计算机科学与技术系’, ‘硕士’, ‘教授’, b’1’, ‘15315614829’, ‘1234567844@qq.com’, ‘4’, ‘123456’);
INSERT INTO teacher_info
VALUES (‘103’, ‘李老师’, ‘男’, ‘计算机科学与技术系’, ‘硕士’, ‘助教’, b’1’, ‘13456789876’, ‘1234567844@qq.com’, ‘4’, ‘admin’);
– Table structure for topic_info
DROP TABLE IF EXISTS topic_info
;
CREATE TABLE topic_info
(
hno
varchar(5) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hname
varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
htype
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hkind
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hsource
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hstatus
varchar(5) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hcontent
varchar(200) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
hresult
varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
direction
varchar(200) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
tno
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL,
sno
varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,
PRIMARY KEY (hno
) USING BTREE,
INDEX FK_topicinfo
(sno
) USING BTREE,
INDEX FK_topicinfo1
(tno
) USING BTREE,
CONSTRAINT FK_topicinfo
FOREIGN KEY (sno
) REFERENCES student_info
(sno
) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT FK_topicinfo1
FOREIGN KEY (tno
) REFERENCES teacher_info
(tno
) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;
– Records of topic_info
INSERT INTO topic_info
VALUES (‘10001’, ‘计算机技术体系研究’, ‘毕业设计’, ‘理论研究’, ‘结合科研’, ‘true’, ‘计算机技术体系研究’, ‘SCI发表相应论文’, ‘无’, ‘102’, ‘1001’);
INSERT INTO topic_info
VALUES (‘10002’, ‘软件工程体系研究’, ‘毕业设计’, ‘软件研究’, ‘结合科研’, ‘true’, ‘软件工程体系研究’, ‘SCI发表论文’, ‘无’, ‘102’, ‘1002’);
SET FOREIGN_KEY_CHECKS = 1;
5.工程截图
二、系统展示
======
1.登录系统
2.管理员-主页面
3.管理员-学生管理-查看所有
4.管理员-学生管理-添加学生
5.管理员-教师管理-查看所有
6.管理员-教师管理-添加教师
7.管理员-课程管理-课程查询
8.管理员-课程管理-课程审核
9.管理员-系统维护-添加公告
10.管理员-系统维护-查看公告
11.管理员-系统维护-教师功能开关
12.管理员-系统维护-学生功能开关
13.教师-主页面
14.教师-个人中心-修改资料
15.教师-课题管理-所有课题
16.教师-课题管理-我的课题
17.教师-课题管理-添加课题
18.学生-主页面
19.学生-个人中心-修改资料
20.学生-个人中心-我的选题
21.学生-开始选题-选题列表
22.学生-开始选题-选题明细
三、部分代码
======
StudentManager
学生信息管理类,实现学生信息的增加,查看,删除。
package com.sjsq.service;
import com.sjsq.model.Student;
import com.sjsq.util.DB;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentManager {
/**
-
添加新的单个Student信息到数据库中
-
@param stu 存有学生信息的Student对象
-
@return 保存成功返回true否则返回false
*/
public static boolean save(Student stu) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “insert into student_info values (?, ?, ?, ?, ?, ?, ?, ?)”;
PreparedStatement pstmt = DB.prepare(conn, sql);//预编译插入语句
try {
/*
- 将stu中保存的信息分别放到数据库中对应表的对应列上
*/
pstmt.setString(1, stu.getNumber());
pstmt.setString(2, stu.getName());
pstmt.setString(3, stu.getSex());
pstmt.setString(4, stu.getSclass());
pstmt.setString(5, stu.getPhone());
pstmt.setString(6, stu.getEmail());
pstmt.setString(7, stu.getGroup());
pstmt.setString(8, stu.getPassword());
pstmt.execute();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
/**
-
获取所以学生信息
-
@param students 存放所以学生信息
-
@param pageNo 分页时的,当前页号
-
@param pageSize 每页显示学生的个数
-
@return 返回一共有多少页
*/
public static int getStudents(List students, int pageNo,
int pageSize) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
sql = "select * from student_info limit " + (pageNo - 1) * pageSize
- “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB.getResultSet(stmtCount,
“select count(*) from student_info”);
try {
rsCount.next();
totalRecords = rsCount.getInt(1);//得到结果集中一共有多少条记录
while (rs.next()) {
Student student = new Student();
student.setEmail(rs.getString(“semail”));
student.setGroup(rs.getString(“sgroup”));
student.setName(rs.getString(“sname”));
student.setNumber(rs.getString(“sno”));
student.setPassword(rs.getString(“spassword”));
student.setPhone(rs.getString(“stel”));
student.setSclass(rs.getString(“sclass”));
student.setSex(rs.getString(“ssex”));
students.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
/**
-
按学号删除学生
-
@param id 要删除学生的学号
-
@return 删除成功返回true否则返回false
*/
public static boolean deleteBySno(String id) {
boolean b = false;
Connection conn = DB.getConn();
String sql = null;
sql = “delete from student_info where sno = '” + id + “'”;
Statement stmt = DB.getStatement(conn);
try {
DB.executeUpdate(stmt, sql);
b = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
DB.close(stmt);
DB.close(conn);
}
return b;
}
/**
-
检查登录时学号和密码是否真确
-
@param num 学号
-
@param password 密码
-
@return 正确返回true否则返回false
-
@throws UserNotFoundException 抛出学号不存在的异常
-
@throws PasswordNotCorrectException 抛出密码错误的异常
*/
public static Student check(String num, String password)
throws UserNotFoundException, PasswordNotCorrectException {
Student student = null;
Connection conn = DB.getConn();
String sql = null;
sql = “select * from student_info where sno = '” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
try {
if (!rs.next()) {
throw new UserNotFoundException(“用户不存在:” + num);
} else {
if (!password.equals(rs.getString(“spassword”))) {
throw new PasswordNotCorrectException(“密码不正确!”);
}
}
student = new Student();
student.setEmail(rs.getString(“semail”));
student.setGroup(rs.getString(“sgroup”));
student.setName(rs.getString(“sname”));
student.setNumber(rs.getString(“sno”));
student.setPassword(rs.getString(“spassword”));
student.setPhone(rs.getString(“stel”));
student.setSclass(rs.getString(“sclass”));
student.setSex(rs.getString(“ssex”));
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return student;
}
/**
-
按学号获得学生信息
-
@param num 学号
-
@return 返回该学号的学生对象
*/
public static Student getBySno(String num) {
Connection conn = DB.getConn();
String sql = null;
sql = “select * from student_info where sno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Student student = null;
try {
if (rs.next()) {
student = new Student();
student.setEmail(rs.getString(“semail”));
student.setGroup(rs.getString(“sgroup”));
student.setName(rs.getString(“sname”));
student.setNumber(rs.getString(“sno”));
student.setPassword(rs.getString(“spassword”));
student.setPhone(rs.getString(“stel”));
student.setSclass(rs.getString(“sclass”));
student.setSex(rs.getString(“ssex”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return student;
}
/**
-
更新学生stu的相关信息(学号不能更新)
-
@param stu 存有新信息的学生对象
-
@return 更新成功返回true否则返回false
*/
public static boolean update(Student stu) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “update student_info set spassword=?, sgroup=?, sname=?, ssex=?, stel=?, semail=?, sclass=? where sno = ?”;
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, stu.getPassword());
pstmt.setString(2, stu.getGroup());
pstmt.setString(3, stu.getName());
pstmt.setString(4, stu.getSex());
pstmt.setString(5, stu.getPhone());
pstmt.setString(6, stu.getEmail());
pstmt.setString(7, stu.getSclass());
pstmt.setString(8, stu.getNumber());
pstmt.executeUpdate();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
/**
-
按指定的条件获得所有符合条件的学生信息
-
@param students 存放符合条件的学生信息的List
-
@param pageNo 分页显示时,当前的页号
-
@param pageSize 每页显示学生信息的数量
-
@param sclass 学生所在的班级
-
@param num 学号
-
@param name 学生姓名
-
@return 返回符合条件的学生列表
*/
public static int query(List students, int pageNo, int pageSize,
String sclass, String num, String name) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
/*
- 如何有些条件为空的进行如下处理,否则模糊查询时可能会报空指针异常
*/
if (sclass == null)
sclass = “”;
if (name == null)
name = “”;
if (num == null)
num = “”;
/*
- 模糊查寻
*/
sql = “select * from student_info where sclass like '%” + sclass
-
“%’ and sname like '%” + name + “%’ and sno like '%” + num
-
“%'”;
sql += "limit " + (pageNo - 1) * pageSize + “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB.getResultSet(stmtCount,
“select count(*) from student_info where sclass like '%”
-
sclass + “%’ and sname like '%” + name
-
“%’ and sno like '%” + num + “%'”);
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Student student = new Student();
student.setEmail(rs.getString(“semail”));
student.setGroup(rs.getString(“sgroup”));
student.setName(rs.getString(“sname”));
student.setNumber(rs.getString(“sno”));
student.setPassword(rs.getString(“spassword”));
student.setPhone(rs.getString(“stel”));
student.setSclass(rs.getString(“sclass”));
student.setSex(rs.getString(“ssex”));
students.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
/**
-
批量导入excel表中学生的信息到数据库中(用到组件jxl.jar)
-
@param file excel表所在的相对路径或绝对路径(包括文件完整的名字)
-
@return 返回那些学号在数据库中已经存在的学号
*/
public static List adds(String file) {
Connection conn = DB.getConn();
List snumber = new ArrayList();
Workbook info;//定义工作簿
String sql = “insert into student_info values (?, ?, ?, ?, ?, ?, ?, ?)”;
try {
info = Workbook.getWorkbook(new FileInputStream(file));
Sheet sheet = info.getSheet(0);//获得工作薄中表单对象
int size = sheet.getRows(); //获得表单的行数
for(int i = 1;i < size;i++){
Cell c = sheet.getCell(0,i);//获得表单的i行0列的单元格即学号
/*
- 查看学号是否已经存在
*/
if(StudentManager.getBySno(c.getContents().trim())!=null) {
snumber.add(c.getContents().trim());
continue;
}
PreparedStatement pstmt = DB.prepare(conn, sql);
for(int j=0; j<8; j++) {
c = sheet.getCell(j,i);
pstmt.setString(j+1, c.getContents().trim());
}
pstmt.execute();
}
} catch (BiffException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return snumber;
}
}
TeacherManager
教师信息管理类,实现教师信息的增加,查看,删除。
package com.sjsq.service;
import com.sjsq.model.Teacher;
import com.sjsq.util.DB;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class TeacherManager {
public static boolean save(Teacher te) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “insert into teacher_info values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)”;
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, te.getNumber());
pstmt.setString(2, te.getName());
pstmt.setString(3, te.getSex());
pstmt.setString(4, te.getDept());
pstmt.setString(5, te.getDegree());
pstmt.setString(6, te.getTitle());
pstmt.setShort(7, te.getRight());
pstmt.setString(8, te.getPhone());
pstmt.setString(9, te.getEmail());
pstmt.setString(10, te.getGroup());
pstmt.setString(11, te.getPassword());
pstmt.execute();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
public static int getTeachers(List teachers, int pageNo,
int pageSize) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
sql = "select * from teacher_info limit " + (pageNo - 1) * pageSize
- “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB.getResultSet(stmtCount,
“select count(*) from teacher_info”);
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Teacher teacher = new Teacher();
teacher.setEmail(rs.getString(“temail”));
teacher.setGroup(rs.getString(“tgroup”));
teacher.setName(rs.getString(“tname”));
teacher.setNumber(rs.getString(“tno”));
teacher.setPassword(rs.getString(“tpassword”));
teacher.setPhone(rs.getString(“ttel”));
teacher.setDept(rs.getString(“tdept”));
teacher.setSex(rs.getString(“tsex”));
teacher.setDegree(rs.getString(“tdegree”));
teacher.setRight(rs.getShort(“tright”));
teacher.setTitle(rs.getString(“ttitle”));
teachers.add(teacher);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
public static boolean deleteByTno(String id) {
boolean b = false;
Connection conn = DB.getConn();
String sql = null;
sql = “delete from teacher_info where tno = '” + id + “'”;
Statement stmt = DB.getStatement(conn);
try {
DB.executeUpdate(stmt, sql);
b = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
DB.close(stmt);
DB.close(conn);
}
return b;
}
public static Teacher check(String num, String password)
throws UserNotFoundException, PasswordNotCorrectException {
Teacher teacher = null;
Connection conn = DB.getConn();
String sql = null;
sql = “select * from teacher_info where tno = '” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
try {
if (!rs.next()) {
throw new UserNotFoundException(“用户不存在:” + num);
} else {
if (!password.equals(rs.getString(“tpassword”))) {
throw new PasswordNotCorrectException(“密码不正确!”);
}
}
teacher = new Teacher();
teacher.setEmail(rs.getString(“temail”));
teacher.setGroup(rs.getString(“tgroup”));
teacher.setName(rs.getString(“tname”));
teacher.setNumber(rs.getString(“tno”));
teacher.setPassword(rs.getString(“tpassword”));
teacher.setPhone(rs.getString(“ttel”));
teacher.setDept(rs.getString(“tdept”));
teacher.setSex(rs.getString(“tsex”));
teacher.setDegree(rs.getString(“tdegree”));
teacher.setRight(rs.getShort(“tright”));
teacher.setTitle(rs.getString(“ttitle”));
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return teacher;
}
public static Teacher getByTno(String num) {
Connection conn = DB.getConn();
String sql = null;
sql = “select * from teacher_info where tno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Teacher teacher = null;
try {
if (rs.next()) {
teacher = new Teacher();
teacher.setEmail(rs.getString(“temail”));
teacher.setGroup(rs.getString(“tgroup”));
teacher.setName(rs.getString(“tname”));
teacher.setNumber(rs.getString(“tno”));
teacher.setPassword(rs.getString(“tpassword”));
teacher.setPhone(rs.getString(“ttel”));
teacher.setDept(rs.getString(“tdept”));
teacher.setSex(rs.getString(“tsex”));
teacher.setDegree(rs.getString(“tdegree”));
teacher.setRight(rs.getShort(“tright”));
teacher.setTitle(rs.getString(“ttitle”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return teacher;
}
public static boolean update(Teacher te) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “update teacher_info set tpassword=?, tgroup=?, tname=?, tsex=?, ttel=?, temail=?, tdept=?, ttitle=?, tright=?, tdegree=? where tno = ?”;
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, te.getPassword());
pstmt.setString(2, te.getGroup());
pstmt.setString(3, te.getName());
pstmt.setString(4, te.getSex());
pstmt.setString(5, te.getPhone());
pstmt.setString(6, te.getEmail());
pstmt.setString(7, te.getDept());
pstmt.setString(8, te.getTitle());
pstmt.setShort(9, te.getRight());
pstmt.setString(10, te.getDegree());
pstmt.setString(11, te.getNumber());
pstmt.executeUpdate();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
public static int query(List teachers, int pageNo, int pageSize,
String dept, String num, String name) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
if (dept == null)
dept = “”;
if (name == null)
name = “”;
if (num == null)
num = “”;
sql = “select * from teacher_info where tdept like '%” + dept
-
“%’ and tname like '%” + name + “%’ and tno like '%” + num
-
“%'”;
sql += "limit " + (pageNo - 1) * pageSize + “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB.getResultSet(stmtCount,
“select count(*) from teacher_info where tdept like '%” + dept
-
“%’ and tname like '%” + name + “%’ and tno like '%”
-
num + “%'”);
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Teacher teacher = new Teacher();
teacher.setEmail(rs.getString(“temail”));
teacher.setGroup(rs.getString(“tgroup”));
teacher.setName(rs.getString(“tname”));
teacher.setNumber(rs.getString(“tno”));
teacher.setPassword(rs.getString(“tpassword”));
teacher.setPhone(rs.getString(“ttel”));
teacher.setDept(rs.getString(“tdept”));
teacher.setSex(rs.getString(“tsex”));
teacher.setDegree(rs.getString(“tdegree”));
teacher.setRight(rs.getShort(“tright”));
teacher.setTitle(rs.getString(“ttitle”));
teachers.add(teacher);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
public static List adds(String file) {
Connection conn = DB.getConn();
Workbook info;
List tnumber = new ArrayList();
String sql = “insert into teacher_info values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)”;
try {
info = Workbook.getWorkbook(new FileInputStream(file));
Sheet sheet = info.getSheet(0);
int size = sheet.getRows();
for (int i = 1; i < size; i++) {
Cell c = sheet.getCell(0, i);
if (TeacherManager.getByTno(c.getContents().trim()) != null) {
tnumber.add(c.getContents().trim());
continue;
}
PreparedStatement pstmt = DB.prepare(conn, sql);
for (int j = 0; j < 11; j++) {
c = sheet.getCell(j, i);
if (j != 6) {
pstmt.setString(j + 1, c.getContents().trim());
} else
pstmt.setShort(j + 1, Short.parseShort(c.getContents()));
}
pstmt.execute();
}
} catch (BiffException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return tnumber;
}
}
TopicManager
选题信息管理,实现选题新的增加,修改,查看,删除。
package com.sjsq.service;
import com.sjsq.model.Topic;
import com.sjsq.util.DB;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class TopicManager {
public static boolean save(Topic t) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “insert into topic_info values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)”;
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, t.getNumber());
pstmt.setString(2, t.getName());
pstmt.setString(3, t.getType());
pstmt.setString(4, t.getKind());
pstmt.setString(5, t.getSource());
pstmt.setString(6, t.getStatus());
pstmt.setString(7, t.getContent());
pstmt.setString(8, t.getResult());
pstmt.setString(9, t.getDirection());
pstmt.setString(10, t.getTnumber());
pstmt.setString(11, t.getSnumber());
pstmt.execute();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
public static int getTopics(List topics, int pageNo,
int pageSize) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
sql = "select * from topic_info limit " + (pageNo - 1) * pageSize
- “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB
.getResultSet(stmtCount, “select count(*) from topic_info”);
try {
rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Topic topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
topics.add(topic);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
public static boolean deleteByHno(String hno) {
boolean b = false;
Connection conn = DB.getConn();
String sql = null;
sql = “delete from topic_info where hno = '” + hno + “'”;
Statement stmt = DB.getStatement(conn);
try {
DB.executeUpdate(stmt, sql);
b = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
DB.close(stmt);
DB.close(conn);
}
return b;
}
public static boolean check(String tno, String hname) {
boolean b = false;
Connection conn = DB.getConn();
String sql = null;
sql = “select * from topic_info where tno = '” + tno + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
try {
if (rs.next()) b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return b;
}
public static boolean update(Topic t) {
Connection conn = DB.getConn();
String sql = null;
boolean b = false;
sql = “update topic_info set htype=?, tno=?, hname=?, hsource=?, hkind=?, hstatus=?, hresult=?, sno=?, direction=?, hcontent=? where hno = ?”;
PreparedStatement pstmt = DB.prepare(conn, sql);
try {
pstmt.setString(1, t.getType());
pstmt.setString(2, t.getTnumber());
pstmt.setString(3, t.getName());
pstmt.setString(4, t.getSource());
pstmt.setString(5, t.getKind());
pstmt.setString(6, t.getStatus());
pstmt.setString(7, t.getResult());
pstmt.setString(8, t.getSnumber());
pstmt.setString(9, t.getDirection());
pstmt.setString(10, t.getContent());
pstmt.setString(11, t.getNumber());
pstmt.executeUpdate();
b = true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return b;
}
public static Topic getByNum(String num) {
Connection conn = DB.getConn();
String sql = null;
sql = “select * from topic_info where hno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
if (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topic;
}
public static List getByTno(String num) {
Connection conn = DB.getConn();
String sql = null;
List topics = new ArrayList();
sql = “select * from topic_info where tno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
while (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
topics.add(topic);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topics;
}
public static int query(List topics, int pageNo, int pageSize, String str, String kind, String name) {
int totalRecords = -1;
Connection conn = DB.getConn();
String sql = null;
if (str == null)
str = “”;
if (kind == null)
kind = “”;
if (name == null)
name = “”;
sql = “select * from topic_info where hname like '%” + name
- “%’ and htype like '%” + str + “%’ and hkind like '%” + kind + “%'”;
sql += "limit " + (pageNo - 1) * pageSize + “,” + pageSize;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Statement stmtCount = DB.getStatement(conn);
ResultSet rsCount = null;
rsCount = DB
.getResultSet(stmtCount, “select count(*) from topic_info where hname like '%” + name
- “%’ and htype like '%” + str + “%’ and hkind like '%” + kind + “%'”);
try {
if (rsCount != null) rsCount.next();
totalRecords = rsCount.getInt(1);
while (rs.next()) {
Topic topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
topics.add(topic);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rsCount);
DB.close(stmtCount);
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
return totalRecords;
}
public static List getByStatus(String num) {
Connection conn = DB.getConn();
List topics = new ArrayList();
String sql = null;
sql = “select * from topic_info where hstatus='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
while (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
topics.add(topic);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topics;
}
public static Topic getBySnum(String num) {
Connection conn = DB.getConn();
String sql = null;
sql = “select * from topic_info where sno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
if (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topic;
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!
可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。
c>();
String sql = null;
sql = “select * from topic_info where hstatus='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
while (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
topics.add(topic);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topics;
}
public static Topic getBySnum(String num) {
Connection conn = DB.getConn();
String sql = null;
sql = “select * from topic_info where sno='” + num + “'”;
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
Topic topic = null;
try {
if (rs.next()) {
topic = new Topic();
topic.setContent(rs.getString(“hcontent”));
topic.setDirection(rs.getString(“direction”));
topic.setKind(rs.getString(“hkind”));
topic.setName(rs.getString(“hname”));
topic.setNumber(rs.getString(“hno”));
topic.setResult(rs.getString(“hresult”));
topic.setSnumber(rs.getString(“sno”));
topic.setSource(rs.getString(“hsource”));
topic.setStatus(rs.getString(“hstatus”));
topic.setType(rs.getString(“htype”));
topic.setTnumber(rs.getString(“tno”));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(conn);
}
return topic;
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-3C2719tD-1713494626433)]
[外链图片转存中…(img-4XNuHIlz-1713494626434)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-Y0hlJsgs-1713494626434)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
[外链图片转存中…(img-QtH96F17-1713494626434)]
最后
今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!
可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。