软件工程实验-实验2 结构化分析与设计-总体设计和数据库设计

一、实验内容

1. 绘制工资支付系统的功能结构图和数据库

在系统设计阶段,要设计软件体系结构,即是确定软件系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。同时把模块组织成良好的层次系统:顶层模块通过调用它的下层模块来实现程序的完整功能,顶层模块下面的每个模块再调用更下层的模块从而完成程序的一个子功能,最下层的模块完成最具体的功能。通过对数据流图边界的划分,变换成软件结构,得到功能结构图。试根据实验指导书绘制工资支付系统的功能结构图。并完成如下任务:

任务1:总务办公管理系统总务办公管理系系统简介:某单位准备开发一个购买办公用品和设备的总务办公管理系统。办公用品的购买申请由各科室提出,由负责总务工作的办公室统一收集。其中,

购买申请的金额低于500 元(含500 元)可以由总务办公室直接审批,而高于500 元的购买申请由机构主管领导审批,批准的购买申请形成采购清单由采购员负责购买,同时应记录每次实际购买清单,进行入账。在提出购买申请时要包括下述数据:申请单位、物品名称、物品数量、预计价格、物品用途等。每次购买完成后应记录以下数据:物品名称、物品数量、价格、总金额、购买日期、经办人等。请对该系统进行设计,绘制出该系统的功能模块结构图和数据库模型图。

任务2:火车票预订系统系统简介:某高校后勤集团为了学生寒暑假返乡,办理代学生预订返乡火车票事务,订票必须提前三天办理,后勤订票处提前三天向火车站办理购票事务。订票处使用一台微机处理订票后购票事务,学生订票一次称为一个事务,由订票员将其输入在微机中,系统核实订单后,将订票信息记录放在订票库中。系统每天打印预订三天的购票单,并更新订票库。请对该系统进行设计,绘制出该系统的功能模块结构图和数据库模型图。

二、源代码及运行结果(或截图)

相关知识点

在系统设计阶段,要设计软件体系结构,即是确定软件系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。同时把模块组织成良好的层次系统:顶层模块通过调用它的下层模块来实现程序的完整功能,顶层模块下面的每个模块再调用更下层的模块从而完成程序的一个子功能,最下层的模块完成最具体的功能。通过对数据流图边界的划分,变换成软件结构,得到功能结构图。

1. 功能结构图

功能结构图(或模块结构图)是展示系统内部各个功能模块以及它们之间关系的图形化表示。它的作用是帮助开发人员理解系统的功能需求和模块间的交互,帮助系统分层,确保开发中的各个部分是清晰分工的。

模块化设计:模块化是软件设计中的核心思想,它将复杂的系统拆分成多个独立且自包含的模块,每个模块都有其明确的功能和职责。模块之间通过接口进行通信,降低模块之间的耦合度,提高系统的可维护性。模块化设计在后期的开发和维护过程中具有非常重要的意义,它让开发人员可以在不影响其他模块的情况下,对某一模块进行修改、优化或重构。

分层设计:分层设计将系统按功能复杂度和重要性分成多个层级,从而实现顶层模块控制整个系统的运作,下层模块实现更具体的功能。这种层次化的设计方式通常能够有效避免系统的功能冗余,同时提高代码复用性。例如,顶层的用户接口模块负责与用户交互,数据存储模块负责数据的持久化存储,业务逻辑模块负责数据的处理和业务规则的执行。通过分层设计,系统的各个模块之间可以通过接口和协议进行清晰的交互。

2. 数据库模型图

数据库模型图(E-R图,实体-关系图)是展示系统中各个数据实体之间关系的图形化工具。实体通常代表数据库中的表,而关系则代表表之间的关联。通过数据库模型图,可以清晰地了解数据的存储结构,并帮助开发者根据功能需求设计合理的数据表和关系,从而保证系统数据的完整性和一致性。

实体与关系:在数据库设计中,实体代表系统中的主要对象(例如:学生、订单、产品等)。每个实体包含若干个属性,通常是表中的字段。例如,学生实体包含学号、姓名、性别、班级等属性。而实体之间的关系,表示了不同实体之间的联系。关系的类型有“一对多”、“多对一”和“多对多”,例如一个学生可以有多个订单,但每个订单只能对应一个学生,表示学生和订单之间是“一对多”的关系。

规范化设计:在进行数据库设计时,我们会遵循规范化原则,以减少数据冗余和数据不一致问题。规范化是将数据分解成多个小的表格,并通过主键和外键建立表之间的关系,以保证数据的完整性。规范化通常分为不同的层级,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF),每个范式都在上一范式的基础上解决了数据冗余和不一致问题。

数据完整性与一致性:数据完整性是指数据在数据库中的准确性、唯一性和完整性。为此,数据库设计时需要使用主键、外键等约束来保证数据的完整性。例如,订单表中的订单ID应该是唯一的,这样可以确保每个订单都能被唯一标识。外键约束则保证了表与表之间的关系准确无误,避免了因删除或修改一个实体导致其他表中数据丢失的风险。

任务1:总务办公管理系统

实验分析

系统需求分析

总务办公管理系统的主要目标是管理单位的办公用品采购流程。系统需要记录每个采购申请,包括物品信息、申请单位、金额等。根据金额大小,审批流程不同,系统应根据审批结果生成采购清单并进行物品购买,最后记录入账信息。

  1. 申请管理:各科室提出采购申请,申请内容包括物品名称、数量、预计价格、用途等。如果金额小于或等于500元,由总务办公室直接审批;如果金额大于500元,则需要主管领导审批。
  2. 采购管理:申请经过审批后,生成采购清单,采购员根据清单执行采购。
  3. 入账管理:采购完成后,系统需要记录每个采购的物品、数量、价格、经办人等详细信息。

操作步骤

功能模块划分

根据系统需求,功能可以分为以下几个模块:

  1. 申请管理模块
    • 功能:处理各科室提交的采购申请。包括收集申请单、验证信息、保存申请记录等。申请内容包括申请单位、物品名称、数量、预计价格、用途等。
    • 数据操作:将申请数据插入到数据库中的申请表。
  2. 审批管理模块
    • 功能:根据申请金额的不同,审批流程分为两类:金额小于或等于500元的直接由总务办公室审批;金额大于500元的需要主管领导审批。审批通过后生成采购清单。
    • 数据操作:保存审批记录,包括审批人、审批状态、审批日期等信息。
  3. 采购管理模块
    • 功能:根据批准的采购清单进行实际采购,记录每次采购的详细信息。
    • 数据操作:在采购表中插入采购记录,包括物品名称、数量、总金额等。
  4. 入账管理模块
    • 功能:记录每次采购的实际清单,包括物品名称、数量、价格、总金额等。
    • 数据操作:将采购完成后的入账信息插入到入账表。

数据库设计

  1. 申请表:存储采购申请的信息。字段包括申请ID、申请单位、物品名称、物品数量、预计价格、用途等。
  2. 审批表:记录审批过程的详细信息,字段包括审批ID、申请ID(外键)、审批人、审批状态、审批日期等。
  3. 采购表:存储采购清单信息,字段包括采购ID、申请ID(外键)、采购员、采购日期、物品清单、总金额等。
  4. 入账表:存储实际采购的入账信息,字段包括入账ID、采购ID(外键)、物品名称、数量、价格、经办人、入账日期等。

实验总结

总务办公管理系统涉及采购申请的提交、审批流程、采购与入账管理等功能,系统设计的关键在于确保不同角色(如各科室、总务办公室、主管领导等)之间的协作。系统中的每个模块(申请、审批、采购、入账)都与数据库中的不同表进行交互,确保数据能够在不同阶段之间正确传递。数据库设计时,我们特别注意了数据的规范化,避免冗余数据,并确保了采购流程的完整性。

通过模块化设计,系统的扩展性和维护性得到了很好的保证。系统的成功实现离不开对功能的精确划分和数据库设计的合理性。在实际开发中,这种模块化的设计方式能够帮助开发人员清晰理解每个模块的职责,并有效地管理系统复杂度。

实验截图

图 1 任务一功能结构图

图 2 任务一数据库模型图

任务2:火车票预订系统

实验分析

系统需求分析

火车票预订系统主要是为学生提供返乡购票的服务。系统需要处理学生的订票请求、核实订票信息、记录订单并生成预订记录。每个学生的订票请求会经过核实,符合要求后会被保存到数据库中,并每天打印三天后需要购票的学生名单。

  1. 订票申请:学生通过订票员提交订票请求,内容包括出发地、目的地、出发时间等信息。系统需要检查是否符合三天提前订票的规则。
  2. 订单核实与记录:核实订票信息是否有效,符合要求的订单将被记录到数据库中。
  3. 打印购票单:系统每天会打印三天后需要购票的学生清单,并更新订票库。
  4. 更新订票库:每个学生的订票状态和购票信息需要在订票库中及时更新。

操作步骤

功能模块划分

  1. 订票管理模块
    • 功能:学生提交订票申请,录入订票信息并提交。
    • 数据操作:将学生的订票请求插入到订单表。
  2. 数据处理模块
    • 功能:更新订票库中的数据,保存学生的订票状态、购票日期等信息。
    • 数据操作:定期更新订票库表的状态字段,确保系统数据的准确性。
  3. 输出数据模块
    • 功能:根据订单表的信息,打印三天后需要购票的学生清单。
    • 数据操作:查询订单表,筛选出三天后需要购票的学生信息,并生成打印列表。

数据库设计

  1. 学生表:记录学生的基本信息,如学号、姓名、订单编号等。
  2. 订单表:记录每个学生的订票请求,字段包括订单ID、学生ID、出发地、目的地、出发时间、订单状态等。
  3. 购票单表:记录每个学生的订票状态和购票信息,字段包括购票单编号、订单编号、火车票编号、购票日期等。

实验总结

火车票预订系统的设计主要围绕学生订票请求的处理展开,确保学生可以按时进行订票,并能够查询和打印购票单。系统设计时,我们注重了订单核实、订票状态管理等功能模块的构建,确保了订票过程的顺利进行。

数据库设计方面,我们建立了学生信息表、订单表和购票单s表,确保了订单和学生之间的关联性,订票状态的实时更新能够保证数据的一致性和完整性。系统的实现帮助我们理解了如何处理用户请求和如何在系统中实现状态管理。

总体来看,通过本次实验的设计与分析,我们掌握了从需求分析、数据库设计到系统开发、集成和测试的全过程。这为我们未来的系统开发打下了坚实的基础,尤其是在系统的模块化设计、数据库设计、权限管理等方面的实践经验。通过实验,我们学到了如何将理论知识与实际需求结合,形成一个完整的、可操作的系统设计。

实验截图

图 3 任务二功能结构图

图 4 任务二数据库模型图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Rust权威指南》学习笔记(三)

泛型和trait 1.泛型可以提高代码的复用能力,泛型是具体类型或其他属性的抽象代替,可以看成是一种模版,一个占位符,编译器在编译时会将这些占位符替换成具体的类型,这个过程叫做“单态化”,所以使用泛型的…

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标:  网络应用的 原理:网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例:互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…

2022浙江大学信号与系统笔记

原视频地址:2022浙江大学信号与系统(含配套课件和代码) - 胡浩基老师-哔哩哔哩 ⭐⭐⭐ 我的笔记:飞书链接 - 信号与系统 基于视频,记得笔记,加了点自己的补充(有的是问 ChatGPT 的)…

数学建模入门——建模流程

摘要:本文介绍了数学建模的一般流程概述。 目录 一、前言 二、数据预处理 三、描述性统计分析 四、模型建立 五、模型评价 一、前言 本文将为想要入门数学建模的同学讲述数学建模的一般流程。但数学建模流程并非一成不变。虽有大致步骤,像分析问题、…

如何使用OpenCV进行抓图-多线程

前言 需求: 1、如何使用OpenCV捕抓Windows电脑上USB摄像头的流、 2、采用多线程 3、获知当前摄像头的帧率。 这个需求,之前就有做了,但是由于出现了一个问题,人家摄像头的帧率目前都可以达到60帧/s 了,而我的程序…

NLP CH3复习

CH3 3.1 几种损失函数 3.2 激活函数性质 3.3 哪几种激活函数会发生梯度消失 3.4 为什么会梯度消失 3.5 如何解决梯度消失和过拟合 3.6 梯度下降的区别 3.6.1 梯度下降(GD) 全批量:在每次迭代中使用全部数据来计算损失函数的梯度。计算成本…

01 数据分析介绍及工具准备

数据分析介绍及工具准备 一、工具准备二、下载和使用Anaconda三、jupyter notebook常用快捷键 一、工具准备 数据科学库 NumPy,SciPy,Pandas,Scikit-Learn 数据可视化库 Matplotlib,Seaborn 编译器 Jupyter Notebook 数据科…

机组的概述

计算机系统组成 硬件系统和软件系统 计算机硬件 1.冯诺依曼机基本思想 特点 1.采用“存储程序”工作方式 2.硬件系统由运算器,存储器,控制器,输入输出设备组成 3.指令和数据存在存储器中,形式无区别 4.指令和数据用二进制代…

Windows应用开发-解析MP4视频文件(第1部分)

下载本应用 本Windows应用解析MP4视频文件,以表格的方式显示MP4文件结构。并可以将结果保存到bmp图片。 使用方法 选择“打开MP4视频文件”菜单项,打开MP4文件,就可以获得如下图像: box的每一项,用3个矩形表示&…

Scala_【4】流程控制

第四章 分支控制if-else单分支双分支多分支返回值嵌套分支 For循环控制包含边界不包含边界循环守卫循环步长嵌套循环循环返回值 While循环Break友情链接 分支控制if-else 单分支 双分支 多分支 返回值 嵌套分支 For循环控制 Scala也为for循环这一常见的控制结构提供了非常多的…

电商Google广告:2025年提升转化率的5种策略

展望 2025 年,Google 广告领域将迎来一系列显著变化,这些趋势对于提升广告转化率至关重要,值得我们提前关注与布局。 智能化程度持续加深,用户搜索习惯愈发精细,广告格式推陈出新,视频广告势头正猛...那么…

一文大白话讲清楚TCP连接的三次握手和断开连接的四次挥手的原理

文章目录 一文大白话讲清楚TCP连接的三次握手和断开连接的四次挥手的原理1.TCP建立连接需要3次握手1.1 先讲个你兄弟的故事1.2 TCP 3次握手1.2 TCP 3次握手8件事1.3 TCP握手能不能是两次 2. TCP 断开连接要4次挥手2.1 还回到你兄弟的故事上2.2 TCP 4次挥手2.2 TCP4次挥手4件事2…

基于springboot的课程作业管理系统(源码+数据库+文档)

亲测完美运行带论文:文末获取源码 文章目录 项目简介(论文摘要)运行视频包含的文件列表(含论文)前端运行截图后端运行截图 项目简介(论文摘要) 随着科学技术的飞速发展,社会的方方面…

【ArcGIS微课1000例】0136:制作千层饼(DEM、影像、等高线、山体阴影图层)

文章目录 一、效果展示二、数据准备三、制作过程1. 打开软件2. 制作DEM图层3. 制作影像层4. 制作TIN层5. 制作等高线层四、注意事项一、效果展示 二、数据准备 订阅专栏后,从专栏配套案例数据包中的0136.rar中获取。 1. dem 2. 影像 3. 等高线 4. tin 三、制作过程 1. 打开软…

蓝桥杯备赛:C++基础,顺序表和vector(STL)

目录 一.C基础 1.第一个C程序: 2.头文件: 3.cin和cout初识: 4.命名空间: 二.顺序表和vector(STL) 1.顺序表的基本操作: 2.封装静态顺序表: 3.动态顺序表--vector:…

探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比

文章目录 个人感受一、AI绘图流程1.1 Midjourney(1)环境配置(2)生成prompt(3)完善prompt(4)开始绘图(5)后处理 1.2 ChatGPT不合理的出图结果解决方案 二、主题…

融合表面信息和等变扩散的分子对接模型 SurfDock - 评测

SurfDock 是一个几何扩散模型,蛋白质序列、三维结构图、以及表面结构等结构特征,采用的是非欧里几何的范式处理小分子的旋转、平移以及扭转。 SurfaceDock 以蛋白口袋作为条件,从 rdkit 生成的随机小分子构象开始,对平移、旋转、扭…

CSS——2.书写格式一

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写中&#xff1a;--><!--1.css 由属性名:属性值构成--><!--style"color: red;font-size: 20px;&quo…

R机器学习:神经网络算法的理解与实操,实例解析

神经网络算法是一种模仿生物神经网络&#xff08;尤其是人脑&#xff09;结构和功能的算法。它由大量相互连接的节点&#xff08;称为神经元&#xff09;组成&#xff0c;这些神经元组织成层&#xff0c;通过传递信号来处理信息。神经网络算法在机器学习、人工智能等领域中扮演…

【C++】B2092 开关灯

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述和解析题目描述输入格式输出格式解析 &#x1f4af;实现代码对比&#xff1a;我的做法和老师的做法我的代码实现代码分析优点问题 老师的代码实现代码分析 &#x…