一个软件项目的一生(认证考试)

一、概要

1.1、需求

某公司想开发一套学生信息管理系统,现在需要我们开发学生添加和查看功能模块,具体要求如下:

  1. 学生新增时需要提供的信息尽可能简单,以加快新增过程,学生的详细信息可以由其他模块负责获取。
  2. 学生信息需要保存至数据库中,同时数据库和用户数据都需要具有基本的安全保障措施。
  3. 所有用户录入的数据都需要进行数据验证。
  4. 所有用户操作都需要有明确具体的操作反馈。

1.2、语言和环境

  1. 实现语言:Java、JSP、Javascript、HTML
  2. 开发环境:MyEclipse
  3. 数据库系统:SQL Server

二、 实现步骤

2.1、绘制ER图

(1)按照标准绘制实体关系图

(2)可以采用Visio或其他工具完成

2.2、绘制类图与时序图

2.2.1、类图

2.2.2、时序图

2.2.3、编写详细设计说明书

(1)根据用户需求描述,按照标准格式编写详细设计说明书

2.2.4、数据库详细设计

(1)根据实体关系图完成数据表设计

1、启动服务 cmd -> net start mssqlserver

2、使用指处理,新建一个service.bat文件,在中间放入以下内内容:

@echo off
:a
echo 请选择要执行批处理命令:
echo ------------------------------------------------------
echo     1    开启MSSQLServer
echo     2    关闭MSSQLServer
echo     3    开启Oracle
echo     4    关闭Oracle
echo     5    快速关机
echo     6    开启MySQL
echo     7    关闭MySQL
echo     8    开启Redis
echo     9    关闭Redis
echo     a    开启Tomcat
echo     b    关闭Tomcat
echo ------------------------------------------------------
Set/p var1=请输入您要执行的指令:[1/2/3/4/5/6/7/8/9/a/b]
if %var1% ==1 goto C1
if %var1% ==2 goto C2
if %var1% ==3 goto C3
if %var1% ==4 goto C4
if %var1% ==5 goto C5
if %var1% ==6 goto C6
if %var1% ==7 goto C7
if %var1% ==8 goto C8
if %var1% ==9 goto C9
if %var1% ==a goto xa
if %var1% ==b goto xb
echo.
cls
goto a:
echo.
:C1
net Start MSSQLServer /Y
goto EndApp
echo.
:C2
net Stop MSSQLServer /Y
goto EndApp
echo.
:C3
net Start OracleServiceORCL /Y
net Start OracleOraDb11g_home1TNSListener /Y
goto EndApp
echo.
:C4
net stop OracleServiceORCL /Y
net stop OracleOraDb11g_home1TNSListener /Y
goto EndApp
echo.
:C5
shutdown -s -f -t 0
goto EndApp
echo.
:C6
net Start MySQL /Y
goto EndApp
echo.
:C7
net Stop MySQL /Y
goto EndApp
echo.
:C8
net Start redis /Y
goto EndApp
echo.
:C9
net Stop redis /Y
goto EndApp
echo.
:xa
h:
cd H:\InstallFiles\javaKit\apachetomcat7057windowsx64\apachetomcat7057\bin
startup.bat
goto EndApp
echo.
:xb
h:
cd H:\InstallFiles\javaKit\apachetomcat7057windowsx64\apachetomcat7057\bin
shutdown.bat
goto EndApp
echo.
:EndApp
Set/p var3=是否继续操作:[y/n]
If %var3% == y goto a:

3、手动启动

我的电脑->右键->管理->服务->找到SQL Server(MSSQLSERVER)

4、启动数据库管理工具

win+r->ssms命令

5、创建数据库

6、创建表

主键

添加字段

id 编号

name 名称

sex 性别

cno 班级

addr 地址

保存->表名Student

7、添加记录

8、测试

运行SQL

9、导出SQL

2.2.5、完成功能实现

启动MyEclipse

默认快捷键为alt+/,可以修改为其它习惯的快捷键,如tab,tab

新建项目,动态网页项目

填写项目名称,路径

项目创建成功

2.2.6、联署项目

2.2.7、启动Tomcat运行项目

2.2.8、创建实体包

包名:com.zhangguo.studentmis.entities  类名:Sutdent

package com.zhangguo.studentmis.entities;

/** 学生实体 */
public class Student {
    /** 编号 */
    private int id;
    /** 姓名 */
    private String name;
    /** 班级 */
    private String cno;
    /** 性别 */
    private String sex;
    /** 地址 */
    private String addr;

    public int getId() {
        return id;
    }
    //写
    public void setId(int id) {
        this.id = id;
    }
    //读
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCno() {
        return cno;
    }

    public void setCno(String cno) {
        this.cno = cno;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }
}

 2.2.9、创建学生服务,完成数据访问

类名:StudentService 实体名+Service 包名:com.zhangguo.studentmis.dao;

package com.zhangguo.studentmis.dao;

import java.util.List;

import com.zhangguo.studentmis.entities.Student;




/**学生服务类*/
public class StudentService {
    
    public static void main(String[] args) {
        //实例化学生服务对象
        StudentService ss=new StudentService();
        
        Student e=new Student();
        e.setName("张果果");
        e.setCno("S3SU198");
        e.setSex("女");
        e.setAddr("中国深圳");
        ss.add(e);
        
        //获得所有的学生对象,遍历
        for (Student s : ss.getAll()) {
            System.out.println(s.getId()+","+s.getName());
        }
    }
    
    /**查询所有学生信息*/
    public List<Student> getAll(){
        //定义SQL
        String sql="SELECT student.id, student.`name`,student.sex,student.cno,student.addr FROM student";
        //访问数据库并返回数据
        return JDBCUtils.queryForList(sql, Student.class);
    }
    
    /**添加学生信息*/
    public int add(Student s){
        //将执行的添加sql语句,?表示参数
        String sql="INSERT student(name,sex,cno,addr) values(?,?,?,?);";
        //执行sql并指定参数
        return JDBCUtils.update(sql, s.getName(),s.getSex(),s.getCno(),s.getAddr());
    }
    
}

测试结果:

2.2.10、展示学生信息

<%@page import="com.zhangguo.studentmis.dao.StudentService"%>
<%@page import="com.zhangguo.studentmis.entities.Student"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
    //实例化学生服务对象
    StudentService ss = new StudentService();
%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"> 
<base href="<%=basePath%>">
<title>学生信息管理 - 查询</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
    <h2>学生信息管理 - 查询</h2>
    <table width="80%" border="1">
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>班级</th>
            <th>籍贯</th>
        </tr>
        <%for (Student s : ss.getAll()) {%>
        <tr>
            <td><%=s.getId()%></td>
            <td><%=s.getName() %></td>
            <td><%=s.getSex()%></td>
            <td><%=s.getCno()%></td>
            <td><%=s.getAddr()%></td>
        </tr>
        <%}%>
    </table>

</body>
</html>

运行结果:

2.2.11、添加学生信息

add.jsp页面

<%@page import="com.zhangguo.studentmis.entities.Student"%>
<%@page import="com.zhangguo.studentmis.dao.StudentService"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

//请求编码设置为utf-8
request.setCharacterEncoding("utf-8");
//响应编码设置为utf-8
response.setCharacterEncoding("utf-8");

//学生服务
StudentService ss=new StudentService();

//封装学生对象
Student e=new Student();
e.setName(request.getParameter("name"));
e.setCno(request.getParameter("cno"));
e.setSex(request.getParameter("sex"));
e.setAddr(request.getParameter("addr"));

//消息
String m="";

//如果学生对象中存在数据
if(e.getName()!=null)
{
    //执行添加
    ss.add(e);
    m="添加成功";
}
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>学员信息系统 - 添加</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
  <h2>学员信息系统 - 添加</h2>
  
  <form action="" method="post">
  <p>
     <label for="name">姓名:</label>
     <input type="text" id="name" name="name" />
  </p>
  
    <p>
     <label for="sex">性别:</label>
     <input type="text" id="sex" name="sex" />
  </p>
  
    <p>
     <label for="cno">班级:</label>
     <input type="text" id="cno" name="cno" />
  </p>
  
    <p>
     <label for="addr">籍贯:</label>
     <input type="text" id="addr" name="addr" />
  </p>
  
  <button>提交</button>
  <p>
  <%=m %>
  </p>
  </form>
  
  <p>
  <a href="index.jsp">列表</a>
  </p>
  </body>
</html>

运行结果:

(1)      根据不同的平台完成业务逻辑与持久层功能单元测试,并提交测试代码。

(2)      按照标准格式编写详细的测试用例文档

  1. 设计使用svn实现源代码管理

(1)      针对完成的学生信息管理模块提交到svn版本库。

  1. 制作安装包

将开发完成的学生信息管理模块制作成为一个安装包

三、下载与视频

文档下载1

视频教程

svn与JDBC下载:链接: https://pan.baidu.com/s/1kVzCwon 密码: 84k7

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

手把手教会你小程序登录鉴权

为了方便小程序应用使用微信登录态进行授权登录,微信小程序提供了登录授权的开放接口。乍一看文档,感觉文档上讲的非常有道理,但是实现起来又真的是摸不着头脑,不知道如...

2075
来自专栏敏捷开发&项目管理

初试WIX加SQL LocalDB

最近有个项目需要生成一个自动打包安装App和数据库的MSI文件,经同事推荐WIX,于是乎就试了一试。遇到了一些问题觉得有分享的价值,所以写篇博客记录一下 :) ...

2776
来自专栏Hongten

python开发_configparser_解析.ini配置文件工具_完整版_博主推荐

====================================================

851
来自专栏FreeBuf

OpenSSL空指针引用do_ssl3_write

我们的UC – KEEL工具发现do_ssl3_write一个空指针引用错误(ssl/s3_pkt.c)用于提醒挂起SSL_MODE_RELEASE_BUFFE...

19810
来自专栏JavaQ

深入Spring Boot (十):整合Mybatis框架详解

Spring Boot整合Mybatis支持XML配置和全注解两种方式,本篇将详细解说这两种方式的Mybatis整合,主要包含以下5部分内容: 数据源配置; 数...

4129
来自专栏腾讯Bugly的专栏

《Android外部存储》

| 导语 外部存储作为开发中经常接触的一个重要系统组成,在Android历代版本中,有过许许多多重要的变更。我也曾疑惑过,为什么一个简简单单外部存储,会存在存在...

4445
来自专栏PHP在线

手把手教会你小程序登录鉴权

3684
来自专栏安富莱嵌入式技术分享

【RL-TCPnet网络教程】第9章 RL-TCPnet网络协议栈移植(uCOS-III)

本章教程为大家讲解RL-TCPnet网络协议栈的uCOS-III操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配...

723
来自专栏about云

spark1.x升级spark2如何升级及需要考虑的问题

问题导读 1.spark2升级哪些内容变化? 2.升级中spark哪些没有发生变化? 3.cloudera中,spark1和spark2能否并存? 4.升级后...

9304
来自专栏逆向技术

调试器编写第一讲,调试器基本框架

                  调试器编写第一讲,调试器基本框架 今天开始调试器第一讲,调试器的基本框架,我们用过很多调试器,比如 WinDbg,Olly...

1915

扫码关注云+社区