美文网首页
2018-08-01

2018-08-01

作者: Arroganter | 来源:发表于2018-08-01 10:04 被阅读151次

    1、 在项目设计中,为了体现OO思想,需要设计实体类。请写出实体类一般的设计原则。
    参考答案:
    1)一般的实体类对应一个数据库表
    2)实体类有属性和方法,属性对应数据库中表的字段,主要有set/get方法
    3)属性一般是private,方法一般是public
    2、该图是什么图,一般使用在设计的什么阶段
    参考答案:
    用例图,需求阶段
    3、在设计阶段,经常分为"需求分析","概要设计","详细设计",请说出这三个阶段需要完成的成果物是什么?
    参考答案:
    "需求分析":用例图、用例规约
    "概要设计":页面流程图、页面原型
    "详细设计":接口及方法设计,E-R图(数据库表设计)
    4、 在项目中,使用“用例建模”来确定最终用户需要的系统功能和环境,请写出用例模型中需要具有那四个部分。
    参考答案:
    1)参与者:角色或使用系统的事物
    2)用例:参与者与系统交互的物件
    3)关系:参与者和用例之间有意义的联系
    4)系统边界:包围用例的方框,说明正在建模系统的边界
    5.软件开发中,常用的模型有:瀑布模型,原型模型,螺旋模型等,其中瀑布模型阶段如下:
    参考答案:
    需求 规格说明 设计 编码 测试 维护
    6.在设计阶段常用时序图和类图,其中类之间的关系有:依赖、关联、泛化、实现。请写出下面四个图代表什么关系。
    参考答案:
    图1:泛化
    图2:关联
    图3:依赖
    图4:实现
    7.在软件设计中,包的设计原则应该是包内高内聚,并且降低包耦合。请说出降低包耦合的设计方式。
    参考答案:
    1)包之间不应该相互依赖或循环依赖
    2)底层包不应该依赖顶层包
    3)一般的,最好不要跨层依赖
    8.在设计阶段,经常分为"需求分析","概要设计","详细设计",请说出这三个阶段需要完成的成果物是什么?
    参考答案:
    "需求分析":用例图、用例规约
    "概要设计":页面流程图、页面原型
    "详细设计":接口及方法设计,E-R图(数据库表设计)
    编程题
    1.在项目中有许多功能在多个方法或者多个类中多次用到,因此需要设计成工具类中的方法。工具类中的方法为了便于其他类访问,都定义成静态方法。
    请设计一个工具类方法,完成传入两个符合日期格式的字符串(如:2010-11-12),计算两个日期时间相减得到天数。
    方法声明如下:
    public static long getDaySub(String beginDateStr,String endDateStr){

    }
    答案:
    public static long getDaySub(String beginDateStr,String endDateStr){
    long day=0;
    java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
    java.util.Date beginDate = null;
    java.util.Date endDate = null;
    try {
    beginDate = format.parse(beginDateStr);
    endDate= format.parse(endDateStr);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    day=(endDate.getTime()-beginDate.getTime())/(246060*1000);
    //System.out.println("相隔的天数="+day);
    return day;
    }

    2、开发WEB项目,页面有城市选择功能界面如下:
    当选择省份后,城市控件会显示该省份下的城市列表。HTML关键代码如下:
    在JavaScript中定义部分省市数据如下(代码中,下面定义的变量直接使用即可):
    改变事件已经完成,生成省份的代码如下:
    要求根据上面已知条件,编写一个JavaScript函数,完成城市列表根据省份选择改变功能。
    参考答案:
    JavaScript
    //生成市县、区市'
    //@current为当前选择的select节点,即父类节点
    //@child为子类点
    //@childArr为子节点数组
    function showChild(current, child, childArr) {
    var currentValue = current.value;
    var count = childArr.length;
    child.length = 1;
    for(var i = 0; i < count; i++) {
    if(currentValue == childArr[i][0]) {
    for(var j = 1; j < childArr[i].length; j++) {
    var childOption = document.createElement('option');
    childOption.value = childOption.text = childArr[i][j];
    child.options.add(childOption);
    }
    }
    }
    }

    综合应用(共2道题)
    1、对项目中所有请求添加编码过滤器(编码统一为UTF-8),需要编写两部分代码,配置文件和java代码。
    1、配置文件如下,补全过滤器部分即可:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    .....
    </web-app>
    参考答案:

    <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>
    com.neuedu.my12306.common.SetCharacterEncodingFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    2、过滤器代码如下:
    public class _______________________________________ {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    //TODO
    }
    public void destroy() {
    }
    }
    1、在横线处填入方法声明
    2、在TODO处补全过滤器代码,实现将用户请求和相应的编码统一为UTF-8。
    参考答案:
    1、SetCharacterEncodingFilter implements Filter
    2、
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    // 传递控制到下一个过滤器
    chain.doFilter(request, response);

    2、使用JSP、Servlet完成WEB应用,实现用户密码修改功能。
    1)界面如下:
    2)该页面关键代码如下:
    3)默认已经建立好得到数据库连接的工具类。使用代码提示如下(命名符合规范):
    Connection conn = DBUtils.getConnection();
    DBUtils.beginTransaction(conn);
    DBUtils.commit(conn);
    DBUtils.rollback(conn);
    DBUtils.closeConnection(conn);
    1、参考答案:
    create table TAB_USER
    (
    id int(11) primary key ,
    username VARCHAR (30) not null,
    password VARCHAR(50) not null
    )

    2、根据表结构,建立相应的实体类(按照规范放置对应包下,规范类名、属性名、方法名)
    考生答案:
    public class User{
    private int id;
    private String username;
    private String password ;
    public int getId(){
    return id;
    }
    public void setId(int id){
    this.id=id;
    }
    public String getUsername(){
    return username;
    }
    public void setUsername(String username){
    this.username=username;
    }
    public String getPassword(){
    return password;
    }
    public void setPassword(String password){
    this.password=password;
    }
    }
    参考答案:

    3、根据题干,需要编写相应的Servlet得到表单数据。请补全对应的web.xml代码:

    参考答案:
    <servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.neuedu.my12306.usermgr.servlet.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/User/user</url-pattern>
    </servlet-mapping>

    4、根据题干和上一题编写的web.xml,请完成Servlet,实现得到表单的数据(注意包名、类名规范)。
    代码提示:

    参考答案:
    package com.neuedu.my12306.usermgr.servlet;
    public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    if ("password".equals(action)) {
    doPasswordEdit(request, response);
    }
    }
    private void doPasswordEdit(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
    HttpSession se = request.getSession();
    User user = (User) se.getAttribute("user");
    String passwordOld = request.getParameter("passwordOld");
    String password = request.getParameter("password");
    String password2 = request.getParameter("password2");
    user.setPasswordOld(passwordOld);
    user.setPassword(password);
    user.setPassword2(password2);
    UserService userService = UserService.getInstance();
    userService.updateUser(user);
    request.getRequestDispatcher("/User/main.jsp").forward(request,response);
    }
    }

    5、根据题干和前面代码,完成对应的Service层的代码(注意包名、类名规范)。
    参考答案:
    package com.neuedu.my12306.usermgr.service;
    public class UserService {
    private static final UserService instance = new UserService();
    public static UserService getInstance() {
    return instance;
    }
    private UserService() {
    }
    public boolean updateUser(User one){
    Connection conn = null;
    boolean res = false;
    try {
    conn = DBUtils.getConnection();
    UserDao userDao = new UserDaoImpl(conn);
    DBUtils.beginTransaction(conn);
    res = userDao.updateUser(one);
    DBUtils.commit(conn);
    } catch (SQLException e) {
    DBUtils.rollback(conn);
    throw new ServiceException("更新用户信息错误", e);
    } finally {
    DBUtils.closeConnection(conn);
    }
    return res;
    }
    }

    6、根据题干和前面代码,完成对应的Dao层的代码(注意包名、类名规范)。
    参考答案:
    package com.neuedu.my12306.usermgr.dao;
    public class UserDaoImpl {
    public boolean updateUser(User one) throws SQLException {
    //SQL语句
    StringBuffer update_sql = new StringBuffer("UPDATE tab_user set");
    //查询条件标记
    boolean tag = false;
    //查询条件id字段
    Integer id = one.getId();
    if(id==null || id==0){
    return false;
    }
    else{
    update_sql.append(" id="+id);
    }
    //查询条件username字段
    String username = one.getUsername();
    if(username!=null && !username.isEmpty()){
    update_sql.append(", username='"+username+"'");
    tag = true;
    }
    //查询条件password字段
    String password = one.getPassword();
    if(password!=null && !password.isEmpty()){
    update_sql.append(", password='"+password+"'");
    tag = true;
    }
    update_sql.append(" where id="+id);
    //若没有查询条件则返回对象为null
    if(!tag){
    return false;
    }
    PreparedStatement pstmt = null;
    try {
    //设置语句对象,SQL语句条件
    pstmt = conn.prepareStatement(update_sql.toString());
    int row = pstmt.executeUpdate();
    if(row!=0){
    tag = true;
    } else {
    tag = false;
    }
    } finally {
    DBUtils.closeStatement(null, pstmt);
    }
    return tag;
    }
    }

    相关文章

      网友评论

          本文标题:2018-08-01

          本文链接:https://www.haomeiwen.com/subject/exklvftx.html