大二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();
            }
        }
    }
}

界面效果:


posted @ 2021-11-05 16:47  zhuangzhongxu  阅读(324)  评论(0)    收藏  举报