软件工程概论 --1

 一、设计思想

界面构思:

先按照图片要求,写一个addInput的界面,实现要保存信息的输入。在后台数据库中建立相应的表course 存储课程信息。保存新信息即是数据库的增操作,所以再写一个add1.jsp 页面操作从addInput传过来的参数信息。因为参数有相应要求:任课教师为王建民、刘立嘉、刘丹、王辉、杨子光五位教师的其中一位。 要求上课地点开头为“一教、二教、三教、基教”中的一种,即判断参数是否等于要求,若不等,让它跳转回原来的addInput的界面,并给addInput页面返回一个错误信息,重新输入参数。若满足要求,则将参数各个信息设置给一个User对象,将这个对象添加到数据库中,在此只判断输入信息是否有效,如输入信息与数据库中出现重复的情况,在add操作中有相应判断。list.jsp用于显示所有课程信息。

数据库连接:

因为增删改查都是要调数据库操作的,所以不妨将数据库的连接写入一个包中分装,com.jaovo.msg.Util包中DBUtil类,设置加载数据库和释放资源的方法,在增删改查操作,即可直接调用,UserDaoImpl类中放着所有的操作方法,每执行一个操作,既然是对数据库操作,即要连接数据库。

方法实现:

其实方法都大同小异,例如增加:1. 获得连接对象  2. 准备sql语句  3.创建语句传输对象  4. 接收结果集  5.遍历结果集 结果集不为空 ( 即该课程名称已存在)则抛出异常:该课程信息已存在;若为空,调用SQL中插入语句,将添加信息插入表中即可。6.关闭资源。

异常抛出:

定义一个自己的UserException类,继承Exception即可,抛出相关信息。

错误信息捕捉:

1.  ValidateUtil类中放着Map容器,通过 map对象用来装载不同错误信息  没有错误信息时返回true (错误信息为空),否则返回false。1.  Map<String,String> errorMsg=new HashMap();//<>泛型(map 装载错误信息,返回这个容器信息)2. 通过request.getParameter(filed);//获取对应参数  3.然后将错误信息装载:errorMsg.put(filed, filed+"不能为空");//键和值  4.request.setAttribute("errormsg",errorMsg);//map装进将容器中,在界面设置boolean validate=ValidateUtil.validateNull(request, new String[]{"class","teacher","address"});//使用的同一个request对象,判断它是否为真,若非真,则跳转原添加页面,在页面显示调用showError(request,"teacher")方法显示即可。若真,则执行添加操作。

2.也可根据这种方法 ;   在add1.jsp页面,设置request.setAttribute("loginError","任课老师不存在");,然后在输入参数界面即addInput界面,request.getAttribute("loginError"),接收这个错误信息,判断是否有错误,若无,则赋值给“ ”即可,让它在页面输出即可。

二、源程序代码

addInput.jsp

<%@ page import="com.jaovo.msg.Util.ValidateUtil" %>
<%@ 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>
                   <h1 style="color:blue ; ">课程信息添加页面</h1>
</head>
<body>
<%
    String loginError = (String)request.getAttribute("loginError");
    if(loginError == null){
        loginError = "";
    }
%>
   <h4 style="color:red ;"><%=loginError %></h4>
    <form action="add1.jsp" method="post">
            <tr>
                <td>课程名称 : </td>
                <td>
                    <input type="text" name="class" />
                    <%=ValidateUtil.showError(request,"class")
                     %>
                </td><br>
            </tr>
              <tr>
                <td>任课教师 : </td>
                <td>
                    <input type="text" name="teacher" />
                    <%= ValidateUtil.showError(request,"teacher")
                     %>
                </td><br>
            </tr>
            <tr>
                <td>上课地点 : </td>
                <td>
                    <input type="text" name="address" />
                    <%=ValidateUtil.showError(request,"address")%>
                </td><br>
            <tr align="center">
                <td colspan="2">
                    <input type="submit" value="保存" />
                    <input type="reset" value="重置" />
                </td>
            </tr>
    </form>
</body>
</html>

add1.jsp

<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@page import="com.jaovo.msg.model.User"%>
<%@page import="com.jaovo.msg.Util.ValidateUtil"%>
<%@ 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>
<%
    //接收客户端传递过来的参数
    String Class = request.getParameter("class");
    String teacher = request.getParameter("teacher");
    String address  = request.getParameter("address");
     boolean validate=ValidateUtil.validateNull(request, new String[]{"class","teacher","address"});//使用的同一个request对象
    if(!validate){
%>
    <jsp:forward page="addInput.jsp"></jsp:forward>
<%
    }
    User user = new User();
    user.setCourse(Class);
    user.setTeacher(teacher);
    user.setAddress(address);
    UserDaoImpl userDao = new UserDaoImpl();
    try{
    if((!("王建民".equals(teacher)))&&(!("刘立嘉".equals(teacher)))&&(!("王辉".equals(teacher)))&&(!("刘丹".equals(teacher))))
        {
            request.setAttribute("loginError","任课老师不存在");
            %>
    <jsp:forward page="addInput.jsp"></jsp:forward>
<%
        }
        else if(!(address.startsWith("一教"))&&!(address.startsWith("二教"))&&!(address.startsWith("三教"))&&!(address.startsWith("基教")))
    {
      request.setAttribute("loginError","上课地点有误");
      %>
    <jsp:forward page="addInput.jsp"></jsp:forward>
<%
     }
    else{
    userDao.add(user);
    //重定向response.sendRedirect("List.jsp");
    %>
    用户保存成功!!<br>
    <a href="addInput.jsp">继续添加</a><br>
    <a href="list.jsp">用户列表</a>
<%
     }
    }catch(UserException e){
%>
    <h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2>
    <%
    }
    %>
</html>

list.jsp

<%@page import="com.jaovo.msg.model.User"%>
<%@page import="java.util.List"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@ 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>
<%
    UserDaoImpl userDao = new UserDaoImpl();
    List<User> users = userDao.load();
%>
<body>
    <table align="center" border="1" width="500">
        <tr>
            <td>课程编号</td>
            <td>课程名称</td>
            <td>任课教师</td>
            <td>上课地点</td>
        </tr>
        <%
            for( User user : users ){
        %>
        <tr>
            <td> <%=user.getId() %></td>
            <td> <%=user.getCourse() %></td>
            <td> <%=user.getTeacher() %></td>
            <td> <%=user.getAddress() %></td>
        </tr>
        <%
            }
        %>
    </table>
</body>
</html>

DBUtil.java--连接数据库

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() {

            //1 加载驱动
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (InstantiationException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IllegalAccessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (ClassNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        String user = "root";
        String password = "root";
        String url = "jdbc:mysql://localhost:3306/course";
        Connection connection = null;
        try {
            //2 创建链接对象connection
             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();
        }
    }

}

User.java--基本信息(属性)

package com.jaovo.msg.model;

public class User {
    private int id;
    private String course;
    private String teacher;
    private String address;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getCourse() {
        return course;
    }
    public void setCourse(String course) {
        this.course = course;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }

}

IUserDao.java----方法接口

package com.jaovo.msg.dao;

import java.util.List;

import com.jaovo.msg.model.User;

public interface IUserDao {
    public void add(User user);
    public void delete(int id);
    public void update(User user);
    public User load(int id);
    public User load(String Class);
    public User load(String Class,String teacher);
    public List<User> load();
}

UserDaoImpl.java---方法实现(增删改查)

package com.jaovo.msg.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.User;
import sun.net.www.content.text.plain;
public class UserDaoImpl implements IUserDao {

    @Override
    public void add(User user) {
        //获得连接对象
        Connection connection=DBUtil.getConnection();
        //准备sql语句
        String sql="select count(*)from t_user where Class= ?";
        //创建语句传输对象
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        try {
             preparedStatement=connection.prepareStatement(sql);
             preparedStatement.setString(1, user.getCourse());
             //接收结果集
             resultSet=preparedStatement.executeQuery();
             //遍历结果集
             while(resultSet.next())
             {
                 if(resultSet.getInt(1)>0)
                     throw new UserException("用户已存在");
             }
             sql="insert into t_user(Class,teacher,address) value (?,?,?)";
             preparedStatement=connection.prepareStatement(sql);
             preparedStatement.setString(1, user.getCourse());
             preparedStatement.setString(2, user.getTeacher());
             preparedStatement.setString(3, user.getAddress());
             preparedStatement.executeUpdate();
        } catch (SQLException e) {

            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(resultSet);
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }
    }
    public void delete(int id) {
        Connection connection=DBUtil.getConnection();
        String sql="delete from t_user where id=?";
        PreparedStatement preparedStatement=null;
        try
        {
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setInt(1, id);
            preparedStatement.executeUpdate();
        }catch(SQLException e)
        {
            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }

    }

    public void update(User user) {
        //获得连接对象
        Connection connection=DBUtil.getConnection();
        //准备sql语句
        String sql="update t_user set teacher=?,address=? where id= ?";
        //创建语句传输对象
        PreparedStatement preparedStatement=null;
        try {
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setString(1, user.getTeacher());
            preparedStatement.setString(2, user.getAddress());
            preparedStatement.setInt(3, user.getId());
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }

    }

    @Override
    public User load(int id) {
                //获得连接对象
                Connection connection=DBUtil.getConnection();
                //准备sql语句
                String sql="select * from t_user where id = ?";
                //创建语句传输对象
                PreparedStatement preparedStatement=null;
                ResultSet resultSet=null;
                //集合中只能放User对象
                User user=null;
                try {
                    preparedStatement=connection.prepareStatement(sql);
                    preparedStatement.setInt(1, id);
                    resultSet=preparedStatement.executeQuery();
                     //遍历结果集
                     while(resultSet.next())
                     {
                         user=new User();
                         user.setId(id);
                         user.setTeacher(resultSet.getString("teacher"));
                         user.setCourse(resultSet.getString("class"));
                         user.setAddress(resultSet.getString("address"));
                     }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally
                {
                    //关闭资源
                    DBUtil.close(resultSet);
                    DBUtil.close(preparedStatement);
                    DBUtil.close(connection);

                }

        return user;
    }

    @Override
    public User load(String username) {
        //获得连接对象
        Connection connection=DBUtil.getConnection();
        //准备sql语句
        String sql="select * from t_user where class = ?";
        //创建语句传输对象
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        //集合中只能放User对象
        User user=null;
        try {
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setString(1,username);
            resultSet=preparedStatement.executeQuery();
             //遍历结果集
             while(resultSet.next())
             {
                 user=new User();
                 user.setCourse(username);
                 user.setId(resultSet.getInt("id"));
                 user.setTeacher(resultSet.getString("teacher"));
                 user.setAddress(resultSet.getString("address"));
             }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(resultSet);
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }
          return user;
    }

    @Override
    public List<User> load() {
        //获得连接对象
        Connection connection=DBUtil.getConnection();
        //准备sql语句
        String sql="select * from t_user ";
        //创建语句传输对象
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        List<User> users=new ArrayList<User>();
        User user=null;
        try {
            preparedStatement=connection.prepareStatement(sql);
             resultSet=preparedStatement.executeQuery();
             //遍历结果集
             while(resultSet.next())
             {
                 user=new User();
                 user.setId(resultSet.getInt("id"));
                 user.setCourse(resultSet.getString("class"));
                 user.setTeacher(resultSet.getString("teacher"));
                 user.setAddress(resultSet.getString("address"));
                 users.add(user);
             }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(resultSet);
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }
        return users;
    }
    public User load(String username, String password) {
        //获得连接对象
        Connection connection=DBUtil.getConnection();
        //准备sql语句
        String sql="select * from t_user where class = ?";
        //创建语句传输对象
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        //集合中只能放User对象
        User user=null;
        try {
            preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setString(1, username);
            resultSet=preparedStatement.executeQuery();
             //遍历结果集
             while(resultSet.next())
             {
                 user=new User();
                 user.setId(resultSet.getInt("id"));
                 user.setCourse(resultSet.getString("class"));
                 user.setTeacher(resultSet.getString("teacher"));
                 user.setAddress(resultSet.getString("address"));

             }
             if(user==null)
             {
                 throw new UserException("该课程信息不存在");
             }
             if(!user.getTeacher().equals(password))
             {
                 throw new UserException("老师信息不正确");
             }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            //关闭资源
            DBUtil.close(resultSet);
            DBUtil.close(preparedStatement);
            DBUtil.close(connection);

        }

return user;
    }

}

UserException---自定义异常类

package com.jaovo.msg.Util;

public class UserException extends RuntimeException{

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

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

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

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

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

}

ValidateUtil.java ---错误信息捕捉

package com.jaovo.msg.Util;

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

import javax.servlet.http.HttpServletRequest;

import com.jaovo.msg.dao.UserDaoImpl;
import com.jaovo.msg.model.User;

public class ValidateUtil {//验证信息是否为空,Map容器(保存映射关系)
    public static boolean validateNull(HttpServletRequest request,String []fileds){//不为空(没有错误信息)--true 为空--返回false
        boolean validate=true;
        //map对象用来装载不同错误信息
        Map<String,String> errorMsg=new HashMap();//<>泛型(map 装载错误信息,返回这个容器信息)
        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);//map装进将容器中

            }
        }
        return validate;
    }
    public static boolean validateError(HttpServletRequest request,String []fileds){//不为空(没有错误信息)--true 为空--返回false
        boolean validate=true;
        //map对象用来装载不同错误信息
        UserDaoImpl userDao = new UserDaoImpl();
        List<User> users = userDao.load();
        Map<String,String> errorMsg=new HashMap();//<>泛型(map 装载错误信息,返回这个容器信息)
        for(String filed:fileds)
        {
            String value =request.getParameter(filed);//获取对应参数
            if(value==null||"".equals(value.trim()))
            {
                validate=false;
                errorMsg.put(filed, filed+"不能为空");//键和值
            }
            for( User user : users ){
                  if(value.equals(user.getCourse()))
                  {
                      errorMsg.put(filed, filed+"已存在");//键和值
                  }
            }
            if(!validate)
            {
                request.setAttribute("errormsg",errorMsg);//map装进将容器中

            }

        }
        return validate;
    }
    public static String showError(HttpServletRequest request,String filed)//反射
    {
        Map<String, String> errorMsg=(Map<String, String> )request.getAttribute("errormsg");
        if(errorMsg==null)
        {
            return "";
        }
        String msg=errorMsg.get(filed);//有对象
        if(msg==null)
        {
            return "";
        }
        return msg;
    }

}

 三、运行结果截图

表中原有:

添加新信息:

表中新信息:

list.jsp

时间: 2024-10-09 02:09:08

软件工程概论 --1的相关文章

软件工程概论课总结及意见建议

本学期的软件工程概论课到此就上完了,总体上来说在这门课上学到的东西是非常多的并且对我是非常有帮助的.整个学期王老师带领我们将软件工程的具体流程走了一遍,讲到了入门.过程.流程.注意事项.方式方法.关键点.关键问题等等.虽然我们没有真正接触到实际的开发项目,但已经对软件行业在脑子中有了成型的框架,不在一说到软件就是编程代码,而是软件工程行业的接近核心的知识理论.我们有的也不只是理论,王老师配合每次的讲课内容为我们准备了相应的课堂练习,以便我们能够亲身体验项目的流程. 对于软件工程概论课的教授,王老

软件工程概论个人总结

转眼又到了一个学期的末尾,在这里简单的对软件工程概论这门课进行一下总结吧.说实话,刚开始真是不知道这门课要讲些什么,总之会讲一些软件工程方面的知识吧.然而随着一次次的上课,一次次的任务,我才终于明白了这门课要我们做些什么. 这门就像老师所讲的是以“做中学”为主要的理念,主要强调让我们在自己开发软件的过程中去学习知识和技能.刚开始的几周,觉得这种方法是很好的,的确能学到不少的知识.然而这只是一个简单的开始,当二柱子的四则运算一次比一次复杂,当我们组成团队,需要在很短的时间内进行冲刺,完成自己的项目

软件工程概论10

软件工程概论 第十章 软件测试 软件测试:广义上,是指软件产品生存周期内所有的检查.评审和确认活动.狭义上,是对软件产品质量的检验和评价. 软件测试的基本原则:①应当把“尽早的和不断地进行软件测试”作为软件开发者的座右铭.②程序员应避免检查自己的程序.③在设计测试用例,应当包括合理的输入条件和不合理的输入条件.④测试用例由测试输入数据和与之对应的预期输出结果组成.⑤充分注意测试中的集体现象.⑥严格执行测试计划,排除测试的随意性⑦对每一个测试结果做全面的检查⑧妥善保存一切测试过程文档,为维护提供方

软件工程概论课程的个人总结

个人总结 请根据本次学习过程给出总结并针对教师授课给出意见和建议,字数1500字以上. 一个学期的课程快要结束了,这个学期最大的怨念就是软件工程概论,作业多而且难,还要占用大量的时间和精力去完成个人和团队的任务.但是这些都不是最主要的,最重要的是我们在这里收获和很多.比如说拿到题目之后不再是一味的上来就开始写代码写完代码就开始心情愉快的做其他事,我会先分析,然后写出我自己的设计思路,再慢慢实现我的代码,然后再作总结:所以到现在写程序很少犯以前犯过的错误,也不会再程序写一半的时候突然感觉没有思路了

软件工程概论第五周进度条

所花时间:软件工程概论上课时间(1h5min),web应用技术开发课程(接近4h)课余时间练习(2h)       共计约8h 代码量:登录界面开发292行(web),四则运算代码160行. 博客量:软件工程概论作业01 学习到的知识点:通过Jdbc连接数据库.

软件工程概论第一节

一.网站系统开发需要掌握的技术 PHP..NET.HTML等编程语言中至少一种以及环境配置.脚本语言.数据库链结等技术. 二.课堂测试的源程序代码 HTML源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http

软件工程概论9

软件工程概论 第九章 软件实现 程序设计语言:在不断的演化和演变,其发展经历了从机器语言到高级语言的过程. 软件编码规范:文件命名与组织.代码的版式(适当的空行.代码行及行内空格.分行对齐与缩进.命名规则.声明.注释). 软件编码案例分析:程序注释问题.变量命名问题.内存异常问题(内存泄露问题.指针参数问题.“野指针”问题.编程建议).异常处理问题.性能问题(避免创建重复对象.优化语言提高性能). 软件代码审查:代码检查:类.属性.构造函数.方法头.方法体.

软件工程概论8

软件工程概论 第八章 面向对象设计 设计活动:划分为系统设计和详细设计两个主要阶段. 设计原则:模块化.耦合度和内聚性.复用性. 软件体系结构:仓库体系结构.分层体系结构.MVC体系结构.客户机/服务器体系结构.管道和过滤器体系结构. 系统设计:识别设计元素.数据储存管理(数据文件.关系数据库.面向对象数据库).部署子系统.系统设计审评(检验“正确性”“完整性”“一致性”“可行性”). 详细设计:方法建模.属性建模.状态建模.关系建模.详细设计评审. 应用设计模式:Abstract Factor

董文轩组软件工程概论的评价及概况

截图.: 李志岩: 董文轩组做的石家庄市旅游景点导航系统,整体框架不错,他们组的做的东西做的也挺多,界面美观,但是美中不足的是给我的时候有些界面不能正常的运行.也许他们的界面涉及到了数据库,但他们没给我,整体 的内部运行代码没有做出,项目核心功能没有能实现, 值得学习的是,他们做的是网站项目,可以跟本学期的java web得以加强练习. 最后,我想说,编程不是一日之功,希望他们可以坚持把系统得以完善,继续努力. 薛禄坤: 对董文轩小组的石家庄景点导航软件(网页版)的观看感受 <石家庄景点导航>

软件工程概论课个人总结

在这一学期经历了16周的软件工程概论课程的学习,我学习到了很多知识,收获了很多,大二我们进入软件工程专业,对软件工程专业和所要学习的知识和方向还不了解,软件工程概论课向我们讲解了软件工程的基本概念和软件开发这项工程的开发流程以及开发中的一些问题,使我们了解了软件的开发的方式,开发的流程,使我们建立了开发软件这项工程的基本框架,我从中收获了很多知识,构建了软件开发的基本思维. 通过软件工程概论课我基本了解了程序的概念,程序=算法+数据结构,软件=程序+软件工程,软件工程需要通过需求分析.设计.编码