目录
2.数据库设计(E-R图)--关系模型<文字表述><实体+属性+关联关系(1-n主键下标线,外键,n-m创建第三张表)>+数据表(三段线)+sql语句(核心代码)
软件课程设计
摘要
绪论
目录
一、前言
二、可行性分析
可行性分析:技术可行性,经济可行性,法律可行性。
三、需求分析
1.数据流图,功能数据流向描述
(面向过程)
数据流图有4种基本符号:
-
正方形(或立方体)表示数据的源点或终点;
-
圆角矩形(或圆形)代表变换数据的处理;
-
开口矩形(或两条平行横线)代表数据存储;
-
箭头表示数据流,即特定数据的流动方向。
tips:初学者在画数据流图时,往往试图在数据流图中表现分支条件或循环,殊不知这样做将造成混乱,画不出正确的数据流图。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。
分层数据流图
画法概述:
顶层数据流图
顶层图分析:以图书管理系统为例,我们先分析以下题目找出外部实体。分析可知外部实体有:学生,管理员。(特别说明一下,别把图书管理系统也理解成实体,处理系统要完成我们得数据处理工作,所以图书管理系统处理是加工)。
0层数据流图
画完顶层图(找动词, ),接下来我们就该分析我们的图书管理系统究竟做了那些工作了(加工–>子加工)。分析一下我们的图书管理系统为用户提供了啥处理?就登录/注册、借书、查询书籍、修改书籍、修改用户信息。这里再考虑一个问题,我们借书和还书中间产物是啥?我们得形成一个正式得借书历史单吧。上述分析中加粗字:动词是加工,名词是数据存储 通过上述分析,我们把加工分为了两个子加工,画出0层图,图如下:
1 顶层数据流图
*用户*
*管理员*
2.用例图,用例描述
(面向对象)6 分钟学会 UML 用例图-哔哩哔哩
关系类型 | 说明 | 表示符号 |
---|---|---|
关联 | 参与者与用例之间的关系 | |
泛化 | 参与者之间或用例之间的关系 | |
包含 | 用例之间的关系 | |
扩展 | 用例之间的关系 |
1、 确定业务者参与者
2、 用例词汇表
用例名称建议用动词或动词短语:动词+名词(名词+动词)
3、 用例建模
4、 用例描述
表:用例图规约表
用例 | 用例描述 | 参与者 | 前置条件 | 后置条件 | 基本流程 | 可选流程 |
---|---|---|---|---|---|---|
借书 | 图书管理员帮助读者借书操作的过程· | 图书管理员、读者a | 管理员已登录系统、读者a借阅账户已读入、图书id已读入 | 显示警告,读者借书记录已显示、图书显示可借阅 | 1.图书管理员选择借书功能; 2.读者刷卡读入借阅账户; 3.系统进行读者借阅账户有效性检测,如是否有该读者、是否超期、挂失、停借、注销,是否有罚款未交、是否有过期书未还,借书数是否超限,如检测未通过,则显示警告并作出相应处理; 4.扫描仪读入图书条码,系统进行图书是否被预约,读者是否有权借,是否达到借书数上限检测;检测未通过则显示警告并做出相应处理; 5.系统检测通过则表示借书成功并增加、显示借书记录和操作信息,且记入读者借还记录中,更新读者相关借还记录,扫描下一本图书条码,继续借书。 5.系统检测通过则表示借书成功并增加、显示借书记录和操作信息,且记入读者借还记录中,更新读者相关借还记录,扫描下一本图书条码,继续借书。 | |
…… |
其他
非功能需求分析:
安全性、稳定性、可操作性….
运行环境需求:
四、系统设计
总体设计
1.功能模块设计(结构图)
2.基本动态模型(活动图)
带泳道的活动图
3.类的设计与实现(类图)
实体类(entity)
控制类(control)
边界类(boundary)
面向对象是符合人们对现实世界的思维模式,利用面向对象设计,特别是采用各种设计模式来解决问题时,会设计多个类,然后创建多个对象,一个设计良好的类,应该是兼顾信息和行为并且高内聚。而不同的类之间,应该做到松耦合。
属性的权限
可见性:小写字母开头
可见性:用于设置该属性和方法的可访问性
类之间的关系:
当面对应用系统或者需要解决的问题经常是复杂的、高度抽象的,我们 创建的多个对象往往是有联系的,通常对象之间的关系可以分为以下几类:
泛化关系:
泛化关系其实就是继承关系:指的是一个类(称为子类、子接口)继承(extends)另外的一个类(称为父类、父接口)的功能,并可以增加自己额外的一些功能,继承是类与类或者接口与接口之间最常见的关系; 在Java中此类关系通过关键字 extends明确标识。 在UML类图中,继承通常使用 空心三角+实线 表示
实现关系:
-
实现关系:指的是一个class类实现 interface接口(可以实现多个接口)的功能;实现是类与接口之间最常见的关系;
-
在Java中此关系通过关键字
implements
明确标识。 -
在UML类图中,实现通常使用
空心三角+虚线
表示
依赖关系:
指的是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。一般而言,依赖关系在Java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用。 表示一个A类依赖于B类的定义,如果A对象离开B对象,A对象就不能正常编译,则A对象依赖于B对象(A类中使用到了B对象); 比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖; 表现在代码层面,类B作为参数被类A在某个method方法中使用。 在UML类图中,依赖通常使用虚线箭头表示
关联关系:
指的是类与类之间的联接,它使一个类知道另一个类的属性和方法(实例变量体现)。A类依赖于B对象,并且把B作为A的一个成员变量, 则A和B存在关联关系. 关联可以是双向的,也可以是单向的。两个类之前是一个层次的,不存在部分跟整体之间的关系。 在UML类图中,关联通常使用实线箭头表示
按照多重性分类:
-
一对一:一个A对象属于一个B对象,一个B对象属于一个A对象。
-
一对多:一个A对象包含多个B对象。
-
多对一:多个A对象属于一个B对象,并且多个A对象中的每个A对象只能属于一个B对象。
-
多对多:一个A对象属于多个B对象,一个B对象属于多个A对象。
聚合关系
聚合关系是关联关系的一种特例,他体现的是整体与部分,是一种“弱拥有”的关系,即has-a的关系。聚合是整体和个体之间的关系。 例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。 与关联关系一样,聚合关系 也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。 聚合关系表示整体和个体的关系,整体和个体可以相互独立存在,一定是有两个模块分别管理整体和个体。 在UML类图中,聚合通常使用空心菱形+实线箭头表示
组合关系
组合关系是关联关系的一种特例,他体现的是一种contains-a(包含)的关系,这种关系比聚合更强,也称为强聚合。 它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。 整体和个体不能独立存在,一定是在一个模块中同时管理整体和个体,生命周期必须相同(级联)。 在UML类图中,组合通常使用实心菱形+实线箭头表示
具体绘图
对于继承(泛化)、实现(实现)这两种关系比较简单,它们体现的是一种类与类、或者类与接口之间的纵向关系。 其他的四种关系则体现的是类与类、或者类与接口之间的引用/横向关系。这四种关系所表现的强弱程度来看,从强到弱依次为:组合>聚合>关联>依赖。
详细设计
1.(动态建模时序图或者流程图+核心代码)
类图,时序图+核心代码(流程图+核心代码)
类图在总体设计中已有体现
时序图
什么是时序图
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
让我们来看一看visio2016对时序图的解释。
时序图的元素
我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,在单独介绍组合片段元素。
2.时序图的作用
时序图是一种动态的、行为模型视图,可以用来描述在程序运行期间,某个类的方法被哪个类在哪个阶段所调用。它的作用概括如下:
-
将交互行为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展示对象之间的交互;
-
展示对象之间交互的顺序。相对于其他UML图,时序图更强调交互的时间顺序;
-
可以直观地描述并发程序。 通俗地说,时序图可以直观地刻画对象之间传递消息的过程, 也就是面向对象编程中不同对象间方法调用的过程。
UML建模与软件开发设计(七)——时序图设计_时序图 异步-CSDN博客
2.数据库设计(E-R图)--关系模型<文字表述><实体+属性+关联关系(1-n主键下标线,外键,n-m创建第三张表)>+数据表(三段线)+sql语句(核心代码)
3.包图和构建图
五、系统实现
Day2 04-pageHelper分页插件的使用_哔哩哔哩_bilibili
界面设计
功能设计(程序流程图)
六、系统测试
测试方案
测试过程
测试结果