精华内容
下载资源
问答
  • 概要设计说明书

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


    04概要设计说明书


    1引言

    1.1编写目的


    本阶段完成系统的大致设计并明确系统的数据结构与软件结构。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源程序开发的软件表示。


    预期读者:软件测试员、程序开发员、软件分析员


    1.2背景


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


    开发者:周小强


    用户:机房管理人员


    1.3定义


    逻辑结构:简称数据结构,用来实现用户观点的系统结构的表示。


        管理员:系统的最高级权限的用户。


    1.4参考资料


    《软件工程概论》 李存珠编著 南京大学计算机系出版 20018


    2总体设计

    2.1需求规定


    a.由于本系统用在学校的机房,使用频繁,因此可靠性要高、安全性要高、具有定期备份数据功能,防止断电或不可抗力的破坏对数据的破坏。


    b.系统的运行速度要快


    2.2运行环境


     1)操作系统在windowXP以上


     2)客户端要配备VBSQL等应用开发软件


    2.3基本设计概念和处理流程


      一般用户流程


    操作员流程


    管理员流程



     2.4结构


    暂无


    2.5功能器求与程序的关系


     本产品根据功能不同对功能进行分类。


    1. 高——必须实现功能,用户有明确的功能定义和要求。

    2. 中——应该实现的功能,用户的功能定义和要求可能是模糊、不具体的、或低约束,但是这类功能的缺少会导致用户的不满意,因此这类功能的具体需求应当由需求分析人员诱导用户产生并明确。

    3. 尽量实现的功能,并根据开发进度进行取舍,但这类功能的实现将会增加用户的满意度。


    序号

    功能名称

    功能需求标识

    优先级

    简要描述

    1

    用户登录子系统

    用户登录

    A

    用户按等级进行登录

    2

    一般用户子系统

    一般用户管理

    C

     

    进行学生一般信息的查询

    3

    操作员子系统

    操作员管理

    A

    负责学生上机

    4

    管理员子系统

    管理员管理

    A

    负责账目汇总


    2.6人工处理过程


       需要时刻的备份数据,以上不可抗拒因素导致数据的丢失。


    2.7尚未解决的问题


      暂无


     


     3接口设计


    3.1用户接口


    暂无


    3.2 外部接口


       暂无


    3.3内部接口


      程序内的各个模块之间采用函数调用、参数传递、返回值得方式进行信息传递。


    4运行设计

     4.1运行模块设计组合


      系统是以VB的开发工具下开发完成的,多窗口的环境下通过调用模块讷讷狗实现不同窗体的连接。


    4.2运行控制

       暂无

    4.3运行时间

        确保上机流畅。

     

      5系统数据结构设计


    5.1逻辑结构设计要点


    程序中设计到的表如下:


    功能描述

    databasic

    实现用户话费细节操作

    Student_infomation

    保存学生相关信息

    userinfo

    记录系统用户信息

    rechargeinfo

    学生充值记录

    returninfo

    学生退卡记录

    日账单

    学生日消费记录汇总

    Onwork

    正在值班教师记录

    Online

    学生上机记录


     

    5.2物理结构设计要点


     属于数据库内部结构,在此就不在多提。


    5.3数据结构与程序的关系


      通过在数据库内建立主外键来关联这些数据。


     6.系统出错处理设计

    6.1出错信息


     


    错误类型

    错误提示

    输入信息不合法

    输入信息不正确,请再次输入

    用户名或密码错误

    相应的错误提示,请再次输入

    程序运行错误

    给予相应的出错提示


    6.2补救措施


      a.当出现断电或者电脑出现故障(死机、蓝屏)的话,可以通过以前备份的形式对数据进行回复。


     b.当用户需要在此增加功能的时候,可以通过在原系统的基础上进行扩充。


    6.3系统维护设计


        1)在数据库设计的时候,学生信息与学生上机、学生充值、学生退卡记录都不在一个表中,防止信息删除或更新的时候,信息的不一致重叠罗嗦。


        2)在程序内部通过建立模块,不同窗体调用一个模块的形式进行设计,减少了代码的操作量,提高了运行的速度。


     


     




    
    展开全文
  • 图书馆管理系统设计说明书

    万次阅读 多人点赞 2014-11-06 12:59:28
    软件设计说明书 文档编号:QY2014007-LY7 文档信息:图书馆信息管理系统软件设计说明书 文档类别:管理文档 密 级:机密 版本信息:1.0 建立日期:2014-05-20   创 建 人: 审 核 者: 批 准 人:...

       图书馆信息管理系统

    软件设计说明书

    文档编号:QY2014007-LY7

    文档信息:图书馆信息管理系统软件设计说明书

    文档类别:管理文档

    密    级:机密

    版本信息:1.0

    建立日期:2014-05-20

     

    创 建 人:

    审 核 者:

    批 准 人:

    批准日期:

     

    编辑软件:Microsoft Office 2003 中文版

    WPS 文字

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    目录

    1引言 47

    1.1编写目的 47

    1.2背景 47

    1.3定义 47

    1.4参考资料 47

    2总体设计 47

    2.1需求规定 47

    2.2运行环境 47

    2.3基本设计概念和处理流程 47

    2.4结构 48

    2.5功能器求与程序的关系 48

    2.6人工处理过程 48

    2.7尚未问决的问题 48

    3接口设计 48

    3.1用户接口 48

    3.2外部接口 48

    3.3内部接口 48

    4运行设计 48

    4.1运行模块组合 48

    4.2运行控制 49

    4.3运行时间 49

    5系统数据结构设计 49

    5.1逻辑结构设计要点 49

    5.2物理结构设计要点 49

    5.3数据结构与程序的关系 49

    6系统出错处理设计 49

    6.1出错信息 49

    6.2补救措施 49

    6.3系统维护设计 50

    7程序1(标识符)设计说明 52

    7.1程序描述 52

    7.2功能 53

    7.3性能 53

    7.4输人项 53

    7.5输出项 53

    7.6算法 53

    7.7流程逻辑 53

    7.8接口 53

    7.9存储分配 53

    7.10注释设计 53

    7.11限制条件 54

    7.12测试计划 54

    7.13尚未解决的问题 54

    8程序2(标识符)设计说明 54


     


    1引言

    1.1编写目的

    1. 本文档是“图书馆信息管理系统”的设计说明书。

    2. 本文档供所有与此系统相关的人员使用,包括设计人员、开发人员、测试人员、维护人员。

    3. 方便用户与设计、开发人员之间的信息交流,确定开发者的基本设计实现思路想法是否满足实现条件。

    4. 本文档可以作为系统分析员进行系统详细设计的出发点。

    5. 本文档可以作为系统分析员向程序员分配代码设计任务的依据。

    1.2背景

    1. 待开发的软件系统的名称:青院图书馆信息管理系统

    2. 本项目的任务提出者:青院图书馆馆长

    3. 开发者:

    4. 用户:系统管理员、图书馆相关工作人员、学校教职工、注册学生

    5. 实现该软件的计算中心或计算机网络:计算中心

    6. 该软件系统同其他系统或其他机构的基本的相互来往关系:数据相互调用关系 

    1.3定义

    1. 非功能性需求:所有用户在使用本系统之前都必须通过自己的用户名和密码登录,才能进行其他操作。该子系统主要负责判断登录时判断用户名和密码的正确性。

    2. 图书信息管理系统:该子系统主要负责图书的录入、查询、修改和删除功能的实现。

    3. 读者信息管理系统:包括读者信息的添加、查询、修改、删除等功能。

    4. 读者客户端系统:该子系统主要负责读者管理自己的个人信息和修改密码信息,还支持读者查询检索图书和预约图书还能续借一次已借图书

    5.   管理员管理系统:该子系统主要负责添加、查询、修改、删除所有用户的信息,还支持管理员查看个人信息、修改密码、重新登陆、退出系统等功能。


    6.    前台操作子系统:该子系统主要负责借书时需要输入读者的用户号和图书ISBN;如果该图书可借,则正常借书,提示借阅成功;如果该书不可借,则弹出窗口提示。还书时需要输入读者的用户号和图书ISBN;若正常还书,点击确定即可;若读者违章,可填写违章记录,并处以罚款。

    1.4参考资料

    1. GB/T8567——2006《计算机软件文档编制规范》;

    2. 《软件工程导论(第五版)》 张海藩编著 清华大学出版社

    3. 《图书馆信息管理系统 ——需求分析与规格说明》

    4. 《软件工程》 李浪、朱雅莉、熊江主编  华中科技大学出版社;

    5. 《软件文档写作教程》 马平、黄冬梅编著  电子工业出版社;

    6. 《青院图书馆管理规章制度》

    2总体设计

    2.1需求规定

    (1)图书信息输入输出:图书编号,每本图书都有一个唯一的编号,它是唯一有效区分图书的方式;图书名称,每本书的名称,是区分图书的的方法之一;作者,出版社,出版时间,图书定价,如果每本书的出版时间超过了七年,则需要图书管理员申请更新图书,是区分每本书是否为已过时很久需要更新图书的标准,图书定价是如果读者违章阅读还书时需要缴纳的罚金的额度标准;库存量,是图书馆一共有该图书的数量;已借数目,当前图书借出去的数量;可借数目,当前图书还剩余可借的数目,是图书管理员进行图书清点的最方便快捷的方法。

    (2)用户输信息入输出:用户编号,每个用户都有一个唯一的编号,是有效区分用户的唯一标识;密码,使用户登录的必须前提,只有用户编号和密码都输入正确才能登陆系统开始使用;用户名,每个用户的真实姓名,是区分用户的方式之一;性别,年龄,院系,专业,电话,地址,是用户资料的组成部分,用来完善用户资料,方便管理员进行管理;入校时间,离校时间,是用户的有效期范围,只有在校用户才能使用该系统,用户从入学时分配用户编号,知道用户离校此编号作废,不能再使用;

    (3)借书还书输入输出:读者的用户编号,用户姓名,图书编号,图书名称,是查看用户所借(所还)图书信息是否正确的方式;借书时间,结束时的日期;还书时间,还书时的日期;借阅时长,从借书成功开始算起,一直到还书的日期所经历的时间长度。

    (4)罚金输入输出:若读者违章,则需要缴纳罚金,额度由系统管理员设定,由前台操作员代收。

     

    2.2运行环境

    2.2.1硬件环境:

     处理器:Intel双核心处理器:支持多线程,二级缓存为2MB或4MB,主频133MHZ或266MHZ

     内存:2GB 支持DDR2 

     硬盘:不少于80GB

     电源:有内置电源以及外置电源,外置电源能够提供突然断电提供时间保存数据作用

     

    2.2.2软件环境:

    支持运行环境:JDK7.0

    操作系统: Windows 7/8/server Liux

    数据库系统:Sql Server 2008 /MySQL 6.0

    编译程序: ecliples/My ecliples

     

    2.3基本设计概念和处理流程

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1.前台操作管理系统系统

    (1)功能描述

    ① 功能概要

    该系统的最终用户为图书馆的管理员前台操作员,可以供前台操作员进行图书状态查询、借书管理、图书预定管理、还书管理、读者借阅信息管理5类功能

    ② 开始条件

    前台操作员已经登录本系统

    (2)处理流程见下图

     

     

     

     

     

     

     

     

     

    Yes

                                        

     

     

     

                      No

     

     

    Yes

                                              No

     

                          Yes                                   No

     

     

                                              Yes                              No

     

     

     

                                                                 Yes

     

     

     

                                                                               Yes

     

     

     

     

    2.管理员管理系统

    (1)功能描述

    ① 功能概要

    该系统的最终用户为系统管理员,可以系统管理员进行添加删除用户、查询修改用户信息、查询修改个人信息、登陆重新登录、退出5类功能

    ② 开始条件

    系统管理员已经成功登录本系统

    (2)处理流程见下图

     

     

     

     

     

     

     

                                                   No

     

     

                                   Yes

     

     

     

     

     

                  No

     

     

       Yes                                No

     

     

                                                                  No

                         Yes

     

                                              Yes

     

     

     

                                                                    Yes

     

     

     

     

    3.图书管理系统

    (1)功能描述

    ① 功能概要

    该系统的最终用户为图书管理员,可以供图书管理员进行添加删除图书信息、查询修改图书信息、查询图书状态、图书维护共4类功能

    ② 开始条件

    图书管理员已经成功登录本系统

    (2)处理流程见下图

     

     

     

                                                      No

     

     

                                 Yes

                                 

     

     

     

     

     

                    No

     

     

       Yes                             No

     

     

     

                      Yes                                      No

     

     

                                             Yes

     

     

     

                                                                     Yes

     

     

     

     

     

     

     

    4.用户管理系统

    (1)功能描述

    ③ 功能概要

    该系统的最终用户为所有用户,可以供图书管理员进行用户信息查询、用户密码查询修改、登陆和重新登录3类功能

    ④ 开始条件

    图书管理员已经成功登录本系统

    (2)处理流程见下图

     

     

     

     

                                                         No

     

     

     

                                        Yes

     

     

     

     

     

    NoNo                 No

     

     

       Yes                                             No

     

     

     

     

                                 Yes

     

     

                                                              Yes

     

     

     

     

     

     

     

     

     

    5.读者用户客户端系统

    (1)功能描述

    ⑤ 功能概要

    该系统的最终用户为读者用户,可以供读者进行查询修改读者密码、查询读者借阅信息、图书预定,查询检索图书、登陆重新登录5类功能

    ⑥ 开始条件

    读者用户已经成功登录本系统

    (2)处理流程见下图

     

     

                                                  No

     

                                Yes

     

     

                No

     

    Yes                       No

     

                 Yes                           No

     

                                 Yes                         No

     

                                                  Yes

     

                                                            Yes

     

     

     

    2.4结构

    程序的模块划分及功能对应关系如下表所示:

    1.前台操作管理系统

     

    No.

    模块名称

    功能需求

    程序ID

    1

    图书状态信息查询

    查询图书状态信息

    proscenium-*

    2

    借书管理

    有效注册用户可以借书

    未注册用户不能借书

    Proscenium

    *

    3

    预订管理

    查看读者的图书预订信息

    Proscenium

     _*

    4

    还书管理

    读者未违章正常还书

    读者违章交罚金

    Proscenium

    _*

    5

    读者借阅信息查询

    查询读者借阅信息

    Proscenium

    _*

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

                             表2-1 前台操作系统结构

    2.管理员管理系统

     

    No.

    模块名称

    功能需求

    程序ID

    1

    添加删除用户

    添加删除读者

    添加删除管理员

    Administrators

    -*

    2

    查询修改用户信息

    查询修改读者信息

    查询修改管理员信息

    Administrators

    *

    3

    查询修改个人信息

    查询修改自己登陆密码

    Administrators

     _*

    4

    登陆、重新登录

    登陆系统

    Administrators

     _*

    5

    退出系统

    退出登录

    Administrators

    _*

     

     

     

     

     

     

     

     

     

     

                           

      

                                表2-2管理员管理系统结构

     

     

     

     

     

     

    3.图书管理系统

    No.

    模块名称

    功能需求

    程序ID

    1

    添加删除图书信息

    新书入库登记

    旧书出库

    Book_*

    2

    查询修改图书信息

    修改图书信息

    Booko_*

    3

    查询图书状态

    查询图书状态信息

    Book_*

    4

    图书维护

    维护图书

    Book_*

     

     

     

     

     

     

         

                                                             

                            表2-3 图书管理系统结构

    4.用户管理系统

    No.

    模块名称

    功能需求

    程序ID

    1

    查询用户信息

    查询个人信息

    User-*

    2

    修改用户密码

    修改个人登录密码

    User-*

    3

    登陆重新登录

    登陆系统

    User-*

    4

    退出系统

    退出登录

    User-*

     

     

     

     

     

     

     

                            表2-4 用户管理系统结构

    5.读者客户端系统

    No.

    模块名称

    功能需求

    程序ID

    1

    查询修改读者密码

    修改自己密码

    Reader _*

    2

    查询读者借阅信息

    查看自己借阅信息

    Reader_*

    3

    未借图书预订

    提前预定未借图书

    Reader _*

    4

    图书检索

    一般检索

    高级检索

    Readert _*

    5

    登陆重新登录

    登陆系统

    Reader_*

    6

    退出系统

    退出登录

     

     

     

     

     

     

     

     

     

     

                            表2-5 读者客户端系统结构

     

     

     

     

     

     

    2.5功能器求与程序的关系

    本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:

     

    proscenium-*

    Administrators-*

    Book_*

    User-*

    Reader _*

    图书状态信息查询

     

     

     

     

    借书管理

     

     

     

     

    预订管理

     

     

     

     

    还书管理

     

     

     

     

    读者借阅信息查询

     

     

     

     

    添加删除用户

     

     

     

     

    查询修改用户信息

     

     

     

     

    查询修改个人信息

     

     

     

     

    登陆、重新登录

     

     

     

     

    退出系统

     

     

     

     

    添加删除图书信息

     

     

     

     

    查询修改图书信息

     

     

     

     

    查询图书状态

     

     

     

     

    图书维护

     

     

     

     

    查询用户信息

     

     

     

     

    修改用户密码

     

     

     

     

    登陆重新登录

     

     

     

     

    退出系统

     

     

     

     

    查询修改读者密码

     

     

     

     

    查询读者借阅信息

     

     

     

     

    未借图书预订

     

     

     

     

    图书检索

     

     

     

     

    登陆重新登录

     

     

     

     

    退出系统

     

     

     

     

                                表2-6 功能器求与程序的关系

    2.6人工处理过程

    采购图书入库时分配图书编号,读者用户入校时分配用户编号,用户离校后废弃此用户编号

    2.7尚未问决的问题

    方便快捷的为用户分配用户编号和密码,批量处理用户信息,以方便一届毕业后更快捷的作废此届所有毕业生的用户编号密码

     

    3接口设计

    3.1用户接口

    (1)用户进入青院图书馆管理系统主页面时,输入用户名与密码,只有都输入正确才能进入系统。

    (2)在做新建和更新数据信息的操作时,必须输入合法内容才能成功的进行数据控制操作。

    3.2外部接口

    支持一般的Pentium4或更高的计算机,支持打印机和条型码扫描器,通过JDBC支持Sql数据库,客户端必须安装此系统提供的浏览器,需要安装图书条形码扫描器和借书证条形码扫描器。

    3.3内部接口

    (1)通过面向对象的语言设计类,在public类中实现调用,类之间采用封装;

    (2)图书管理系统,为图书查询和借书还书提供数据,必须得先有图书数据后才能使用查询借书还书模块;

    (3)图书管理员和系统管理员必须先为系统提供前台操作员的基本数据信息和系统设置信息,前台操作员才能使用其模块;

     

    4运行设计

    4.1运行模块组合

    (1)图书馆信息管理系统的所有5个模块在服务器启动时完成所有模块的加载工作,随时等候调用。

    (2)不同的用户根据权限的不同调用不同的模块。

     

    4.2运行控制

    (1) 在页面上,通过鼠标的点击触发相应的操作。

    (2) 在页面上可以通过 Tab键实现换行、Enter键实现确认等键完成特定的功能。

     

     

    4.3运行时间

    (1) 响应时间:统计、查询数据数据的相应时间控制在15秒内,借书证条形码扫描时间控制在2秒之内。

    (2) 数据更新处理时间:联网数据库在网络正常无故障的情况下,插入一条数据和删除一条数据的数据更新操作响应时间控制在0.3/条之内;

    (3) 运行时间:系统程序启动和初始化时间控制在3秒之内,用户登录验证时间控制在3秒内。

     

    5系统数据结构设计

    5.1逻辑结构设计要点

    根据需求分析报告和概要设计阶段的分析和计划,得出R-R图如下图所示

     

     

     

     

     

     

     

     

                        

     

     

     

     

                           设置

     

                                                                 

                                         管理                      管理

                  管理

     

     

     

     

                                         管理

     

     

     

                  管理

     

                                          参与

     

     

     

                                         参与

                 管理

     

     

     

     

     

     

              管理

                                             参与

     

     

     

                        图5-1 图书信息管理系统E-R

     

     

    青院图书信息管理系统总共设计出如下9个表:

    字段名

    说明

    类型

    备注

    是否可以为空

    Anum

    编号 

    Varchar(12)

    主键

    AName

    姓名

    Varchar(30)

     

    Sex

    性别

    Varchar(2)

    只能是男或女,不能选择其他类型

    Age

    年龄

    int

    只能是整数,输入其他类型系统报错

    Home

    家庭地址

    Varchar(50)

     

    TelNum

    电话

    Varchar(11)

    全部为数字

    Position

    身份

    Varchar(20)

     

    Seniority

    工龄

    int

    必须为整型数

    EnterTime

    入校时间

    datatime

    时间格式YYYY-MM-DD

    Password

    密码

    Varchar(10)

     

    AType

    用户类型

    Varchar(10)

     

                              

                            表5-1 系统管理员表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    UserType

    身份

    Varchar(10)

     

    Unum

    编号号

    Varchar(12)

    主键 

    Name

    用户名

    Varchar(30)

     

    Sex

    性别

    Varchar(2)

    只能是男或女,其他提示错误信息

    Age

    年龄

    int

    只能是整数,输入其他提示错误信息错

    Home

    家庭地址

    Varchar(50)

     

    TelNum

    电话

    Varchar(11)

    全部为数字,其他类型提示错误信息

    Position

    职务

    Varchar(20)

     

    EnterTime

    入校时间

    datatime

    时间格式YYYY-MM-DD

    UPassword

    密码

    Varchar(10)

     

     

                               表5-2 前台操作员表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    RType

    身份

    Varchar(10)

     

    Rnum

    读者编号

    Varchar(12)

    主键 

    Name

    姓名

    Varchar(30)

     

    Sex

    性别

    Varchar(2)

    只能是男或女,不能选择其他类型

    Age

    年龄

    int

    只能是整数,输入其他类型系统报错

    EnterTime

    入校时间

    datatime

    时间格式YYYY-MM-DD

    LeftTime

    离校时间

    datatime

    时间格式YYYY-MM-DD

    Major

    专业

    Varchar(30)

     

    Tel

    电话号码

    Varchar(11)

     

    Identitycard

    借书证编号

    Varchar(15)

    全部为数字

    Password

    密码

    Varchar(10)

     

     

                                表5-3 读者表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    LType

    身份

    Varchar(10)

     

    Lnum

    编号

    Varchar(12)

    主键

    Name

    姓名

    Varchar(30)

     

    Sex

    性别

    Varchar(2)

    只能是男或女,不能选择其他类型

    Age

    年龄

    int

    只能是整数,输入其他类型系统报错

    Home

    住址

    Varchar(50)

     

    Tel

    电话

    Varchar(11)

    全部为数字

    Position

    职务

    Varchar(20)

     

    Password

    密码

    Varchar(10)

     

     

                                表5-4 图书管理员表

     

     

     

    字段名

    说明

    类型

    备注

    是否可以为空

    BookNum

    图书编号

    Varchar(20)

    主键 

    BookName

    书名

    Varchar(40)

     

    Writer

    作者

    Varchar(40)

     

    Publisher

    出版社

    Varchar(30)

     

    Price

    定价

    double

    保留两位小数

    Date

    出版时间

    datatime

    时间格式 

    YYYY-MM-DD

    BookType

    图书类型

    Varchar(30)

     

    Inventory 

    图书库存

    int

    只能是整数,输入其他类型系统报错

    Brrownum

    可借数量

    int

    只能是整数,输入其他类型系统报错

    Brrowednum

    已借数量

    int

    只能是整数,输入其他类型系统报错

     

                                  表5-5 图书表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    BrrowBookcard

    借书证号

    Varchar(15)

    主键

    BookiNum

    图书编号

    Varchar(20)

    主键

    Bnum

    借书编号

    Varchar(12)

    主键 可以为空但跟学号必须选填一个

    Bookname

    书名

    Varchar(40)

     

    BrrowTime

    借书时间

    datatime

    时间格式YYYY-MM-DD

    RenewBook

    是否续借

    boolean

    布尔类型,选是或否

     

                                   表5-6 借书表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    BrrowBookcard

    借书证号

    Varchar(15)

    主键

    BookiNum

    图书编号

    Varchar(20)

    主键

    Bnum

    借书编号

    Varchar(12)

    主键 可以为空但跟学号必须选填一个

    Bookname

    书名

    Varchar(40)

     

    BrrowTime

    借书时间

    datatime

    时间格式YYYY-MM-DD

    Error

    是否违章

    boolean

    布尔类型,选是或否

     

                                   5-7 还书表

    字段名

    说明

    类型

    备注

    是否可以为空

    BrrowBookcard

    借书证号

    Varchar(15)

     

    BrrorNum

    预约编号

    Vchar18

    主键

    RName

    读者姓名

    Varchar(30)

     

    Bookname

    图书名称

    Varchar(40)

     

    Writer

    作者

    Varchar(40)

     

    SexPublisher

    出版社

    Varchar(2)

     

    Date

    出版时间

    datatime

    时间格式YYYY-MM-DD

    BookType

    图书类别

    Varchar(30)

     

     

                                 表5-8 图书预约表

     

    字段名

    说明

    类型

    备注

    是否可以为空

    Money

    违章罚金

    money

    金钱类型,其他类型提示错误信息

    APassword

    管理员密码

    Varchar(10)

     

     

                                 表5-9 系统属性表

     

    5.2物理结构设计要点

    图书信息管理系统在MySql上只建立一个物理数据库,命名为LibraryDatabase

     

    5.3数据结构与程序的关系

    说明各个数据结构与访问这些数据结构的形式。

    (1)图书资料维护系统关联表 Book

    (2)前台管理系统关联表 BookBookOrderBorrowAndReturnUserBorrowAndReturnOperator

    3)管理员权限管理系统关联表AdministratorLibrarianBookOrderBorrowAndReturnUserBorrowAndReturnOperator

    (3)用户管理系统关联表 User

    (4)读者客户端系统关联表 BookOrderUserBorrowAndReturn

     

    6系统出错处理设计

    6.1出错信息

    易出错属性

    输出信息形式

    含意

    出错错误

    处理方法

    BookDate

    YYYY-MM-DD

     

    出版日期

     

    用户没有按照要求格式输入

    弹出对话框提示用户输入格式错误

    BookInventory 

     

    整型

    图书库存

     

    用户输入非整型数

    将输入数字标记为红色提醒用户输入错误

    Brrownum

     

    整型

    可借图书数量

     

    用户输入非整型数

    将输入数字标记为红色提醒用户输入错误

    Sex

     

     

    字符型男或女

    性别

     

    用户输入非男或女

    设计成下拉列表,只有男和女两个选项

    Age

     

    整型

    年龄

     

    用户输入非整型数

    将输入数字标记为红色提醒用户输入错误

    Identitycard

     

    字符型

    借阅证编号

     

    用户输入非数字

    弹出对话框提示用户输入信息错误

    TelNum

     

    字符型

    电话

     

    长度不对或输入其他字符

    将输入数字标记为红色提醒用户输入错误

    Money

    金钱型

    违章罚金

    输入其他字符

    将输入数字标记为红色提醒用户输入错误

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

                               

     

                                    表6-1 易出错数据信息表

     

     

     

     

    6.2补救措施

    1.一天为一个周期进行周期性的对数据备份,硬盘做为备份设备,使用Sql数据库提供的数据进行备份,以防止数据损坏或者丢失。

    2.一但系统遭到破坏,图书管理员使用备份文件进行手动恢复。

    3.系统一但遭到恶意攻击系统停止运行并且恢复到最近一次执行操作的数据状态进行数据的备份与恢复。

     

    6.3系统维护设计

    1.定期重启服务器,保证服务器每周重启一次,重启之后进行复查,确认服务器已经启动了,确认服务器上的各项服务均恢复正常。对于没有成功启动或服务未能及时恢复的情况要采取相应措施妥善解决。

    2.服务器优化,包括整理系统空间和性能优化。定期删除系统备份文件,卸载不常用的组件。最小化C盘文件。在性能优化方面,删除多余的开机自动运行程序;减少预读取,减少进度条等待时间;调整虚拟内存;内存优化;修改CPU的二级缓存;修改磁盘缓存等。

     

     

    7程序1(标识符)设计说明

     

    7.1程序描述

    图书管理系统主要服务于图书管理员,系统管理员统一创建图书管理员登录的账户和密码,图书管理员根据账户和密码登录图书馆信息管理系统后,可以进入图书管理系统,在相关页面上进行添加删除图书信息、查询修改图书信息、查询图书状态、图书维护等操作。

    程序特点:图书管理系统为图书信息管理系统的子程序,本程序在图书管理员成功登录后进入系统页面,该模块常驻系统内存以方便图书管理员的使用,无覆盖要求,并发处理事务。

     

     

    7.2功能

     

    输入                           处理                       输出

     

     

     

     

     

     

                          图7-1 用户信息查询IPO

    输入                           处理                       输出

     

     

     

     

     

     

     

                         图7-2 图书查询IPO

     

    输入                             处理                      输出

     

     

     

     

     

     

                           图7-3 读者还书IPO

     

    7.3性能

    7.3.1  精度性能

    (1)图书信息管理系统所有输入输出的数据精确到小数点后两位,货币金额数据类型均按实数保存,在显示处理时保留小数点后2位,借阅时间、超期时间均是时间类型,图书数量按整数计算;

    (2)时间日期的输入输出格式为YYYY-MM-DD;

     

    7.3.2 灵活性性能

    a. 系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充,维护;

    b. 该应用产品能在windos7/windows server/windows8/Liux操作系统平台环境下正常运行,并且在以后的需求变化时能方便的进行功能扩充和模块的增加;

    c. 精度和有效时限基于安装的硬件的最低要求;

    d. 改进可以通过本开发小组进行更新升级维护软件。

     

    7.3.3 时间特性性能

    1)响应时间:统计、查询数据数据的相应时间控制在15秒内,借书证条形码扫描时间控制在2秒之内。

    2)数据更新处理时间:联网数据库在网络正常无故障的情况下,插入一条数据和删除一条数据的数据更新操作响应时间控制在0.3/条之内;

    3)运行时间:系统程序启动和初始化时间控制在3秒之内,用户登录验证时间控制在3秒内。

     

    7.4入项

     

    标识

    名称

    数据的类型和格式

    输入方式

    输入媒体

    输入数据的来源

    安全保密条件

    BrrorwBookcard

    借书证号

    Varchar(15)

    手动输入或扫码

    手工或扫描仪

    读者信息库

    BookNum

    图书编号

    Varchar(20)

    手动输入或扫码

    手工或扫描仪

    图书信息库

    BookName

    书名

    Varchar(40)

    自动填充

    或手动输入

    系统自动填充

    图书信息库

    BrrowTime

    借书时间

    Datatime

    YYYY-MM-DD

    自动填充

    或手动输入

    系统自动填充

    借书当天系统日期

                         

                           表7-1 借书输入项表

    标识

    名称

    数据的类型和格式

    输入方式

    输入媒体

    输入数据的来源

    安全保密条件

    BrrorwBookcard

    借书证号

    Varchar(15)

    手动输入或扫码

    手工或扫描仪

    读者信息库

    BookNum

    图书编号

    Varchar(20)

    手动输入或扫码

    手工或扫描仪

    图书信息库

    BrrowTime

    还书时间

    Datatime

    YYYY-MM-DD

    自动填充

    或手动输入

    系统自动填充

    还书当天系统日期

                           表7-2 还书输入项表

     

    7.5输出项

    标识

    名称

    数据的类型和格式

    输出方式

    输出媒体

    说明

    安全保密条件

    BorrowBookcard

    借书证号

    Varchar(15)

    表格

    显示器

    输出15位整数

    BookNum

    图书编号

    Varchar(20)

    表格

    显示器

    输出20位整数

    Rnum

    读者编号

    Varchar(12)

    表格

    显示器

    输出12位整数

    Bookname

    书名

    Varchar(40)

    表格

    显示器

    BrrowTime

    借书时间

    Datatime

    YYYY-MM-DD

    表格

    显示器

    输出借书当天时间

     

                            表7-3 借书输出项表

     

    标识

    名称

    数据的类型和格式

    输出方式

    输出媒体

    说明

    安全保密条件

    BorrowBookcard

    借书证编号

    Varchar(15)

    表格

    显示器

    输出15位整数

    BookNum

    图书编号

    Varchar(20)

    表格

    显示器

    输出20位整数

    Rnum

    读者编号

    Varchar(12)

    表格

    显示器

    输出12位整数

    BookName

    书名

    Varchar(40)

    表格

    显示器

    BrrowTime

    借书时间

    Datatime

    YYYY-MM-DD

    表格

    显示器

    输出借书当天时间

    ReturnTime

    还书时间

    Datatime

    YYYY-MM-DD

    表格

    显示器

    输出还书当天时间

    ReBorrow

    是否续借

    boolean

    表格

    显示器

    读者选择是否续借

    ReturnError

    是否违章

    Varchar(40)

    表格

    显示器

    违约处罚

     

                              表7-4 还书输出项表

    7.6算法

    详细说明本程序所选用的算法,具体的计算公式和计算步骤。

    (1)图书检索:应用了SQL 数据库的select BookNameBook form Book where BookNum = @BookNum and BookName = @BookName算法,如果存在该书,则返回该书信息放入检索信息集合中并以表的形式显示给用户,不存在系统则提示无此书信息。

    (2)读者借书:当读者借书时,前台操作员用扫描仪读取读者借阅证信息和图书条码信息。系统通过Java APIjavax.comm jar包中的BarCodeScanner构造器方法来读取条码信息,系统调用JavaBean组件采用JDBC连接数据库用select * from BookOrder where ?=?的查询方式检索数据库查询图书信息和读者信息,如果图书可借且读者合法系统用insert into BorrowAndReturn values()来生成借阅登记信息,并写入数据库中,查询读者借阅信息时只需调用select * from BookBorrowAndReturn ?=? 即可查询读者具体地读者借阅情况,读者续借图书时系统调用update BookBorrowAndReturn set time=?修改图书的到期时间并调用insert into BorrowAndReturn values()插入读者续借信息。

    7.7流程逻辑

     

     

     

     

     

     

     

     

     

     

               

                              J

     

                            Yes

                                                     No

     

                               Yes

     

                                                    No

     

     

     

     

     

     

     

                                图7-4 借书流程逻辑图

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

                                                            No

     

                                 Yes

     

                                                    No

     

                               Yes

     

     

     

     

     

     

     

                            图7-5 还书流程逻辑图

     

     

     

     

     

     

     

    7.8接口

     

     

     

                           图 7-6 图书管理系统接口

     

    7.9存储分配

     

    本系统无特殊存储要求。

     

    7.10注释设计

    (1)在程序首部用/*······*/做多行注释

    2)用//做单行注释

    7.11限制条件

     (1)硬件条件:

     处理器:Intel双核心处理器:支持多线程,二级缓存为2MB或4MB,主频133MHZ或266MHZ

     内存:2GB 支持DDR2 

     硬盘:不少于80GB

     电源:有内置电源以及外置电源,外置电源能够提供突然断电提供时间保存数据作用

    (2)软件条件:

    软件环境:JDK7.0

    操作系统: Windows 7/8/server Liux

    数据库系统:Sql Server 2008 /MySQL 6.0

    编译程序: ecliples/My ecliples

     

     

    7.12测试计划

    本程序只对部分重要功能做测试计划,借书管理和还书管理的测试计划如下:

    (1)借书管理测试计划:

    技术要求:黑盒测试

    输入数据:通过条形码扫描器输入图书编号和读者借书证编号

    预期结果:输入正确的图书编号时能显示该图书信息,再输入有效注册用户编号,确定借书之后显示借书成功,增加一条该用户的借书信息

    驱动模块:前台操作系统借书管理模块

    桩模块:无

    (2)还书管理测试计划:

    技术要求:黑盒测试

    输入数据:通过条形码扫描器输入图书编号和读者借书证编号

    预期结果:输入正确的读者借书证编号和图书编号,查询出当前读者用户的借书信息,并判断读者是否违章,若违章,告知读者罚金数并由前台操作员代收罚金,若读者未违章,则还书成功,产生一条读者还书信息

    驱动模块:前台操作系统还书管理模块

    桩模块:无

     

     

    7.13尚未解决的问题

    方便快捷的为用户分配用户编号和密码,批量处理用户信息,以方便一届毕业后更快捷的作废此届所有毕业生的用户编号密码

     

    8程序2(标识符)设计说明

    用类似F7的方式,说明第2个程序乃至第N个程序的设计考虑。

     

    展开全文
  • 领域驱动实践总结二:架构分析与代码设计 领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体...

    目录

    领域驱动实践总结二:架构分析与代码设计

    一、微服务架构模型的对比与选择

    (一)整洁架构

    (二)六边形架构

    (三)DDD 分层架构

    1.用户接口层

    2.应用层

    3.领域层

    4.基础层

    5.从三层架构向 DDD 分层架构演进

    (四)三种微服务架构模型的对比和分析

    二、领域驱动设计分层架构与微服务代码模型

    (一)代码模型总目录结构

    1.微服务一级目录结构

    2.用户接口层目录结构、职能和代码形态

    3.应用层目录结构、职能和代码形态

    4.领域层目录结构、职能和代码形态

    5.基础层层目录结构、职能和代码形态

    (二)应用层的领域对象分析

    1.实体方法的封装

    2.领域服务的组合和封装

    3.应用服务的组合和编排

    (三)领域层的领域对象分析

    1.设计实体

    2.找出聚合根

    3.设计值对象

    4.设计领域事件

    5.设计领域服务

    6.设计仓储

    (四)代码模型强调内容

    第一点:聚合之间的代码边界一定要清晰。

    第二点:你一定要有代码分层的概念。

    三、正确理解微服务的边界

    (一)逻辑边界

    (二)物理边界

    (三)代码边界

    四、正确认识服务和数据在微服务各层的协作

    (一)正确认识服务的协作

    1. 服务的类型

    2. 服务的调用(三类主要场景)

    微服务内跨层服务调用

    微服务之间的服务调用

    领域事件驱动

    3. 服务的封装与组合

    (二)正确认识服务数据的协作

    1.基础层数据协作

    2.领域层数据协作

    3.应用层数据协作

    4.用户接口层数据协作

    5.前端应用数据协作

    参考书籍、文献和资料


    领域驱动实践总结二:架构分析与代码设计

    领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计。

    微服务拆分困境产生的根本原因:不知道业务或者微服务的边界到底在什么地方。

    DDD 核心思想:通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。

    对于领域驱动设计的学习做的总结主要写三篇博客,主要包括三部分:基本理论总结与分析、架构分析与代码设计、具体应用设计分析,主要参考的资料为极客时间的欧创新架构师的《DDD》实战,其他参考书籍在文章下方的参考书籍中。

    本次主要总结DDD架构分析与代码设计:

    一、微服务架构模型的对比与选择

    微服务架构模型现有的选择模型包括:整洁架构、CQRS 和六边形架构、DDD 分层架构等。

    (注:CQRS架构之前博客中有讲,本次不做分析)

    每种架构模式虽然提出的时代和背景不同,但其核心理念都是为了设计出“高内聚低耦合”的架构,轻松实现架构演进。

    DDD 分层架构的思想使架构边界变得越来越清晰,它在微服务架构模型中,占有非常重要的位置。建议选择DDD 分层架构

    (一)整洁架构

    在整洁架构里,同心圆代表应用软件的不同部分,从里到外依次是领域模型、领域服务、应用服务和最外围的容易变化的内容,比如用户界面和基础设施。

    整洁架构最主要的原则是依赖原则,它定义了各层的依赖关系,越往里依赖越低,代码级别越高,越是核心能力。外圆代码依赖只能指向内圆,内圆不需要知道外圆的任何情况。

    (二)六边形架构

    六边形架构的核心理念是:应用是通过端口与外部进行交互的。

    也就是说,在下图的六边形架构中,红圈内的核心业务逻辑(应用程序和领域模型)与外部资源(包括 APP、Web 应用以及数据库资源等)完全隔离,仅通过适配器进行交互。它解决了业务逻辑与用户界面的代码交错问题,很好地实现了前后端分离。

    六边形架构各层的依赖关系与整洁架构一样,都是由外向内依赖。

    六边形架构的一个端口可能对应多个外部系统,不同的外部系统也可能会使用不同的适配器,由适配器负责协议转换。这就使得应用程序能够以一致的方式被用户、程序、自动化测试和批处理脚本使用。

    (三)DDD 分层架构

    从上到下依次是:用户接口层、应用层、领域层和基础层。

    1.用户接口层

    用户接口层负责向用户显示信息和解释用户指令。

    这里的用户可能是:用户、程序、自动化测试和批处理脚本等等。

    2.应用层

    应用层是很薄的一层,理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作

    位于领域层之上,领域层包含多个聚合,所以它可以协调多个聚合的服务和领域对象完成服务编排和组合,协作完成业务操作。

    应用层也是微服务之间交互的通道,它可以调用其它微服务的应用服务,完成微服务之间的服务组合和编排。

    注意

    • 在设计和开发时,不要将本该放在领域层的业务逻辑放到应用层中实现。因为庞大的应用层会使领域模型失焦,时间一长你的微服务就会演化为传统的三层架构,业务逻辑会变得混乱。
    • 应用服务是在应用层的,它负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果的拼装,以粗粒度的服务通过 API 网关向前端发布。
    • 应用服务还可以进行安全认证、权限校验、事务控制、发送或订阅领域事件等。

    3.领域层

    领域层的作用是实现企业核心业务逻辑,通过各种校验手段保证业务的正确性

    领域层主要体现领域模型的业务能力,它用来表达业务概念、业务状态和业务规则。

    领域层包含聚合根、实体、值对象、领域服务等领域模型中的领域对象。

    注意:

    • 领域模型的业务逻辑主要是由实体和领域服务来实现的,其中实体会采用充血模型来实现所有与之相关的业务功能。
    • 实体和领域服务在实现业务逻辑上不是同级的,当领域中的某些功能,单一实体(或者值对象)不能实现时,领域服务就会出马,它可以组合聚合内的多个实体(或者值对象),实现复杂的业务逻辑。

    4.基础层

    基础层是贯穿所有层的,它的作用就是为其它各层提供通用的技术和基础服务,包括第三方工具、驱动、消息中间件、网关、文件、缓存以及数据库等。比较常见的功能还是提供数据库持久化。

    基础层包含基础服务,它采用依赖倒置设计,封装基础资源服务,实现应用层、领域层与基础层的解耦,降低外部资源变化对应用的影响。

    5.从三层架构向 DDD 分层架构演进

    DDD 分层架构中的要素其实和三层架构类似,只是在 DDD 分层架构中,这些要素被重新归类,重新划分了层,确定了层与层之间的交互规则和职责边界。

    • 三层架构向 DDD 分层架构演进,主要发生在业务逻辑层和数据访问层
    • DDD 分层架构在用户接口层引入了 DTO,给前端提供了更多的可使用数据和更高的展示灵活性。
    • DDD 分层架构对三层架构的业务逻辑层进行了更清晰的划分,改善了三层架构核心业务逻辑混乱,代码改动相互影响大的情况。
    • DDD 分层架构将业务逻辑层的服务拆分到了应用层和领域层应用层快速响应前端的变化领域层实现领域模型的能力
    • 数据访问层和基础层之间三层架构数据访问采用 DAO 方式DDD 分层架构的数据库等基础资源访问,采用了仓储(Repository)设计模式,通过依赖倒置实现各层对基础资源的解耦。仓储又分为两部分:仓储接口和仓储实现仓储接口放在领域层中,仓储实现放在基础层。原来三层架构通用的第三方工具包、驱动、Common、Utility、Config 等通用的公共的资源类统一放到了基础层。

    (四)三种微服务架构模型的对比和分析

    • 重点关注图中的红色线框,它们是非常重要的分界线,这三种架构里面都有,它的作用就是将核心业务逻辑与外部应用、基础资源进行隔离。
    • 红色框内部主要实现核心业务逻辑,划分了应用层和领域层,来承担不同的业务逻辑。
    • 领域层实现面向领域模型,实现领域模型的核心业务逻辑,属于原子模型,它需要保持领域模型和业务逻辑的稳定,对外提供稳定的细粒度的领域服务,所以它处于架构的核心位置。
    • 应用层实现面向用户操作相关的用例和流程,对外提供粗粒度的 API 服务。它就像一个齿轮一样进行前台应用和领域层的适配,接收前台需求,随时做出响应和调整,尽量避免将前台需求传导到领域层。应用层作为配速齿轮则位于前台应用和领域层之间。

    二、领域驱动设计分层架构与微服务代码模型

    DDD 并没有给出标准的代码模型,不同的人可能会有不同理解。这里我们在使用的时候还是建议按照欧创新架构师总结的来进行适用,具体如下:

    (一)代码模型总目录结构

    根据 DDD 分层架构模型建立了标准的微服务代码模型,在代码模型里面,各代码对象各据其位、各司其职,共同协作完成微服务的业务逻辑。它包括用户接口层、应用层、领域层和基础层,分层架构各层的职责边界非常清晰,又能有条不紊地分层协作。

    • 用户接口层:面向前端提供服务适配,面向资源层提供资源适配。这一层聚集了接口适配相关的功能。
    • 应用层职责:实现服务组合和编排,适应业务流程快速变化的需求。这一层聚集了应用服务和事件相关的功能。
    • 领域层:实现领域的核心业务逻辑。这一层聚集了领域模型的聚合、聚合根、实体、值对象、领域服务和事件等领域对象,以及它们组合所形成的业务能力。
    • 基础层:贯穿所有层,为各层提供基础资源服务。这一层聚集了各种底层资源相关的服务和能力。

    业务逻辑从领域层、应用层到用户接口层逐层封装和协作,对外提供灵活的服务,既实现了各层的分工,又实现了各层的协作。

    1.微服务一级目录结构

    微服务一级目录是按照 DDD 分层架构的分层职责来定义的。从下面这张图中,我们可以看到,在代码模型里分别为用户接口层、应用层、领域层和基础层,建立了 interfaces、application、domain 和 infrastructure 四个一级代码目录。

    2.用户接口层目录结构、职能和代码形态

    主要存放用户接口层与前端交互、展现数据相关的代码。前端应用通过这一层的接口,向应用服务获取展现所需的数据。这一层主要用来处理用户发送的 Restful 请求,解析用户输入的配置文件,并将数据传递给 Application 层。数据的组装、数据传输格式以及 Facade 接口等代码都会放在这一层目录里。

    具体如下:

    • Assembler:实现 DTO 与领域对象之间的相互转换和数据交换。一般来说 Assembler 与 DTO 总是一同出现。
    • Dto:它是数据传输的载体,内部不存在任何业务逻辑,我们可以通过 DTO 把内部的领域对象与外界隔离。
    • Facade:提供较粗粒度的调用接口,将用户请求委派给一个或多个应用服务进行处理。

    3.应用层目录结构、职能和代码形态

    主要存放应用层服务组合和编排相关的代码。应用服务向下基于微服务内的领域服务或外部微服务的应用服务完成服务的编排和组合向上为用户接口层提供各种应用数据展现支持服务应用服务和事件等代码会放在这一层目录里

    具体如下:

    • Event(事件):这层目录主要存放事件相关的代码。它包括两个子目录:publish 和 subscribe。前者主要存放事件发布相关代码,后者主要存放事件订阅相关代码(事件处理相关的核心业务逻辑在领域层实现)。为了实现事件的统一管理,建议你将微服务内所有事件的发布和订阅的处理都统一放到应用层,事件相关的核心业务逻辑实现放在领域层。通过应用层调用领域层服务,来实现完整的事件发布和订阅处理流程。
    • Service(应用服务):这层的服务是应用服务。应用服务会对多个领域服务或外部应用服务进行封装、编排和组合,对外提供粗粒度的服务。应用服务主要实现服务组合和编排,是一段独立的业务逻辑。你可以将所有应用服务放在一个应用服务类里,也可以把一个应用服务设计为一个应用服务类,以防应用服务类代码量过大。

    4.领域层目录结构、职能和代码形态

    主要存放领域层核心业务逻辑相关的代码。领域层可以包含多个聚合代码包,它们共同实现领域模型的核心业务逻辑。聚合以及聚合内的实体、方法、领域服务和事件等代码会放在这一层目录里。

    具体如下:

    • Aggregate(聚合):它是聚合软件包的根目录,可以根据实际项目的聚合名称命名,比如权限聚合。在聚合内定义聚合根、实体和值对象以及领域服务之间的关系和边界。聚合内实现高内聚的业务逻辑,它的代码可以独立拆分为微服务。以聚合为单位的代码放在一个包里的主要目的是为了业务内聚,而更大的目的是为了以后微服务之间聚合的重组。聚合之间清晰的代码边界,可以让你轻松地实现以聚合为单位的微服务重组,在微服务架构演进中有着很重要的作用。
    • Entity(实体):它存放聚合根、实体、值对象以及工厂模式(Factory)相关代码。实体类采用充血模型,同一实体相关的业务逻辑都在实体类代码中实现。跨实体的业务逻辑代码在领域服务中实现
    • Event(事件):它存放事件实体以及与事件活动相关的业务逻辑代码
    • Service(领域服务):它存放领域服务代码一个领域服务是多个实体组合出来的一段业务逻辑。你可以将聚合内所有领域服务都放在一个领域服务类中,你也可以把每一个领域服务设计为一个类。如果领域服务内的业务逻辑相对复杂,建议将一个领域服务设计为一个领域服务类,避免由于所有领域服务代码都放在一个领域服务类中,而出现代码臃肿的问题。领域服务封装多个实体或方法后向上层提供应用服务调用
    • Repository(仓储):它存放所在聚合的查询或持久化领域对象的代码,通常包括仓储接口和仓储实现方法。为了方便聚合的拆分和组合,我们设定了一个原则:一个聚合对应一个仓储。(特别说明:按照 DDD 分层架构,仓储实现本应该属于基础层代码,但为了在微服务架构演进时,保证代码拆分和重组的便利性,把聚合仓储实现的代码放到了聚合包内。)

    5.基础层层目录结构、职能和代码形态

    主要存放基础资源服务相关的代码,为其它各层提供的通用技术能力、三方软件包、数据库服务、配置和基础资源服务的代码都会放在这一层目录里。

    具体如下:

    • Config:主要存放配置相关代码。
    • Util:主要存放平台、开发框架、消息、数据库、缓存、文件、总线、网关、第三方类库、通用算法等基础代码,你可以为不同的资源类别建立不同的子目录。

    (二)应用层的领域对象分析

    应用层的主要领域对象是应用服务和事件的发布以及订阅。

    在事件风暴或领域故事分析时,我们往往会根据用户或系统发起的命令,来设计服务或实体方法。为了响应这个命令,我们需要分析和记录:

    • 在应用层和领域层分别会发生哪些业务行为;
    • 各层分别需要设计哪些服务或者方法;
    • 这些方法和服务的分层以及领域类型(比如实体方法、领域服务和应用服务等),它们之间的调用和组合的依赖关系。

    在严格分层架构模式下,不允许服务的跨层调用,每个服务只能调用它的下一层服务。服务从下到上依次为:实体方法、领域服务和应用服务。建议采用服务逐层封装的方式,服务的封装和调用主要有以下几种方式:

    1.实体方法的封装

    实体方法是最底层的原子业务逻辑。

    • 如果单一实体的方法需要被跨层调用,你可以将它封装成领域服务,这样封装的领域服务就可以被应用服务调用和编排了。
    • 如果它还需要被用户接口层调用,需要将这个领域服务封装成应用服务

    经过逐层服务封装,实体方法就可以暴露给上面不同的层,实现跨层调用。

    封装时服务前面的名字可以保持一致,你可以用 *DomainService 或 *AppService 后缀来区分领域服务或应用服务

    2.领域服务的组合和封装

    领域服务会对多个实体和实体方法进行组合和编排,供应用服务调用。

    如果它需要暴露给用户接口层,领域服务就需要封装成应用服务

    3.应用服务的组合和编排

    应用服务会对多个领域服务进行组合和编排,暴露给用户接口层,供前端应用调用。

    多个应用服务可能会对多个同样的领域服务重复进行同样业务逻辑的组合和编排。当出现这种情况时,就需要分析是不是领域服务可以整合了。可以将这几个不断重复组合的领域服务,合并到一个领域服务中实现,这样领域模型将会越来越精炼,更能适应业务的要求。

    应用服务类放在应用层 Service 目录结构下。领域事件的发布和订阅类放在应用层 Event 目录结构下。

    (三)领域层的领域对象分析

    事件风暴结束时,领域模型聚合内一般会有:聚合、实体、命令和领域事件等领域对象

    在完成故事分析和微服务设计后,微服务的聚合内一般会有:聚合、聚合根、实体、值对象、领域事件、领域服务和仓储等领域对象。

    1.设计实体

    大多数情况下,领域模型的业务实体与微服务的数据库实体是一一对应的。

    但某些领域模型的实体在微服务设计时,可能会被设计为多个数据实体,或者实体的某些属性被设计为值对象。

    在分层架构里,实体采用充血模型,在实体类内实现实体的全部业务逻辑。这些不同的实体都有自己的方法和业务行为,比如地址实体有新增和修改地址的方法,银行账号实体有新增和修改银行账号的方法。

    实体类放在领域层的 Entity 目录结构下。

    2.找出聚合根

    聚合根来源于领域模型,聚合根是一种特殊的实体,它有自己的属性和方法聚合根可以实现聚合之间的对象引用,还可以引用聚合内的所有实体。

    • 在个人客户聚合里,个人客户这个实体是聚合根,它负责管理地址、电话以及银行账号的生命周期。
    • 个人客户聚合根通过工厂和仓储模式,实现聚合内地址、银行账号等实体和值对象数据的初始化和持久化。

    聚合根类放在代码模型的 Entity 目录结构下。聚合根有自己的实现方法,比如生成客户编码,新增和修改客户信息等方法。

    3.设计值对象

    根据需要将某些实体的某些属性或属性集设计为值对象。值对象类放在代码模型的 Entity 目录结构下。

    在个人客户聚合中,客户拥有客户证件类型,它是以枚举值的形式存在,所以将它设计为值对象。

    有些领域对象可以设计为值对象,也可以设计为实体,我们需要根据具体情况来分析:

    • 如果这个领域对象在其它聚合内维护生命周期,且在它依附的实体对象中只允许整体替换,我们就可以将它设计为值对象。
    • 如果这个对象是多条且需要基于它做查询统计,建议将它设计为实体。

    4.设计领域事件

    如果领域模型中领域事件会触发下一步的业务操作,我们就需要设计领域事件

    • 首先确定领域事件发生在微服务内还是微服务之间。
    • 然后设计事件实体对象,事件的发布和订阅机制,以及事件的处理机制。
    • 判断是否需要引入事件总线或消息中间件

    领域事件实体和处理类放在领域层的 Event 目录结构下。领域事件的发布和订阅类建议放在应用层的 Event 目录结构下。

    5.设计领域服务

    如果一个业务动作或行为跨多个实体,我们就需要设计领域服务。

    领域服务通过对多个实体和实体方法进行组合,完成核心业务逻辑。可以认为领域服务是位于实体方法之上和应用服务之下的一层业务逻辑。

    按照严格分层架构层的依赖关系

    • 如果实体的方法需要暴露给应用层,它需要封装成领域服务后才可以被应用服务调用。
    • 如果有的实体方法需要被前端应用调用,我们会将它封装成领域服务,然后再封装为应用服务。

    领域服务类放在领域层的 Service 目录结构下。

    6.设计仓储

    每一个聚合都有一个仓储,仓储主要用来完成数据查询和持久化操作。

    仓储包括仓储的接口和仓储实现,通过依赖倒置实现应用业务逻辑与数据库资源逻辑的解耦。

    仓储代码放在领域层的 Repository 目录结构下。

    (四)代码模型强调内容

    第一点:聚合之间的代码边界一定要清晰

    聚合之间的服务调用和数据关联应该是尽可能的松耦合和低关联,聚合之间的服务调用应该通过上层的应用层组合实现调用,原则上不允许聚合之间直接调用领域服务。

    这种松耦合的代码关联,在以后业务发展和需求变更时,可以很方便地实现业务功能和聚合代码的重组,在微服务架构演进中将会起到非常重要的作用。

    第二点:你一定要有代码分层的概念

    写代码时一定要搞清楚代码的职责,将它放在职责对应的代码目录内。

    应用层代码主要完成服务组合和编排,以及聚合之间的协作,它是很薄的一层,不应该有核心领域逻辑代码。

    领域层是业务的核心,领域模型的核心逻辑代码一定要在领域层实现。

    如果将核心领域逻辑代码放到应用层,你的基于 DDD 分层架构模型的微服务慢慢就会演变成传统的三层架构模型了。

    三、正确理解微服务的边界

    微服务设计的重点,就是看微服务设计是否能够支持架构长期、轻松的演进。

    在事件风暴中,我们会梳理出业务过程中的用户操作、事件以及外部依赖关系等,根据这些要素梳理出实体等领域对象。

    • 根据实体对象之间的业务关联性,将业务紧密相关的多个实体进行组合形成聚合,聚合之间是第一层边界。
    • 根据业务及语义边界等因素将一个或者多个聚合划定在一个限界上下文内,形成领域模型,限界上下文之间的边界是第二层边界。

    为了方便理解,我们将这些边界细分为:逻辑边界、物理边界和代码边界。

    (一)逻辑边界

    逻辑边界主要定义同一业务领域或应用内紧密关联的对象所组成的不同聚类的组合之间的边界

    微服务内聚合之间的边界就是逻辑边界。一般来说微服务会有一个以上的聚合,在开发过程中不同聚合的代码隔离在不同的聚合代码目录中。它是一个虚拟的边界,强调业务的内聚,可根据需要变成物理边界,也就是说聚合也可以独立为微服务。

    微服务的架构演进并不是随心所欲的,需要遵循一定的规则,这个规则就是逻辑边界。微服务架构演进时,在业务端以聚合为单位进行业务能力的重组,在微服务端以聚合的代码目录为单位进行微服务代码的重组。

    来看一个微服务实例,在下面这张图中,我们可以看到微服务里包含了两个聚合的业务逻辑,两个聚合分别内聚了各自不同的业务能力,聚合内的代码分别归到了不同的聚合目录下。

    那随着业务的快速发展,如果某一个微服务遇到了高性能挑战,需要将部分业务能力独立出去,我们就可以以聚合为单位,将聚合代码拆分独立为一个新的微服务,这样就可以很容易地实现微服务的拆分。

    另外,我们也可以对多个微服务内有相似功能的聚合进行功能和代码重组,组合为新的聚合和微服务,独立为通用微服务,有点做中台的感觉!

    (二)物理边界

    微服务之间的边界是物理边界。它强调微服务部署和运行的隔离,关注微服务的服务调用、容错和运行等。

    物理边界主要从部署和运行的视角来定义微服务之间的边界。不同微服务部署位置和运行环境是相互物理隔离的,分别运行在不同的进程中。这种边界就是微服务之间的物理边界。

    举例:

    有些项目团队在将集中式单体应用拆分为微服务时,首先进行的往往不是建立领域模型,而只是按照业务功能将原来单体应用的一个软件包拆分成多个所谓的“微服务”软件包,而这些“微服务”内的代码仍然是集中式三层架构的模式,“微服务”内的代码高度耦合,逻辑边界不清晰,这里我们暂且称它为“小单体微服务”

    而随着新需求的提出和业务的发展,这些小单体微服务会慢慢膨胀起来。当有一天你发现这些膨胀了的微服务,有一部分业务功能需要拆分出去,或者部分功能需要与其它微服务进行重组时,你会发现原来这些看似清晰的微服务,不知不觉已经摇身一变,变成了臃肿油腻的大单体了,而这个大单体内的代码依然是高度耦合且边界不清的。

    这种单体式微服务只定义了一个维度的边界,也就是微服务之间的物理边界,本质上还是单体架构模式。微服务设计时要考虑的不仅仅只有这一个边界,别忘了还要定义好微服务内的逻辑边界和代码边界,这样才能得到你想要的结果。

    (三)代码边界

    不同层或者聚合之间代码目录的边界是代码边界。它强调的是代码之间的隔离,方便架构演进时代码的重组。

    代码边界主要用于微服务内的不同职能代码之间的隔离

    微服务开发过程中会根据代码模型建立相应的代码目录,实现不同功能代码的隔离。由于领域模型与代码模型的映射关系,代码边界直接体现出业务边界。

    代码边界可以控制代码重组的影响范围,避免业务和服务之间的相互影响。

    微服务如果需要进行功能重组,只需要以聚合代码为单位进行重组就可以了。

    四、正确认识服务和数据在微服务各层的协作

    (一)正确认识服务的协作

    1. 服务的类型

    按照分层架构设计出来的微服务,其内部有 Facade 服务、应用服务、领域服务和基础服务。之前都有提到,这里可以回忆一下!

    2. 服务的调用(三类主要场景)

    微服务的服务调用包括三类主要场景:微服务内跨层服务调用,微服务之间服务调用和领域事件驱动。

    • 微服务内跨层服务调用

    前端应用调用发布在 API 网关上的 Facade 服务,Facade 定向到应用服务应用服务作为服务组织和编排者,它的服务调用有这样两种路径:

    • 第一种是应用服务调用并组装领域服务。此时领域服务会组装实体和实体方法,实现核心领域逻辑。领域服务通过仓储服务获取持久化数据对象,完成实体数据初始化。
    • 第二种是应用服务直接调用仓储服务。这种方式主要针对像缓存、文件等类型的基础层数据访问。这类数据主要是查询操作,没有太多的领域逻辑,不经过领域层,不涉及数据库持久化对象。

     

    • 微服务之间的服务调用

    微服务之间的应用服务可以直接访问,也可以通过 API 网关访问

    由于跨微服务操作,在进行数据新增和修改操作时,你需关注分布式事务,保证数据的一致性。

    • 领域事件驱动

    领域事件驱动包括微服务内和微服务之间的事件。

    • 微服务内通过事件总线(EventBus)完成聚合之间的异步处理。
    • 微服务之间通过消息中间件完成。异步化的领域事件驱动机制是一种间接的服务访问方式。

    当应用服务业务逻辑处理完成后,如果发生领域事件,可调用事件发布服务,完成事件发布。

    当接收到订阅的主题数据时,事件订阅服务会调用事件处理领域服务,完成进一步的业务操作。

    3. 服务的封装与组合

    微服务的服务是从领域层逐级向上封装、组合和暴露的。基本如下图体现:

    (二)正确认识服务数据的协作

    在 DDD 中有很多的数据对象,这些对象分布在不同的层里。它们在不同的阶段有不同的形态:

    • 数据持久化对象 PO(Persistent Object),与数据库结构一一映射,是数据持久化过程中的数据载体。
    • 领域对象 DO(Domain Object),微服务运行时的实体,是核心业务的载体。
    • 数据传输对象 DTO(Data Transfer Object),用于前端与应用层或者微服务之间的数据组装和传输,是应用之间数据传输的载体。
    • 视图对象 VO(View Object),用于封装展示层指定页面或组件的数据。

    微服务各层数据对象的职责和转换过程如下:

    1.基础层数据协作

    基础层的主要对象是 PO 对象。

    我们需要先建立 DO 和 PO 的映射关系

    • 当 DO 数据需要持久化时,仓储服务会将 DO 转换为 PO 对象,完成数据库持久化操作。
    • 当 DO 数据需要初始化时,仓储服务从数据库获取数据形成 PO 对象,并将 PO 转换为 DO,完成数据初始化。

    大多数情况下 PO 和 DO 是一一对应的。但也有 DO 和 PO 多对多的情况,在 DO 和 PO 数据转换时,需要进行数据重组。

    2.领域层数据协作

    领域层的主要对象是 DO 对象。

    DO 是实体和值对象的数据和业务行为载体,承载着基础的核心业务逻辑

    通过 DO 和 PO 转换,我们可以完成数据持久化和初始化。

    3.应用层数据协作

    应用层的主要对象是 DO 对象。

    如果需要调用其它微服务的应用服务,DO 会转换为 DTO,完成跨微服务的数据组装和传输。

    用户接口层先完成 DTO 到 DO 的转换,然后应用服务接收 DO 进行业务处理。如果 DTO 与 DO 是一对多的关系,这时就需要进行 DO 数据重组

    4.用户接口层数据协作

    用户接口层会完成 DO 和 DTO 的互转,完成微服务与前端应用数据交互及转换。

    Facade 服务会对多个 DO 对象进行组装,转换为 DTO 对象,向前端应用完成数据转换和传输。

    5.前端应用数据协作

    前端应用主要是 VO 对象

    展现层使用 VO 进行界面展示,通过用户接口层与应用层采用 DTO 对象进行数据交互。

     

    参考书籍、文献和资料

    1.极客时间课程《DDD实战》,欧创新,2019.

    2.郑天民. 微服务设计原理与架构. 北京:人民邮电出版社,2018.

    3.陈超、秦金卫、张逸等. 高可用可伸缩微服务架构. 电子工业出版社. 2019.

    4.Eric Evans. 领域驱动设计-软件核心复杂性应对之道。 人民邮电出版社. 2018.

    展开全文
  • 销售管理系统数据库设计说明书

    千次阅读 2014-11-12 16:58:32
    SI50B 班学员,第一学期毕业设计项目(《销售管理系统》)的数据库设计说明书,具体描述《销售管理系统》的数据库的设计,用于指导该系统在数据库存储各方面的内容,作为系统代码设计的基准文档。 (二)、项目简要...

    一、概述

    (一)、数据库设计文档概述

    本文档为北大青鸟ACCP软件工程师培训无锡培训中心 SI50B 班学员,第一学期毕业设计项目(《销售管理系统》)的数据库设计说明书,具体描述《销售管理系统》的数据库的设计,用于指导该系统在数据库存储各方面的内容,作为系统代码设计的基准文档。

    (二)、项目简要介绍

    项目目标软件系统名称:销售管理系统

    项目提出:自命题

    项目目标:利用计算机技术和信息技术实现销售管理的信息化,达到客户管理、合同管理、业务管理的规范有序、信息查阅快速准确、事务处理方便高效的要求,及时跟踪企业营销目标并适时进行结构化分析,为营销策略的修正以及新的营销策略的制定提供依据,通过对提高营销效率与降低营销成本的有效支持,从而改善企业宏观运营,提高企业的经济效益。

    系统模式:采用客户端/服务器模式

    系统开发环境:Visual Basic 6.0

    数据库管理系统:Microsoft SQL Server 2000

    软件开发者:北大青鸟无锡培训中心 SI50B 班学员王章圣

    软件应用范围:中小型企业(生产类)

    (三)、参考资料:

    A、北大青鸟第一学期教材;

    B、《基于软件开发项目的毕业设计》;

    (C、《销售管理系统》需求说明书)

    D、项目指导教师提供的毕业设计案例

    二、数据库外部设计

    (一)本数据库的应用软件及其与数据库的接口

    数据库软件:Microsoft SQL Server 2000

    系统要求建立的数据库名称:Sales

    使用该数据库的应用软件:销售管理系统

    该应用软件在Visual Basic 6.0编程环境下设计,采用Visual Basic 6.0基于Active Data Objects的数据库访问接口技术,建立与数据库的通讯连接、执行T-SQL。应用程序对数据库的操作,在通过执行T-SQL查询语句生成的结果集上执行。

    (二)数据库管理系统

    Microsoft® SQL Server? 2000 扩展了 Microsoft SQL Server 7.0 版的性能、可靠性、质量和易用性。Microsoft SQL Server 2000 增加了几种新的功能,由此成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。本数据库采取SQL Server 2000作为系统平台。以下是需要使用到SQL Server 2000的几个组件,包括:

    A、企业管理器:提供了数据管理和数据库操作的集成平台;

    B、查询分析器:T-SQL调试、优化、性能检测的工具;

    C、事件探查器:提供了对SQL Server执行操作的检测,并以T-SQL的形式记录;

    D、服务管理器:提供SQL Server停止、启动的控制工具;

    此外,还包括可能会使用到的数据导入和导出工具,为数据库提供数据的输入。

    三、数据库结构设计

    (一)表结构设计

    本数据库包括五类二十三张数据表,清单如下:

    类别

    表索引

    表名

    说明

    产品类

    表一

    Product

    存储公司所有产品目录

    表二

    product_type

    产品类类别:对表一的产品进行分类,并以其进行约束(字典库)

    表三

    Store

    产品出/入库:指检验合同的成品/退货产品,生产过程中的待检品、半成品以及材料等不纳入本系统

    表四

    store_reason

    出/入库理由:字典库

    表五

    product_ qulity

    产品质量:字典库

    表六

    product_Periods

    产品生产周期:主要用于合同评审(字典库)

    表七

    product_profit

    产品利润:通过表九与表一跟踪签约产品的利润实现情况

    客户类

    表八

    client

    客户表:一般指企业(即法人)

    合 同

    订单类

    表九

    Orders

    订单:即将合同细化的产品订单

    表十

    Contract

    合同:即以合同为单位的订单,也可称之为销售记录

    表十一

    contract_mode

    履行方式:字典库

    表十二

    contract_cancel

    已废止/取消的合同:在本库中起字典库作用

    表十三

    contract_talk

    合同评估:字典库

    表十四

    Suddenness

    合同意外处置:当不能完全按照合同的约定履行时,需在此登记,以便对合同与客户进行有效的管理

    表十五

    deal_mode

    意外处置方式:字典库

    表十六

    contract_profit

    合同利润:以合同为统计单位,并扣除各种折扣

    表十七

    contract_verify

    合同评审记录:主体部分

    表十八

    contract_perverify

    合同评审记录:产品细分清单

    营销目标与

    营销人员

    表十九

    Target

    销售目标:企业整体的营销目标,并按产品分解

    表二十

    Seller

    销售员:字典库

    表二一

    Seller_target

    个人目标分解:按产品将企业营销目标分解到业务员,以便跟踪个人业绩

    系统

    用户

    表二二

    userlist

    用户表:用于数据库的操作人员,业务员、客户可通过其口令登录查询

    表二三

    Operate_recorders

    用户操作记录表:写入操作员针对数据库的任何更改,建立责任制,同时也可以用作对操作员考核的原始依据

    以下是各数据表的具体结构及约束等说明:

    表一:Product(产品)

    字段

    类型(长度)

    约束

    说明

    产品编号

    product_id

    Char(10)

    主键

     

    产品名称

    product_name

    Char(20)

    非空

     

    产品大类

    product_type

    tinyint

    外键

    引用表二:type_id

    单位成本

    product_cost

    smallmoney

    根据用户类型决定可否查看

    备  注

    product_menu

    text

     

    相关表:订单、库存(出/入库)、销售计划、销售记录、产品利润、产品生产周期(编号)

    说 明:所有字段均由用户输入(选择产品大类,用户输入不存在的类别时提示添加。)

    (严格地讲,单位成本是变动的,最好单独成表并标注日期,以保存不同时期的“版本”,同时,还需建立报价表,此二表可考虑合并,为减轻项目负担,没有分开。)

    表二:product_type(产品大类)

    字段

    类型(长度)

    约束

    说明

    序号

    type_id

    tinyint

    标识列,主键

     

    产品大类

    type_name

    Char(20)

    非空

    将数据写入产品输入界面的组合框

    相关表:产品(对其实施约束)

    说 明:type_name由用户输入(一般通过修改产品时提示添加)

    表三:Store(产品出/入库)

    字段

    类型(长度)

    约束

    说明

    序  号

    store_id

    int

    标识列,主键

     

    产品编号

    product_id

    char(10)

    外键

    引用表一:product_id

    产品批号

    product_code

    char(10)

    非空

     

    登记方式

    enter _statu

    bit

    非空

    “1”为入存,“0”为出库

    登记数量

    chang_number

    int

    非空/正数

    可与前项合并,以正负区别,但考虑到统计需要,分开。

    质量等级

    store_qulity

    tinyint

    外键

    引用表四:qulity_type

    出/入库日期

    store_date

    datetime

    非空

     

    来源/去向

    store_frorto

    char(20)

    非空

     

    出/入库理由

    store_reason

    char(20)

    非空

    参引表 :reason_type

    库存数量

    store_number

    int

    非空/非负

     

    相关表:产品(产品编号)、产品质量

    说 明:除“序号”、“库存状态”、“库存数量”外均由用户输入(选择日期、理由、质量等级);reason_id不作为本表的外键,从而允许用户输入其他原因,并提示用户规范该字典库(“库存数量”在用户登记时由系统计算并自动填写)。

    表四:product_qulity(产品质量)

    字段

    类型(长度)

    约束

    说明

    序号

    qulity_id

    tinyint

    标识列,主键

    有关属性与产品类别表相似。

    质量等级

    qulity_type

    Char(6)

    非空

    相关表:产品出/入库、定单

    表五:store_reason(出/入库理由)

    字段

    类型(长度)

    约束

    说明

    序号

    reason_id

    tinyint

    标识列,主键

    相关表:产品出/入库

    有关属性与产品类别表相似。

    理由描述

    reason_type

    Char(20)

    非空

    表六:product_Periods(产品生产周期)

    字段

    类型(长度)

    约束

    说明

    序    号

    periods_id

    Tinyint

    标识列,主键

     

    产 品 编 号

    product_id

    Char(10)

    外键

     

    数    量

    product_number

    Int

    非空/正数

     

    一般生产周期

    periods

    smallint

    非空/正数

    以天计

    相关表:产品(编号)

    说 明:均由用户输入,所有在产品都必须在此登记,并作为在产的标志。

    表七:product_profit(产品利润)

    字段

    类型(长度)

    约束

    说明

    产品编号

    product_id

    Char(10)

    外键

    主键

    合同编号

    contract_id

    Char(10)

    外键

    利 润 额

    profit

    Money

     

    利 润 率

    profit_margin

    decimal

     

    相关表:产品(产品编号)、合同(合同编号)

    说 明:根据订单表作相应更新,由系统建立,便于统计。

    表八:client(客户)

    字段

    类型(长度)

    约束

    说明

    客户编号

    client_id

    Char(8)

    主键

     

    客户名

    client_name

    Char(30)

    非空

     

    联系人

    client_person

    Char(10)

    非空

    或称代表人

    联系方式

    client_tel

    Char(15)

    非空

     

    住址

    client_ad

    Varchar(50)

    非空

     

    相关表:合同(客户编号)(通过合同表与产品表建立间接联系,查看客户感兴趣的产品)

    说 明:全部由用户输入(客户编号可考虑由系统建立)

    表九:Orders(订单)

    字段

    类型(长度)

    约束

    说明

    合同编号

    product_id

    Char(10)

    外键

    主键

    产品编号

    contract_id

    Char(10)

    外键

    数  量

    sells_number

    int

    非空/正数

     

    质  量

    contract_ qulity

    tinyint

    外键

    引用表四:qulity_type

    单  价

    per_price

    smallmoney

    非空/正数

     

    相关表:产品(产品编号)、合同(合同编号)、产品质量

    说 明:均由用户输入(多数情况下,与合同表一同更新)

     

    表十:Contract(合同)

    字段

    类型(长度)

    约束

    说明

    合同编号

    contract_id

    Char(10)

    主键

     

    客户编号

    client_id

    Char(8)

    外键

     

    标的额

    sells_totall

    Money

    非空

    >0

    签约折扣

    sign_ discount

    Money

    非空

    非负/默认为“0”

    销售人员编号

    seller_id

    Char(8)

    非空

     

    订立日期

    sign_date

    datetime

    非空

     

    履行日期

    carry_date

    datetime

    非空

     

    履行方式

    carry_mode

    Char(20)

    非空

    参引表 :carry_type

    履行状态

    contract_statu

    Bit

    非空

    “1”为履行完毕,“0”为未完毕(默认)

    履约评估

    contract_talk

    Char(30)

    参引表 :talk_type

    相关表:订单(合同编号)、客户(客户编号)、个人销售记录(销售人员编号)、合同意外处理(合同编号)、履行方式、履约评估

    说 明:合同编号及标的额在订单的输入由系统生成,履行方式可作为本表的一个小备注,如具体时间、地点、提货或是送货等;销售人员项由程序提供名单,供用户选择,用户亦可输入,但不能是数据库之外的——可以以公司名义而不划入任何个人,故此处不将其作为外键,仅查询出来供用户选择;不再履行的合同也视为已经履行(即不再将此合同列入待履行之列)。

    表十一:contract_mode(履行方式)

    字段

    类型(长度)

    约束

    说明

    序号

    carry_id

    tinyint

    标识列,主键

    相关表:合同

    有关属性与产品类别表相似。

    理由描述

    carry_type

    Char(20)

    非空

    表十二:contract_talk(合同评估)

    字段

    类型(长度)

    约束

    说明

    序号

    talk_id

    tinyint

    标识列,主键

    相关表:合同

    有关属性与产品类别表相似。

    具体描述

    talk_type

    Char(20)

    非空

    表十三:contract_cancel(已废止/取消的合同)

    字段

    类型(长度)

    约束

    说明

    合同编号

    contractl_id

    Char(10)

    外键/主键

    相关表:合同

    有关属性与产品类别表相似。

    废止理由

    cancel_type

    Char(20)

    非空

    废止日期

    cancel_date

    datetime

    非空

    表十四:Suddenness(合同意外处置)

    字段

    类型(长度)

    约束

    说明

    合同编号

    contract_id

    Char(10)

    外键

    未使用主键

    日  期

    treatdate

    datetime

    非空

    处置方式

    treatment

    Varchar(50)

    非空/参引十五:deal_mode

    相关表:合同(合同编号)

    说 明:均由用户输入(处置方式如提前、推迟、取消等,通过程序修改合同及相关表格)

    表十五:deal_mode(意外处置方式)

    字段

    类型(长度)

    约束

    说明

    序号

    deal_id

    tinyint

    标识列,主键

    相关表:合同

    有关属性与产品类别表相似。

    处置方式

    deal_mode

    Char(30)

    非空

    表十六:contract_profit(合同利润)

    字段

    类型(长度)

    约束

    说明

    合同编号

    contract_id

    Char(10)

    外键,主键

    在“折扣”项中,如用户以比例形式提交,则在程序中先行计算

    标的总成本

    totall_cost

    money

    非空

    折 扣

    discount

    money

    非空

    利润额

    contract_profit

    money

    利润率

    profit_margin

    decimal

    相关表:合同(合同编号)

    说 明:折扣由用户输入,其余由系统建立。

    表十七:contract_verify(合同评审记录/主体评审)

    字段

    类型(长度)

    约束

    说明

    评审号

    verify_id

    Char(10)

    主  键

    由系统建立

    评审日期

    verify_date

    datetime

    非空

     

    有关评审人员

    verify_persons

    varchar(50)

    非空

     

    客户编号

    client_id

    Char(8)

    非空/外键

     

    业务员编号

    seller_id

    Char(8)

    非空

     

    最低利润率需求

    verify_forprofit

    decimal

    非空/非负

     

    拟履行日期

    verify_carry

    datetime

    非空

     

    标的总额

    verify_allprice

    money

    非空/“0”

    由系统建立

    可能的折扣

    verify_allowdis

    money

    非空/“0”

    可实现的利润总额

    verify_profit

    money

    非空/“0”

    可实现的利润率

    verify_margin

    decimal

    非空/“0”

    生产能力评估

    verify_capacity

    varchar(50)

    系统建议结论

    verify_sysadvice

    varchar(50)

    评审结论

    verify_conclusion

    varchar(50)

    可先登记,再评审

    相关表:产品细分评审(评审号)

    说 明:由于评审并不是一次完成,故允许有关的判断项暂允许为空。

    表十八:contract_perverify(合同评审记录/产品细分评审)

    字段

    类型(长度)

    约束

    说明

    评审号

    verify_id

    Char(10)

    外键

    主键

    产品编号

    product_id

    Char(10)

    外键

    数  量

    verify_number

    int

    非空/正数

     

    单  价

    perverify_price

    smallmoney

    非空/正数

     

    最低利润率需求

    perverify_forprofit

    decimal

    非空/非负

     

    可启动日期

    perverify_ondate

    datetime

    非空

     

    可实现利润

    perverify_profit

    money

    非空/非负

    由系统建立

    可实现利润率

    perverify_margin

    decimal

    非空/非负

    生产能力评估

    perverify_capacity

    varchar(30)

    非空

    系统建议结论

    perverify_syadice

    varchar(30)

    非空

    评审意见

    perverify_conclusion

    varchar(30)

    可先登记,再评审

    相关表:产品(产品编号)、主体评审(评审号)

    说 明:暂不考虑产品质量;新时期产品的数据输入需一次完成,故除“评审意见”外,均不允许为空;

    表十九:Target(销售目标)

    字段

    类型(长度)

    约束

    说明

    产品编号

    product_id

    Char(10)

    外键,主键

     

    本年度销售目标

    target

    money

    非空/正数

     

    相关表:产品(产品编号)

    说 明:产品编号可选择,也可直接输入;工作界面增加产品大类,以方便用户。

    表二十:Seller(销售员)

    字段

    类型(长度)

    约束

    说明

    销售人员编号

    seller_id

    Char(4)

    主键

    新注册时由系统给出提示,超级用户可修改之。

    姓  名

    seller_name

    Char(15)

    非空

     

    登录口令

    seller_pwd

    Char(6)

    非空

     

    状  态

    seller _statu

    bit

    非空

    “1”为有效(默认),“0”为失效

    相关表:个人目标分解表(编号)

    说 明:均由用户输入,口令为标准的六位,不足由系统补足(用户表同)。

    表二一:Seller_target(个人目标分解表)

    字段

    类型(长度)

    约束

    说明

    销售人员编号

    seller_id,

    Char(4)

    外键,主键

     

    产品编号

    product_id

    Char(10)

    外键

     

    个人目标

    per_target

    money

    非空/正数

     

    相关表:销售员(编号)、产品(产品编号)

    说 明:工作界面可增加产品大类,以方便用户

    表二二:userlist(用户表)

    字段

    类型(长度)

    约束

    说明

    用户编号

    user_id

    Char(4)

    主键

    在申请用户时,程序中要求提交用于申请用户的密码,代替管理员的确认(销售人员表同)

    用 户 名

    user_name

    Char(15)

    非空

    密  码

    user_pwd

    Char(6)

    非空

    状  态

    user_statu

    bit

    非空

    “1”为有效(默认),“0”为失效

    相关表:用户操作(编号)

    说 明:均由用户输入(可以考虑增加一张表,对业务员及用户状态中的“失效”作出说明,但这应该属于人力资源管理的范畴,放在此处 可能不太合适!)。

    表二三:Operate_recorders(用户操作记录表)

    字段

    类型(长度)

    约束

    说明

    操作序号

    operate_id

    int

    标识列,主键

     

    用户编号

    user_id

    Char(4)

    外键

     

    记录日期

    operate_date

    datetime

    非空

     

    操作记录

    operate_text

    Char(20)

    非空

     

    相关表:用户表(编号)

    说 明:均由系统(以模块函数方式)建立,以实际变更数据库中的值为标准(即单纯的查看不计)。

    (二)、视图对象设计

    为方便查询与维护,本数据库设计了十六个视图,具体描述如下:

    视图一:produce_view(在产品目录)

    字段名

    来源字段

    来源表

    连接关系及条件、聚合等

    产品编号

    productid

    product_id

    Product

    product_type .type_id = Product.product_type

     

    Product .product_statu = 1

    产品名称

    productname

    product_name

    Product

    产品大类

    typename

    type_name

    product_type

    单位成本

    productcost

    product_cost

    Product

    备  注

    productmenu

    product_menu

    Product

    说 明:以“产品”表为基础,为查询提供方便;对于成本的查看同样需要权限。

    视图二:contract_view(合同)

    字段名

    来源字段

    来源表

    连接关系及条件、聚合等

    合同编号

    contractid

    contract_id

    Contract

    Client. client_id= Contract. client_id

     

    Seller.seller_id= Contract. seller_id

     

    Suddenness.contract_id= Contract.contract_id

    客户编号

    clientid

    contract_id

    Contract

    客户名称

    clientname

    client_name

    client

    标 的 额

    sellstotall

    sells_totall

    Contract

    签约折扣

    signdiscount

    sign_discount

    Contract

    业务员编号

    sellerid

    seller_id

    Contract

    业务员姓名

    sellername

    seller_name

    Seller

    订立日期

    signdate

    sign_date

    Contract

    履行日期

    carrydate

    carry_date

    Contract

    履行方式

    carrymode

    carry_mode

    Contract

    履行状态

    contractstatu

    contract_statu

    Contract

    履约评估

    contracttalk

    contract_talk

    Contract

    日期/意外

    dealdate

    treatdate

    Suddenness

    意外情况

    deal

    treatment

    Suddenness

    说 明:以“合同”表为基础,通过“客户”、“销售员”、“合同意外处置”补充数据。

    视图三:product_sales_view(产品销售情况)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    产品编号

    productid

    product_id

    orders

    orders.contract_id= contract_view.contractid

     

    orders.product_id= product_view.product_id

     

    产品名称

    productname

    product_name

    product_view

    产品类别

    typename

    typename

    product_view

    销售数量

    sellsnumber

    sells_number

    orders

    签约价格

    perprice

    per_price

    orders

    签约质量

    contractqulity

    contract_qulity

    orders

    产品成本

    productcost

    productcost

    product_view

    合同状态

    contractstatu

    contractstatu

    contract_view

    签约日期

    signdate

    sign_date

    product_view

    客户编号

    clientid

    clientid

    product_view

    客户名称

    clientname

    client_name

    product_view

    业务员编号

    sellerid

    sellerid

    product_view

    业务员姓名

    sellername

    seller_name

    product_view

    说 明:以“订单”表为基础,通过“合同”视图与“在产品”视图补充数据。

    视图四:sales_target_view1(销售目标完成情况/宏观、签约、产品)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    产品编号

    productid

    product_id

    target

    produce_view . productid=target.product_id

    product_sales_view . productid = target.product_id

    group by productid,…, contractstatu

    (注:在来源中已能表明关系的,此处不再重复,下同)

    产品名称

    productname

    productname

    produce_view

    产品类别

    typename

    typename

    produce_view

    销售目标

    target

    target

    target

    销售总额

    totallprice

    sellsnumber*perprice

    product_sales_view

    销售数量

    sumnumber

    sum (sellsnumber)

    product_sales_view

    产品均价

    avgprice

    SUM(sellsnumber*perprice)/ SUM(sellsnumber)

    合同份数

    contractnumber

    COUNT(contractid)

    product_sales_view

    合同状态

    contractstatu

    contractstatu

    product_sales_view

    说 明:按产品分组,有汇总;以“营销目标”表为基础,通过“产品销售情况”视图和“在产品”视图补充 数据;“合同状态”作为以后查询的条件依据。

    视图五:sales_target_view2(销售目标完成情况/产品、履行)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    产品编号

    productid

    product_id

    sales_target_view1

    contractstatu=1

     

     

    group by productid,…

    产品名称

    productname

    productname

    产品类别

    typename

    typename

    销售目标

    target

    target

    销售总额

    totallfinish

    SUM(totallprice)

    销售数量

    numberfinish

    SUM(sumnumber)

    合同份数

    contractfinish

    SUM(contractnumber)

    产品均价

    avgfinish

    SUM(totallprice) / SUM(sumnumber)

    视图六:sales_pertarget1_view1(销售目标完成情况/业务员、产品、签约)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    业务员编号

    sellerid

    seller_id

    Seller_target

    produce_view . productid=Seller_target.product_id

     

     product_sales_view . sellerid = Seller_target. seller_id 

     

    group by seller_id,  productid,…, contractstatu

    业务员姓名

    sellername

    sellername

    product_sales_view

    产品编号

    productid

    product_id

    Seller_target

    产品名称

    productname

    productname

    produce_view

    产品类别

    typename

    typename

    produce_view

    个人目标

    pertarget

    per_target

    Seller_target

    销售总额

    sumprice

    sellsnumber*perprice

    product_sales_view

    销售数量

    sumnumber

    sum (sellsnumber)

    product_sales_view

    产品均价

    avgprice

    sum(sellsnumber*perprice)/ sum(sellsnumber)

    合同份数

    contractnumber

    count(contractid)

    product_sales_view

    合同状态

    contractstatu

    contractstatu

    product_sales_view

    说 明:按业务员,产品分组,有汇总;以“个人目标分解”表为基础,按业务员及订单产品分类,以签约为 标准,通过“产品销售情况”视图和“在产品”视图补充数据;“合同状态”作为以后查询的条件依据。

    视图七:sales_pertarget1_view2(销售目标完成情况/业务员、产品、履行)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    业务员编号

    sellerid

    sellerid

    sales_pertarget1_view1

    contractstatu=1

     

     

    group by sellerid ,productid,…

    业务员姓名

    sellername

    sellername

    产品编号

    productid

    product_id

    产品名称

    productname

    productname

    产品类别

    typename

    typename

    个人目标

    pertarget

    pertarget

    销售总额

    totallfinish

    sum(totallprice)

    销售数量

    numberfinish

    sum(sumnumber)

    产品均价

    avgfinish

    sum (totallprice) / sum (sumnumber)

    合同份数

    contractfinish

    sum (contractnumber)

    sales_pertarget1_view1

    视图八:product_view(产品利润视图)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    产品编号

    productid

    product_id

    product_profit

    produce_view.product_id= product_profit.product_id

     

    Orders.product_id= product_profit.product_id

    产品名称

    productname

    productname

    produce_view

    产品类别

    producttype

    producttype

    produce_view

    合同编号

    contractid

    contract_id

    product_profit

    销售数量

    sellsnumber

    sells_numbe

    Orders

    销售价格

    perprice

    perprice

    Orders

    产品成本

    productcost

    product_cost

    produce_view

    产品毛利

    profit

    profit

    product_profit

    利 润 率

    rpofitmargin

    profit_margin

    product_profit

    说明:以“产品利润”表为基础,通过“在产品视图”和“定单”表补充数据;此处计算的是每一份合同的每 一种产品的毛利,没有判断合同是否已经履行,在组织用户查询时,可能会附带条件,此时则需另行附加条件并组织联接进行查询。

    视图九:sales_pertarget2_view1(销售目标完成情况/业务员、合同、签约细目)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    业务员编号

    sellerid

    seller_id

    Seller_target

    Contract.seller_id=seller_target.seller_id

    seller.seller_id=seller_target.seller_id

    业务员姓名

    sellername

    seller_name

    Seller

    合同编号

    contractid

    contract_id

    Contract

    标的总额

    sellstotall

    sells_totall

    Contract

    签约日期

    signdate

    sign_date

    Contract

    履行日期

    carrydate

    carry_date

    Contract

    合同状态

    contractstatu

    contract_statu

    Contract

    说 明:以“个人目标分解”表和“合同”表为基础,通过“销售员”表补充数据。

    视图十:sales_pertarget2_view2(销售目标完成情况/业务员、履行细目)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    业务员编号

    sellerid

    sellerid

    sales_pertarget2_view1

    contractstatu=1

    业务员姓名

    sellername

    sellername

    合同编号

    contractid

    contractid

    标的总额

    sellstotall

    sellstotall

    签约日期

    signdate

    signdate

    履行日期

    carrydate

    carrydate

    说 明:为了使用户可以确定的期间进行查询,故不对数据进行处理,根据用户的查询要求在具体查询时进行 处理(分类汇总)。

    视图十一:store_ view(产品库存)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    截止日期

    toDate

    max(store_date)

    Store

    Produc_viewt.product_id= Store. product_id

    产品编号

    Productid

    Product_id

    Store

    产品名称

    productname

    productname

    Produce_view

    产品类别

    typename

    typename

    Produce_view

    库存数量

    storenumber

    store_number

    Store

    质量等级

    storequlity

    store_qulity

    Store

    产品批号

    productcode

    product_code

    Store

    说 明:以“产品出/入库表”为基础;以最后一次登记日期作为截止日期。

    视图十二:signcontract_view(签约客户/全部客户的查询直接操作表,不再建立视图)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    客户编号

    clientid

    client_id

    client

    Client. Client_id= contract.Client_id

    客户名称

    clientname

    client_name

    client

    签约总额

    signtotall

    sum(sells_totall)

    Contract

    联系人

    linkperson

    client_person

    client

    联系方式

    clienttel

    client_tel

    client

    住址

    Address

    client_ad

    client

    说 明:以“客户”表为基础,通过“合同”表补充数据。

    视图十三:store_contract_view(现有库存占在履合同标的之比重)

    字段名

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    产品编号

    productid

    productid

    store_ view

    product_sales_view.productid= store_view.productid

     

    contractstatu=0

    产品名称

    productname

    productname

    store_ view

    产品类别

    typename

    typename

    store_ view

    截止日期

    todate

    todate

    store_ view

    库存数量

    benumber

    sum(storenumber)

    store_ view

    需求数量

    needsnumber

    Sum(sells_number)

    product_sales_view

    质量等级

    qulity

    storequlity

    store_ view

    在履合同标的总额

    totallprice

    sum(sellsnumber * perprice)

    product_sales_view

    库存所占比重

    porpotion

    sum(storenumber)/sum(sellsnumber)* 100

    说 明:以“产品库存”视图为基础,通过“产品销售情况”视图补充数据。

    视图十四:(产品签约焦点)

    字段

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    客户编号

    clientid

    client_id

    client

    client .client_id = product_sales_view.clientid

     

    GROUP BY client.client_id, product_sales_view.productid,…

    客户名称

    clientname

    client_name

    产品编号

    productid

    productid

    product_sales_view

    产品名称

    productname

    productname

    产品类别

    typename

    typename

    合同编号

    contractid

    contractid

    总  价

    totallprice

    sum(sellsnumber * perprice)

    均  价

    avgprice

    sum (sellsnumber *perprice)       / sum (sellsnumber)

    总 成 本

    totallcost

    sum (sellsnumber *productcost)

    说 明:以“客户”表为基础,通过“产品销售情况”视图补充数据。

    视图十五:contract_verify_view(合同评审/主体)

    字段

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    评审号

    verifyid

    verify_id

    contract_verify

    client. client_id= contract_verify.client_id

    Seller. seller_id= contract_verify. seller_id

    评审日期

    verifydate

    verify_date

    有关评审人员

    verifypersons

    verify_persons

    客户编号

    clientid

    client_id

    客户名称

    clientname

    client_name

    client

    联系人/代表人

    clientperson

    client_person

    client

    业务员编号

    sellerid

    seller_id

    contract_verify

    业务员姓名

    sellername

    seller_name

    Seller

    拟履行日期

    verifycarry

    verify_carry

    contract_verify

    最低利润率需求

    verifyforprofit

    verify_forprofit

    标的总额

    verifyallprice

    verify_allprice

    可能的折扣

    verifyallowdis

    verify_allowdis

    可实现利润总额

    verifyprofit

    verify_profit

    可实现的利润率

    verifymargin

    verify_margin

    生产能力评估

    verifycapacity

    verify_capacity

    系统建议结论

    verifysysadvice

    verify_sysadvice

    评审结论

    verifyconclusion

    verify_conclusion

    说明;以“合同评审记录/主体评审”表为基础,通过“客户”、“业务员”表补充数据;用户界面添加成本总 额项(从在产品视图与产品细分视图中查询、计算)、最长需求期限、最短实现期限(产品细分评审相应的最大值,忽略需累加情形)。

    视图十六:contract_perverify_view(合同评审/产品细分)

    字段

    来源字段

    来源表/视图

    连接关系及条件、聚合等

    评审号

    verifyid

    verify_id

    contract_perverify

    produce_view. Productid= contract_perverify. product_id

     

    产品编号

    productid

    product_id

    产品名称

    productname

    productname

    produce_view

    产品类别

    typename

    typename

    数  量

    verifynumber

    verify_number

    contract_perverify

    单  价

    perverifyprice

    perverify_price

    最低利润率需求

    perverifyforprofit

    perverify_forprofit

    成  本

    productcost

    productcost

    produce_view

    可启动日期

    perverifyondate

    perverify_ondate

    contract_perverify

    可实现利润

    perverifyprofit

    perverify_profit

    contract_perverify

    可实现利润率

    perverifymargin

    perverify_margin

    生产能力评估

    perverifycapacity

    perverify_capacity

    系统建议结论

    perverifysyadice

    perverify_syadice

    评审意见

    perverifyconclusion

    perverify_conclusion

    说明;以“合同评审记录/产品细分评审”表为基础,通过“在产品视图”补充数据;用户界面添加成本总额项(从在产品视图与产品细分视图中查询、计算)、最长期限、最短实现期限(查询“合同评审记录/主体评审”与“产品生产周期”通过计算获得)。

    (三)、数据库报表设计

    本数据库暂未设计报表(拟将有关统计信息组织成报表)。

    (四)、数据库逻辑结构设计

    本数据库的逻辑结构如下图:

    销售管理系统数据库设计说明书 - saint - 不放弃不强求

    (五)、索引设计

    每个表的主键都是聚集索引,SQL Server自动为这些主键设置索引和索引结构。

    (六)、存储过程设计:

    无存储过程。

    (七)、触发器设计:

    无触发器设计

    (八)、其它逻辑设计

    不适用。 

     (九)、数据库物理结构设计

    本数据库的物理结构的部分符合SQL Server 2000关于数据文件、卷、页的分配和分配规则。

    数据库初始大小为(20MB),按照超过最大容量后(20%)的增长速率进行增长。

    数据库分配日志文件大小为(20M),自动增长。应用程序中自动截断事务日志。

    数据库的物理文件、主要数据文件、次要数据文件、文件组等都按照系统的默认设置进行。物理文件的存储位置为SQL Server 2000默认的位置。

    四、完成数据库设计,按以上设计要求创建数据库和表。

    (一)、完成的数据库设计:

    数据库名称:sales

    中文名称或意义:营销

    创建日期:2005.12.12

    创建人:王章聖

    数据文件初始大小:(20MB)

    数据文件物理位置:(C:\SQL Server\Data\ Library_data.MDF)

    日志文件初始大小:(20MB)

    日志文件物理位置:(C:\SQL Server\Data\ Library_log.LDF)

    文件组名称:sales

    特性列表:

    只读:False

    限制访问:False

    故障还原模型:简单

    自动关闭:False;

    自动收缩:True;

    兼容性级别:数据库兼容性80

    (二)、完成的数据表设计:

    数据库表及结构参见本文档前面第三部分数据库结构设计。

    (三)、完成其他数据库相关设计

    数据库逻辑关系、检查、约束等设计参见本文档前面第三部分,此处略。

    (四)、安全保密设计

    数据库只被少数授权用户修改,其他受限用户有权查看,但均必须提供用户名和正确的密码。存储数据库的服务器也只能让系统管理员或少数高级管理人员登录。

    数据库的安全策略,遵从SQL Server 2000的安全策略事项。


    转载自:  http://blog.163.com/saint998@126/blog/static/4306292920077293647361/



    展开全文
  • 概要设计和详细设计说明书的区别

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

    万次阅读 多人点赞 2016-06-06 23:02:20
    银行账户管理系统详细设计,附源码于博主的GitHub个人主页中。
  • 软件概要设计说明书—模板

    万次阅读 2015-07-30 13:41:34
    1 引言 1.1 目的 介绍编写本文档的目的,主要内容及读者。 1.2 需求概述 描述所要实现的功能和性能等。... 需求规格说明书; d. 文档所引用的资料、标准和规范。列出这些资料的作者、标题、编
  • 图书销售系统系统设计说明书

    万次阅读 多人点赞 2014-05-03 22:55:37
    在完成图书销售系统需求分析的基础上,项目开发团队依据《图书销售系统需求规格说明书》对图书销售系统如何实现进行了设计。为了文档化我们对系统的设计,编写了本文档。 本文档主要供项目开发团队在具体实现图书...
  • 领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是...
  • 数据库设计说明书的编写

    万次阅读 2019-06-17 19:46:34
    G.1 引言 G.1.1 编写目的 数据库的表结构设计是整个项目开发中一个非常重要的环节,一个良好的数据库设计,可以提高开发效率,方便系统维护,并且为...我们也希望通过写数据设计说明书,规范数据名称、数据范围...
  • 网约技师APP详细设计说明书

    千次阅读 2016-09-27 14:44:19
    目录 1引言 3 1.1编写目的 3 ...3登录程序Login()设计说明 5 3.1程序描述 5 3.2功能 6 3.3性能 6 3.4输人项 6 3.5输出项 7 3.6算法 7 3.7流程逻辑 7 3.8接口 8 3.9存储分配 8 3.10注释设计
  • 接口设计说明书模板

    万次阅读 2016-07-28 20:23:25
    接口设计说明书   (版本号 VX.X)                     杭州朗新信息科技有限公司  二〇XX年XX月   更改履历 版本号 修改编号 更改时间 更改的 图表和章节号 更改简要描述 更改人 ...
  • 数据库设计说明书

    千次阅读 热门讨论 2014-01-26 21:43:13
    1引言... 2 1.1编写目的... 2 1.2背景... 2 1.3定义... 2 1.4参考资料... 2 2外部设计... 2 2.1标识符和状态... 2 2.2使用它的程序... 3 2.3约定... ...3结构设计... ...3.1概念结构设计... ...3.2逻辑结构设计...
  • web技术基础---网站设计说明书

    千次阅读 2019-05-22 14:42:27
    《Web技术基础》 第1章 网站的规划 1.1.1 网站的定位 品味咖啡店网站整体上给人一种舒适、温馨的氛围,网页整体上呈现咖啡色、白色...第2章 设计与制作 2.1 首页设计 2.1.1 Logo设计 Logo背景为咖啡色,右边是盛有...
  • 为什么需要功能需求设计说明书

    千次阅读 2017-04-11 12:01:40
    为什么需要功能需求设计说明书在没有功能设计文档时,主要有如下几个问题: 前期研究团队沟通成本如何要让团队里面的所有人员对软件产品的功能需求设计有一个共识?没有功能设计文档,反正我是想不出有什么办法。当...
  • 软件设计方案说明书模板

    千次阅读 2019-08-27 14:56:03
    软件设计方案说明书 目录 文章目录软件设计方案说明书目录使用说明书修改记录审阅人1 引言1.1 编写目的1.2 背景1.3 参考资料1.4 术语定义及说明2 设计概述2.1 任务和目标2.1.1 需求概述2.1.2 运行环境概述2.1.3 条件...
  • ​ ​ 本报告的目的是对Asking进行详细设计说明,以便用户及项目开发人员了解产品详细的设计与实现。为开发人员提供开发参考。以下叙述将结合文字描述、伪代码,图表等来描述Asking的详细设计和相关的模块描述。...
  • 基于Android平台的会议室管理系统详细设计说明书

    万次阅读 多人点赞 2016-04-22 22:41:02
    会议室管理系统详细设计说明书 第一部分 引言 1.1 编写目的 本说明对会议室管理系统项目的各模块、页面、脚本分别进行了实现层面上的要求和说明。 软件开发小组的产品实现成员应该阅读和参考本说明进行代码的编写...
  • 软件设计方案说明书的编写

    万次阅读 2018-10-09 11:37:36
    关于软件设计方案说明书的编写,其根本目的有两个,一是便于项目内部各职能的成员进行沟通和项目执行时的依据(比如编码、测试等),二是作为项目的一部分,是项目文档的一部分。软件设计方案说明书的格式和内容,...
  • 详细设计说明书编写规范

    千次阅读 2015-06-27 21:23:23
     使项目详细设计说明书的编写规范化,从而规范软件管理。 尽可能详细地描述程序的各成份的设计考虑,以利于编制程序。  [此处加入编写目的]  1.2 背景  说明该软件系统名称,开发者,详细设计原则和方案  ...
  • 【软件工程】数据库设计说明书

    千次阅读 热门讨论 2018-03-30 20:39:22
    数据库设计说明书(GB8567——88) 1引言 1.1编写目的 本文档描述了机房收费系统数据库的设计,提供了数据酷库设计的可视性以及软件支持所需的信息,应用于机房收费系统开发前期,为后期的数据库设计指引方向,也...
  • 停车场系统管理数据库设计说明书

    千次阅读 2020-04-23 19:15:07
    数据库设计说明书 1.目的      为了让参与本项目的项目主管、业务分析师、项目开发人员、数据库管人员及以后的系统维护人员了解本系统的数据库设计思路、数据库整体架构及各种详细信息,...
  • 代码编写规范说明书

    万次阅读 2006-09-05 17:10:00
    目 录1 目的2 范围3 注释规范3.1 概述3.2 自建代码文件注释3.3 模块(类)注释3.4 类属性注释3.5 方法注释3.6 代码间注释4 命名总体规则5 命名规范5.1 变量(Variable)命名5.2 常量命名5.3 类(Class...
  • 架构设计 例子和实践 系统设计说明书(架构、概要、详细)目录结构演进架构中的领域驱动设计Web架构设计经验分享软件架构设计从MVC框架看MVC架构的设计领域驱动设计(Domain Driven Design)参考架构详解关于垂直切分...
  • 新闻发布系统设计说明书

    千次阅读 热门讨论 2017-05-14 15:38:14
     数据库设计图:  数据库文档:  后台登录用户名:1 密码:1    界面模拟图:  页面框架:  首页:  新闻列表页(后台管理页也是一样的):  新闻内容页: ...
  • 【软件工程】——详细设计说明书

    万次阅读 多人点赞 2018-11-19 12:38:12
    该文档在概要设计的基础上,进一步的细化系统结构,展示了软件结构的图标,物理设计、数据结构设计、及算法设计、详细的介绍了系统各个模块是如何实现的,包括涉及到的算法,逻辑流程等。 预期的读者:程序员 1.2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 254,706
精华内容 101,882
关键字:

代码设计说明书