软件工程实验-实验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 任务二数据库模型图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Innodisk iSMART V6使用说明_SSD还能用多久?已经读写了多少次数?……

Innodisk iSMART是一款SSD健康数据读取软件。它能轻松获取大部分SSD内部寄存器中的健康数据,并以简洁的图形界面展示给用户。在程序界面的顶部,是页面标签,点击页面标签就能切换到相应的页面。页面标签的下面是磁盘选择栏。点击磁盘编号&…

windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN

本文是我瞎搞时写的问题汇总及参考文献,记录了一些问题解决的进度及对问题的思考。 最近一次更新时间:2025年1月4日 一、安装或更新nvidia显卡驱动 首先,需要确保你的设备安装了最新的显卡驱动。 (1)centos7安装显…

2、蓝牙打印机点灯-GPIO输出控制

1、硬件 1.1、看原理图 初始状态位高电平. 需要驱动PA1输出高低电平控制PA1. 1.2、看手册 a、系统架构图 GPIOA在APB2总线上。 b、RCC使能 GPIOA在第2位。 c、GPIO寄存器配置 端口:PA1 模式:通用推挽输出模式 -- 输出0、1即可 速度:5…

WPS表格技巧01-项目管理中的基本功能-计划和每日记录的对应

前言: 在项目管理中,一般就是用些项目管理工具来管理这个任务和 task,但是就是要学这些工具很麻烦,比较好的方法,通用的方法就是用 Excel 表格去做(这非常适合松散的团队组织),然后…

Vue 项目中实现打印功能:基于目标 ID 的便捷打印方案

一、引言 在 Vue 项目开发中,实现打印功能是一个常见的需求。本文将介绍如何封装一个打印方法,使得用户只需传入需要打印的目标 ID 名称,即可轻松实现预览并打印的功能。这种方法不仅简单易用,还具有一定的通用性,适合…

ARM 汇编基础总结

GNU 汇编语法 编写汇编的过程中,其指令、寄存器名等可以全部使用大写,也可以全部使用小写,但是不能大小写混用。 1. 汇编语句的格式 label: instruction comment label即标号,表示地址位置,有些指令前面可能会有标…

《塑战核心》V1.0.0.9952官方中文版

体验打击感满分的近距离战斗。击败蜂拥而至的敌人,每次击杀都会让你变得更强。 《塑战核心》官方中文版https://pan.xunlei.com/s/VODW7effpagQN1JU0UpBQQ5uA1?pwdmr8g#

综合练习dfs_1

1863. 找出所有子集的异或总和再求和 之前我们就做了到关于找集合子集的问题&#xff0c;但我们不需要记录路径上的数&#xff0c;求路径上数的异或和就可以。 class Solution {int path;int sum0; public:int subsetXORSum(vector<int>& nums) {dfs(nums,0);return …

【Python学习(五)——条件判断】

Python学习&#xff08;五&#xff09;——条件判断 本文介绍了条件判断&#xff0c;仅作为本人学习时记录&#xff0c;感兴趣的初学者可以一起看看&#xff0c;欢迎评论区讨论&#xff0c;一起加油鸭~~~ 心中默念&#xff1a;Python 简单好学&#xff01;&#xff01;&#x…

PPT加页码并改格式

如何快捷插入自定义 1、插入文本框&#xff0c;并处于输入状态 2、点击插入幻灯片编号的图标&#xff0c;就自动生成页码了 3、然后调整这个页码为想要的格式&#xff0c;到需要加页码的页面&#xff0c;将文本框复制过去就行了

Git 入门(一)

git 工作流如下&#xff1a; 命令如下&#xff1a; clone&#xff08;克隆&#xff09;: 从远程仓库中克隆代码到本地仓库checkout &#xff08;检出&#xff09;:从本地仓库中检出一个仓库分支然后进行修订add&#xff08;添加&#xff09;: 在提交前先将代码提交到暂存区com…

windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系”

windows远程桌面无法连接&#xff0c;报错&#xff1a;“由于没有远程桌面授权服务器可以提供许可证&#xff0c;远程会话被中断。请跟服务器管理员联系” 问题描述&#xff1a;解决方法&#xff1a;无法删除条目解决如下&#xff1a;正常激活详见&#xff1a;[RDS远程服务激活…

【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析

文章目录 类的加载器ClassLoader自定义类加载器双亲委派机制概念源码分析优势劣势如何打破Tomcat 沙箱安全机制JDK9 双亲委派机制变化 类的加载器 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoa…

蓝色简洁引导页网站源码

一款蓝色的简洁引导页&#xff0c;适合资源分发和网站备用引导。 1.源码上传至虚拟机或者服务器 2.绑定域名和目录 3.访问域名安装 4.安装完成后就行了 https://pan.quark.cn/s/b2d8b9c5dc7f https://pan.baidu.com/s/17h1bssUNhhR9DMyNTc-i9Q?pwd84sf https://caiyun.139.com…

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行&#xff0c;而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统&#xff0c;很容易理解&#xff0c;由于多个CPU同时执行&#xff0c;多个CPU同时读、写共享资源时很容易造成竞态。…

docker中使用Volume完成数据共享

情景概述 在一个docker中&#xff0c;部署两个MySQL容器&#xff0c;假如它们的数据都存储在自己容器内部的data目录中。这样的存储方式会有以下问题&#xff1a; 1.无法保证两个MySQL容器中的数据同步。 2.容器删除后&#xff0c;数据就会丢失。 基于以上问题&#xff0c;容…

django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程

django后端环境介绍&#xff1a; Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下&#xff1a; Package Version -…

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

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

供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇

概述 上篇文章我们大致讲了一些商品中心相关的概念&#xff0c;例如&#xff1a;SPU、SKU、Item等等&#xff0c;在这里我们来简单的回顾一下&#xff1a; 商品概念的分层与定义&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;代表产品系列或产品…

人工智能在SEO中的应用与关键词优化策略

内容概要 随着科技的迅猛发展&#xff0c;人工智能在搜索引擎优化&#xff08;SEO&#xff09;中的应用逐渐成为业界关注的热点。AI技术不仅可以有效提高关键词的优化策略&#xff0c;还能在提升内容效率、增强用户体验方面发挥重要作用。通过对相关技术的深入探讨&#xff0c…