校园选课助手【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、用户名、密码、手机号等信息。

bash 复制代码
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;

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

bash 复制代码
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、选课状态等信息。

bash 复制代码
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设计索引表:

bash 复制代码
PUT /classes
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "teacher_name":{
        "type": "keyword"
      },
      "score":{
        "type": "integer",
      },
      "time":{
        "type": "integer"
      }
    }
  }
}
相关推荐
三8446 小时前
Fastjson 漏洞 · 02 · autoType 机制与 checkAutoType
java·fastjson
无限码力6 小时前
小红书笔试真题 9.17 - 待发热度重排(C++/Py/Java /Js/Go)
java·小红书·小红书笔试真题·小红书技术岗笔试真题
卓怡学长6 小时前
w194基于ssm新能源汽车充电系统小程序
java·小程序·intellij-idea
JAVA面经实录9176 小时前
Java高级后端 · 全套面试通关手册(MySQL)
java·mysql·面试
光依旧7 小时前
MCP实战手记(八):从“能跑“到“能上线“——无状态MCP Server的生产落地清单
java·人工智能·spring boot·架构·ai agent·mcp
弹简特8 小时前
【Java项目-企悦抽】15-活动管理模块02-活动创建测试与活动列表实现
java·开发语言·springboot
斯内普吖8 小时前
(开源)水果蔬菜商城实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源
wang_shu_mo_ran8 小时前
Spring IoC和DI概念篇
java·后端·spring
小狼154548 小时前
拼多多订单数据导出 CSV 实战:接口分页、字段平铺与 5 个数据坑,多多开票助手
java·前端·javascript