校园选课助手【1】

news2024/11/24 0:18:09
  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"
      }
    }
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人

在细胞生物学中,基因表达调控是决定细胞功能与命运的核心过程之一。组蛋白作为修饰性蛋白,在调控基因转录中起着至关重要的作用。近年来,科学家们发现,组蛋白的多种化学修饰(如甲基化、乙酰化、磷酸化等)影…

Java零基础之多线程篇:多线程最佳实践

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

diff算法的流程

diff算法? 组件并不是真是的DOM节点,而是存在与内存中的一种数据结构,叫做虚拟DOM,只有当它真正插入文档中的时候才会真的变成DOM。 React的设计时所有的DOM变动都先在虚拟的DOM上发生,然后再将实际变动的部分反映在…

来聊一个有趣的限流器RateLimiter

写在文章开头 这一篇我们来聊一个比较使用的限流工具RateLimiter,它是Google开源的Java类库guava中的一个工具类,本文将从使用和源码分析的角度介绍RateLimiter的设计与实现,希望对你有帮助。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客…

【MATLAB源码】机器视觉与图像识别技术示例报告2---铁道口夜间列车通过时速度视觉测量

系列文章目录在最后面,各位同仁感兴趣可以看看! 速度视觉测量 摘要对铁路夜晚环境情况分析视觉测量的流程步骤代码问题最后:总结系列文章目录 摘要 随着科技技术的不断发展,由于铁道口夜间交通事故频发,传统的雷达和…

铁路购票系统中的数据库技术《二》

铁路购票系统中的数据库技术《二》 缓存技术:减轻数据库压力数据一致性:确保交易公平分布式事务:跨系统的数据一致性读写分离:优化查询性能数据库备份与恢复:确保数据安全安全性:保护sensitive数据性能优化…

基于Python的鸢尾花聚类与分类

1 导入必要的库 from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score, silhouette_samples from skl…

缓存和数据库双向写死一致性问题

我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,或者没有更新操作,那么只要达到过期时间,则后面的读者自然会从数…

图形编辑器基于Paper.js教程12:井身结构编辑器,多条完全平行的弯曲线,使用额外平行线来作为弯曲中心线的度量尺

背景 对于弯曲的三条平行线,一开始我以为只需要使用中心线,然后复制两条,一个向右下角平移,一个向左上角平移,就能让三条线实现完全平行,每一处的距离都相等。后来仔细思考后,发现我想错了&…

数据管道为什么选择Kafka作为消息队列?

目录 关于Kafka 什么是消息队列? Kafka的特点 管道为什么需要消息队列? 管道任务为什么选择Kafka作为消息队列? 企业在构建数仓和中间库时,由于业务数据量级较大,如果使用批量定时同步数据的方式很难做到高性能的增量同…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑隐私保护的虚拟电厂内部交易决策优化 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

食源送系统项目的测试

一、对整个系统编写测试用例 功能测试 性能测试 兼容性测试 易用性测试 安全测试 二、接口测试 针对接口的功能测试,也就是检验接口是否按照接口文档输入输出 2.1 使用Postman发送HTTP请求 2.2 使用Java TestNG 编写自动化测试用例 登录界面功能 package com.sky.…

碳化硅陶瓷膜的机械强度

碳化硅陶瓷膜是一种高性能的过滤材料,它采用重结晶技术在高温条件下烧结而成。这种膜的特点是整个结构,包括多孔支撑层、过渡层和膜层,均由碳化硅(SiC)材料构成。碳化硅陶瓷膜因其独特的性能而在多个领域得到广泛应用,下面是对碳化…

【面试题解答】一个有序数组 nums ,原地删除重复出现的元素

面试题解答 仅供学习 文章目录 面试题解答题目一、python代码1.1 代码1.2 示例用法1.2.1 示例11.2.2 示例2 二、讲解2.1 初始化2.2 遍历2.3 返回 题目 要解决这个问题,可以使用双指针方法进行原地修改,以确保每个元素最多出现两次。 一、python代码 1.1…

文件上传漏洞大总结:原理与复现

文章目录 原理f8x靶场安装文件上传漏洞前端验证概念步骤: 上传特殊可解析后缀概念步骤 ::$DATA绕过概念主要流类型 点空格绕过概念代码审计**步骤:** 文件类型检测概念常见的文件类型 过程 文件头检测概念过程 黑名单绕过概念特殊文件爆破常用的文件名过…

电商 API 接口的最佳实践与案例分析

在当今数字化的商业世界中,电商平台的发展日新月异,而 API 接口在其中扮演着至关重要的角色。通过合理地利用电商 API 接口,企业能够实现更高效的运营、更优质的用户体验以及更强大的业务拓展能力。本文将深入探讨电商 API 接口的最佳实践&am…

开源AI智能名片O2O商城微信小程序:利用超级赠品与厌恶损失心理促进行动转化的策略研究

摘要:在数字化转型的浪潮中,企业如何利用创新技术提升顾客转化率成为了关键议题。开源AI智能名片O2O商城微信小程序作为新兴营销工具,凭借其智能化、便捷性和个性化服务,为企业开辟了新的营销路径。本文聚焦于如何通过超级赠品与厌…

QQ 腾讯官方机器人搭建(更新中)

前言 QQ机器人通过开放的平台承载机器人的定制化功能,让开发者获得更畅快的开发体验。 以下是接入流程: 本文提供QQ机器人使用指南。 文章目录 前言开发前准备工作使用机器人控制台配置gpt—API获取本地公网ip配置机器人 开发前准备工作 首先前往Q…

高效可靠安全的大文件传输系统,了解一下

在数字化转型的浪潮中,数据已成为企业不可或缺的宝贵资源,而高效的文件传输机制则是保障数据流通的基石。无论是企业还是个人,经常需要处理大文件、远距离文件的传输任务,需要文件传输系统来处理。 在远距离传输大型文件时&#x…

一个简洁、高效、可扩展的企业级低代码开发平台,前后端分离,支持国密加密(附源码)

前言 在当今数字化转型的浪潮中,企业面临着快速开发和部署应用的挑战。传统的开发模式往往因为其繁琐的流程、高昂的成-本和僵化的架构而无法满足市场需求。开发者常常受限于复杂的系统配置、安全问题、以及不同数据库的兼容性问题。这些痛点不仅拖慢了开发进度&am…