当前位置: 首页 > news >正文

校园选课助手【1】-项目整体架构从此开始

  1. 项目背景
    随着高校招生规模的不断扩大,学生选课需求日益增长。为提高选课效率,降低学生选课压力,本项目旨在开发一款校园选课助手软件。

  2. 项目目标:开发一款具有以下特点的校园选课助手软件:
    易用性:界面简洁,操作简便,便于学生快速上手。
    功能性:满足学生选课、退课、查询课程信息等需求。
    高效性:提高选课速度,减少学生选课时间。
    可靠性:确保软件稳定运行,降低故障率。

  3. 项目范围
    本项目涉及以下方面:
    软件开发:包括需求分析、设计、编码、测试和部署等环节。
    技术支持:为软件提供持续的技术维护和升级。

  4. 需求分析
    4.1 功能需求
    用户注册与登录:用户需注册账号并登录,方可使用选课功能。
    课程查询:用户可按课程名称、课程代码、教师姓名等条件查询课程信息。
    选课:用户可根据个人需求选择课程,并加入选课列表。
    退课:用户可从选课列表中移除已选课程。
    个人中心:用户可查看已选课程、课程表、成绩等信息。
    在这里插入图片描述

    4.2非功能需求
    界面友好:界面设计简洁、美观,操作简便。
    响应速度:系统响应速度快,满足大量用户同时访问。
    数据安全:确保用户数据和课程数据的安全。

  5. 系统设计
    5.1 架构设计
    采用前后端分离的架构,前端负责展示界面和交互,后端负责数据处理和业务逻辑。

    5.2 技术选型
    前端:HTML5、CSS3、JavaScript、Ajax
    后端:Spring MVC、Mybatis、Redis、RabbitMQ、MySQL、Elasticsearch
    数据库:MySQL、Elasticsearch

    5.3 界面设计
    根据需求分析,设计以下界面:
    登录界面
    注册界面
    课程查询界面
    选课界面
    退课界面
    个人中心界面

    5.4 数据库设计

MySQL设计以下数据库表:
用户表:包含用户ID、用户名、密码、手机号等信息。

CREATE TABLE `t_user` (`id` bigint(20) NOT NULL COMMENT '用户ID,手机号码',`nickname` varchar(255) NOT NULL,`password` varchar(32) DEFAULT NULL COMMENT 'MD5(MD5(pass明文+固定salt)+salt)',`salt` varchar(10) DEFAULT NULL,`head` varchar(128) DEFAULT NULL COMMENT '头像',`register_date` datetime DEFAULT NULL COMMENT '注册时间',`last_login_date` datetime DEFAULT NULL COMMENT '最后一次登录时间',`login_count` int(11) DEFAULT '0' COMMENT '登录次数',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

课程表:包含课程名称、课程代码、教师姓名、学分、课时、余量等信息。

CREATE TABLE `t_course` (`course_name` varchar(16) DEFAULT NULL COMMENT '课程名称',`course_id` varchar(20) NOT NULL COMMENT '课程代码',`course_teacher` varchar(20) NOT NULL COMMENT '授课老师',`course_detail` longtext COMMENT '课程详情',`course_attribute` int(11) DEFAULT '0' COMMENT '课程属性,0必修',`course_price` decimal(10,2) DEFAULT '0.00' COMMENT '学分',`course_stock` int(11) DEFAULT '0' COMMENT '库存,-1表示没有限制',PRIMARY KEY (`course_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

选课表:包含选课ID、用户ID、课程ID、选课状态等信息。

CREATE TABLE `t_order` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '选课ID',`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',`goods_id` bigint(20) DEFAULT NULL COMMENT '课程ID',`order_channel` tinyint(4) DEFAULT '0' COMMENT '1 pc,2 android, 3 ios',`status` tinyint(4) DEFAULT '0' COMMENT '订单状态,0新建未确认,1已确认',`create_date` datetime DEFAULT NULL COMMENT '订单创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=64912 DEFAULT CHARSET=utf8mb4;

Elasticsearch设计索引表:
在这里插入图片描述

PUT /classes
{"mappings": {"properties": {"id": {"type": "keyword"},"name":{"type": "text","analyzer": "ik_max_word"},"teacher_name":{"type": "keyword"},"score":{"type": "integer",},"time":{"type": "integer"}}}
}

相关文章:

校园选课助手【1】-项目整体架构从此开始

项目背景 随着高校招生规模的不断扩大,学生选课需求日益增长。为提高选课效率,降低学生选课压力,本项目旨在开发一款校园选课助手软件。 项目目标:开发一款具有以下特点的校园选课助手软件: 易用性:界面简洁&#xff…...

椭圆曲线加法运算

1. 定义 椭圆曲线 (Elliptic Curve) 不是函数,而是一条平面曲线,其方程是定义如下: y 2 x 3 a x b y^2x^3axb y2x3axb 其中,判别式 Δ − 16 ( 4 a 3 27 b 2 ) ≠ 0 \Delta -16(4a^327b^2)\neq 0 Δ−16(4a327b2)0。判别…...

(STM32笔记)九、RCC时钟树与时钟 第一部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟1、时钟树HSE时钟HSI时钟锁相环时钟系统时钟HCLK时钟PCLK1时钟PCLK2时钟RTC时钟独…...

fastjson-流程分析

参考视频:fasfjson反序列化漏洞1-流程分析 分析版本 fastjson1.2.24 JDK 8u65 分析过程 新建Person类 public class Person {private String name;private int age;public Person() {System.out.println("constructor_0");}public Person(String na…...

Linux 命令安装

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助…...

清华和字节联合推出的视频理解大模型video-SALMONN(ICML 2024)

video-SALMONN: Speech-Enhanced Audio-Visual Large Language Models 论文信息 paper:https://arxiv.org/abs/2406.15704 code:https://github.com/bytedance/SALMONN/ AI也会「刷抖音」!清华领衔发布短视频全模态理解新模型 | ICML 2024 …...

从数据爬取到可视化展示:Flask框架与ECharts深度解析

目录 🔹 Flask框架源码解析 Flask应用初始化路由与视图函数请求与响应中间件 🔹 ECharts可视化精讲 ECharts安装与配置基本图表类型图表样式与交互高级图表配置与数据动态更新实战:结合Flask与ECharts展示爬取数据 Flask框架源码解析 &…...

【jvm】类加载分几步

目录 1. 加载(Loading)2. 链接(Linking)2.1 验证(Verification)2.2 准备(Preparation)2.3 解析(Resolution) 3. 初始化(Initialization&#xff0…...

使用Apache http client发送json数据(demo)

POM依赖 &#xff1a; <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.12</version></dependency><dependency><groupId>com.alibaba</groupId&g…...

读零信任网络:在不可信网络中构建安全系统07设备信任

1. 设备信任 1.1. 在零信任网络中建立设备信任至关重要&#xff0c;这也是非常困难的一个环节 1.2. 建立设备信任是基石&#xff0c;直接影响零信任网络架构的成败 1.3. 大多数网络安全事件都和攻击者获得信任设备的控制权相关&#xff0c;这种情况一旦发生&#xff0c;信任…...

【Java算法专场】前缀和(下)

目录 和为 K 的子数组 算法分析 算法步骤 算法代码 算法示例 和可被 K 整除的子数组 算法分析 同余定理 负数取余 算法步骤 算法代码 算法示例 连续数组 算法分析 算法步骤 算法代码 算法示例 矩阵区域和 算法分析 算法步骤 算法代码 算法示例 算法分析 …...

音视频相关文章总目录

为了方便各位观看&#xff0c;本文置顶&#xff0c;以目录形式汇集我写过的大部分音视频专题文章。之后文章更新&#xff0c;本目录也会同步更新。写得不好和零零散散的文章就不放在这里了&#x1f605; &#xff1a; 音视频入门基础&#xff1a;像素格式专题系列文章&#x…...

7月31日MySQL学习笔记

今日内容: mysql: 行列转换 数据类型 函数 触发器 存储过程 事务 索引(还没讲) 三范式 JDBC连接数据库的6个步骤 三握四挥 行列转换 第一步 新建要转换的列 select name, 1 as 语文, 1 as 数学, 1 as 英语 from t_score GROUP BY name 第二步 对每一列填入值…...

什么是容器查询?分享 1 段优质 CSS 代码片段!

本内容首发于工粽号&#xff1a;程序员大澈&#xff0c;每日分享一段优质代码片段&#xff0c;欢迎关注和投稿&#xff01; 大家好&#xff0c;我是大澈&#xff01; 本文约 700 字&#xff0c;整篇阅读约需 1 分钟。 今天分享一段优质 CSS 代码片段&#xff0c;使用容器查询…...

【linux深入剖析】初识线程---线程概念

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. Linux线程概念什么是线…...

【MySQL】索引——索引的引入、认识磁盘、磁盘的组成、扇区、磁盘访问、磁盘和MySQL交互、索引的概念

文章目录 MySQL1. 索引的引入2. 认识磁盘2.1 磁盘的组成2.2 扇区2.3 磁盘访问 3. 磁盘和MySQL交互4. 索引的概念4.1 索引测试4.2 Page4.3 单页和多页情况 MySQL 1. 索引的引入 海量表在进行普通查询的时候&#xff0c;效率会非常的慢&#xff0c;但是索引可以解决这个问题。 -…...

python部署flask项目

python部署flask项目 1. 准备服务器2. 设置服务器环境3. 创建虚拟环境并安装项目依赖4. 配置Gunicorn5. 配置Nginx6. 设置Supervisor&#xff08;可选&#xff09;7. 测试部署 将Flask项目部署到服务器的流程大致如下&#xff1a; 1. 准备服务器 首先&#xff0c;需要准备一台…...

数据建模标准-基于事实建模

前情提要 数据模型定义 DAMA数据治理体系中将数据模型定义为一种文档形式&#xff0c;数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介&#xff1b; 作用 记录数据需求和建模过程中产生的数据定义&…...

量产部落SM2258XT开卡软件,SM2258XT主控128G SSD固态卡死修复

故障现象&#xff1a;连接此固态硬盘后电脑就会卡死&#xff0c;拔掉重新连接概率性显示盘符&#xff0c;显示了之后也不能正常操作&#xff0c;一点击打开&#xff0c;电脑就立马卡死。 解决过程&#xff1a;下载了很多款量产工具&#xff0c;都不能开卡成功&#xff0c;点击…...

《零散知识点 · 自定义 HandleMapping》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...