Web开发技术课程设计

写在前面
1.为减轻各位的负担,本次实训课程设计并不强制要求必须完成数据分析,题目也不局限于以下内容。但数科专业的毕业设计一定是关于数据分析的,也就是说你们可以借此机会提前完成一部分毕业设计的内容,到时候能减轻许多负担。
2.以下每个题目其实都可以从课本上项目更改而来,比如将最热房源改为最热电影等

统一技术要求

  • 后端:Python + Flask
  • 数据库:MySQL(建议字符集 utf8mb4
  • 前端:HTML/CSS/JavaScript(模板引擎 Jinja2)也可使用其他框架
  • 数据分析与可视化:ECharts,Matplotlib(可选),scikit-learn(加分项)
  • 通用功能要求:每个题目必须包含 注册/登录、至少 1 张业务表的 CRUD、至少 5 个 接口(写清请求方式、路由、数据格式)
  • 关于数据库的表设计以及接口设计,仅作为参考,不要求一致。

以下数据均由本人收集自阿里云天池的开源数据集,仅用于实训,不保证数据真实

题目一:大学生就业去向分析与推荐平台(基于“大学生就业去向”数据集)

数据集下载链接

1. 项目简介

开发一个面向高校学生的就业信息与数据分析平台。学生可注册登录后浏览就业趋势、按专业/学历/城市筛选数据,收藏感兴趣的行业或城市,并生成个人就业画像。管理员可维护数据、发布公告。

2. 核心功能

  • 用户:注册 / 登录 / 退出、修改资料、修改密码
  • 数据:就业记录列表展示、条件筛选、详情查看
  • 业务:收藏行业/城市、提交就业意向(可选)
  • 管理员:用户管理、公告管理、数据维护(增删改)
  • 数据分析:
    • 专业 → 毕业去向分布
    • 实习经历 vs 期望薪资 / 满意度
    • 工作城市热度排行
      -(可选)sklearn:预测“毕业去向”或“满意度区间”

3. 数据库表设计建议(MySQL)

3.1 user(用户表)

  • id BIGINT PK AI
  • username VARCHAR(50) UNIQUE NOT NULL
  • password_hash VARCHAR(255) NOT NULL
  • role ENUM(‘user’,’admin’) DEFAULT ‘user’
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP

3.2 employment_record(就业数据表)

  • id BIGINT PK AI
  • gender VARCHAR(10)
  • major VARCHAR(100)
  • degree VARCHAR(50)
  • destination VARCHAR(50)
  • industry VARCHAR(100)
  • expected_salary DOUBLE
  • city VARCHAR(50)
  • satisfaction_score DOUBLE
  • has_internship TINYINT(1) DEFAULT 0

索引建议:majorcitydestination

3.3 favorite(收藏表)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL(FK → user.id)
  • fav_type ENUM(‘industry’,’city’,’record’) NOT NULL
  • target_value VARCHAR(255) NOT NULL(如“互联网/北京/记录ID”)
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP

索引建议:(user_id, fav_type)target_value

3.4 notice(公告表)

  • id BIGINT PK AI
  • title VARCHAR(100) NOT NULL
  • content TEXT NOT NULL
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP
  • created_by BIGINT(admin user_id)

4. 接口设计(示例)

4.1 认证

  • POST /register(username, password)
  • POST /login(username, password)
  • POST /logout

4.2 就业数据 CRUD(管理员可写,普通用户只读)

  • GET /employment(page, page_size, major, city, degree, destination, has_internship)
  • GET /employment/<id>
  • POST /employment(新增记录,admin)
  • PUT /employment/<id>(修改,admin)
  • DELETE /employment/<id>(删除,admin)

4.3 收藏

  • POST /favorites(fav_type, target_value)
  • GET /favorites
  • DELETE /favorites/<id>

4.4 数据分析

  • GET /employment/analysis/major_destination(返回饼图数据)
  • GET /employment/analysis/city_top?n=10
  • GET /employment/analysis/internship_salary(对比柱状图)
    -(可选)POST /employment/ml/predict_destination(输入个人信息 → 预测去向)

题目二:优衣库门店销售分析与商品管理系统(基于“优衣库销售数据”)

数据集下载链接

1. 项目简介

开发一个“零售销售数据管理与分析系统”,模拟优衣库门店经营数据。支持登录后查看门店销售、订单、利润等信息,并提供按城市/渠道/类别/日期的可视化分析。管理员可维护销售记录与商品类别。

2. 核心功能

  • 用户:注册登录、个人中心
  • 数据:销售记录 CRUD(管理员)、普通用户查询
  • 业务:收藏门店/产品类别、下载报表(可选)
  • 数据分析:
    • 城市销售额 Top10
    • 渠道(线上/线下)销售对比
    • 类别利润率对比
    • 日期趋势(按周/按日)
      -(可选)sklearn:利润预测/销售额预测(回归)

3. 数据库表设计(MySQL)

3.1 user

同题目一

3.2 uniqlo_sales(销售事实表)

  • id BIGINT PK AI
  • store_id VARCHAR(50)
  • city VARCHAR(50)
  • channel VARCHAR(50)
  • gender_group VARCHAR(50)
  • age_group VARCHAR(50)
  • category VARCHAR(100)
  • customer_count INT
  • sales_amount DOUBLE
  • order_count INT
  • product_count INT
  • cost DOUBLE
  • unit_price DOUBLE
  • profit DOUBLE
  • order_date DATE
  • weekday VARCHAR(20)

索引建议:order_datecitycategorychannel

3.3 store(门店维表,可选)

  • store_id VARCHAR(50) PK
  • city VARCHAR(50)
  • open_date DATE NULL
  • address VARCHAR(255) NULL

3.4 favorite

同题目一(fav_type=store/category)

4. 接口设计

4.1 销售记录查询/CRUD

  • GET /sales(page, city, channel, category, date_from, date_to)
  • GET /sales/<id>
  • POST /sales(admin)
  • PUT /sales/<id>(admin)
  • DELETE /sales/<id>(admin)

4.2 分析接口(给 ECharts)

  • GET /sales/analysis/city_top?n=10
  • GET /sales/analysis/channel_compare(线上 vs 线下)
  • GET /sales/analysis/category_profit_rate
  • GET /sales/analysis/timeseries?freq=day|week|month
    -(可选)GET /sales/ml/regression_report(回归模型指标)

题目三:全国汽车上牌数据查询与趋势分析网站(基于“全国汽车上牌数据”)

数据集下载链接

1. 项目简介

构建一个汽车市场数据平台,用户登录后可查询不同城市、车型、级别在不同年月的上牌量,并展示趋势和对比分析。支持“关注车型/关注城市”。管理员可维护车型信息及上牌记录。

2. 核心功能

  • 用户:注册登录、关注车型/城市
  • 数据:上牌数据 CRUD(admin),用户查询与对比
  • 数据分析:
    • 城市上牌量排行
    • 车型月度趋势折线图
    • 指导价分段与上牌量关系
      -(可选)sklearn:车型聚类(价位+上牌量)

3. 数据库表设计(MySQL)

3.1 user

同题目一

3.2 car_plate(上牌事实表)

  • id BIGINT PK AI
  • year INT
  • month INT
  • model VARCHAR(100)
  • city VARCHAR(50)
  • registrations INT
  • level VARCHAR(50)
  • guide_price_wan DOUBLE

索引建议:(year, month)citymodel

3.3 favorite(关注表)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL(FK → user.id)
  • fav_type ENUM(‘model’,’city’) NOT NULL
  • target_value VARCHAR(255) NOT NULL
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP

4. 接口设计

4.1 查询与CRUD

  • GET /car/plates(year, month, city, model, level, price_min, price_max)
  • GET /car/plates/<id>
  • POST /car/plates(admin)
  • PUT /car/plates/<id>(admin)
  • DELETE /car/plates/<id>(admin)

4.2 分析接口

  • GET /car/analysis/city_top?n=10&year=2024
  • GET /car/analysis/model_timeseries?model=xxx&city=yyy
  • GET /car/analysis/price_bucket
    -(可选)GET /api/car/ml/kmeans_models?k=3

题目四:仿豆瓣影视评分网站(登录/收藏/评分分析)(基于“豆瓣影视评分”)

数据集下载链接

1. 项目简介

开发一个“仿豆瓣电影评分与收藏平台”。用户注册登录后可以浏览电影信息、搜索筛选、收藏电影、写短评(可选),并查看评分分布、热门类型等可视化分析。管理员可导入/维护电影数据。

说明:本项目使用提供的 xlsx 数据,仅作为课程数据练习,不做真实爬虫。

2. 核心功能

  • 用户:注册登录、个人中心
  • 电影:列表/详情/搜索(按类型、国家、评分区间、评价人数)
  • 收藏:收藏/取消收藏、收藏列表
  • 评论(可选):短评 CRUD
  • 数据分析:
    • 类型平均评分 + 评价人数
    • 评分 TopN(带最小评价人数门槛)
    • 星级比例(五星到一星)堆叠柱状图
      -(可选)sklearn:电影聚类(评分+星级比例+人数)

3. 数据库表设计(MySQL)

3.1 user

同题目一

3.2 movie(电影表)

  • id BIGINT PK AI
  • movie_name VARCHAR(255)
  • movie_url VARCHAR(500)
  • director VARCHAR(255)
  • writer VARCHAR(255)
  • actors TEXT
  • genre VARCHAR(255)
  • country VARCHAR(255)
  • language VARCHAR(100)
  • release_date VARCHAR(50)
  • duration_min VARCHAR(50)
  • alias TEXT
  • imdb VARCHAR(50)
  • douban_score DOUBLE
  • rating_count INT
  • star5_pct DOUBLE
  • star4_pct DOUBLE
  • star3_pct DOUBLE
  • star2_pct DOUBLE
  • star1_pct DOUBLE
  • summary TEXT

索引建议:douban_scorerating_countgenre

3.3 movie_favorite(电影收藏表)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL(FK → user.id)
  • movie_id BIGINT NOT NULL(FK → movie.id)
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP
  • UNIQUE KEY uk_user_movie (user_id, movie_id)

3.4 review(短评表,可选)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL
  • movie_id BIGINT NOT NULL
  • content TEXT NOT NULL
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP

4. 接口设计

4.1 电影查询

  • GET /movies(page, keyword, genre, country, score_min, score_max, min_count)
  • GET /movies/<id>

4.2 收藏

  • POST /movies/<id>/favorite
  • DELETE /movies/<id>/favorite
  • GET /me/favorites

4.3 分析接口

  • GET /movies/analysis/genre_score
  • GET /movies/analysis/top_score?n=20&min_count=5000
  • GET /movies/analysis/star_stack?movie_id=<id>
    -(可选)GET /movies/ml/kmeans?k=4

题目五:地震信息发布与风险分析平台(基于“地震数据”)

数据集下载链接

1. 项目简介

开发一个地震数据展示与分析平台。用户登录后可查询地震记录,按时间、震级、地区筛选;可收藏关注地区或关键地震记录;提供震级分布、时间趋势、地图散点等可视化。管理员可维护地震数据并发布公告。

2. 核心功能

  • 用户:注册登录、个人中心
  • 数据:地震记录查询/详情/(admin CRUD)
  • 收藏:关注地区/收藏记录
  • 公告:地震科普或应急通知(admin)
  • 数据分析:
    • 震级分布直方图
    • 不同地区/关键词地震次数 TopN
    • 地图散点(经纬度)
      -(可选)sklearn:异常检测(IsolationForest)找“异常深度/异常震级”

3. 数据库表设计(MySQL)

3.1 user

同题目一

3.2 earthquake(地震表)

  • id BIGINT PK AI
  • quake_time DATETIME
  • magnitude DOUBLE
  • latitude DOUBLE
  • longitude DOUBLE
  • depth_km DOUBLE
  • location VARCHAR(255)

索引建议:quake_timemagnitude

3.3 follow_location(关注地区表)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL(FK → user.id)
  • keyword VARCHAR(100) NOT NULL(如“云南/四川/某城市”)
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP

3.4 quake_favorite(收藏记录表,可选)

  • id BIGINT PK AI
  • user_id BIGINT NOT NULL
  • quake_id BIGINT NOT NULL
  • created_at DATETIME DEFAULT CURRENT_TIMESTAMP
  • UNIQUE KEY uk_user_quake (user_id, quake_id)

3.5 notice

同题目一

4. 接口设计

4.1 地震记录

  • GET /quakes(page, time_from, time_to, min_mag, max_mag, keyword)
  • GET /quakes/<id>
  • POST /quakes(admin)
  • PUT /quakes/<id>(admin)
  • DELETE /quakes/<id>(admin)

4.2 关注/收藏

  • POST /follow_locations(keyword)
  • GET /follow_locations
  • DELETE /follow_locations/<id>
  • POST /quakes/<id>/favorite
  • DELETE /quakes/<id>/favorite

4.3 分析接口

  • GET /quakes/analysis/magnitude_hist?bin=0.5
  • GET /quakes/analysis/top_location?n=20
  • GET /quakes/analysis/map_points?min_mag=4.0
    -(可选)GET /quakes/ml/anomaly_report