超级课程表

1程序设计思想

首先在addInput.jsp 界面中完成网页界面的设计,进行网页测试,看是否完成设计,然后在数据库中建立表,在daoimpi 类文件中进行数据的链接,进行测试,在add.jsp文件中进行判断输入的字符是否合法,建立一个自定义异常类ClassException,在try 中进行输入字符的判断,然后进行抛出异常,最后catch异常,用标签将错误原因显示在网页上

2源程序代码

IUserDao.java

package com.jaovo.msg.dao;

import com.jaovo.msg.mobeI.User;

public interface IUserDao {
    public void add(User user);//添加

}

UserdaoImpI.java  数据库的链接

package com.jaovo.msg.dao;//实现方法的类

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.mobeI.User;

public class UserdaoImpI implements IUserDao
{//实现接口中的所有方法   6步

    @SuppressWarnings("resource")
    @Override
    public void add(User user)
    {//增加的方法
        // TODO Auto-generated method stub
        Connection connection=DBUtil.getConnection();//获得连接对象
        //准备sql语句
        String sql = "select count(*) from t_user where username = ?";//count 数据的条数
        //创建语句传输对象
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;//
        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user.getKecheng());
            resultSet = preparedStatement.executeQuery();//接受一下结果集
            //遍历结果集
            while(resultSet.next()) {
                if(resultSet.getInt(1) > 0) {
                    throw new UserException("用户已存在") ;
                    };
                }
        sql = "insert into t_user(username,password,nickname) values (?,?,?)";
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, user.getKecheng());
        preparedStatement.setString(2, user.getTeacher());
        preparedStatement.setString(3, user.getAdress());
        preparedStatement.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            DBUtil.close(resultSet);
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);
        }
    }
}

User。Java

package com.jaovo.msg.mobeI;

public class User {
    private int id;
    private String kecheng;
    private String teacher;
    private String adress;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getKecheng() {
        return kecheng;
    }
    public void setKecheng(String kecheng) {
        this.kecheng = kecheng;
    }
    public String getAdress() {
        return adress;
    }
    public void setAdress(String adress) {
        this.adress = adress;
    }
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }

}

ClassException.java

package com.jaovo.msg.Util;

public class ClassException extends Exception{
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    public ClassException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public ClassException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
        // TODO Auto-generated constructor stub
    }

    public ClassException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public ClassException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }

    public ClassException(Throwable cause) {
        super(cause);
        // TODO Auto-generated constructor stub
    }

}

DBUtil.java

package com.jaovo.msg.Util;//链接数据库的方法
/*
 1加载驱动
 2创建连接对象
 3创建语句传输对象
 4接受结果集对象
 5遍历
 6关闭资源
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.tomcat.dbcp.dbcp2.DriverManagerConnectionFactory;

public class DBUtil {
    public static Connection getConnection() {
        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String user = "root";
        String password = "root";
        String url = "jdbc:mysql://localhost:3306/jaovo_msg?useUnicode=true&characterEncoding=UTF-8";//连接数据库的代码
        Connection connection = null;//提升定域
        try {
            //2创建连接对象
            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();
        }
    }
}

ValidateUtil.java

package com.jaovo.msg.Util;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
public class ValidateUtil
{
    public static boolean validateNull(HttpServletRequest request,String[] fileds)
    {
        boolean validate=true;
        //Map对象用来装载不同的错误信息
        Map<String,String>errorMsg=new HashMap();
        for(String filed:fileds)
        {
            String value=request.getParameter(filed);
            if(value==null||"".equals(value.trim()))
            {
                validate=false;
                errorMsg.put(filed, filed+"不能为空");
            }
            if(!validate)
            {
                request.setAttribute("errormsg",errorMsg);
            }
        }
        return validate;
    }
}

add.jsp

<%@page import="com.jaovo.msg.Util.ClassException"%>
<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserdaoImpI"%>
<%@page import="com.jaovo.msg.mobeI.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>

<% //接受客户端传递过来的参数
    request.setCharacterEncoding("UTF-8");
    String kecheng = request.getParameter("kecheng");
    String teacher = request.getParameter("teacher");
    String adress = request.getParameter("adress");
    try{
        if(!teacher.trim().equals("王建民")&&!teacher.trim().equals("刘立嘉")&&!teacher.trim().equals("刘丹")&&!teacher.trim().equals("杨子光")&&!teacher.trim().equals("王辉"))
        {
            throw new ClassException("不能输入");
        }
        else if (!adress.trim().startsWith("基教")&&!adress.trim().startsWith("一教")&&!adress.trim().startsWith("二教")&&!adress.trim().startsWith("三教"))
        {
            throw new ClassException("不能输入");
        }
        else
        {
            User user = new User();
            user.setKecheng(kecheng);
            user.setTeacher(teacher);
            user.setAdress(adress);
            UserdaoImpI userDao = new UserdaoImpI();
            userDao.add(user);
            %>

<body>
    用户保存成功!!<br>
    <a href="addInput.jsp">继续添加</a><br>
    <a href="#">用户列表</a>
            <%
        }
    }
    catch(ClassException e){
        %>
            <h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2>
        <%
            }

    %>

</html>

addInput.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>
    <title>课程添加界面</title>
</head>
<body>
    <form action = "add.jsp" method = "post">
        <table align = "center" border="1" width="500" >
            <tr>
                <td>课程名称:</td>
                <td>
                    <input type ="text" name = "kecheng"/>
                </td>
            </tr>
                <tr>
                    <td>任课教师:</td>
                <td>
                    <input type = "text" name = "teacher"/>
                </td>
                <tr>
                    <td>上课地点:</td>
                    <td>
                        <input type = "text" name = "adress"     />
                    </td>
                </tr>
                <tr align="center">
                    <td colspan = "2">
                        <input type = "submit" value = "保存"/>

                        </td>
        </table>

    </form>
</body>
</html>

程序执行结果截图

psp日志


日期


开始时间


结束时间


中断时间


净时间


活动


备注


C


U


2017.11.28


13.00


15.00


2.30


110分钟


休息


15.00


15.40


40


开班会


进行学习十九大


16.00


17.30


90


编程


17.30


17.50


30


吃饭


18.00


18.40


休息,聊天


18.40


21.00


20.00


110


编程


准备考试

 

总结:在进行有关项目的编码是,需要注意编程上的规范,在写完每一个部分之后都需要进行测试,防止程序出现不可逆转的错误,加大程序完成的效率,将时间更多的用来学习只是和巩固住已经学习的知识。

时间: 2024-10-18 06:48:16

超级课程表的相关文章

局外人看超级课程表

新闻链接:超级课程表再获数千万美元B轮投资:阿里巴巴集团领投,红杉及策源创投继A轮后追投 http://www.36kr.com/p/214287.html 超级课程表B轮阿里资本领投千万美元,我一听到这消息第一反应是阿里真是烧钱. 超级课程表用户群长期不固定且有限,且不管其CEO吹的用户量多少是真是假,大学生全国不到几千万,而且毕业了基本就用户丢失了.这种情况下做长期的粘性社交几乎不可能,只能是在用户上学的那四五年挖掘价值.也就是说,超级课程表必须做到让用户使用它的四年里能够产生价值,那么用户

爬虫再探实战(五)———爬取APP数据——超级课程表【一】

关于爬虫,开始以为只能爬取网页数据,后来知道APP也能抓取.于是,在学校利用空闲时间,耗时两周实现了数据的抓取和简单的数据分析. 目标,抓取超级课程表XX大学(其实是我们大学啦...)学生20000条发帖信息.思路如下: STEP1:为我们的爬虫找到入口 APP请求数据,也是通过网络协议,这样,我们就抓包来定位入口,这里我用的是fiddler.关于设置手机和fiddler的关联,请参考这篇文章. 找到登陆入口为:http://120.55.151.61/V2/StudentSkip/loginC

android 项目实战——超级课程表课表一键提取功能

如果你是在校大学生,或许你用多了各种课程表,比如课程格子,超级课程表.它们都有一个共同点就是可以一键导入教务处的课程.那么一直都是用户的我们,没有考虑过它是如何实现的.那么现在就来模仿一款"超级课程表". PS:由于超级课程表是商用软件,原本提取了一些图片,但是为了避免涉及侵权问题,所有图片均已使用一张绿色圆圈代替,背景图片也以颜色代替,缺乏美观,如果你觉得太丑,可以自己寻找图片代替. 那么说了这么久,先来看看这款高仿的软件长什么样子.本文的代码做过精简,所以界面可能有出入. 好了,界

超级课程表原理解析(如何获取网页内容)

一直对手机怎么访问网页很好奇,比如网页上填的姓名密码之类的,在手机上怎么填上去,怎么把网页的内容解析完放在手机上.这次就手机访问教务系统举个简单的例子,相信看完你就懂啦,以后就可以随心所欲的解析网页啦. 君欲善其事,必先利其器.首先要准备两个工具:1.HttpWatch(网页数据分析工具,利用它抓取网页内容),2.一个Jar包:Jsoup(解析网页内容).有了这两个东西剩下的事就好办啦. 我是大连海事大学的学生就用海事大学的教务系统为例,实现一个简单的课程表App. 先上图:          

课程表

http://www.cnblogs.com/jycboy/p/kcbyl.html 超超boy 超级课程表原理解析(如何获取网页内容) 一直对手机怎么访问网页很好奇,比如网页上填的姓名密码之类的,在手机上怎么填上去,怎么把网页的内容解析完放在手机上.这次就手机访问教务系统举个简单的例子,相信看完你就懂啦,以后就可以随心所欲的解析网页啦. 君欲善其事,必先利其器.首先要准备两个工具:1.HttpWatch(网页数据分析工具,利用它抓取网页内容),2.一个Jar包:Jsoup(解析网页内容).有了

Android课程表的设计开发

Android课程表的设计开发 导语 实现了教务系统中课程的导入,分类显示课程.学期的修改,增加,修改.课程按照周的显示.课程修改上课星期和上课周.上课课程的自动归类. 一.主要功能界面 开发过程 一开始因为毕设有关课程表的要求不明,主要就是利用jsoup拉取学校教务管理系统的课程数据进行课程表界面的填充显示,并不能课程的个性化调整. 后来重新调整了需求,参考了超级课程表的功能.重新设计了实体类,利用bmob移动端云作为爬取到的数据的数据服务器进行了重新的开发. 主要代码 1.课程实体类 pac

第一次团队冲刺成果评审会总结

1.移山小分队 二手书交易平台 这是一个网上卖二手书的平台,第一阶段冲刺结束后,该团队完成了网页的大体设计,实现了图书的搜索.查看评论的功能,并且数据库也连上了.对他们现在的成果我觉得可以加上一些其他的功能.将各种书分类,给出标签,在查找时就可以根据一些标签查找需要的书,这样对那些看名字不能清楚知道是什么内容的书比较好.用户可以对书进行评价,同时还可以查看其他人的评价,当然都是匿名的评价,不会显示自己的真实信息的.如果可以根据自己的查询历史智能推荐就更好了 2.BBW 快递来了 之前他们组是快递

从爬取华科hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;

原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 华科大的教务系统(hub系统)做的算是比较好的,无论是界面还是其安全性来说,都是很不错的.大家可以用浏览器的调试工具F12看一下里面的源码.关于它的安全性,在后面会为大家提到.而在布局方面,用<div>代替了一些传统网站使用的<iframe>,导航栏也是使用的比较流行的插件. 其首页地址为http://hub.hust.edu.cn

团队题目需求分析-NABCD

Need: 由本人亲身体验出发,觉得很多同学记不住老师留的作业,或者上课时间记录了,但是老是忘记到底记录了什么,导致没有半大写作业,所以准备设计一个东西来帮助同学. A: 首先,我最先想到的是手机,所以准备用相关程序编写一个app,老师可以留作业,学生可以查作业. B: 使用我们所开发的APP,可以解决许多同学和老师的问题: 1.作业能够长时间储存在数据库内,方便查找. 2.可以让学生方便查询具体的作业和上交时间,不用四处打听. 3.老师不用每节课都要留作业和提醒同学交作业. C: 我们的对手主