设计思路
本系统模拟饿了么点餐流程,主要用于学生用户点餐,系统基于 ASP.NET Core MVC 框架实现,采用会话(Session)机制完成登录状态管理,主要包括用户认证、菜品展示、下单、订单查询等功能模块。设计目标是代码结构清晰,业务流程完整,易于扩展二次开发。

1. 项目结构
主要包含如下控制器及其对应的业务逻辑:
- AccountController 用户认证与会话管理
- FoodController 菜品展示和下单功能
- OrderController 订单展示查询
后端数据访问通过 ApplicationDbContext(EF Core 上下文)完成。
2. 用户登录认证(AccountController)
- 登录限制:系统仅允许某一特定专业(如“计算机科学”)的学生用户登录,保证用户身份合法性。
- 登录流程:用户输入学号和密码,系统校验数据库中相关信息,并仅当专业、学号、密码均匹配时允许登录。
- 会话管理:登录成功后,将用户ID和姓名写入 Session,后续操作以 Session 作为登录状态凭证。
- 错误反馈:登录失败,将提示“仅支持指定专业学生登录”。


3. 菜品展示与下单(FoodController)
- 菜品列表:获取数据库中所有菜品信息,以列表形式传递至前端视图。
- 下单流程:仅限已登录学生操作,下单时将学生ID和选择的菜品ID写入订单表,并跳转到订单查询页面。
- 权限拦截:若 Session 中无登录信息,则自动跳转到登录页面,保证点餐流程受控。

4. 订单查询(OrderController)
- 订单列表:从数据库检索当前学生的所有订单,按时间倒序排列,并附带菜品信息展示。
- 数据补全:通过 Order 表中的 FoodId 反向查找 Food 实体,方便视图展示完整菜品信息。
- 登录保护:未登录用户无法访问订单查询页面。

其他功能略…

5. 与数据库的交互
- 系统各功能通过依赖注入(ApplicationDbContext)操作数据库,所有实体关系采用 EF Core 管理。
- 订单与菜品、一对多关系,订单表(Order)包含外键 FoodId。

949

被折叠的 条评论
为什么被折叠?



