互联网应用开发实践:需求分析与数据库设计

article/2025/9/12 4:44:25

在本文中将分析一个用于新生开学分配寝室的“宿舍秒杀”系统。从用户故事开始探索需求,进而分析得到系统的主要功能和非功能性需求。最后,根据需求分析设计数据库,数据库的设计原则是尽可能的方便之后的需求拓展和修改。




用户故事

用户故事一般是产品经理初次描述给自己和开发人员看的,然后产品负责人要依据用户故事设计原型,原型在客户那里通过后,然后再在用户故事里面添加附件。用户故事不会一开始就很清晰,甚至可能不会有特专业术语。

学生

  • 作为学生,我想要在系统里登录,并获取验证码,以便于登录到自己的账号中进行宿舍选取
  • 作为学生,我想要查询剩余宿舍的信息,以便于及时选择或更换寝室志愿
  • 作为学生,我想要查询宿舍的基本信息(楼号、寝室人数、是否为上下铺、寝室朝向),以便于选择自己志愿的寝室
  • 作为学生,我想要核对我的个人信息,以便于在分寝室的时候不会出现错误
  • 作为学生,我想要可以组队抢寝室,以便于在分寝室的时候不会出现错误
  • 作为学生,我想要可以创建组队加入队伍,以便于进行组队抢宿舍
  • 作为学生,我想要在系统里预先选择要抢的宿舍,到点提交,以便于在第一时间抢宿舍
  • 作为学生,我想要查看寝室的选取结果(包括分到的寝室号,室友的相关信息),以便于及时联系到室友

寝管

  • 作为寝管,我想要修改每个寝室的床位信息,以便于管理寝室信息
  • 作为寝管,我想要按照寝室顺序导出名单,以便于在报到时让领钥匙的同学签字
  • 作为寝管,我想要查询并修改床位的可用状态,以便于对损坏的床位进行申请报修

管理员

  • 作为管理员,我想要学生核对他们的个人信息,以便于在分寝室的时候不会出现错误
  • 作为管理员,我想要对学生设置标签,以便于后期规定按照某一标签(如班级、专业)进行分寝室
  • 作为管理员,我想要系统支持2000人左右的同时访问,以便于满足学生可以在一个时间点同时抢寝室
  • 作为管理员,我想要防止有同学使用脚本去抢寝室,以便于保证系统的安全性



需求分析

主要功能

  • 学生核对个人基本信息
  • 查询宿舍基本信息(如,宿舍人数等)
  • 查询宿舍空床位信息
  • 学生可以被设置标签(如班级)
  • 根据标签设置可选房间列表(如列表为空,则可选所有满足条件的宿舍)
  • 学生可以组队选宿舍(1-4人)
  • 查看订单处理结果
  • 管理员可以管理宿舍信息
  • 管理员可以编辑宿舍床位的状态(如床位不可用)
  • 管理员可以导出相关的数据

非功能性需求

  • 支持2000人并发
  • 防止脚本



数据库设计

设计思路

考虑到后期需求可能会发生变动,因此在数据库设计的时候最大程度降低了表与表之间的关联程度。数据库中有两个核心主体——bed(床位信息)、student(学生信息)。

  • 床位信息相关的表有:dorm(宿舍信息)、house(宿舍楼信息)、bed_type(床铺类型信息)。
  • 学生信息相关的表有:class(班级信息)、major(专业信息)、stu_contact_info(学生联络信息表)。其中年级信息作为一个属性考虑在班级信息内。

对于学生床位的关系,单独建立了一个关联表rel_bed_stu。该表使用“学号+时间戳”的方式作为主键,记录学生床位的分配信息。除此之外,还设计了config表储存系统相关配置信息,admin表储存管理员相关信息。

数据库表结构

床位信息表:bed

床位信息表

寝室信息表:dorm

寝室信息表

楼号信息表:house

楼号信息表

床位类型表:bed_type

床位类型表

学生信息表:student

学生信息表

学生联系方式表:stu_contact_info

学生联系方式表

班级信息表:class

班级信息表

专业信息表:major

专业信息表

学生-床位关系表:rel_bed_stu

学生床位关系表

订单表:order

订单表

管理员信息表:admin

管理员信息表

配置表:config

配置表

数据库模型图

数据库模型图


http://chatgpt.dhexx.cn/article/4gcavck1.shtml

相关文章

数据库应用系统的需求分析

一 需求分析的概念与意义 所谓的需求分析,就是对待开发系统要做什么,完成什么功能的全面描述 软件的一些特性使得需求的获取常常并不容易! 比如软件功能复杂,需求可变性,软件的不可见性 二 获取需求的方法 面谈实地…

数据库设计:需求分析

设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,应该把对用户需求的收集和分析作为数据库设计的第一步。 需求分析的主要任务是通过详细调查要处理的对象,包括某个组织、某个部门、某个企业的业务管理等&…

数据库设计 | 需求分析

一、需求分析要干一个什么样的事情? 通过详细调查现实世界要处理的对象(组织、部门、企业等), 充分了解原系统(手工系统或计算机系统)工作概况, 明确用户的各种需求,然后在此基础上确…

数据库设计之需求分析

需求分析简单地说就是分析用户的需求。根据分析是设计数据库的起点,需求分析结果是否准确反映用户的实际要求将直接影响到后面各阶段的设计,并影响到设计结果是否合理和实用。 1. 需求分析的任务 需求分析的任务是通过详细调查现实世界要处理的对象(组…

数据库技术-数据库需求分析、数据流概念

目录 需求分析 数据流 结构化分析案例-教材销购案例 例题讲解 每文一语 需求分析 1、需求分析的概念与意义 需求是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能,达到什么性能。 需求分析是在计算机…

matlab gui 教学,新手入门教程(一)文本框和按钮的使用

matlab gui 教学,新手入门教程(一)文本框和按钮的使用 一、新建文件二、添加控件 一、新建文件 1、在MATLAB命令行中输入guide。 2、回车,进入GUI的界面,选择新建GUI–Blank GUI(Default)–浏览(自定义存储…

零基础入门MATLAB(一篇十分钟)

目录 一、复数 二、取整函数 三、无穷量(Inf)和非数值量(NaN) 四、逻辑类型 五、字符和字符串 六、函数句柄 七、结构体 八、数组类型 九、单元数组 十、map容器类型 参考《MATLAB R2020a 完全自学一本通》 一、复数 …

matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)

matlab中有些计算结果比较长,直接查看有些困难,下面介绍pretty和symdisp函数优化输出结果,使结果更为直观。 演示示例1 有一个计算结果如下: >> f1f1 y^5 (- w - y0)*y^4 1800*y^3 (1498200*w - 1800*y0)*y^2 (3600*w…

Matlab中textscan函数用法

目录 语法 说明 示例 读取浮点数 读取不同类型的数据 删除字面文本 跳过每行的其余部分 指定分隔符和空值转换 指定要视为空或注释的文本 将重复的分隔符视为一个分隔符 指定重复的转换设定符并收集数值数据 读取或跳过引用文本和数值字段 读取外语日期 读取非默…

【MATLAB学习笔记01】【快速入门】初识MATLAB的界面和编辑脚本的基础知识

打开MATLAB后,建议各位新手,先随便按下各个按键,熟悉下总体的页面布局,并且对各个按键的功能有点印象,这样可以更容易上手。 主要功能区(下图用红色方框圈出来的位置): 命令行窗口…

零基础入门Matlab(一篇两个小时就能学完的入门博客)

目录 零基础入门matlab前言1.界面认识2.变量命名3.数据类型4.元胞数组和结构体5.矩阵操作6.程序结构7.基本绘图操作7.1.二维平面绘图7.2.三维立体绘图 8.图形的保存与导出9.补充 零基础入门matlab 前言 这篇文章很适合MATLAB的入门学习,这也是我在入门时学习的笔记…

MATLAB中text函数使用

目录 语法 说明 示例 向数据点添加文本说明 向多个数据点添加文本 显示多行文本 指定文本大小和颜色 修改现有文本 text函数的功能是向数据点添加文本说明。 语法 text(x,y,txt) text(x,y,z,txt) text(___,Name,Value) text(ax,___) t text(___) 说明 text(x,y,…

matlab中实现文字和数字和混输出excel

做一个小程序时,需要数据和文字混合输出到,直接构建这样的矩阵在matlab中行不通 于是有了下列的代码: %输出excel表格 excel_outpathF:\Work\paper_work\parallel_simulation\code\excel\test.xlsx;%输出路径 %构建表头 rtnxlswrite(excel_…

使用layui 查询列表分页不能重置问题

使用layui的table.render({})函数可以快速的帮自己建立一个表格 但是我发现自己的表格在使用搜索按钮后,无法定位到搜索当前数据的第一页,这里可以使用监听搜索在执行重载中,将当前页curr重置为1即可

Java代码重置kafka0.10.1.0版本的偏移量offset

如果使用的自动提交偏移量的模式,偏移量会给到kafka或者zk进行管理,其中kafka的偏移量重置给了重新消费kafka内未过期的数据提供了机会,当消费者出错,比如消费了数据,但是中途处理失败,导致数据丢失&#x…

Java重置Mysql主键自增长值

MySql 主键自增重置器(统一处理多个表) resetAutoincrement 是一款基于 Java 开发的程序,其功能为重置 mysql 数据库表的主键自增的值为最近的一个。 介绍 开发背景主要是工作中,测试同学在清理数据的时候,使用的是 D…

java重置按钮功能函数_Bootstrap按钮功能之查询按钮和重置按钮

Bootstrap按钮功能之查询按钮和重置按钮 1、问题背景 一般情况下,查询列表有查询条件、查询按钮和重置按钮,输入查询条件,点击查询按钮查询列表等数据;点击重置按钮会将查询条件恢复到原始状态 2、实现源码Bootstrap-查询按钮和重…

Java窗口重置

1、找到java界面中的Windows 2、右击进去按图下步骤进入 3、确定重置窗口

2021年美赛成绩公布与美赛查询!美赛官网已更新

我在浏览美赛官网查询美赛成绩时 美赛官网显示,2021年竞赛成绩将于4月23日公布 The MCM/ICM contest results will be available April 23, 2021 美赛成绩查询方式 ① 进入comap官网→Advisor Login→查看成绩 ② 直接查看并下载证书 示例:http://www.comap-ma…