• 软件工程概论——课程导入界面以及数据导入数据库


    将课堂练习设计思想,源程序代码、运行结果截图的开发过程,并按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志。 

    1、课堂练习设计思想:

      ①第一步就是先在.jsp文件中绘制出界面,采用h2绘制标题“课程导入”,加上分割线使界面更加美观,正体部分则使用<form><table>表单来完成布局,条理分明。

      ②在数据库中建立表kecheng,三列数据classname,teacher,place分别是课程名称、任课教师和上课地点。

      ③在src中建立工具包存放GBUtil.java用来连接数据库,采用utf-8字符集,防止中文乱码。

      ④建立KechengDao.java来实现接口IKecheng.java,包含一个add函数,用来完成向数据库中添加数据的操作。

      ⑤建立kecheng.jsp作为kechengjiemian.jsp的后台程序,取得输入的参数并判断验证,不符合规矩的都返回原界面,符合的才能成功保存到数据库。

      ⑥成功添加后点击继续添加超链接,返回导入界面继续操作。

    2、程序源代码:

    Ikecheng.java:

    package kechengjiemian.gb.dao;
    import kechengjiemian.gb.model.Kecheng;
    public interface Ikecheng 
    {
        public void add(Kecheng kecheng);
    }

    KechengDao.java

    package kechengjiemian.gb.dao;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import kechengjiemian.gb.Util.GBUtil;
    
    import kechengjiemian.gb.model.Kecheng;
    public class KechengDao implements Ikecheng
    {
    
        @Override
        public void add(Kecheng kecheng)
        {
            Connection connection=GBUtil.getConnection();
            PreparedStatement preparedStatement=null;
            ResultSet resultSet=null;
            String sql="insert into kecheng (classname,teacher,place) value (?,?,?);";
            try 
            {
                preparedStatement=connection.prepareStatement(sql);
                preparedStatement.setString(1, kecheng.getClassName());
                preparedStatement.setString(2, kecheng.getTeacher());
                preparedStatement.setString(3, kecheng.getPlace());
                preparedStatement.executeUpdate();
            } 
            catch (SQLException e) 
            {
                e.printStackTrace();
            }
            finally
            {
                GBUtil.close(connection);
                GBUtil.close(preparedStatement);
                GBUtil.close(resultSet);
            }
        }
    }

    Kecheng.java

    package kechengjiemian.gb.model;
    public class Kecheng
    {
        private String classname;
        private String teacher;
        private String place;
        public String getClassName() 
        {
            return classname;
        }
        public void setClassName(String classname) 
        {
            this.classname = classname;
        }
        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;
        }
    
    }

    GBUtil.java

    package kechengjiemian.gb.Util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    public class GBUtil
    {
        public static Connection getConnection()
        {
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                
            }
            catch(ClassNotFoundException e)
            {
                e.printStackTrace();
                
            }
            String url="jdbc:mysql://localhost:3306/denglu?useUnicode=true&characterEncoding=utf-8";
            Connection connection=null;
            try 
            {
                connection=DriverManager.getConnection(url, "root", "242772");
                
            } 
            catch (SQLException e)
            {
                e.printStackTrace();
                System.out.println("数据库连接失败!");
            }
            return connection;    
        }
        public static void close(Connection connection)
        {
            try
            {
                if(connection!=null)
                {
                    connection.close();
                }
            }
            catch(SQLException e)
            {
                e.printStackTrace();
            }
        }
        public static void close(PreparedStatement preparedStatement)
        {
            try
            {
                if(preparedStatement!=null)
                {
                    preparedStatement.close();
                }
            }
            catch(SQLException e)
            {
                e.printStackTrace();
            }
        }
        public static void close(ResultSet resultSet)
        {
            try
            {
                if(resultSet!=null)
                {
                    resultSet.close();
                }
            }
            catch(SQLException e)
            {
                e.printStackTrace();
            }
        }
    
    }

    kecheng.jsp

    <%@page import="kechengjiemian.gb.model.Kecheng"%>
    <%@page import="kechengjiemian.gb.Util.GBUtil"%>
    <%@page import="kechengjiemian.gb.dao.KechengDao"%>
    <%@ 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>
    <%
        String classname=request.getParameter("classname");
        String teacher=request.getParameter("teacher");
        String place=request.getParameter("place");
        if(classname==null||"".equals(classname.trim()))
        {
            request.setAttribute("error", "课程名称不能为空!");
    %>
    <jsp:forward page="kechengjiemian.jsp"></jsp:forward>
    <%
        }
        if(teacher==null||"".equals(teacher.trim()))
        {
            request.setAttribute("error", "任课教师不能为空!");
    %>
    <jsp:forward page="kechengjiemian.jsp"></jsp:forward>
    <%
        }
        if(place==null||"".equals(place.trim()))
        {
            request.setAttribute("error", "上课地点不能为空!");
    %>
    <jsp:forward page="kechengjiemian.jsp"></jsp:forward>
    <%
        }
        if(!teacher.trim().equals("王建民")&&!teacher.trim().equals("刘丹")&&!teacher.trim().equals("刘立嘉")&&!teacher.trim().equals("王辉")&&!teacher.trim().equals("杨子光"))
        {
            request.setAttribute("error", "这个老师不存在,请检查是否名字拼写错误!");
    %>
    <jsp:forward page="kechengjiemian.jsp"></jsp:forward>
    <%
        }
        if(!place.trim().substring(0,2).equals("基教")&&!place.trim().substring(0,2).equals("一教")&&!place.trim().substring(0,2).equals("二教")&&!place.trim().substring(0,2).equals("三教"))
        {
            request.setAttribute("error", "您输入的地点不为教学楼");
    %>
    <jsp:forward page="kechengjiemian.jsp"></jsp:forward>
    <%
        }
        Kecheng ke=new Kecheng();
        ke.setClassName(classname);
        ke.setTeacher(teacher);
        ke.setPlace(place); 
        KechengDao keDao=new KechengDao();
        keDao.add(ke);
        %>
        <h2 style="color:blue" align="center"><img src="../picture/正确.png">课程信息保存成功</h2>
        <form>
        <table  align="center" border="2" width="100">
        <tr align="center">
        <td colspan="2">
        <a href="kechengjiemian.jsp"><u>继续添加</u></a>
        </td>
        </tr>
        </table>
        </form>
        <%
    %>
    </html>

    kechengjiemian.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>
        <h2 align="center" style="color:blue">课程录入</h2>
        <hr size="5" align="center" style="color:blue">
        <form action="kecheng.jsp" method="get">
            <table align="center" border="2" width="300">
                <tr>
                <td>课程名称</td>
                <td>
                    <input type="text" name="classname" />
                </td>
                </tr>
                <tr>
                <td>任课教师</td>
                <td>
                    <input type="text" name="teacher" />
                </td>
                </tr>
                <tr>
                <td>上课地点</td>
                <td>
                    <input type="text" name="place" />
                </td>
                </tr>
                <tr align="center">
                <td colspan="2">
                    <input type="submit" name="提交" />
                </td>
                </tr>
            </table>
        </form>
            <br>
        <%
        if(request.getAttribute("error")!=null)
        {
        %>
        <h2 align="center" style="color:red"><img src="../picture/错误.gif"><%=request.getAttribute("error") %></h2>
        <%
        }
        %>
    </body>
    </html>

    3、运行结果截图:

    jsp调试的时候我设置的弹出到外置浏览器,这是初始界面:

      

    录入信息:

      

    在输入的信息都符合要求的时候,完成提交,并可以点击继续添加返回界面:

      

    当老师的名字不符合要求:

      

    当上课地点不符合要求:

      

    当课程名称为空时:

      

    当任课教师为空时:

      

    当上课地点为空时:

      

    4、项目计划日志:

      需求描述:完成一个能判断输入信息并将课程信息导入数据库的web程序。

      估计开发时间:四五十分钟。

      项目计划数据:填写完成。

      时间记录日志:填写完成。

      缺陷记录日志:填写完成。

      姓名:郭斌

      日期:2017/11/28

       

      今天共学习了6小时3分钟,其中完成课堂测试用了63分钟。

    5、时间记录日志:

      学生:郭斌

      日期:2017/11/28

      教员:王建民

      课程:PSP

     

    6、缺陷记录日志:

      学生:郭斌

      日期:2017/11/28

      教员:王建民

      程序号:1

       

    7、个人总结: 

      今天上午课堂上写程序的时候,最后出现了乱码问题,之后修改字符集就解决了这个问题。这些错误可以不断的积累下来,从而更好的避开问题所在。发现自己写代码的速度过慢,在限时写代码的时候写不快,这是很伤的一点,还是要不断的练习,保证自己的书写规范以及编程速度。

  • 相关阅读:
    vue学习指南:第六篇(详细)
    Android Stuido代码混淆
    Android 2018最新的三方库
    使用Git上传代码到Github仓库
    android展示注册进度效果源码
    JPTabBar 详细介绍
    利用HTML5和echarts开发大数据展示及大屏炫酷统计系统
    Android Studio Git 分支使用实践
    RecyclerView的Item的单击事件
    Android实用代码
  • 原文地址:https://www.cnblogs.com/guobin-/p/7911564.html
Copyright © 2020-2023  润新知