软件工程课程实践-详细设计说明书

1.引言

1.1编写目的

在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。

在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。主要的工作有:根据在《需求分析说明书》中所描述的数据、功能、运行、性能需求,并依照《概要设计说明书》所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决如何

  1. 接受:旅客信息及取票通知和帐单;
  2. 输出:取票通知和帐单及机票;
  3. 网络输出和加密,输入和解密;
  4. 分辨信息的种类并采取相应的处理步骤;
  5. 判断信息的正误并采取相应的处理步骤;
  6. 进行数据库的查询、修改工作;
  7. 接受并判断错误,输出相应的出错消息;

在以下的各个阶段中,《用户操作手册》将与本阶段的工作紧密结合,努力作到让用户易懂易学。《测试报告》和《维护报告》也将参考本说明书,检验本系统的各项性能指标,及时发现纰漏及时修补,一定要把功能强大、稳定可靠、便于维护的基金管理系统交到用户手中。

1.2项目背景

(1)项目名称:基金管理系统

(2)任务提出者:XXX

(3)开发者:XXX软件工程小组

(4)用户:基金用户

(5)实施单位:XXX软件工程小组

1.3定义

SQL SERVER: 系统服务器所使用的数据库管理系统(DBMS)。

SQL: 一种用于访问查询数据库的语言

事务流:数据进入模块后可能有多种路径进行处理。

主键:数据库表中的关键域。值互不相同。

外部主键:数据库表中与其他表主键关联的域。

ROLLBACK: 数据库的错误恢复机制。

1.4参考资料

以下列出在详细设计过程中所使用到的有关资料:

1.《基金管理系统项目计划任务书》   软件开发小组   

2.《基金管理系统项目开发计划》      软件开发小组   

3.《需求规格说明书》      软件开发小组  

4.《概要设计说明书》 软件开发小组

6.《软件工程》     张海藩 清华大学出版社    

7.《软件工程》           钱乐秋        清华大学出版社

2.总体设计

2.1需求概述

该基金管理系统界面简洁美观,功能友好。系统采用了可视化的图表,方便用户可视化地分析数据的对比与变化,给用户更加直观的感受和分析个人的基金,并且通过我们的系统可以在线购买和抛售,免去了一些繁琐的过程,增强了用户体验。

  1. 数据表格和统计图表结合分析
  2. 基金情况横纵对比(不同基金的,同一基金不同时间)
  3. 多种查询方式,智能表格排序
  4. 多种数据统计(种类统计,盈亏统计,收支统计)图表展示
  5. 在线抛售与购买,记录购买和抛售记录
  6. 强大的安全系统(支持原密码,邮箱,密保多种密码修改方式)

2.2软件结构

2.2.1 整体软件结构

 

2.2.2 wbs分解图

 

 3. 程序描述

我们的基金管理系统分为“基金市场模块”,“基金查询模块”,“个人基金模块”,“用户管理模块”,下面我们分别对各个模块进行描述

3.1 基金市场模块

3.1.1功能

名称

功能描述

每日基金

该模块用于显示每日各个基金的各项指标,来给用户进行参考,这里我们加入了基金代码查询功能,我们可以通过基金代码进行精确地查询,查看基金的各项指标。由于该模块是用于用户的基金购买,在我们选中我们想要购买的基金后,我们购买相应的份额。

3.1.2性能

运行

模块组合

相应时间(ms)

每日基金查询

基金查询模块、网络模块、数据库模块

500

当前界面基金查询

基金查询模块

200

当日基金购买

基金购买模块、网络模块、数据库模块

500

3.1.3输入项目

运行

输入

输出

请求方式

每日基金查询

date

Sucess,code,message,data[{date,

Stock_id,stock_name,nav,day_growth}]

Json/POST

当日基金购买

id,date,stock_id,stock_name,user_id,nav,amount

Sucess,code,message

Json/POST

3.1.4输出项目

输入项目具体可以参考3.1.3中的输入项目表中的输出

3.1.5算法

用户基金拥有份额 = 用户当前拥有份额 + 当前购买份额

3.1.6程序逻辑

  • 每日基金查询

 

 

  • 每日基金购买

 

3.1.7接口

 

客户端通过访问接口发出请求,然后tomcat转给我们的后端controller,controller再调用service里的业务逻辑,service再调用dao层进行一系列的处理,最后将结果返回给用户,我们在dao层使用Mybatis对数据库进行操作。

3.1.8存储分配

属性

字段名

数据类型

可否为空

基金代码

stock_id,

varchar(255)

PK

N

日期

date

date

PK

N

基金简称

stock_name

varchar(255)

N

单位净值

nav

double 

N

日增长率

day_growth

double

3.1.9限制条件

必须保证程序正常的连接到服务器

3.1.10测试要点

  1. 测试数据是否可以从后端传送到前端
  2. 测试查询功能是否可以正常使用
  3. 测试是否可以正常的购买基金以及是否有出错处理

3.2 基金查询模块

3.2.1功能

名称

功能描述

按日查询

这一模块主要是用来按照日期查询以往基金的状况,这里我们结合表格和可视化图表的形式进行数据展示

按类查询

这一模块主要是用来按照代码查询以往基金的状况,这里我们结合表格和可视化图表的形式进行数据展示

简称查询

这一模块主要是用来按照简称查询以往基金的状况,这里我们结合表格和可视化图表的形式进行数据展示

3.2.2性能

运行

模块组合

相应时间(ms)

按日查询

基金查询模块、网络模块、数据库模块

500

按类查询

基金查询模块、网络模块、数据库模块

500

简称查询

基金查询模块、网络模块、数据库模块

500

图表对比

图表模块

200

当前页查询

基金查询模块

200

3.2.3输入项目

运行

输入

输出

请求方式

按日期查询以及图表展示

date

Sucess,code,message,data[{date,

Stock_id,stock_name,nav,day_growth}]

Json/POST

按代码查询以及图表展示

stock_id

Sucess,code,message,data[{data,

Stock_id,stock_name,nav,day_growth}]

Json/POST

按简称查询以及图表展示

Stock_name

Sucess,code,message,data[{data,

Stock_id,stock_name,nav,day_growth}]

Json/POST

3.2.4输出项目

输入项目具体可以参考3.2.3中的输入项目表中的输出

3.2.5算法

该模块就是查询数据库中的数据,然后层层调用,并没有涉及相应的算法

3.2.6程序逻辑

  • 过往基金按日期查询

 

 

  • 过往基金按代码查询

 

 

  • 过往基金按简称查询

 

 

3.2.7接口

 

 

客户端通过访问接口发出请求,然后tomcat转给我们的后端controller,controller再调用service里的业务逻辑,service再调用dao层进行一系列的处理,最后将结果返回给用户,我们在dao层使用Mybatis对数据库进行操作。

3.2.8存储分配

参考3.1.8中存储分配

3.2.9限制条件

必须保证程序正常的连接到服务器

3.2.10测试要点

  1. 测试数据是否可以从后端传送到前端
  2. 测试查询功能是否可以正常使用
  3. 测试图表是否可以正常展示

3.3.个人基金模块

3.3.1功能

名称

功能描述

基金管理

这里我们看到我们已经拥有的基金,同时这里我们加入购买时净值和今日净值的对比,以及盈亏的分析。我们在该功能模块也可以查询相应基金的拥有情况。在该模块我们可以进行基金的抛售,我们可以根据盈利情况进行基金的抛售,选择抛售的份额,这里我们对用户份额的抛售进行了限制,如不可超过已拥有的份额,不可为小数或者非正数。

购买记录

这里我们可以看到我们购买的记录,其购买时间精确到分秒,也可看到我们购买的份额等数据。

抛售记录

这里我们可以看到我们抛售的记录,其抛售时间精切到分秒,也可以看到我们抛售的份额,抛售时的净值以及盈利情况。

基金统计

这里我们结合可视化图形的形式,进行数据的展示,这里我们分为三张图表,基金统计表,通过饼状图的展示,我们可以看到各项基金份额占比。盈利统计表,这里我们可以看到已盈亏,持仓盈亏,总盈亏的各项数据对比与展示。收支统计表,这里我们可以看到我们已收入,待收入,总收入,总支出等数据的显示和对比。

3.3.2性能

运行

模块组合

相应时间(ms)

个人拥有基金情况查询

基金查询模块、网络模块、数据库模块

500

抛售指定份额基金

基金抛售模块、网络模块、数据库模块

500

购买记录查询

记录查询模块、网络模块、数据库模块

700

抛售记录查询

记录查询模块、网络模块、数据库模块

700

个人基金份额统计

基金查询模块、网络模块、数据库模块

500

盈亏统计

基金统计模块、网络模块、数据库模块

500

收支统计

基金统计模块、网络模块、数据库模块

500

3.3.3输入项目

运行

输入

输出

请求方式

个人拥有基金情况查询

User_id

Sucess,code,message,data[{date,

Stock_id,stock_name,nav,amount}]

Json/POST

抛售记录查询

User_id,data,

Stock_id,stock_name,nav,amount

Sucess,code,message

Json/GET

购买记录查询

User_id

Sucess,code,message,data[{data,

Stock_id,stock_name,user_id,nav,amout}]

Json/GET

购买记录查询

User_id

Sucess,code,message,data[{data,

Stock_id,stock_name,nav,user_idhave_date,hava_anv,amout,profit}]

Json/GET

3.3.4输出项目

输入项目具体可以参考3.3.3中的输入项目表中的输出

3.3.5算法

单次抛售盈亏 = 份额 * (当天净值-购买时净值)

总收入 = 已收入 + 待收入

3.3.6程序逻辑

  • 基金抛售 

 

 

 

  • 基金购买记录查询

 

  • 基金抛售记录查询

 

 

3.3.7接口

 

 

客户端通过访问接口发出请求,然后tomcat转给我们的后端controller,controller再调用service里的业务逻辑,service再调用dao层进行一系列的处理,最后将结果返回给用户,我们在dao层使用Mybatis对数据库进行操作。

3.3.8存储分配

属性

字段名

数据类型

可否为空

编号

id

int

PK

N

用户ID号

user_id

int 

FK

N

拥有时间

have_time

date 

N

基金代码

stock_id

varchar(255)

FK

N

基金名称

stock_name

varchar(255)

 FK

N

拥有时净值

have_nav

double

 FK

N

拥有份额

amount

int

N

  

属性

字段名

数据类型

可否为空

编号

id

int

PK

N

用户ID号

user_id

int 

FK

N

拥有时间

have_time

datetime

N

基金代码

stock_id

varchar(255)

FK

N

基金名称

stock_name

varchar(255)

 FK

N

拥有时净值

have_nav

double

 FK

N

拥有份额

amount

int

N

属性

字段名

数据类型

可否为空

编号

id

int

PK

N

用户ID号

user_id

int 

FK

N

拥有时间

have_time

date

N

基金代码

stock_id

varchar(255)

FK

N

基金名称

stock_name

varchar(255)

 FK

N

拥有时净值

have_nav

double

 FK

N

抛售时间

date

datetime

N

抛售净值

nav

double

FK

N

抛售份额

amount

int

N

盈利

profit

double

N

3.3.9限制条件

必须保证程序正常的连接到服务器

3.3.10测试要点

  1. 测试数据是否可以从后端传送到前端
  2. 测试查询功能是否可以正常使用
  3. 测试盈亏统计以及收支统计是否可以正常显示并且是否计算结果正确
  4. 测试是否可以正常抛售
  5. 测试记录查询功能是否能够正常使用

3.4 用户管理模块

3.4.1功能

3.4.2性能

运行

模块组合

相应时间(ms)

查看和编辑个人信息

用户信息模块、网络模块、数据库模块

1000

根据原密码修改密码

用户信息模块、网络模块、数据库模块

500

根据邮箱修改密码

用户信息模块、网络模块、数据库模块

500

设置用户密保问题

密保模块、网络模块、数据库模块

700

根据密保修改密码

密保模块、用户信息模块、网络模块、数据库模块

500

注销个人账号

用户信息模块、网络模块

500

用户登录

用户信息模块、网络模块、数据库模块

500

用户注册

用户信息模块、网络模块、数据库模块

500

3.4.3输入项目

运行

输入

输出

请求方式

修改个人信息

{email,password,nickname,

sex,phone,head_pic,

qq_pic,wechat_pic,birthday

age,blood_type,school_end,

zodiac,constellation,autograph,status}

Sucess,code,message

Json/POST

用户注册

Email,password

Sucess,code,message

Json/POST

用户登录

Email,password

Sucess,code,message

Json/POST

根据原密码修改密码

User_id,password,new_password

Sucess,code,message

Json/POST

根据邮箱修改原密码

User_id,new_password

Sucess,code,message

Json/POST

设置密保问题

User_id,question_1,answer_1,question_2,answer_2,question_3,answer_3

Sucess,code,message

Json/POST

验证密保问题

User_id,question_1,answer_1,question_2,answer_2,question_3,answer_3

Sucess,code,message

Json/POST

根据密保修改密码

User_id,new_password

Sucess,code,message

Json/POST


输入项目具体可以参考3.4.3中的输入项目表中的输出3.4.4输出项目

3.4.5算法

该模块就是查询数据库中的数据,然后层层调用,并没有涉及相应的算法

3.4.6程序逻辑

  • 用户信息更改

 

 

  • 用户密码更改

 

 

3.4.7接口

 

 

客户端通过访问接口发出请求,然后tomcat转给我们的后端controller,controller再调用service里的业务逻辑,service再调用dao层进行一系列的处理,最后将结果返回给用户,我们在dao层使用Mybatis对数据库进行操作。

3.4.8存储分配

属性

字段名

数据类型

可否为空

用户ID号

id

Int

PK

N

邮箱

email

varchar(50)

N

昵称

nickname

varchar(50)

N

密码

password

varchar(19)

N

电话

phone

varchar(30)

Y

年龄

age

varchar(50)

Y

性别

sex

int

Y

属性

zodiac

varchar(50)

Y

血型

blood_type

varchar(3)

Y

3.4.9限制条件

必须保证程序正常的连接到服务器

3.4.10测试要点

  1. 测试数据是否可以从后端传送到前端
  2. 测试是否可以修改个人信息
  3. 测试是否可以设置密保问题
  4. 测试是否根据相应的模块修改用户密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RockLis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值