毕业设计——java web大作业,通过jsp+servlet实现宿舍管理系统

系统功能分析

1.1 功能模块

宿舍管理系统实现的功能主要分三大类:系统用户的注册登录验证、对宿舍信息的增删改查、对学生信息的增删改查。

      1. 系统用户的登录注册验证

登录时,通过用户名和密码判断是否有此用户;注册时,不允许注册相同用户名的用户。为防止多次注册,设置邮箱验证码功能。基础抽象类如下:

public boolean login(String username, String password) throws Exception;//登录验证

public boolean register(UserBean userBean) throws SQLException ;//注册用户

public boolean addUser(UserBean userBean);//增加用户

      1. 宿舍信息增删改查

宿舍功能模块的增删改查有许多限制条件,如增加宿舍时,宿舍楼号只能在01-10之间,当宿舍入住学生时不可删除,宿舍楼号作为唯一标识不可新修改,查询宿舍时可以多条件联合模糊查询。基础抽象类如下:

public boolean addDorm(Dormbean dormbean) throws SQLException ;//增加宿舍信息

public boolean delDorm(Dormbean dormbean) throws SQLException;//删除宿舍信息

public boolean updateDorm(Dormbean dormbean) throws SQLException ;//更新宿舍信息

public ArrayList<Dormbean> selectDorm(Dormbean dormbean) throws SQLException ;//查询宿舍信息

public ArrayList<Dormbean> showAllDorm() throws SQLException;//展示所有宿舍信息

public int dormTotalCount(Dormbean dormbean);//获取宿舍个数

public Dormbean selectDormById(int id) throws SQLException;//根据id查询宿舍

public boolean updateDormQuantity(Dormbean dormbean); //更新宿舍当前人数

      1. 学生信息增删改查

学生信息的增删改查需要做到多表联动,增加学生信息并选择宿舍的时候需要和宿舍表进行联合操作,根据学生的性别及宿舍已入住人数判断学生信息是否可以添加成功;删除学生信息时,为防止误删,提供了事务回滚操作;因学生信息较多,提供了批量删除和分页功能操作;查询时可以多条件模糊查询;学生学号作为唯一标识,不可修改。抽象基础类如下:

public ArrayList<StudentBean> showStudentByPage(int status,int nowPage,int step) throws SQLException;//分页展示所有学生信息

public int StudentTotalCount(int status,StudentBean studentBean);//根据学生状态获得学生个数

public ArrayList<StudentBean> selectStudents(int status,int nowPage,int step,StudentBean studentBean) throws SQLException ;//根据条件查询学生信息并分页

public boolean addStudent(StudentBean studentBean) throws SQLException ;//增加学生信息

public boolean updateStudent(StudentBean studentBean);//更新学生信息

public boolean updateStatusStudent(int id,int status);//更新学生状态

public boolean delStudent(int id); //根据id删除学生

public boolean delAllStudent(String[] id); //根据id数组批量删除学生

public boolean updateAllStudent(String[] id);//根据id数组批量改变学生信息状态

    1. 系统运行环境

项目开发工具为Spring Tool Suite ,版本为3.9.7.RELEASE;数据库为mysql数据库,版本为5.5.53;服务器为Tomcat服务器,版本为8.5.37。

二、后台数据库设计

   2.1 数据库dormitory

数据库中共有三张表管理员信息表user,宿舍信息表dorm,学生信息表student。

2.2 用户信息表user

用户信息表包含5个字段信息,对应着系统用户的登录注册验证模块,表结构如下所示。

用户信息表

字段名

字段类型

字段长度

意义

备注

id

int

11

数据编号

主键

username

varchar

10

用户名

password

varchar

15

密码

email

varchar

20

邮箱

realname

varchar

10

真实姓名

2.3宿舍信息表

宿舍信息表包含七个字段,对应着宿舍信息增删改查的功能模块,表结构如下:

  宿舍信息表

字段名

字段类型

字段长度

意义

备注

id

int

5

数据编号

主键

house

varchar

3

哪一栋

build

varchar

5

哪一座

number

varchar

10

门牌号

attribute

varchar

5

男女宿舍

quantity

int

2

当前人数

status

int

2

是否可用

可用为1;不可用为0

2.4学生信息表

学生信息表包含12个字段,对应着学生信息增删改查的功能模块,表结构如下:

 学生信息表

字段名

字段类型

字段长度

意义

备注

id

int

11

数据编号

主键

sid

int

11

学号

dormID

int

5

对应宿舍ID

sname

varchar

10

学生姓名

ssex

varchar

5

学生性别

sbirthday

date

出生日期

smajor

varchar

30

专业

scollege

varchar

20

学院

sentranceT

int

5

入学时间

stelephone

varchar

15

电话

img

varchar

20

status

int

2

学生状态

默认为1,代表住宿中;2代表已离开

三、系统模块划分

3.1 用户模块

用户模块主要涉及用户登录和用户注册功能,为实现这两个功能,涉及了五个方法,从而对数据库进行操作,所有方法如下:

public boolean isUserExist(String username, String password) throws SQLException;//登录时根据用户名和密码判断用户是否存在

public boolean addUser(UserBean userBean);//增加用户

public boolean updateUser(UserBean userBean);//更新用户信息

public boolean selectByUserName(String username) throws SQLException;//注册用户时,先根据用户名查找此用户名是否已被注册

public UserBean selectUser(String username, String password);//根据用户名和密码,返回用户的详细信息

3.1.1 用户登录模块

用户登录模块需要根据用户输入的密码和用户名,对数据库中存储的数据进行查询,如果查询到对应数据,则允许登录,反之,则不允许登录。

3.1.2用户注册模块

用户注册时因为用户名为唯一标识,所以不允许注册有相同用户名的账号,为了防止重复注册,用户在注册时,需要填写自己的邮箱地址,系统会向用户邮箱发送验证码,验证码正确时才允许注册。

3.2 宿舍模块

宿舍模块包括对用户的增删改查操作,为实现这些操作,涉及了以下的方法:

public boolean addDorm(Dormbean dormbean) ;//增加宿舍

public boolean delDorm(Dormbean dormbean)  throws SQLException;//删除宿舍

public boolean updateDorm(Dormbean dormbean) ;//更新宿舍

public ArrayList<Dormbean> selectDorm(Dormbean dormbean) throws SQLException ;//查询复合条件的宿舍

public ArrayList<Dormbean> showAllDorm() throws SQLException;//展示所有宿舍

public boolean isExitDorm(Dormbean dormbean) throws SQLException;//判断宿舍是否存在

public Dormbean selectDormById(int id) throws SQLException ;//根据宿舍编号查询宿舍并返回宿舍信息

public int dormTotalCount(Dormbean dormbean) ;//返回宿舍总数

public boolean updateDormQuantity(int id,int quantity) ;//根据宿舍id更新宿舍学生数,插入学生时使用

public Dormbean selectDormByDormbean(Dormbean dormbean) throws SQLException; //根据条件返回宿舍

3.2.1 宿舍信息的增加

增加宿舍信息时,首先在前台已经对宿舍信息进行了验证,防止不合法的输入。在确保验证和法的情况下,查询将要创建的宿舍是否已经存在,如已经存在,则提示用户此宿舍已存在,创建失败;如宿舍不存在,则创建成功。

3.2.2 宿舍信息的删除

删除宿舍信息时,会先判断当前宿舍的人数,若当前宿舍人数为0,则可以删除宿舍,若当前宿舍仍有学生入住,则不可删除。

3.2.3 宿舍信息的更改

宿舍信息的楼号,栋号,门牌号作为宿舍的唯一标识不可修改,可修改宿舍的使用状态和可入住学生的性别。因此,在修改宿舍信息之前会判断宿舍当前人数,若宿舍人数为0,则可以修改;若不为0,则不允许修改。

3.2.4 宿舍信息的查询

宿舍信息查询支持对宿舍座号、栋号、门牌号、入住学生性别、当前入住人数的多条件联合查询。

3.3学生模块

学生模块包括对学生信息的增删改查,批量操作,信息分页的功能,涉及了以下的方法:

public ArrayList<StudentBean> showStudentByPage(int status,int nowPage,int step) throws SQLException ;//学生信息分页

public int studentTotalCount(int status,StudentBean studentBean) ;//返回学生总数

public ArrayList<StudentBean> selectStudents(int status,int nowPage, int step,StudentBean studentBean) throws SQLException;//根据查询条件实现学生信息分页

public boolean addStudent(StudentBean studentBean);//增加学生信息

public boolean isExistStudent(int sid) throws SQLException ;//根据学生学号判断学生是否存在

public StudentBean selectStudentById(int id) throws SQLException;//根据学生主键查询相对应学生信息

public boolean updateStudent(StudentBean studentBean);//更新学生信息

public boolean updateStatusStudent(int id,int status);//根据学生主键更新学生状态

public boolean delStudent(int id); //根据主键删除单个学生

public boolean delAllStudent(String[] id); //根据主键数组批量删除学生

public boolean updateAllStudent(String[] id); //根据主键恢复被删除的学生

3.3.1学生信息的增加

增加学生信息时首先在前端进行表单验证,防止不合法的输入。在增加学生信息时,需要为其入住相应的宿舍,入住宿舍时需要进行判断,当宿舍存在时,判断学生性别以及当前宿舍人数,来判断学生是否能够入住;当宿舍不存在时,则为学生创建相对应的宿舍进行入住,入住成功后,对应的宿舍信息表中的宿舍人数数据进行加一。

3.3.2学生信息的删除

为防止用户误删学生信息,系统提供了事务回滚机制,切因学生信息较多,提供了批量删除机制。当学生信息真正从数据库中删除的时候,对应的学生宿舍的宿舍人数会减一。

3.3.3学生信息的修改

学生学号作为学生信息的唯一标识不可修改,可以对学生的姓名、学院、专业、出生日期、入学年份、联系电话进行修改。

3.3.4学生信息的查询

因为学生信息较多,所以对学生数据进行了分页,支持对学生学号、姓名、性别、专业、学院入学年份的多条件模糊查询。

  • 系统实现

4.1用户注册页面

4.1.1注册功能实现代码

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String code = request.getParameter("code");

HttpSession session = request.getSession();

if (session.getAttribute("code")!=null) {

if ((code.equals(session.getAttribute("code")))) {

session.removeAttribute("code");

UserBean userBean = new UserBean();

userBean.setUsername(request.getParameter("username"));

userBean.setPassword(request.getParameter("password"));

userBean.setEmail(request.getParameter("email"));

UserServiceImpl userServiceImpl = new UserServiceImpl();

try {

if (userServiceImpl.register(userBean)) {

response.getWriter().print("注册成功");

}

else {

response.getWriter().print("此用户名已存在,请更换用户名");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

else {

session.removeAttribute("code");

response.getWriter().print("验证码错误");

}

}

else {

response.getWriter().print("还未获取验证码");

}

4.1.2发送邮件功能实现代码

package com.gzf.util;

import java.io.UnsupportedEncodingException;

import java.util.Date;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

public class EmailUtil {

public static void createMimeMessage(String email,String content) throws UnsupportedEncodingException, MessagingException {

Properties properties = new Properties();

// 使用的协议

properties.setProperty("mail.transport.protocol", "smtp");

//QQ邮箱协议地址

properties.setProperty("mail.smtp.host", "smtp.qq.com");

//端口号

properties.setProperty("mail.smtp.port", "465");

//是否需要授权

properties.setProperty("mail.smtp.auth", "true");

//qq:ssl安全认证

//引用需要的类

properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

//是否处理未经SSL认证的信息

properties.setProperty("mail.smtp.socketFactory.fallback", "true");

//SSL认证的端口号

properties.setProperty("mail.smtp.socketFactory.port", "465");

Session session = Session.getInstance(properties);

// MimeMessage定义了大多数消息公共属性的抽象获取和设置方法

MimeMessage mimeMessage = new MimeMessage(session);

// 设置发件人地址信息

Address address = new InternetAddress("1226164732@qq.com","gzf","utf-8");

mimeMessage.setFrom(address);

mimeMessage.setSubject("来自谷占方的邮件","utf-8");

content = "您正在注册宿舍管理系统管理员,验证码为"+content;

mimeMessage.setContent(content, "text/html;charset=utf-8");

//设置传送日期

mimeMessage.setSentDate(new Date());

//设置接收人,  .to为正常发送  .cc为抄送  .bcc为密送

mimeMessage.setRecipient(RecipientType.TO,new InternetAddress(email, "小可爱", "utf-8"));

//保存邮件

mimeMessage.saveChanges();

//实例化一个对象,单例模式

session.setDebug(true);

//创建邮箱

//建立连接对象

Transport transport = session.getTransport();

//此处QQ必须填密钥而不是密码

transport.connect("1226164732@qq.com", "xaetrwzpaknkgeeb");

//进行发送

transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());

//关闭连接

transport.close();

}

}

4.2宿舍操作界面

4.2.1更改宿舍信息

4.2.2实现代码如下

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

int id = Integer.parseInt(request.getParameter("id"));

int status = Integer.parseInt(request.getParameter("status"));

String house=null;

String attribute = null;

if (request.getParameter("house")!=null) {//说明是通过表单提交更改性别

house = request.getParameter("house");

attribute = request.getParameter("attribute");

}

Dormbean dormbean = new Dormbean();

dormbean.setId(id);

dormbean.setStatus(status);

dormbean.setHouse(house);

dormbean.setAttribute(attribute);

IDormService iDormService = new DormServiceImpl();

try {

response.getWriter().println(iDormService.updateDorm(dormbean));

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

4.3学生列表界面

4.3.1 学生分页显示列表

学生列表实现了分页操作,方便用户浏览信息,并能够在页面中提示当前学生总数,以及页数,在进行搜索之后仍能对学生信息进行分页。

4.3.2搜索页面信息分页实现代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

HttpSession session = request.getSession();

StudentBean studentBean = new StudentBean();

int nowPage;

int step = 5;

if (request.getParameter("nowPage")==null) {//为null说明是通过按钮提交

nowPage = 1;

int sid = 0;

if (request.getParameter("sid")!="") {

sid = Integer.parseInt(request.getParameter("sid"));

}

String sname = request.getParameter("sname");

String ssex = request.getParameter("ssex");

String smajor = request.getParameter("smajor");

String scollege = request.getParameter("scollege");

int sentranceT = 0;

if (request.getParameter("sentranceT")!="") {

sentranceT = Integer.parseInt(request.getParameter("sentranceT"));

}

studentBean.setSid(sid);

studentBean.setSname(sname);

studentBean.setSsex(ssex);

studentBean.setSmajor(smajor);

studentBean.setScollege(scollege);

studentBean.setSentranceT(sentranceT);

session.setAttribute("studentBean", studentBean);

}

else { //不为空说明为通过页码提交搜索

nowPage = Integer.parseInt(request.getParameter("nowPage"));

studentBean = (StudentBean) session.getAttribute("studentBean");

}

int status = 1 ;

System.out.println("servlet中的studentbean为"+studentBean);

IStudentService iStudentService = new StudentServiceImpl();

int totalCount = iStudentService.StudentTotalCount(status,studentBean);

ArrayList<StudentBean> studentBeans = new ArrayList<>();

try {

studentBeans = iStudentService.selectStudents(status,nowPage, step, studentBean);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Iterator<StudentBean> iterator = studentBeans.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

PageUtil<StudentBean> pageUtil = new PageUtil<>();

pageUtil.setList(studentBeans);

pageUtil.setTotalCount(totalCount);

pageUtil.setStep(step);

pageUtil.setNowPage(nowPage);

request.setAttribute("pageUtil", pageUtil);

    request.getRequestDispatcher("student-select.jsp").forward(request, response);

}

4.3.3分页帮助类

package com.gzf.util;

import java.util.ArrayList;

public class PageUtil<T> {

private int totalCount;

private int step;

private int totalPage;

private int nowPage;

private ArrayList<T> list;

public PageUtil(int totalCount, int step, int totalPage, int nowPage, ArrayList<T> list) {

super();

this.totalCount = totalCount;

this.step = step;

this.totalPage = totalPage;

this.nowPage = nowPage;

this.list = list;

}

public PageUtil() {

super();

// TODO Auto-generated constructor stub

}

public int getTotalCount() {

return totalCount;

}

public void setTotalCount(int totalCount) {

this.totalCount = totalCount;

}

public int getStep() {

return step;

}

// 在这里定义了总页数,因此需要先定义数据总数,再定义每页显示数量

public void setStep(int step) {

this.step = step;

if(this.totalCount % this.step ==0) {

this.totalPage = this.totalCount / this.step;

}

else {

this.totalPage = this.totalCount / this.step + 1;

}

}

public int getTotalPage() {

return totalPage;

}

public int getNowPage() {

return nowPage;

}

public void setNowPage(int nowPage) {

this.nowPage = nowPage;

}

public ArrayList<T> getList() {

return list;

}

public void setList(ArrayList<T> list) {

this.list = list;

}

}

4.4学生信息查询

支持对学生信息到的多条件模糊查询。

4.4.1页面展示

4.4.2实现代码

public ArrayList<StudentBean> selectStudents(int status,int nowPage, int step,StudentBean studentBean) throws SQLException {

// TODO Auto-generated method stub

String sql = "SELECT * FROM student where status = ?";

if (studentBean.getSid()==0) {

sql = sql + " and sid != ?";

}

else {

sql = sql + " and sid like ?";

}

if (studentBean.getSname()=="") {

sql = sql + " and sname != ?";

}

else {

sql = sql + " and sname like ?";

}

if (studentBean.getSsex()=="") {

sql = sql + " and ssex != ?";

}

else {

sql = sql + " and ssex = ?";

}

if (studentBean.getSmajor()=="") {

sql = sql + " and smajor != ?";

}

else {

sql = sql + " and smajor like ?";

}

if (studentBean.getScollege()=="") {

sql = sql + " and scollege != ?";

}

else {

sql = sql + " and scollege like ?";

}

if (studentBean.getSentranceT()==0) {

sql = sql + " and sentranceT != ?";

}

else {

sql = sql + " and sentranceT like ?";

}

sql = sql + " LIMIT ?,?";

System.out.println("*******"+sql+"------"+status);

Object [] params = {status,"%"+studentBean.getSid()+"%","%"+studentBean.getSname()+"%",studentBean.getSsex(),

"%"+studentBean.getSmajor()+"%","%"+studentBean.getScollege()+"%","%"+studentBean.getSentranceT()+"%",

nowPage*step-step,step};

ResultSet resultSet = DButil.select(sql, params);

ArrayList<StudentBean> studentBeans = new ArrayList<>();

while(resultSet.next()) {

StudentBean studentBean2 = new StudentBean();

studentBean2.setId(resultSet.getInt("id"));

studentBean2.setSid(resultSet.getInt("sid"));

studentBean2.setDormID(resultSet.getInt("dormID"));

studentBean2.setSname(resultSet.getString("sname"));

studentBean2.setSsex(resultSet.getString("ssex"));

studentBean2.setSbirthday(resultSet.getString("sbirthday"));

studentBean2.setSmajor(resultSet.getString("smajor"));

studentBean2.setScollege(resultSet.getString("scollege"));

studentBean2.setSentranceT(resultSet.getInt("sentranceT"));

  studentBean2.setStelephone(resultSet.getString("stelephone"));

studentBean2.setImg(resultSet.getString("img"));

studentBean2.setStatus(resultSet.getInt("status"));

studentBeans.add(studentBean2);

}

return studentBeans;

}

4.5增加学生信息

在增加学生信息时,需要为其入住相应的宿舍,入住宿舍时需要进行判断,当宿舍存在时,判断学生性别以及当前宿舍人数,来判断学生是否能够入住;当宿舍不存在时,则为学生创建相对应的宿舍进行入住,入住成功后,对应的宿舍信息表中的宿舍人数数据进行加一。

4.5.1 页面展示

4.5.2实现代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

//获取学生信息,attribute为性别,学号表和宿舍表共用

         int sid = Integer.parseInt(request.getParameter("sid"));

         int sentranceT = Integer.parseInt(request.getParameter("sentranceT"));

         String sname = request.getParameter("sname");

         String sbirthday = request.getParameter("sbirthday");

         String smajor = request.getParameter("smajor");

         String scollege = request.getParameter("scollege");

         String stelephone = request.getParameter("stelephone");

         

         String house = request.getParameter("house");

         String build = request.getParameter("build");

         String number = request.getParameter("number");

         String attribute = request.getParameter("attribute");

         int status = Integer.parseInt(request.getParameter("status"));

//         查询验证输入的宿舍是否可以入住,验证包括宿舍是否存在,性别,以及入住状态

         Dormbean dormbean = new Dormbean();

         dormbean.setHouse(house);

         dormbean.setBuild(build);

         dormbean.setNumber(number);

         dormbean.setAttribute(attribute);

         dormbean.setStatus(status);

         IDormDao iDormDao = new DormDAoImpl();

         //检测学生是否存在

         IStudentDao iStudentDao = new StudentDaoImpl();

         try {

if (iStudentDao.isExistStudent(sid)) {

response.getWriter().print("此学生学号已存在,无法添加");

}

else {

         try {

if (iDormDao.isExitDorm(dormbean)) {//当宿舍存在时

System.out.println("此宿舍存在");

Dormbean dormbean2 = iDormDao.selectDormByDormbean(dormbean);

System.out.println(dormbean2);

if (dormbean2.getQuantity()==6) {

System.out.println("当前宿舍人数已满,请为此学生更换宿舍");

response.getWriter().print("当前宿舍人数已满,请为此学生更换宿舍");

}

else {

if (!(dormbean2.getAttribute().equals(attribute))) {

System.out.println("****----"+dormbean2.getAttribute());

System.out.println(attribute);

System.out.println("当前宿舍不能入住此性别学生");

response.getWriter().print("当前宿舍不能入住此性别学生");

}

else {

if (dormbean2.getStatus()==0) {

System.out.println("当前宿舍未启用,请更换或先启用此宿舍");

response.getWriter().print("当前宿舍未启用,请更换或先启用此宿舍");

}

else {

StudentBean studentBean = new StudentBean();

studentBean.setSid(sid);

studentBean.setDormID(dormbean2.getId());

studentBean.setSname(sname);

studentBean.setSsex(attribute);

studentBean.setSbirthday(sbirthday);

studentBean.setSmajor(smajor);

studentBean.setScollege(scollege);

studentBean.setSentranceT(sentranceT);

studentBean.setStelephone(stelephone);

IStudentService iStudentService = new StudentServiceImpl();

iStudentService.addStudent(studentBean);

System.out.print("已为您创建此学生信息,并入住宿舍");

response.getWriter().print("已为您创建此学生信息,并入住宿舍");

}

}

}

}

else {//当宿舍不存在的时候,先创建宿舍,再入住学生

iDormDao.addDorm(dormbean);

System.out.println(dormbean);

Dormbean dormbean2 = iDormDao.selectDormByDormbean(dormbean);

System.out.println(dormbean2);

StudentBean studentBean = new StudentBean();

studentBean.setSid(sid);

studentBean.setDormID(dormbean2.getId());

studentBean.setSname(sname);

studentBean.setSsex(attribute);

studentBean.setSbirthday(sbirthday);

studentBean.setSmajor(smajor);

studentBean.setScollege(scollege);

studentBean.setSentranceT(sentranceT);

studentBean.setStelephone(stelephone);

IStudentService iStudentService = new StudentServiceImpl();

iStudentService.addStudent(studentBean);

System.out.println("已为您创建此宿舍,并入住此学生");

response.getWriter().print("已为您创建此宿舍,并入住此学生");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

  } catch (SQLException e1) {

  // TODO Auto-generated catch block

  e1.printStackTrace();

  }

}

4.6 批量删除学生信息

因为学生信息比较多,当大四同学离校时逐条删除信息比较麻烦,所以提供了批量信息删除功能。

4.6.1页面效果展示

4.6.2 实现代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

System.out.println(request.getParameter("data"));

String data = request.getParameter("data");

String[] id  = data.split(",");

IStudentService iStudentService = new StudentServiceImpl();

response.getWriter().println(iStudentService.delAllStudent(id));

}

1. 总体介绍 本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,bootstap写界面。 2. 技术架构 运行环境:tomcat9+mysql5+maven3.8+jdk8 前端技术:jquery 用以数据处理以及前端验证以及生成验证码等等 Bootstrap 前端界面处理 后端技术:servelt+jsp maven进行jar包和第三方库管理 采用jspsmart进行文件的操作处理 数据库:mysql5 基于MVC的分层思想及采用jsp+servelt技术的B/S结构的应用系统,系统主要开发语言为JAVAJSP。数据库要求使用MySQL8.0,应用服务器选用Tomcat服务器 3. 功能介绍 系统能够提供用户有好的界面 系统具有良好的允许效率 系统具有良好的扩充性,灵活性 系统管理操作简单易懂 3.1 总体结构 3.2 模块详情 学生模块: 注册: 1. 用户点击注册,进行注册; 2. 用户输入注册信息; 3. 校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4. 若信息无错误,提示注册成功,跳转到登录页。 登录: 1. 用户进入系统未进行登录则自行跳转登录页面; 2. 点击忘记密码可进行密码找回; 3. 提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4. 若登录信息不正确,则提示登录错误信息。 查看成绩: 1. 点击查看成绩,打印成绩列表; 2. 支持到处成绩单为pdf格式。 导出成绩: 1. 点击到处按钮; 2. 系统自动处理并到处成pdf。 个人信息管理: 1. 选择上传头像 2. 修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 退出登录: 1. 点击退出登录,自动退出到首页并删除本地和服务器缓存。 教师模块: 注册: 1用户点击注册,进行注册; 2用户输入注册信息; 3校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4若信息无错误,提示注册成功,跳转到登录页。 登录: 1用户进入系统未进行登录则自行跳转登录页面; 2点击忘记密码可进行密码找回; 3提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4若登录信息不正确,则提示登录错误信息。 个人信息管理: 1选择上传头像 2修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 学生管理: 1. 点击添加学生,填写学生信息进行添加; 2. 修改学生信息,点击修改,按需填写要修改的学生信息,进行保存覆盖修改; 3. 点击删除学生数据,提示是否删除,确定则删除,取消则不删除; 4. 查看成绩,点击查看学生成绩,单独列出学生成绩列表; 成绩管理: 1. 点击成绩管理,列出所有学生成绩; 2. 点击修改,勾选需要修改的学生,按需填写修改信息,保存覆盖修改学生信息。 退出登录: 1点击退出登录,自动退出到首页并删除本地和服务器缓存。 4. 页面设计 静态jsp页面和jquery和bootstrap 5. 数据库设计 权限对照表: 表名: role 名称 类型 长度 允许空值 是否主键 注释 uid 整型 11 否 是 权限等级 utype 字符 255 否 否 用户等级名称 分数表: 表名: score 名称 类型 长度 允许空值 是否主键 注释 id 整型 200 否 是 学号 dat 字符 255 否 否 课程1分数 Android 字符 255 否 否 课程2分数 Jsp 字符 255 是 否 课程3分数 学生表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 学号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 学生姓名 Sex 字符 255 是 否 性别 School_date 字符 255 是 否 入学时间 Major 字符 255 是 否 专业 email 字符 255 是 否 邮箱 教师表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 教师工号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 教师姓名 Sex 字符 255 是 否 性别 email 字符 255 是 否 邮箱
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕业小助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值