大二java期中考试
石家庄铁道大学在校学生行程统计(20分)
考试时间:180分钟
1、项目需求:
为了有效防止新冠疫情的传播,急需开发一套在校学生行程统计系统,完成信息统计,提前准备,有效保护在校学生的安全。
2.系统要求与功能设计
2.1 页面功能要求
(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;(1分)
(2)网站页面整体风格统一;
(3)石家庄铁道大学在校学生行程统计页面,页面效果如图所示:(15分)
页面详细信息如下表所示:
信息标题 信息类型 填写要求
姓名 文本框
学号 文本框 要求输入八位数字
学生类别 单选框 单选项:本科生或者研究生
院系 下拉列表框 下来列表框内容包括(土木学院、机械学院、交通学院、信息学院、经管学院)
联系电话 文本框 要求输入11位数字
健康码颜色 单选框 单选选项(绿码、黄码、红码)
行程统计 复选框 □10月30日去过人民医院
□10月25日以来去过深泽县人民医院
□10月16日以来去过深泽县庄泽村
□10月29日以来去过黑龙江哈尔滨市或者黑河市
□10月18日以来途径贵州遵义市;北京丰台、昌平
□10月17日以来到过湖南长沙;青海海东市
(以上选项可以多选)
其他涉疫信息需要填报的 文本框
②点击“提交”按钮,保存成功则提示信息“填报成功”,失败则提示“信息填报错误”,并返回当前页面
评分标准:
①完成石家庄铁道大学在校学生行程统计页面(未完成0分,完成2分);
②保存行程信息入库(未完成0分,完成6分);
③学号和联系电话判断是否为指定位数的数字。(未完成0分,完成一个0.5,全部完成1分);
④学生类别和健康码颜色实现单选框选择功能(未完成0分,完成一个0.5,全部完成1分);
⑤实现院系下拉框功能(未完成0分,完成1分)。
⑥实现行程统计复选框功能(未完成0分,完成2分)
⑦实现提交后信息提示功能;(未完成0分,完成2分)
2.2 功能要求
(1)设计出合理的数据库和数据表,要求使用mysql、sqlserver、oracle三种数据库中一种(1分)
(2)使用Serverlet实现信息提交功能(1分)。
(3)使用Java Bean封装数据库连接操作(2分。)
实现:
系统建立的web.xml一定要删掉重加,不能只改内容,不能只改内容,不能只改内容!
index.jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>石家庄铁道大学在校学生行程统计</title>
</head>
<body>
<font size=5 color="blue"><B>石家庄铁道大学在校学生行程统计</B></font>
<form action="RegServlet" method="post">
<p>姓名:
<input type="text" name="username">
</p>
<p>学号:
<input type="text" name="num">
</p>
<p>学生类别:
<input type="radio" name="car" value="本科生" checked/>本科生
<input type="radio" name="car" value="研究生"/>研究生
</p>
<p> 院系:
<select name="choise">
<option value="土木学院">土木学院</option>
<option value="机械学院" selected>机械学院</option>
<option value="交通学院">交通学院</option>
<option value="信息学院">信息学院</option>
<option value="经管学院">经管学院</option>
</select>
</p>
<p>联系电话:
<input type="text" name="tel" value="联系电话">
</p>
<p>健康码颜色:
<input type="radio" name="col" value="绿码" checked/>绿码
<input type="radio" name="col" value="黄码"/>黄码
<input type="radio" name="col" value="红码"/>红码
</p>
<br/>
<br/>
行程统计:<br/>
<p>
<input type="checkbox" name="go" value="10月30日去过人民医院。" checked >10月30日去过人民医院<br>
<input type="checkbox" name="go" value="10月25日以来去过深泽县人民医院。" checked >10月25日以来去过深泽县人民医院<br>
<input type="checkbox" name="go" value="10月16日以来去过深泽县庄泽村。" checked >10月16日以来去过深泽县庄泽村<br>
<input type="checkbox" name="go" value="10月29日以来去过黑龙江哈尔滨市或者黑河市。" checked >10月29日以来去过黑龙江哈尔滨市或者黑河市<br>
<input type="checkbox" name="go" value="10月18日以来途径贵州遵义市;北京丰台、昌平。" checked >10月18日以来途径贵州遵义市;北京丰台、昌平<br>
<input type="checkbox" name="go" value="10月17日以来到过湖南长沙;青海海东市。" checked >10月17日以来到过湖南长沙;青海海东市<br>
</p>
其他需要填报的信息:<br/>
<textarea name="文本框" rows="10" cols="30">
需要填报的信息
</textarea>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
com.zzx.servlets包下的regServlet.java文件:
package com.zzx.servlets;
import java.io.IOException;
import com.zzx.beans.UserBean;
import com.zzx.dao.UserDao;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/RegServlet")
public class regServlet extends HttpServlet{
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//数据模型--实体类Bean
String username = request.getParameter("username");
String num = request.getParameter("num");
String car = request.getParameter("car");
String cho = request.getParameter("choise");
String tel = request.getParameter("tel");
String col = request.getParameter("col");
String[] goes=request.getParameterValues("go");
String other= request.getParameter("文本框");
UserDao userDao = new UserDao();
UserBean userBean = new UserBean();
userBean.setUsername(username);
userBean.setNum(num);
userBean.setCar(car);
userBean.setCho(cho);
userBean.setTel(tel);
userBean.setCol(col);
userBean.setGoes(goes);
userBean.setOther(other);
//逻辑模型--功能Dao
int k=userDao.ck(userBean);
if(k==0) {
userDao.saveUser(userBean);
request.setAttribute("info", "Congratulations! Save successfully!");
}else {
if(k==1)
request.setAttribute("info", "Sorry! 请输入8位学号!");
if(k==2)
request.setAttribute("info", "Sorry! 请输入11位电话号码!");
}
request.getRequestDispatcher("message.jsp").forward(request, response);
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doPost(request,response);
}
}
相应的bean和dao文件:
package com.zzx.beans;
public class UserBean {
private String username,num,car,cho,tel,col,other;
private String[] goes;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getCar() {
return car;
}
public void setCar(String car) {
this.car = car;
}
public String getCho() {
return cho;
}
public void setCho(String cho) {
this.cho = cho;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getCol() {
return col;
}
public void setCol(String col) {
this.col = col;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
public String[] getGoes() {
return goes;
}
public void setGoes(String[] goes) {
this.goes = goes;
}
}
package com.zzx.dao;
import com.zzx.utils.DBUtil;
import com.zzx.beans.UserBean;
import java.sql.*;
public class UserDao {
public int ck(UserBean userbean) {
String num=userbean.getNum(),tel=userbean.getTel();
int l1=num.length(),l2=tel.length();
if(l1!=8) return 1;
if(l2!=11) return 2;
for(int i=0;i<l1;i++) {
if(num.charAt(i)<'0'||num.charAt(i)>'9') return 1;
}
for(int i=0;i<l2;i++) {
if(tel.charAt(i)<'0'||tel.charAt(i)>'9') return 2;
}
return 0;
}
public void saveUser(UserBean user) {
Connection connection = DBUtil.getConnection();
String sql = "insert into midt (username,num,car,cho,tel,col,other,goes) values(?,?,?,?,?,?,?,?) ";
try {
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getNum());
ps.setString(3, user.getCar());
ps.setString(4, user.getCho());
ps.setString(5, user.getTel());
ps.setString(6, user.getCol());
ps.setString(7, user.getOther());
String s=new String();
String[] ss=user.getGoes();
for(int i=0;i<ss.length;i++) {
s+=ss[i];
}
ps.setString(8, s);
ps.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeConnection(connection);
}
}
}
最后是辅助类,DBUtil
package com.zzx.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//JDBC数据库帮助类,解决重复代码
public class DBUtil {
//通用数据库连接
public static Connection getConnection() {
Connection connection = null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=utf8";
connection = DriverManager.getConnection(url, "root", "123456");
return connection;
}catch(ClassNotFoundException nfe) {
nfe.printStackTrace();
}catch(SQLException sqle) {
sqle.printStackTrace();
}
return connection;
}
public static void closeConnection(Connection connection) {
if(connection != null) {
try{
connection.close();
}catch(SQLException sqle) {
sqle.printStackTrace();
}
}
}
}
界面效果:





浙公网安备 33010602011771号