实验二 结构化分析与设计

实验二 结构化分析与设计

一.实验目的:

(1)掌握结构化的需求分析方法;

(2)掌握分层数据流图的绘制、数据字典和加工说明的编制;

(3)掌握数据流图映射为软件结构图的方法;

(4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;

(5)掌握测试的基本方法。

二.实验内容

(1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;

(2)绘制系统的分层数据流图,并给出数据字典;

(3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;

(4)为关键模块进行详细设计,如绘制关键模块的流程图;

(5)实现系统部分功能并测试。

三.实验步骤:

(1)复习结构化的分析与设计方法的主要过程;

(2)讨论系统存在的用户角色、工作流等;

(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;

(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;

(5)选择对应的结构化程序设计语言,实现并测试部分功能模块

答:【实例2】:餐饮服务管理系统
1.餐饮服务管理系统
1) 总体说明
餐饮服务管理系统是酒店管理系统的一个部分,主要完成中西餐、咖啡厅、酒吧等顾客消费的消费信息记录、资源分配以及员工的信息管理等工作。
2) 系统相关角色
系统管理员,员工,部门经理,采购员,顾客,供货商等等
3)相关功能说明
(1)餐饮收银管理
登记管理:客人到来以后进行登记,可以修改或者删除登记信息,客人可以要求合台或者换台。
消费管理:能够录入、修改或者删除客人的消费信息。
订餐管理:订餐信息登记,包括订餐时间、就餐时间、订餐桌数、人数、订餐详情、取消订餐、订餐查询。
主窗体:显示当前桌台、包房的占用情况,显示客人消费状态。
结算管理:客人结账的时候可以分类打折或者全面打折,计算开发票金额,打印账单,结账方式也有多种方式,如现金付款、支票付款、信用卡付款、免费、挂帐等自动统计。
日统计管理:可以对今日收银进行概览,方式多样,如按类别统计、按菜品统计、按帐单统计、按包房统计等等,可显示日销售项目排行榜,可打印销售日报表。
二级库存管理(主要管理酒水饮料的日常库存):这里主要是指前台的酒水饮料管理,包括入库、入库查询、入库统计,退货、退货查询、退货统计,库存动态,销售查询、销售统计,库存盘点、盘点查询、盘点统计。
菜谱管理:对菜品进行管理,如菜品类别维护、特色菜维护、菜品明细维护、酒水饮料维护,价格维护、套餐维护、菜谱打印、商品单位维护。各消费类别和消费项目可任意增加、修改与删除,按照自己业务情况任意设置。
(2)采购库存管理
该库存管理系统是后勤部门对所有资源的管理。
仓库从供货商处对商品进货,也可以对商品退货,可以进行商品进货信息和商品退货信息的查询、统计等。
餐饮各部门领用商品,也可以对领用商品退货。可以进行商品领用和退货信息的统计、查询,可按部门、商品、商品类别等多种方式。
显示各个供应商信息,对供应商供货情况进行记帐,可查询、统计其供货信息,可查询应付款、已付款等各种信息,
对仓库中的商品进行盘点,对各种进货、退货、领用信息以及供货商情况进行统计,生成报表,交部门经理审核。某商品库存低于一定程度时可以预警。
(3)人员维护
系统可以对各种员工的信息进行维护,包括增加、删除、查询等等。
员工交换班的时候,当前用户更换并确认当前(钱款、物品、房间状态)。
用户更改自己的密码。
帐号管理(系统管理员),用户权限、密码、站点的编辑。
每月底可以对员工的工作情况进行统计,生成报表,供部门经理进行审核。
其他细节可以加入自己的一些假定。

分层数据流图:
1、顶层图

2、中层图

3、底层DFD图
(a)点菜

(b)上菜

(c)结账

(d)账单统计

(e)缺料统计

(f)处理到料单

(h)顾客统计

数据字典:
1、user(用户表)

序号 字段名称 字段描述 字段类型 长度 备注
1 user_id 用户编号 char 20 不允许空
2 Pwd 用户密码 char 20 不允许空
3 Style 用户类型 nchar 20 不允许空
4 Id 用户身份证号 char 20 不允许空
5 Name 用户姓名 char 20 不允许空
6 Tel 用户电话 Char 20 不允许空
7 Money 收款金额 money 允许空
用户表主要用于存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加 顾客 和添加预定时会使用到用户信息来记录经手的用户,字段money用于记录用户的收款金额,便于结算时对收款现金的核对。

2、customer(顾客表)

序号 字段名称 字段描述 字段类型 长度 备注
1 Name 顾客姓名 char 20 不允许空
2 Id 顾客编号 nchar 20 不允许空
3 Birthday 顾客生日 nchar 20 不允许空
4 Pwd 顾客密码 nchar 20 不允许空
5 Addtime 添加时间 nchar 20 不允许空
6 Money 账户余额 money 不允许空
7 usedmoney 已用金额 money 不允许空
8 mobilephone 顾客手机 nchar 20 不允许空
9 Userid 用户编号 nchar 10 不允许空
顾客 表主要用于存储一些 顾客 信息,如 顾客 的账号、密码、联系方式和消费情况等等,主要用于 顾客 订餐、充值和结算,字段money用于储存账户余额,在使用充值和账户余额支付时会使用到它。字段usedmoney用于记录 顾客 的消费情况,为 顾客 打折时会使用到它。

3、food (食谱表)

序号 字段名称 字段描述 字段类型 长度 备注
1 Name 食谱名称 nchar 20 不允许空
2 Price 价格 money 不允许空
3 Photo 食谱照片 image 允许空
4 Efficacy 食谱功效 nchar 50 允许空
5 Formula 食谱配料 nchar 50 允许空
食谱表主要用于存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于 顾客 订餐,使用于添加预定。字段Price 记录的是食物的价格。当顾客 预定餐点时,系统使用它来算费用。

4、Reservation (预定表)

序号 字段名称 字段描述 字段类型 长度 备注
1 Tableid 桌号 nchar 10 不允许空
2 Date 日期 nchar 20 不允许空
3 Time 时间 nchar 10 不允许空
4 Name 顾客姓名 nchar 10 不允许空
5 Id 顾客编号 nchar 20 不允许空
6 Userid 用户编号 nchar 10 不允许空
7 Food 预定餐点 nvarchar MAX 不允许空
8 Money 消费金额 money 不允许空
预定表主要用于存储一些预定信息,如 顾客 的账号、预定的时间、桌号和菜单等等,主要用于记录 顾客 的预定信息,会使用到用户、 顾客 、菜单和折扣信息。当系统预定餐点时,会从其他各表中调出需要的信息,经过计算和处理后,将最终信息储存到YuDing表,该表和其它各表都有紧密 的联系。

5、discount( 折扣表 )

序号 字段名称 字段描述 字段类型 长度 备注
1 usedmoney 已消费金额 char 10 不允许空
2 Discount 折扣程度 char 10 不允许空
折扣表用于存储管理员(店主)设定的打折信息,用来计算打折后的应付金额,使用在添加预定时打折。当 顾客 预定餐点时,打折服务的折扣程度就是参照该表 。

6 、table(桌台表)

序号 字段名称 字段描述 字段类型 长度 备注
1 tableID 餐桌ID nchar 20 不允许空
2 tablename 餐桌名 nchar 10 不允许空
3 tablestatus 餐桌状态 nchar 2 不允许空
桌台表存放桌台等数据,修改桌台将要访问此表 。

7 、storage(仓库表)

序号 字段名称 字段描述 字段类型 长度 备注
1 goodsname 商品名称 nchar 10 不允许空
2 goodsID 代码 nchar 20 不允许空
3 goodsPrice 商品价格 float 10 不允许空
4 goodsnum 商品数量 nchar 10 不允许空
5 goodstype 商品类别 nchar 20 不允许空
仓库表存放物品等数据,修改物品需要访问此表 。

四.思考题

(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
答:需求说明书是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础而编制的,其主
要包括了细化到适当层次的数据流图、数据字典和黑盒形式的算法描述等内容;概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软
件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人
机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算
机无关;详细设计说明书的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了保证软件的可靠性之外,使
将来编写的程序可读性好、易于理解、易于测试、易于修改和维护,是详细设计阶段最重要的目标。

(2)结构化分析方法与面向对象分析方法有无本质上的不同?
答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一
步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。而面向对象的分析方法则是通过将数据和逻辑结构抽象成为
对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,
结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测
和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件
系统的方法。

(3)对数据流图进行审查有何意义?
答:1、便于用户表达功能需求和数据需求及其联系;
2、便于两类人员共同理解现行系统和规划系统的框架;
3、清晰表达数据流的情况;
4、有利于系统建模。

四. 实验总结
答:本次实验,完成了对餐饮服务管理系统的结构化分析。根据餐饮管理的相关要求, 建立了餐饮服务管理系统 的概念数据模型,画出相关的流程图,规划数据字典,并进行 了 简单的概要设计。
在拿到实验的题目的时候,一直在纠结到底应该选医院服务系统的还是餐饮服务系统的,这两个系统都是和我们生活息息相关的,而且参考资料也比较多,后来选择了餐饮服务管理系统。
在实验的过程中, 虽然其中有一些困难现在还没有得到解决, 就是有些图和实验给出我们的要求并不能完全一一对应。 但是我却总结了一个比解决这些困难更重要的东西,那就是:遇到困难,我们要做的不是去怕它,而是想法去找寻解决困难的方法。

posted @   粥粥alg  阅读(556)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示