1.计划:
需求描述:
按照图片要求设计添加新课程界面。(0.5分)
在后台数据库中建立相应的表结构存储课程信息。(0.5分)
实现新课程添加的功能。 要求判断任课教师为王建民、刘立嘉、刘丹、王辉、杨子光五位教师的其中一位。(0.5分)
要求上课地点开头为“一教、二教、三教、基教”中的一种。(0.5分)
实现数据存储功能。(3分)
估计开发时间:2个小时;
填写的项目数据:
课堂名称;
课堂老师;
课堂地点;
填写时间记录日志:
上午9:10-9:50 进行题目的解析,制定解题思路,进行编码;
上午10:10-10:30 设计判断输入的是否符合要求(设计算法);
上午10-30-11:10 解决问题中的缺陷,问题,不足;
2.开发
设计程序:
在Input.jsp中创建一个表格里边分别是课程名称,任课老师,教学地点,并分别用三个文本框来接受输入的三个属性,
并传到另外的Jsp页面中,又来接受三个数据,并判断传来的教师,与教室地点是否符合题目要求,若不符合,则设置
一个Error,返回到第一个JSP中,并显示在JSP中,允许重新输入,若符合要求,就想数据库中保存输入的是三个属性。
程序实现:
连接数据库的源代码:
package com.jaovo.msg.Util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtil { public static Connection getConnection() { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } String user = "sa"; String password = "123456"; String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=jaovo_msg"; Connection connection = null; try { connection = DriverManager.getConnection(url,user,password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return connection; } public static void close(Connection connection ) { try { if (connection != null) { connection.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close(PreparedStatement preparedStatement ) { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close(ResultSet resultSet ) { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
自己创建的类的源代码:
package com.jaovo.msg.model; public class User { private String name; private String teacher; private String place; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTeacher() { return teacher; } public void setTeacher(String teacher) { this.teacher= teacher; } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } }
向数据库添加数据的源代码:
import com.jaovo.msg.Util.DBUtil; //import com.jaovo.msg.Util.UserException; import com.jaovo.msg.model.User; public class UserDaoImpl { public void add(User user) { Connection connection = DBUtil.getConnection(); PreparedStatement preparedStatement = null; try{ String sql = "insert into t_teacher(name,teacher,place) values (?,?,?)"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, user.getName()); preparedStatement.setString(2, user.getTeacher()); preparedStatement.setString(3, user.getPlace()); preparedStatement.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //DBUtil.close(resultSet); DBUtil.close(preparedStatement); DBUtil.close(connection); } } }
刚开始输入时的JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>提交作业</title> </head> <body> <% String s=(String)request.getAttribute("Error"); if("".equals(s)||s==null) { s=""; } %> <%=s %> <form action="LoginInput.jsp" method="get"> <table align="center" border="1"> <tr> <td colspan="2"> 课程名称 <input type="text" name="name"/> </td> </tr> <tr> <td colspan="2"> 任课教师 <input type="text" name="teacher"/> </td> </tr> <tr> <td colspan="2"> 上课地点 <input type="text" name="place"/> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="保存"/></td> </tr> </table> </form> </body> </html>
结束数据并判断是否符合要求的JSP:
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%> <%@page import="com.jaovo.msg.model.User"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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"> <% int i=0; boolean flag=true; boolean flag1=true; String s[]={"王建民","刘丹","刘立嘉","杨子光","王辉"}; String s1[]={"基教","一教","二教","三教"}; String name=request.getParameter("name"); String teacher=request.getParameter("teacher"); String place=request.getParameter("place"); while(i<s.length) { if(!s[i].equals(teacher)) { flag=false; } else { flag=true; break; } i++; }%> <% if(!flag) { request.setAttribute("Error", "老师不对"); %> <jsp:forward page="Login.jsp"></jsp:forward> <% } i=0; String s3=place.substring(0,2); while(flag==true&&i<s1.length) { if(!s1[i].equals(s3)) { flag1=false; } else { flag1=true; break; } i++; } if(!flag1) { request.setAttribute("Error", "教室不对"); %> <jsp:forward page="Login.jsp"></jsp:forward> <% } UserDaoImpl userdao=new UserDaoImpl(); User user=new User(); user.setName(name); user.setTeacher(teacher); user.setPlace(place); userdao.add(user); System.out.println(teacher); %> <<jsp:forward page="Login.jsp"></jsp:forward>
编译程序,修复并记录所发现的缺陷,并填写缺陷记录日志
在编译程序中,出现的变异问题是向数据库中存储数据时,课程名称与课程地点都可以保存进数据库,但是Teacher一列表示为空,没有存进数据库。
修复:在自定义的类中teacher中的Set函数中,语句应该是this.teacher=teacher;而我的源程序为teacher=teacher;因此没有向数据库中保存错误。
学生:刘金玉
日期:2017.11.28
老师:王建民
程序号:1
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
11/28 |
1 |
20 |
编码 |
编译 |
10min |
|
在自定义的类中的Teacher变量的Set函数中丢失了一个this。 |
测试程序,修复并记录所出现的缺陷,并填写缺陷记录日志:
学生:刘金玉
日期:2017.11.28
老师:王建民
程序号:1
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
11/28 |
2 |
20 |
编码 |
编译 |
10min |
|
在判断输入的数据是否符合要求是判断条件写的错误,丢失了flag==true |
3.总结:在该程序中,从开始到完成程序,共用了2个小时,在编写程序过程中共出现了两个缺陷,一个是teacher属性不能向数据库中保存,另外一个是不能正确判断是否
输入的复合要求,现在初学Java web对其的使用并不是熟练,所以在编程过程中花费的时间过多,在排除缺陷方面还有待提高。