精华内容
下载资源
问答
  • 详细设计说明

    万次阅读 多人点赞 2019-06-22 23:08:06
    本详细设计说明书是针对电子科大校园地图(UESTC Campus Map)小程序的项目编写。目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试做准备。...

    F.1 引言

    F.1.1  编写目的

          本详细设计说明书是针对电子科大校园地图(UESTC Campus Map)小程序的项目编写。目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试做准备。本详细设计说明书的预期读者为本项目小组的成员以及对该小程序感兴趣,在以后想对系统进行拓展和维护的人员。

    F.1.2  背景

    说明:

    a、待开发软件系统的名称:电子科大校园地图小程序(UESTC Campus Map)

    b、本项目的任务提出者:金成哲,陆冠臣,罗子建

               本项目的开发者:金成哲,陆冠臣,罗子建

               本项目的用户:在校学生,教师,校园游客

               本项目的计算中心:微信小程序

    F.1.3  定义

    (1) MVC Model View Controller ,是模型 ( model )-视图 ( view )-控

    制器(Controller)的缩写。

    (2) CURD 代表创建( Create )、更新 Update )、读取 Retrieve

    和删除( Delete )操作。

      (3)    UCM 是 UESTC Campus Map 的简称。

     

     

    F.1.4  参考资料

    (1)《软件工程》(第三版)·钱乐秋等编著·清华大学出版社

    (2)《设计模式之禅》)《设计模式之禅》(第二版)·秦小波著·机械工业出版社(第二版)·秦小波著·机械工业出版社

    (3)《玩转DjangoDjango 2.0》·黄永祥著·清华大学出版社》·黄永祥著·清华大学出版社

    (4)《数据库要求说明书》

    (5)《数据库设计说明书》

    (6)微信小程序开发文档

    F.2 程序系统的结构

    整体架构:整体架构设计演示如下:

                                           

     

    名称

    标识符

    说明

    客户端

    Client

    客户系统提供本地服务

    服务端

    Server

    向客户端提供资源,保存客户端数据

    数据库系统

    Database

    存储客户端资源及相关信息

    本地操作系统

    Local operating system

    客户端提供交互界面的服务

    电子科技大学统一身份认证系统

    Authentication system

    电子科技大学学生认证系统,提供学生认证平台

    微信服务器

    Wechat  server

    提供UCM的应用生态服务

    微信小程序后台管理系统

    Miniprogram admin system

    小程序开发者管理小程序的版本更新及用户数据分析

     

    客户端:采用 MVC 软件架构设计,框图演示如下

     

                   

     

    模型(即数据表):

    名称

    标记符

    说明

    标记点表

    Location

    记录校园地图的地点描述以及具体地理位置

    功能表

    Function

    记录标记点的功能信息以及标签分类

    轮播图表

    RollingImage

    记录某标记点的轮播图片

    讨论表

    Discussion

    记录用户发布讨论的内容信息

    评论表

    Comment

    记录用户参与评论的信息

    用户表

    User

    记录用户登录账户以及学生认证等基本信息

     

    控制:

    名称

    标记符

    说明

    网络请求

    Internet request

    提供连接服务,响应界面

    存储处理

    Storage Processing

    根据存储请求,将相关数据存储到对应数据表

    数据清洗

    Data cleaning

    根据内置算法设计,对数据表的数据进行再处理

     

    视图:

    名称

    标记符

    说明

    地图界面

    Map

    根据不同校区的需要,提供地图的功能介绍

    讨论界面

    Discussion

    给用户提供论坛讨论的服务,针对不同标记点发布讨论内容

    功能界面

    Function

    给对应标记点提供不同的功能介绍

    认证界面

    Authentication

    为区分不同用户,利用电子科大校园信息门户的平台,本小程序设计了一个校园身份认证的系统

    历史关注界面

    Historical Concerning

    为方便用户查看以前参与的讨论与功能的建设,故提供历史关注的服务

    轮播图界面

    Rolling Image

    为丰富用户对该标记点的认知与理解,提供对该标记点的轮播图展示服务

    登录界面

    login

    用户首次登录小程序

    服务端:

                                         

     

    名称

    标记符

    说明

    日志系统

    Logging System

    自动记录流式数据,各进程,异常信息

    网络模块

    Network module

    提供连接服务

    控制模块

    Controling module

    根据服务请求,进行不同模块的控制

    数据库操作模块

    Database operation module

    写入,查询,修改或删除数据库的信息

    F.3 网络模块

    F.3.1  程序描述

    网络模块主要是客户端对服务器的网络请求功能的模块化实现,整个客户端采用规范化的统一格式对服务器进行网络请求。主要是为了更好的鲁棒性以及可读性。

    F.3.2  功能

    功能范例:

     

    功能

    输入

    输出

    格式/请求

    校园身份认证

    openid、学号、密码

    codemsg

    identity

    json/POST

    微信登录

    code

    encryptedData

    iv

    code、msg、uid

    uNickName、uavaUrl:

    json/POST

    发布功能

    uid

    functionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    {functionID

    functioncontent

    functiondescription

    locationID

    locationdescription

    locationLatitude  

    locationLongitude}]

    json/POST

    发布讨论

    uid

    discussionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    discussionID  

    presenttime

    locationID

    locationLatitude

    locationLongitude

    ]

    json/POST

    评论他人

    uid

    uidor

    discussionID

    commentCode

    locationID

    code

    msg

    datatype

    commentID

    json/POST

    获取发布历史

    identity

    uid

    dataType

    code

    msg

    uid

    identity:

    dataType

    data:[

    discussionID

    discussionContent:                

    locationID

    locationLatitude

    locationLongitude

    imgUrls:[

    "https:********",          

    ]    

    ]    

    json/POST

    获取讨论列表

    locationID

    uid

    code

    msg

    dataType

    data:[

    {

    discussionID

    discussionCode

    discussioncontent:

    uNickName

    uavaUrl

    imgUrls:[]

    presenttime

    locationID

    locationLatitude

    locationLongitude

    comment:[

    {commentID

    commentcontent

    uNickName

    uorNickName}]}]

    json/POST

    获取功能列表

    uid

    locationID

    dataType

    code

    msg

    data:[{

    functionID:

    functionCode

    functioncontent

    functiondesription:

    locationID

    locationLatitud

    locationLongitude:

    }]

    json/POST

    获取轮播图

    uid

    string

    dataType

    code

    msg

    imgUrls:[

    "https://123.png",

    "https://124.png",]

    json/POST

    获取所有标记点

    uid

    dataType:

    code

    msg

    locationID:[]

    json/POST

    删除

    dataType

    uid

    dataType

    uid

    code

    msg:

    json/POST

    F.3.3  性能

    运行

    模块组合

    响应时间(ms)

    校园身份认证

    网络模块、数据库模块

    1000

    微信登录

    登录模块、数据库模块、网络模块

    500

    发布功能

    功能模块、数据库模块、网络模块

    200

     

    发布讨论

    数据库模块、讨论模块

    1000

    评论他人

    数据库模块、讨论模块、评论模块、网络模块

    200

     

    获取发布历史

    数据库模块、讨论模块、评论模块、功能模块、网络模块

    1000

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

    1000

     

    获取功能列表

    功能模块、网络模块、数据库模块

    300

    获取轮播图

    轮播图模块、数据库模块、网络模块

    1000+

    获取所有标记点

    数据库模块、网络模块、标记点模块

    200

    删除

    所有模块

    100

     

    添加标记点

    数据库模块、网络模块、标记点模块

    200

     

    F.3.4  输入项

    输入输出等参考功能F.3.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.3.5  输出项

    输入输出等参考功能F.3.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.3.6  算法

    1. API接口防止重放攻击和第三方滥用攻击算法:

    算法示例:

    字段名

    类型

    含义

    必填

    备注

    a

    text

    请求的字段

    True

     

    b

    text

    请求字段

    True

     

    appKey

    text

    客户端应用标识

    True

    一段唯一标识客户端的字符串

    salt

    text

    随机数(建议使用UUID)

    True

     

    timestamp

    long

    Unix时间戳(精确到秒)

    True

     

    sign

    text

    sha256签名

    True

    计算方法:sha256(a+b+appKey+salt+timestamp+密钥)

    例如:

    a:"123",

    b:"地图",

    appKey:"57673e9f4b774dd9a739ee668e38c0a1",

    salt:"66785bb6-2df8-5e7e-a51b-cb7d257738e5",

    timestamp:"1560761282",

    密钥:"651d-4bbf-350f-b477-fe1b",

    客户端利用sha256计算签名:

    sha256(123地图57673e9f4b774dd9a739ee668e38c0a166785bb6-2df8-5e7e-a51b-cb7d257738e51560761282651d-4bbf-350f-b477-fe1b)

    结果:423cb7cf98d7e11c4efa3ce042e4e4546ae342a565a460fd8443f814258d63b3

     

    服务器流程说明:

    服务器接收到数据后,首先验证appKey是否合法,然后从数据库中获取该appKey对应的密钥,然后再获取当前服务器的时间戳,计算t = 服务器时间戳-timestamp,若t>60,则是一条重放消息,若小于60,则开始验证签名,即服务器利用相同的算法计算请求的sha256,对比是否相同,若相同,则做下一步操作,否则这是一条非法请求,直接响应错误信息。

    F.3.7  流程逻辑

                                  

    F.3.8  接口
    用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一模块、参数赋值和调用方式,说明与本程序具有直接关系之数据结构(数据库、数据文卷)。

    F.3.9  存储分配

        无特别要求

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    服务器

    内存:50-100MB,

    硬盘:50GB

    适当情况下可以扩容,采用分布式集群的方式运行服务端

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.3.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.3.11  限制条件

    必须在连接互联网的情况下才能使用本模块,否则将提示网络异常信息。

    F.3.12  测试计划

    需要结合其它模块才能测试,此处不做说明。

    F.3.13  尚未解决的问题

    接口字段的模糊混淆处理,所以还是存在非法用户进行恶意发送脏请求的可能。

     

    F.4 日志模块

    F.4.1  程序描述

    小程序日志系统

    F.4.2  功能

    提供日志记录功能,为系统错误和恢复提供保障。

    F.4.3  性能

    日志信息分类

    (1)等级由低到高:debug<info<warn<Error<Fatal;

    (2)区别:

    debug :级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系统运行状态的东东;

    info : 重要,输出信息:用来反馈系统的当前状态给最终用户的;

    warn:可修复,系统可继续运行下去;

    Error: 可修复性,但无法确定系统会正常的工作下去;

    Fatal: 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重。

    F.4.4  输入项

         日志输入针对不同的日志类别有所区别。

    F.3.5  输出项

    1. 日志文档
    2. 文档格式

    log.error(“[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].”);

    log.error(String.format(“[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].”, params));

    log.error(“[Some Error Msg] happens to 错误参数或内容 when [in some condition]. [Probably Because]. [Probably need to do].”);

    log.error(String.format(“[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].”, parameters));

    [Probably Reason]. [Probably need to do]. 在某些情况下可以省略; 在一些重要接口和场景下最好能说明一下。

    每一条错误日志都是独立的,尽可能完整、具体、直接说明何种场景下发生了什么错误,由什么原因导致,要采用什么措施或步骤。

    F.3.6  算法

    日志分析方法:

    1.特征字符分析(Signature-based)

         在日志中查找已知的漏洞特征,去发现黑客攻击行为, 是最简单的方法。

    2.访问频率分析(Frequency analysis)

    在黑客攻击过程中,需要对系统进行各种特定的访问,这些访问与正常用户访问有很大差别, 每种攻击行为都有不同的特征。

    通过对大量用户访问数据的挖掘,可以发现这些异常访问行为。

     

    日志检测方法:

    1.漏洞扫描检测:

    黑客使用漏洞扫描器对 Web 应用进行扫描,可以用匹配 User-Agent 特征的方式进行检测。如果自定义扫描器的 User-Agent,这个方法的效果可能会不好。但可匹配扫描器扫描的行为,

    ·访问目标离散

    ·来源地址相对固定

    ·访问结果大多数失败

    根据这些特征对 Web 访问日志进行分析,即可提取出来可疑的扫描行为。

    2.暴力破解检测:

    暴力破解密码的特征是:

    ·相对固定的来源地址

    ·对登录URL短时间内高频率发起请求

    ·与漏洞扫描的区别主要是目标 URL 固定。

    3.webshell 检测

    如果黑客发现系统漏洞,并且利用漏洞获得上传权限,会向系统 上传 webshell。webshell 是一种后门程序,此程序由脚本语言编写, 可以在 Web 服务器上运行,攻击者可以通过网页执行系统命令,读写 系统文件。从访问行为的角度看,webshell 通常:

    ·只有攻击者访问

    ·来源地址相对固定

    ·访问时间相对集中

    ·无内嵌其他页面

    通过这些特征即可提取出可疑文件,再通过人工确认的方式,检测出 webshell。

    F.3.7  流程逻辑

    日志产出 ——>采集——>储存——>分析——>储存——>可视化

    F.3.8  接口

    结构设计:

                                          

     

     

    日志工作流:

                                           

    F.3.9  存储分配

    文件

    存储

    备注

    log

    2GB

    每天24:00进行当天日志归档

    F.3.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.3.11  限制条件

    无特别要求

    F.3.12  测试计划

       结合其它模块进行测试

    F.3.13  尚未解决的问题

       日志自动化分析工具的集成

     

    F.5    数据库操作模块

    F.5.1  程序描述

       数据库操作的封装模块

    F.5.2  功能

       对数据库的增删查改进行功能封装,提供统一的接口

    F.5.3  性能

    功能操作

    模块组合

    资源占用时间(ms)

    校园身份认证

    网络模块、数据库模块

     

    20

    微信登录

    登录模块、数据库模块、网络模块

     

    20

    发布功能

    功能模块、数据库模块、网络模块

     

    20

    发布讨论

    数据库模块、讨论模块

     

    100

    评论他人

    数据库模块、讨论模块、评论模块、网络模块

     

    20

    获取发布历史

    数据库模块、讨论模块、评论模块、功能模块、网络模块

     

    100

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

     

    100

    获取功能列表

    功能模块、网络模块、数据库模块

     

    50

    获取轮播图

    轮播图模块、数据库模块、网络模块

     

    20

    获取所有标记点

    数据库模块、网络模块、标记点模块

     

    20

    删除

    所有模块

     

    50

    添加标记点

    数据库模块、网络模块、标记点模块

     

    20

     

    F.5.4  输入项

    F.5.5  输出项

    操作反馈

    F.5.6  算法

    多表查询算法:

    一、交叉连接

      交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。

    例如:如果希望得到学生表和选课表两个关系模式的乘积,查询语句为:

          SELECT *

          FROM学生表CROSS JOIN选课表

    二、内连接

      内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。

    例如:要查询每个已经选课的学生的情况,查询语句为

    SELECT*

    FROM学生表INNER JOIN选课表ON学生表.学号=选课表.学号

    分类:

    1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

    2)不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

    3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

    三、自然连接

      如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询就称为自连接查询。同一张表在FROM字句中多次出现,为了区别该表的每一次出现,需要为表定义一个别名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。

     例如:要求检索出学号为20210的学生的同班同学的信息,查询语句为

     SELECT学生表.*

     FROM学生表JOIN学生表AS学生表1ON学生表.班级=学生表1.班级

     WHERE学生表1.学号='20210'

     

    四、外连接

      内连接的查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足连接条件的元组信息。比如,我们想知道每个学生的选课情况,包括已经选课的学生(这部分学生的学号在学生表中有,在选课表中也有,是满足连接条件的),也包括没有选课的学生(这部分学生的学号在学生表中有,但在选课表中没有,不满足连接条件),这时就需要使用外连接。外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式。

    3种外连接:

    1)左外连接(LEFTOUTER JOIN)

      如果在连接查询中,连接管子左端的表中所有的元组都列出来,并且能在右端的表中找到匹配的元组,那么连接成功。如果在右端的表中,没能找到匹配的元组,那么对应的元组是空值(NULL)。这时,查询语句使用关键字LEFT OUTERJOIN,也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而不关左端的表中的数据是否满足连接条件,均输出左端表中的内容。

      例如:要查询所有学生的选课情况,包括已经选课的和还没有选课的学生,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表LEFT OUTER JOIN选课表ON学生表.学号=选课表.学号

    左外连接查询中左端表中的所有元组的信息都得到了保留。

    2)右外连接(RIGHTOUTERJOIN)

      右外连接与左外连接类似,只是右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而不管右端表中的数据是否满足连接条件,均输出表中的内容。

      例如:同上例内容,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表RIGHTOUTERJOIN选课表ON学生表.学号=选课表.学号

    右外连接查询中右端表中的所有元组的信息都得到了保留。

    3)全外连接(FULL OUTER JOIN)

      全外连接查询的特点是左、右两端表中的元组都输出,如果没能找到匹配的元组,就使用NULL来代替。

      例如:同左外连接例子内容,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表FULL OUTER JOIN选课表ON学生表.学号=选课表.学号

    F.5.7  流程逻辑

    F.5.8  接口

    F.5.9  存储分配

    模块

    存储

    备注

    数据库

    内存:1GB

    硬盘:50GB

    必要可扩容

     

    F.5.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.5.11  限制条件

      数据库不在本地的需要访问网络

    F.5.12  测试计划

     

     

     

    测试名称

    值说明

    输入方式

    写入数据库

    1.每个数据表的测试数据应包括:输入完整,不完整,字段非法等情况

    2.多表插入,单表插入

    自动输入

    查询数据库

    单表查询,多表查询

    自动输入

    从数据库删除

    自动输入

    F.5.13  尚未解决的问题

      大数据量下的数据库的分库分表操作

     

    F.6 讨论模块

    F.6.1  程序描述

        对用户讨论功能的封装,提供统一接口。

    F.6.2  功能

        将讨论功能进行封装,负责与底层数据库交互,提供统一的添加,修改和删除接口。

    F.6.3  性能

    功能

    模块组合

    延时(ms)

    发布讨论

    数据库模块、讨论模块

    网络:1000

    数据库:100

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

    网络:1000

    数据库:100

     

    F.6.4  输入项

    操作

    输入

    输出

    格式

     

    发布讨论

    uid

    discussionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    discussionID  

    presenttime

    locationID

    locationLatitude

    locationLongitude

    ]

    json/POST

     

    获取讨论列表

    locationID

    uid

    code

    msg

    dataType

    data:[

    {

    discussionID

    discussionCode

    discussioncontent:

    uNickName

    uavaUrl

    imgUrls:[]

    presenttime

    locationID

    locationLatitude

    locationLongitude:

    comment:[

    {commentID

    commentcontent

    uNickName

    uorNickName}]}]

    json/POST

                 

    F.6.5  输出项

    F.6.4  输入项

    F.6.6  算法

    F.6.7  流程逻辑

    (1)发布

     

    (2)获取

    F.6.8  接口

    F.6.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.6.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.6.11  限制条件

    F.6.12  测试计划

    结合评论模块、网络模块、数据库模块进行测试

    F.6.13  尚未解决的问题

     

    F.7 评论模块

    F.7.1  程序描述

    评论模块主要是对校园论坛讨论的评论模块,通过发布评论,用户可以在线参与标记点的讨论建设。评论模块,提供一个评论收集与显示的界面。

    F.7.2  功能

    用户在评论界面,根据界面信息的渲染,对某些标记点的相关讨论评论进行展示。其逻辑为用户对某特定标记点发出评论列表的请求,向讨论表获取对应的评论列表,然后得到对应信息更新到界面中去。

    如果用户想要发布某些评论,发出发布评论请求,将评论更新到评论表中。

    功能

    输入

    输出

    格式/请求

    评论他人

    uid

    uidor

    discussionID

    commentCode

    locationID

    code

    msg

    datatype

    commentID

    json/POST

     

    F.7.3  性能

     

    运行

    精度

    响应时间(ms)

    评论某人

    数据库的写入与查询,精度较高

    200

     

     

     

    F.7.4  输入项

    输入输出等参考功能F.7.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.7.5  输出项

    输入输出等参考功能F.7.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.7.6  算法

    F.7.7  流程逻辑

    F.7.8  接口

    F.7.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.7.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.7.11  限制条件

    评论界面类似微信朋友圈的风格,但是只有评论内容的显示,对评论内容的文字长度也有部分限制。

    F.7.12  测试计划

    结合讨论模块,网络模块一起测试,这里不做解释。

    F.7.13  尚未解决的问题

     

    F.8 功能模块

    F.8.1  程序描述

    功能模块主要是对校园固定标记点进行功能信息的采集与标签化的模块,通过发布功能系统,采集用户对标记点的功能模块化介绍,以及标签的集成处理,得到对应的功能介绍。

    F.8.2  功能

    用户在功能界面,根据界面信息的渲染,对某些标记点的功能信息进行展示。其逻辑为用户对某特定标记点发出功能列表的请求,向功能表获取对应的功能列表,然后得到对应信息更新到标记点表中。

    如果用户想要发布某些功能信息,发出发布功能请求,将功能描述更新到功能表中。

    功能

    输入

    输出

    格式/请求

    获取功能列表

    uid

    locationID

    dataType

    code

    msg

    data:[{

    functionID:

    functionCode

    functioncontent

    functiondesription:

    locationID

    locationLatitud

    locationLongitude

    }]

    json/POST

    发布功能

    uid

    functionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    {functionID

    functioncontent

    functiondescription

    locationID

    locationdescription

    locationLatitude  

    locationLongitude}]

    json/POST

    F.8.3  性能

    运行

    精度

    响应时间(ms)

    发布功能

    根据对应的数据项多少,其性能可能略有些区别

    200

     

    得到功能列表

    数据库的表项查询精度较高,查询速度响应较快

    20

    F.8.4  输入项

    输入输出等参考功能F.8.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.8.5  输出项

    输入输出等参考功能F.8.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.8.6  算法

    F.8.7  流程逻辑

    F.8.8  接口

    F.8.9  存储分配

     

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.8.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.8.11  限制条件

          无

    F.8.12  测试计划

    结合网络模块、数据库模块进行测试

    F.8.13  尚未解决的问题

     

    F.9 标记点模块

    F.9.1  程序描述

    标记点模块主要负责针对电子科技大学校园地图界面上出现的标记点进行管理。

    F.9.2  功能

    地图界面的展示的所有标记点就是标记点模块的功能,用户自动产生查询所有标记点的请求,标记点模块根据特定语句查询标记点表中的所有标记信息,并根据界面显示需要,渲染出对应的标记点状态信息。

    功能

    输入

    输出

    格式、请求

    获取所有标记点

    uid

    dataType:

    code

    msg

    locationID:[]

    json/POST

    F.9.3  性能

    运行

    精度

    响应时间(ms)

    标记点管理

    数据库的表项查询精度较高,查询速度响应较快

    20

     

    F.9.4  输入项

    输入输出等参考功能F.9.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.9.5  输出项

    输入输出等参考功能F.9.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.9.6  算法

    F.9.7  流程逻辑

     

     

    F.9.8  接口

    F.9.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.9.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.9.11  限制条件

    对于合理的标记点,后台管理系统必须要有初步审查的过程,管理员手动编辑标记点的合法性,普通用户无法主动更新及添加合法标记点。

    F.9.12  测试计划

    测试名称

    值说明

    输入方式

    写入数据库

    1.每个数据表的测试数据应包括:输入完整,不完整,字段非法等情况

    2.多表插入,单表插入

    自动输入

    查询数据库的所有标记点

    多表查询

    自动输入

    从数据库删除非法标记点

    自动输入

    F.9.13  尚未解决的问题

    用户无法根据实际需要添加更多标记点,后台管理员系统需要手动编辑合法标记点,提供用户固定的标记点信息推送。

     

     

     

     

     

    F.10 微信授权模块

    F.10.1  程序描述

    微信授权模块主要是请求微信用户的授权,以及得到用户微信基本信息。基于微信平台,对用户进行授权请求,根据登录凭证校验请求对用户进行校验。根据用户校验的自定义登录态,写入用户信息表中。

    F.10.2  功能

    用户在微信授权界面,根据微信系统的载入提示,根据启用协议的凭证验证请求结果对该小程序的启用结果进行永久存储,对得到授权的用户信息写入用户信息表。

    功能

    输入

    输出

    格式/请求

    微信登录

    code

    encryptedData

    iv

    codemsguid

    uNickNameuavaUrl:

    json/POST

    F.10.3  性能

    运行

    精度

    响应时间(ms)

    微信授权

    基于微信平台的认证,对用户的凭证请求做出正确的响应

    500

     

    F.10.4  输入项

    输入输出等参考功能F.10.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.10.5  输出项

    输入输出等参考功能F.10.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.10.6  算法

    数据签名校验方法

        为了确保开放接口返回用户数据的安全性,微信会对明文数据进行签名。开发者可以根据业务需要对数据包进行签名校验,确保数据的完整性。

        通过调用接口(如 wx.getUserInfo)获取数据时,接口会同时返回 rawData、signature,其中 signature = sha1( rawData + session_key )

    开发者将 signature、rawData 发送到开发者服务器进行校验。服务器利用用户对应的 session_key 使用相同的算法计算出签名 signature2 ,比对 signature 与 signature2 即可校验数据的完整性。

    如 wx.getUserInfo的数据校验:

    接口返回的rawData:

     

    {

      "nickName": "Band",

      "gender": 1,

      "language": "zh_CN",

      "city": "Guangzhou",

      "province": "Guangdong",

      "country": "CN",

    "avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"

    }

    用户的 session-key:

    HyVFkGl5F5OQWJZZaNzBBg==

    用于签名的字符串为:

     

    {"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==

    使用sha1得到的结果为

      75e81ceda165f4ffa64f4068af58c64b8f54b88c

    加密数据解密算法:

        接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和 unionId),接口的明文内容将不包含这些敏感数据。如需要获取敏感数据,需要对接口返回的加密数据(encryptedData) 进行对称解密。 解密算法如下:

    (1)对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。

    (2)对称解密的目标密文为 Base64_Decode(encryptedData)。

    (3)对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是    16字节。

    (4)对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返 回。

    F.10.7  流程逻辑

     

    F.10.8  接口

    F.10.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.10.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.10.11  限制条件

    如需获取用户头像、昵称等信息,会弹出登录弹窗引导用户授权,开发者在交互设计上兼容弹窗,避免出现多个弹窗叠加、重复提示等不好的体验。

    F.10.12  测试计划

    测试名称

    值说明

    输入方式

    请求微信服务器(服务器网络模块)

    客户端从微信获取的code

      和加密数据

    自动输入

    F.10.13  尚未解决的问题

          无

     

     

    F.11 校园身份认证模块

    F.11.1  程序描述

    校园身份认证模块主要是对校园用户的身份进行认证,基于电子科技大学信息门户平台,对学生以及教职工进行认证,根据认证结果对用户提供对应服务。根据实际用户身份的认证状态,写入用户信息表中。

    F.11.2  功能

         用户在校园身份认证界面,提供对应正确的学号以及密码,小程序的认证模块基于电子科大的信息门户系统,对其输入身份信息进行验证,根据认证结果对用户提供对应的服务,并将其认证结果写进用户信息表。

     

    功能

    输入

    输出

    格式/请求

    校园身份认证

    openid、学号、密码

    code、msg

    identity

    json/POST

    F.11.3  性能

    运行

    精度

    响应时间(ms)

    校园身份认证

    基于电子科大信息门户的认证精度,对正确的学号及密码能够正确认证

    1000

     

    F.11.4  输入项

    输入输出等参考功能F.11.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.11.5  输出项

    输入输出等参考功能F.11.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.11.6  算法

    用户密码加密算法采用AES对称加密,加密流程如下:

    解密流程(encryptedData 为加密数据):

    (1)对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。

    (2)对称解密的目标密文为 Base64_Decode(encryptedData)。

    (3)对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是    16字节。

    (4)对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返 回。

    F.11.7  流程逻辑

                          

    F.11.8  接口

    F.11.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.11.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.11.11  限制条件

    需要根据电子科技大学信息门户验证系统保持一致,如果电子科技大学信息门户验证界面有部分更新(如多次输入后,可能需要用户输入图片验证码),小程序的校园身份认证模块也要及时更新。

    F.11.12  测试计划

    测试名称

    输入项

    输入方式

    结果

    说明

    请求电子科技大学信息门户验证平台

    学号或工号,密码

    手动输入

    验证成功

    多次请求电子科技大学信息门户验证平台

    学号或工号,密码,验证码

    手动输入

    验证成功

    多次输入错误,强制输入图片验证码

    F.11.13  尚未解决的问题

       无

     

     

    展开全文
  • 数据库设计说明

    千次阅读 2019-01-09 12:03:26
    数据库设计说明
                   


     

    数据库设计说明书


    1引言


    1.1编写目的

         数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。

         预期的读者:系统开发人员、系统测试人员和系统维护人员

    1.2背景

        开发项目的名称:机房收费系统

        数据库的名称:charge

        数据库系统:SQL SERVER 2008

        任务提出者:机房管理人员

       用户:机房值班教师


    1.3定义

     

         数据库:用来保存系统数据的后台应用软件。

         字段:表中各个记录的名字

          表:不同字段汇总成的集合。


    1.4参考资料


        [1]《软件工程事务》刘学俊 李继芳 刘汉中 编著 浙江大学出版社

                    [2]数据库设计说明书(GB8567——88

    2外部设计

    2.1标识符和状态


    表名

    标识符或名称

    描述信息

    状态

    basicdata

    无标识符

    用来设定上机消费状况

    暂时使用

    online

    Idcard

    用来保存学生上机信息

    暂时使用

    OnworkUserid

    用来保存值班教师值班情况

    暂时使用

    student_information

    Idcard

    学生个人信息

    暂时使用

    Userinfo

    Userid

    保存值班教师个人信息

    暂时使用

     

    Recharge

    Userididcard

    学生充值信息

    暂时使用

    Returninfo

    Userid idcard

    学生退卡信息

    暂时使用

    Day

    无表示符

    日账单汇总

    暂时使用


    2.2使用它的程序

     

    应用程序

    访问的数据库

    版本号

    系统登录

    Userinfo

    1.0

    学生查看余额

    student_information

    1.0

    修改密码

    student_information

    1.0

    注册

    student_information

    1.0

    退卡

    Returninfo

    1.0

    充值

    Rechargestudent_information

    1.0

    收取金额查询

    Recharge

    1.0

    学生基本信息维护

    student_information

    1.0

    操作员工作记录

    Onwork

    1.0

    结账

    Day

    1.0

    周结账单

    Day

    1.0

    日结账单

    Day

    1.0

    基本数据设定

    Userinfo

    1.0

    添加和删除用户

    Userinfo

    1.0


    2.3约定                

       写出数据库内数据的命名情况。

    2.4专门指导

      准备从事此数据库的生成、从事此数据库的测试、维护人员提供专门的之道。

    2.5支持软件

         数据设计编辑工具”navicat for mysql”

         数据库自带工具”mysql command line client”

         管理员工具:navicat for mysql


    3结构设计

    3.1概念结构设计


     管理员



     


     


    操作员


    3.2逻辑结构设计


    1. 基本数据设定(准备时间、至少上机时间、固定用户、临时用户、递增时间、最少金额)

    2. 学生上机记录(卡号 上机时间 下机时间 上机日期 下机日期 余额 备注)

    3. 正在值班教师(教师号 登录日期 登录时间 机器名)

    4. 学生信息(卡号 学号 班级 年级 注册时间 注册日期 性别)

    5. 用户信息(教师号 用户名 用户级别 注册日期 注册时间 注销日期 注销时间 密码)

    6. 充值记录(卡号 教师号 充值日期 充值时间 充值金额结账状态)

    7. 退卡记录(卡号 教师号退还日期 退还时间 退还金额 结账状态)

    8. 日结账单(上期金额本期消费 本期退卡 本期充值 本期汇总 结账时间)


     


    3.3物理结构

    数据库内部:


    字段

    类型

    日期

    Date

    信息

    Charn

    金额

    货币


    4    运用设计

    4.1数据字典设计

       

    1数据项:是不可再分割的数据单位。

    数据项条目

    数据项名称:学生卡号

    别名:idcard

    类型长度:char(11)

    描述:学生的编号

    数据项条目

    数据项名称:教师号

    别名:useridinfo

    类型长度:char(11)

    描述:教师的编号

     

                                      

    数据项条目

    数据项名称:上机时间数据项条目

    别名:login_time

    类型长度:datetime

    描述:学生或教师上机的时间

    数据项条目

    数据项名称:注册时间

    别名:register_time

    类型长度:datetime

    描述:描述学生或教师注册时间

      

     

     

     

     

    数据项条目

    数据项名称:上机日期

    别名:login_date

    类型长度:datetime

    描述:学生或教师上机日期

    数据项条目

    数据项名称:注册日期

    别名:register_date

    类型长度:datetime

    描述:学生或教师注册日期

     

    数据项条目

    数据项名称:姓名 

    别名:name

    类型长度:char(10)

    描述:学生或教师的真实名字

    数据项条目

    数据项名称:性别

    别名:sex

    类型长度char(2)

    描述:人员的性别

     

    数据项条目

    数据项名称:年级

    别名:grade

    类型长度:char10

    描述:描述学生的年级

    数据项条目

    数据项名称:密码

    别名:password

    类型长度:char(11)

    描述:教师登录系统密码

     

    数据项条目

    数据项名称:充值金额

    别名:rechargemoney

    类型长度:numeric(10,2)

    描述:学生每次的充值钱数

     

     

    数据项条目

    数据项名称:退卡金额

    别名:returnmoney

    类型长度:numeric(10,2)

    描述:学生每次的退卡钱数

     

    2)数据结构:反应数据之间的组合关系

    数据结构条目

     数据结构名称:学生信息

     含义说明:定义了有关学生相关信息

     组成:年级班级性别姓名卡号学号等

     

    性别教师号注册日期注销日期

    数据结构条目

     数据结构名称:基本数据设定

     含义说明:定义了有关学生消费的问题

     组成:至少上机时间、至少金额等

    数据结构条目

     数据结构名称:教师信息

     含义说明:定义了有关教师的相关信息

     组成:性别教师号注册日期注销日期等

     

    数据结构条目

     数据结构名称:退卡记录

     含义说明:定义了有关学生退卡的记录

     组成:卡号退卡金额退卡时间退卡日期

     

    数据结构条目

     数据结构名称:充值卡记录

     含义说明:定义了有关学生充值记录

     组成:卡号充值金额充值日期充值时间

     

    3数据流:是数据结构在系统内的传输路径

    数据流条目

     数据流名称:日结账单

     简述:汇总了有关今天学生的消费情况

    数据来源:充值卡记录、退卡记录

    数据流向:周账单

     数据结构:充值记录退卡记录

     

     

     

     

     


     

    4)数据存储:是数据结构停留或保存的地方,也是数据流的来源和去向之一。

    数据存储条目

    数据存储名称:日结账单表

    描述:在每天结账的时候产生的

    组成:卡号上机时间上机日期

     

    数据存储条目

    数据存储名称:学生上机记录表

    描述:在学生上机后产生的表

    组成:卡号上机时间上机日期

     

    处理过程条目

    处理过程名称:用户登录

    输入数据:用户名密码

    输出数据:登录是否成功信息

    处理逻辑:检测用户名和密码是否与数据库中的一致,如果不一致则给出相应的提示信息。

    描述:在每天结账的时候产生的

    组成:卡号上机时间上机日期

     

    5)处理过程

     

    处理过程条目

    处理过程名称:学生信息维护

    输入数据:学生的各种信息

    输出数据:学生信息

    处理逻辑:对学生信息修改,从而在数据库中更新

    描述:在每天结账的时候产生的

    组成:卡号上机时间上机日期

     

     

    处理过程条目

    处理过程名称:结账

    输入数据:购卡数目充值金额 退卡金额消费金额

    输出数据:本期金额汇总

    处理逻辑:通过各种金额的消费和充值从而计算出最后的金额汇总

    描述:在每天结账的时候产生的

    组成:卡号上机时间上机日期

     

    6)外部实体

    外部实体条目

    名称:管理员

    说明:后台管理的主要实体

    输入数据流:后台管理

    输出数据流:各种检索信息

     

     

    外部实体条目

    名称:用户

    说明:前台应用层面的主要实体

    输入数据流:前台管理

    输出数据流:各种检索结果




    4.2安全保密设计


     


    表信息

    权限

    学生信息表

    操作员、管理员

    充、退金额

    管理员

    日、周账单

    管理员

    操作员信息

    管理员

    通过在对数据库中不同的表设置访问级别,来设置数据库的访问权限,从而保证数据库的安全性,防止被修改。

    
               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  •  总体设计又称概要设计,即确定系统的具体实现方案、给出软件的模块结构、编写总体设计说明书。  详细设计又称过程设计,这一步的工作,就是要对系统中的每个模块给出足够详细的 过程性描述。这种描述不是程序的...

          需求分析确定了系统的开发目标,下一步工作就是软件设计。软件设计可以进一步地 分为两个阶段:总体设计和详细设计。

         总体设计又称概要设计,即确定系统的具体实现方案、给出软件的模块结构、编写总体设计说明书。

          详细设计又称过程设计,这一步的工作,就是要对系统中的每个模块给出足够详细的 过程性描述。这种描述不是程序的书写,而是用一些工具来表示每个模块,所以这种描述 是不能够在计算机上运行的。

          软件设计在软件工程生存期的阶段:

            

          概要设计与详细设计从管理和技术点划分,如下图:

    概要设计与详细设计的具体内容划分,如下图:

     

    个人理解:

         总体设计(概要设计)侧重点在于整体的把控,即整个软件中模块的组成以及各个模块的调用关系。通过结构化设计方法(SD方法)来进行描述,让使用者可以很清晰的看到概要设计人员想要表达的内容,最后形成的文档是概要设计说明书。

        详细设计则是侧重于每个独立模块中的数据结构,算法,接口,测试的设计,通过各种软件开发工具辅助来完成,如:程序流程图(框图),N-S结构流程图(盒图),PAD图,PDL图,判定表,Jackson图等,最后形成的文档是详细设计说明书。

     

    展开全文
  • 软件设计说明书模板

    万次阅读 2018-12-29 09:46:48
    软件项目的设计说明书是软件开发测试中重要的环节,一份好的设计说明不仅可以为系统设计、开发、测试提供指导,还可以收获研发领导、甲方、技术合作交流人员的信任。 设计模板 封面 包含系统项目名、版本、时间等 ...

    简述

    软件项目的设计说明书是软件开发测试中重要的环节,一份好的设计说明不仅可以为系统设计、开发、测试提供指导,还可以收获研发领导、甲方、技术合作交流人员的信任。

    设计模板

    封面
    包含系统项目名、版本、时间等
    目录

    1. 引言
      1.1 背景
      项目来源、意义等
      1.2 文档阅读者
      领导–指导软件开发;项目负责人–指导、讨论;设计人员–为系统设计作参考;开发人员–为开发作参考;测试人员–为测试作参考;项目其它相关人员–了解软件功能。
      1.3 撰写日期与版本
      修改日期、版本号、变更内容简述
      1.4 文档约定
      简称、全称、英文名、含义
    2. 综合描述
      2.1 产品状况
      2.2 运行环境
      软、硬件环境等
      2.3 外部接口
      硬件–网口、串口等;软件–通信协议、数据库类型、函数库、操作系统等
    3. 软件设计说明
      3.1 总体框架(也可单独成一个大章节)
      各类图表,如系统图、架构图、UML类图、时序图、输入输出接口流图等
      3.2 子模块的设计
      3.2.1 模块功能
      3.2.2 模块结构
      结构组成图
      3.2.3 输入输出
      3.2.4 处理流程
      3.2.5 异常处理
      3.2.6 界面原型
      以上子模块选择性填充即可,不需要全部罗列
    4. 需求的可追踪性
    5. 注释/附件

    结尾

    这个设计模板个人还不是非常满意,欢迎有经验的项目管理人员留言指导。

    展开全文
  • 概要设计说明

    千次阅读 热门讨论 2013-11-27 11:47:47
    04概要设计说明书 1引言   1.1编写目的 本阶段完成系统的大致设计并明确系统的数据结构与软件结构。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源...
  • android项目详细设计说明

    热门讨论 2011-07-13 23:53:54
    这里是在android项目开发中,所用到的详细设计说明书模板。
  • 软件设计说明书模版(申请软件著作权可供参考)

    万次阅读 多人点赞 2019-06-20 14:59:22
    1.引言 1.1 编写目的 1.2 项目背景 ...3.2.1 软件概要设计说明 3.2.3 基本设计概念和处理流程 3.3 软件的详细设计 3.3.1 系统结构 3.3.2 模块设计说明 3.3.3 爬虫模块 3.3.4 日志模块 3.3.5 数...
  • 软件工程之概要设计说明

    千次阅读 2019-09-13 09:37:58
    概要设计说明书 1引言 1.1编写目的 说明编写这份概要设计说明书的目的,指出预期的读者。 本阶段完成系统的大致设计并说明系统的数据结构与软件结构,本概要设计说明书的目的就是进一步细化软件设计阶段得出的...
  • 数据库设计说明书的编写

    千次阅读 2019-06-17 19:46:34
    G.1 引言 G.1.1 编写目的 数据库的表结构设计是整个项目开发中一个非常重要的环节,一个良好的数据库设计,可以提高开发效率,方便系统维护,并且为...我们也希望通过写数据设计说明书,规范数据名称、数据范围...
  • 以下是需求分析说明书、详细设计说明书、概要设计说明书样例 需要详细资料的去 http://bbs.csai.cn/BBS/view.asp?ID={CA9329C0-93C5-4417-9170-452FF61E8CDB}&page=1下载 XX系统概要设计说明书 目录 ...
  • 概要设计说明书模版

    千次阅读 2017-11-21 13:59:53
    概要设计说明书 1引言 1.1编写目的 说明编写这份概要设计说明书的目的,指出预期的读者。 1.2背景 说明: a. 待开发软件系统的名称; b. 列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站...
  • 05详细设计说明

    千次阅读 热门讨论 2015-10-10 20:27:09
    详细设计说明书 1引言 1.1编写目的 本阶段在用户的需求分析的基础上,对机房收费系统做出概要设计。 编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、...
  • 架构设计之如何写架构设计说明

    千次阅读 2015-06-04 13:55:09
    在架构师整个的成长过程中,必定会经历编制架构设计说明书、评审架构设计说明书以及根据业务需求分析设计系统架构的三个过程。作为一个架构师,我想尝试一下根据这三个过程对不同能力需要,写一次系列文章,包括...
  • APP设计说明书概述

    万次阅读 2016-02-27 09:37:39
    文档说明 本文档描述的是某某某APP各页面的显示内容和功能要求。 APPV1.0更新说明 APP页面全部重新设计某页面的Banner某明细页面我的等级页面常见问题页面通知栏用户数据统计...注册页设计说明 填写手机号码校
  • 概要设计和详细设计说明书的区别

    万次阅读 2015-04-21 10:14:07
    概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。   3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部
  • 【软件工程】详细设计说明

    万次阅读 热门讨论 2018-03-30 20:37:55
    详细设计说明书 1引言 1.1编写目的 说明编写这份详细设计说明书的目的,指出预期的读者。 该文档实在概要设计的基础上,进一步的细化系统结构,展示了软件啊结构的图标,物理设计,数据结构设计,及算法设计,...
  • Android APP 设计说明书模板

    万次阅读 2016-04-28 12:26:32
    因公司申请软件著作权需要,我临时转行成为文员,写设计说明书,测试报告什么的。分享一下我的设计说明书部分纲要,仅供参考。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,235
精华内容 40,894
关键字:

设计说明