广州大学《软件工程》实验报告三软件设计

news2024/11/23 9:00:58

广州大学学生实验报告(三)

开课学院及实验室:

学院

年级/专业/班

姓名

学号

实验课程名称

软件工程导论实验

成绩

实验项目名称

软件设计

指导老师

一、实验目的

掌握软件设计建模技术,能够撰写软件设计文档。

二、实验器材

  • 计算机一台;
  • Rational Rose 等支持软件设计建模的软件。

三、实验内容

本实验需要完成如下任务:

  1. 实现类图建模;

类图表示类以及类与类之间的关系,显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。

类图中存在的类有游客类、用户类、收件人类、商家类、客服类、物流公司类、账号类、个人信息类、浏览记录类、产品类、图书类、订单类、送货单类、订单项类。各个类中包含的具体内容如下:

(1)游客类包括游客昵称、游客号。

(2)用户类包括用户账号、用户账号密码、微信号、QQ号、收货地址、电话号、用户昵称、个人简介。

(3)收件人类包括收件人地址、姓名、手机号。

(4)商家类包括商家号、商家账号密码、商家地址、商家昵称。

(5)客服类包括客服账号、客服账号密码、客服昵称。

(6)物流公司类包括物流公司号、物流公司地址。

(7)账号类包括用户账号、用户账号密码、微信号、QQ号、电话号、账号状态、注册时间、最后登录时间。

(8)个人信息类包括用户账号、用户账号密码、微信号、QQ号、收货地址、电话号、用户昵称、个人简介。

(9)浏览记录类包括浏览时间、浏览内容、浏览记录号。

(10)产品类包括图书型号、图书数量、图书名。

(11)图书类包括图书号、图书名称、图书型号、图书价格、作者、出版社。

(12)订单类包括订单号、下单时间、订单地址、总计、支付类型。

(13)送货单类包括送货单号、发货时间、发货地址、收货地址、

(14)订单项类包括图书号、订单项号、商家号、图书型号、单价、送货状态。

  1. 绘制出相应的顺序图并生成协作图;

2.1生成订单的顺序图和协作图

其能够清晰描述网络书城商品管理子系统中生成订单的流程,其一共设计了五个类的对象,包括:用户、图书界面、图书、产品、支付。

首先用户请求图书下单界面,然后图书界面通过图书对象和产品对象分别获取图书号、图书型号和图书号对应的库存量。若库存量为空,则图书界面显示缺货提示;否则要求用户填写订单界面。用户选择单品数量,提交订单,图书界面返回订单生成界面给用户,要求用户进行订单支付。若用户成功支付,系统自动修改产品库存量,并显示订单成功支付界面;否则,显示订单待支付界面。

2.5 更新库存的顺序图和协作图

其能够清晰描述网络书城商品管理子系统中更新库存的流程,其一共设计了五个类的对象,包括:商家、图书库存信息修改界面、身份管理系统、库存管理系统、产品。

首先商家请求图书库存更新界面,然后身份管理系统检查商家身份。若商家身份异常,则由图书库存信息修改界面显示无法进行图书库存更新的提示;否则,库存管理系统从产品对象中获取图书类型和图书数量,然后再递交给图书库存信息修改界面进行图书库存信息显示。然后由商家指定需要更新库存量的图书类型,然后交由库存管理系统进行更新。若当前图书类型的库存数量为空,则图书库存信息修改界面显示图书库存更新失败提示;否则图书库存量更新成成功,显示图书库存量更新成功提示。

2.6 拆分订单的顺序图和协作图

其能够清晰描述网络书城商品管理子系统中拆分订单的流程,其一共设计了六个类的对象,包括: 拆分订单:订单、某订单:订单、订单项、图书、产品、送货单。

首先由系统自动执行拆分订单,然后某订单通过订单项获取商家号和图书型号,然后订单项再通过图书来获取商家号和图书型号,然后再依次由图书、订单项把图书号和图书型号递交给某订单。然后某订单再向产品类获取商家号对应的图书型号的库存。若库存为空,则拆分失败;否则,若商家号及其对应的图书型号的库存不为空且不存在于送货单中,则为送货单创建商家号并添加产品号;若商家号及其对应的图书型号的库存不为空且存在于送货单中,则只需添加产品号。最后显示拆分结果。

  1. 绘制相应的状态图;

3.1 订单状态图

事件开始(用户下单)后,订单处于待支付状态。若用户在规定时间(一天)内完成付款操作,订单状态转向已支付状态;否则订单逾时自动取消,事件结束。订单用户完成付款后,就会进入备货中的状态。订单中的商品发货后,就会进入运输中状态。在已支付、备货中、运输中这三种状态时,用户均可取消订单。订单中的商品送达目的地后,状态变为已送达,待确认收货。若用户签收并点击确认收货或用户签收后超过7天后自动确认收货,订单状态转为订单完成,事件结束;若用户拒绝签收,用户退货,订单状态转为退货中。商品退回时,订单状态变为已送达商家收货地址,待商家确认收货后,订单状态转为订单完成,事件结束。

3.2 库存查询状态图

事件开始(商家点击库存查询按钮)后,状态处于库存查询提示的状态。商家输入库存查询条件后,状态转向图书号已写入的状态。待商家点击库存查询提价按钮后,状态变为等待库存查询结果的状态。若无查询结果,则状态变为图书不存在的状态,事件结束;否则,状态变为图书数量显示状态,事件结束。

  1. 绘制相应的活动图。

4.3 创建订单活动图

事件开始(用户下单)后,系统自动创建订单,然后等待用户进行支付订单。用户支付订单后,商家进行备货,然后交由物流公司进行商品运输,待物流公司将商品送达至客户时,判断用户是否签收商品。若用户拒绝签收,用户选择进行退货,则用户将商品交由物流公司退回运输,待物流公司将商品送回至商家后,商家进行确认收货,最终订单完成,事件结束。若用户签收商品,则订单完成,事件结束。

4.4 拆分订单活动图

事件开始(用户下单)后,系统自动生成订单,然后进行拆分订单。系统获取商家号和商品型号,然后获取商家号对应的商品型号的库存。判断库存是否为空,若为空,订单拆分失败,事件结束;否则,判断商家号和商品型号是否存在于送货单中,若不存在,则为送货单创建商家号并添加产品号;若存在,则直接添加产品号。最后显示订单拆分结果,事件结束。

  • 实验感想

1、在本实验中,我根据实验一中的用例图来进行网络书城地类图的设计,在类图中绘制了用户类、个人信息类、订单类等相关类,并绘制类与类之间的关系,其中尤为需要注意不要出错的是订单和订单项的关系是聚合关系。

2、在绘制网络书城系统的商品管理相关的顺序图过程中,我一开始没有将类设置为类的三种版型,在具体询问老师之后,明白了顺序图中大多数类都描述成实体类,很少使用控制类。课堂上提到的“界面”相关的类使用边界类的这种版型,“用户”、“游客”等相关类使用实体类的这种版型。在考虑到这些问题之后,我对顺序图进行了重新绘制。

3、顺序图和协作图是统一建模语言中两种不同但密切相关的图表,它们均用于描述系统中的交互和通信,均属于UML的行为图。顺序图主要关注系统中对象之间的交互信顺序和信息传递,展示生命周期中某特定时间点上对象之间的相互作用。协作图则强调对象之间结构和协作关系,显示对象之间的关联以及它们如何一起协作完成某个功能。在实验过程中,每个绘制出来的顺序图可以通过rational rose中的F5键进行直接转化为,非常方便。

4、通过绘制订单状态图,我能够清晰地描述了订单的整个生命周期,从用户下单到订单完成的各个阶段都有详细的状态和事件定义。这有助于理解订单在不同阶段的状态转换和用户与系统之间的交互。尤其是在用户取消订单、确认收货和退货的情境下,状态图很好地捕捉了用户的各种操作和系统的响应。库存查询状态图展示了商家进行库存查询的流程。通过定义不同的状态和事件,呈现了商家查询库存的步骤,包括输入查询条件、提交查询请求以及处理查询结果的过程。

5、在绘制创建订单互动图中,我明确地描述了商家、物流公司和用户之间的协同流程。此外,我还考虑到了用户拒绝签收并选择退货的情景。在绘制拆分订单活动图中,展示了系统如何处理订单的拆分过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解线性方程组——(Jacobi)雅克比迭代法 | 北太天元

一、Jacobi迭代法 n 3 n3 n3 , 阶数为 3 时 A ( a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ) , b ( b 1 b 2 b 3 ) , A\begin{pmatrix} a_{11} & a_{12} &a_{13}\\ a_{21} & a_{22} &a_{23}\\ a_{31} & a_{32} &a_{33}\\ \end{pmatrix} ,\qua…

武汉大学博士,华为上班5年多,月薪多少。。。

最近,一位来自武汉大学的博士研究生透露了自己在华为公司工作五年后的薪酬情况。 据他透露,他在2018年加入华为时的月薪为2.4万,随着时间的推移,到了2023年,他的月薪已经增长至4.4万!此外,他还透…

微信小程序webview和小程序通讯

1.背景介绍 1.1需要在小程序嵌入vr页面,同时在vr页面添加操作按钮与小程序进行通信交互 1.2 开发工具:uniapp开发小程序 1.3原型图 功能:.点击体验官带看跳转小程序的体验官带看页面 功能:点击立即咨询唤起小程序弹窗打电话 2.…

React-RTK

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-RTK 目录 1、介绍 2、安装 3、编写RTK使用示例 4、官方提供项目包示例 创建 Redux …

uniapp中vue写微信小程序的生命周期差别

根据uniapp官网里的生命周期,感觉不太对劲,就自己测试了几个,发现有所差别。 红字数字 为 实际测试生命周期顺序。 因为需要页面传参 后再 初始化数据,而onLoad(option)接收参数后,就已经过了create()了,所…

tokio多任务绑定cpu(绑核)

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢? 首先我们先写一段简单的多任务程序。 use tokio; use tokio::runtime; use core_affinity;fn tokio_sample() {let rt runtime::Builde…

3.SpringCloud版本

1.SpringCloud与SpringBoot之间版本对应 2.服务拆分的注意事项 1.不同微服务,不要重复开发相同业务。 2.微服务的数据独立,每个微服务都有自己独立的数据库,不要访问其他微服务的数据库。 3.微服务可以将自己的的业务暴露为接口&#xff…

C++:基础语法

一、命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,n…

24V转2.8V2A降压芯片WT6030

24V转2.8V2A降压芯片WT6030 WT6030是一种高效同步整流降压开关模式转换器,集成内部功率MOSFET。该器件在宽输入电源范围内提供3A峰值输出电流,展现出卓越的负载和线路调节性能。其设计仅需要最小数量的外部现成组件,并且采用了节省空间的ESO…

GITHUB的VB代码无法加载的问题解决

GITHUB里有不少好的VB代码,但是下载之后,经常出现工程加载出错的问题,例如: LOG文件为: 不能加载 0 行 0: 不能加载文件 D:\xxxx\Semi VB API Loader\frmMain.frm 。 原因其实很简单,github里的换行符是u…

如何在PostgreSQL中使用索引覆盖扫描提高查询性能?

文章目录 解决方案1. 创建合适的索引2. 确保查询能够使用索引覆盖扫描3. 调整查询以利用索引覆盖扫描4. 监控和调优 示例代码1. 创建索引2. 编写查询3. 检查是否使用索引覆盖扫描4. 调整索引 总结 在PostgreSQL中,索引是提高查询性能的关键工具之一。索引允许数据库…

C# 字面量null对于引用类型变量✓和值类型变量×

编译器让相同的字符串字面量共享堆中的同一内存位置以节约内存。 在C#中,字面量(literal)是指直接表示固定值的符号,比如数字、字符串或者布尔值。而关键字(keyword)则是由编程语言定义的具有特殊含义的标…

积极探索新质生产力,九河云携手华为云技术交流引领数智跃迁

4月18日,九河云携手华为云举办了华为云SA技术培训会议,培训邀请到华为云技术人员作为主讲人,通过理论讲解与案例结合的方式,围绕ECS和EBS之间的联动,调优和数据保护等方面展开,深入浅出地讲解了基于EBS部署…

Python从0到100(十四):高级函数及函数使用进阶

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

【机器学习】分类与预测算法的评价与优化

以实际案例解析F1值与P-R曲线的应用 一、分类算法与性能评价的重要性二、F1值与P-R曲线的概念与意义三、实例解析:以垃圾邮件检测为例四、代码实现与结果分析五、结论与展望 在数据驱动的时代,机器学习算法以其强大的数据处理和分析能力,成为…

day07 51单片机-18B20温度检测

18B20温度检测 1.1 需求描述 本案例讲解如何从18B20传感器获取温度信息并显示在LCD上。 1.2 硬件设计 1.2.1 硬件原理图 1.2.3 18B20工作原理 可以看到18B20有两根引脚负责供电,一根引脚负责数据交换。18B20就是通过数据线和单片机进行数据交换的。 1&#xf…

PROSAIL模型前向模拟与植被参数遥感提取代码实现

原文链接:PROSAIL模型前向模拟与植被参数遥感提取代码实现https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602140&idx7&sn7c4ca9239865d536ba81ba4c26a34031&chksmfa820e3bcdf5872d540c0dfe8c533c8696c8b4658427aab254f246a739f96b36bc37…

GPT 在目标设定中的应用:实现梦想的技术方法

在技术快速进步的时代,我们设定和实现目标的方式正在不断发展。 该领域最重要的创新之一是引入生成式预训练 Transformer (GPT)。 本文将探讨 GPT 技术如何彻底改变目标设定的艺术,提供实用的见解和案例研究来展示其影响。 GPT 和目标设定简介 ​ 了解 …

Ansible安装基本原理及操作(初识)

作者主页:点击! Ansible专栏:点击! 创作时间:2024年4月23日15点18分 Ansible 是一款功能强大且易于使用的IT自动化工具,可用于配置管理、应用程序部署和云端管理。它使用无代理模式(agentles…

控制台居然可以这么玩?五分钟带你上手ANSI指令,实现一个log工具包

目录 前言 基础知识 进阶实践 ANSI参数 ANSI类 JSLog类 工具的使用说明 配置相关 全局配置项 默认配置 基本用法 打印字符 添加全局配置项 清空所有样式及操作行为 校验传入的参数是否正确 样式控制 Node环境 浏览器中 光标控制指令 光标位置偏移 滚动条控…