作业所属的课程 | 软件工程2024 |
---|---|
作业要求 | 2024秋软工实践团队作业-第二次 |
作业的目标 | 完成原型设计和概要设计 |
团队名称 | 十光年 |
团队成员学号-姓名 | 施靖杰-102201327 邓才慧-102201102 陈宇尧-102201119 陆旭东-102201118 黄宇舟-102201331 邱予-102202121 高鑫源-102201635 黄森福-102201636 洪金举-102202136 朱思颖-102201106 |
原型设计
前台应用原型
链接:前端设计
1. 登录界面
- 功能:只有授权用户能够访问系统。该界面包含登录、图片滑动验证码、身份验证和安全性措施等功能。
2. 首页
- 功能:能够跳转到其他功能界面。
3. 个性化推荐界面
- 功能:用户通过输入旅行目的地、日期、预算和个人偏好,系统使用大语言模型API生成个性化的旅行方案。
系统根据用户的历史旅行数据进行推荐,并支持手动修改和优化。
4. 天气调整行程界面
- 功能:能够获取天气信息获取、天气预警。根据实时天气信息动态调整用户的旅行计划,确保用户能够在安全、舒适的条件下进行旅行。
5. 客服界面
- 功能:用户能够在这个界面提出咨询,并由AI帮助解决问题。
后台管理原型
后端采用云数据库(Dcloud)进行管理
概要设计
UML设计
用例图
活动图
用户身份验证模块
个性化旅行推荐
紧急事件处理
客服与反馈
行程修改
类图
时序图
协作图
数据库设计
ER图
关系数据模型
表名 | 主键 | 外键 | 字段 | 关系描述 |
---|---|---|---|---|
用户信息表 (User_Info) | UserID | - | Username, UserProfilePic, Password, Email, CreationDate, LastLoginDate, Status | 与用户偏好表、行程状态表为一对多关系 |
管理员信息表 (Administrator_Info) | AdminID | - | AdminName, Password, Email, Role, CreationDate, LastLoginDate, Status | - |
用户偏好表 (Preferences_Info) | PreferenceID | UserID | Destination, BarrierFree, ParentChild, PetFriendly, MinBudget, MaxBudget, PreferredNatureSce, PreferredSocialSce, PreferredDietary, OtherRequirements, CreationDate, Status | 外键关联用户信息表 |
旅游景点表 (Scenic_Info) | ScenicID | - | ScenicName, Description, Location, ImageURL, Status与天气表为一对多关系 | |
天气表 (Weather_Info) | WeatherID | Destination | Date, WeatherCondition, Temperature, Rainfall, WindSpeed | 外键关联旅游景点表 |
行程状态表 (Trip_Info) | TripID | UserID | TripDate, TripSchedule, TripWarning, Status, CreationDate, Notes | 外键关联用户信息表 |
- 用户信息表
-- 用户信息表
CREATE TABLE User_Info (UserID INT PRIMARY KEY AUTO_INCREMENT,Username VARCHAR(50) NOT NULL,UserProfilePic VARCHAR(255),Password VARCHAR(255) NOT NULL,Email VARCHAR(100) NOT NULL UNIQUE,CreationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,LastLoginDate TIMESTAMP,Status ENUM('Active', 'Inactive') DEFAULT 'Active'
);
- 管理员信息表
-- 管理员信息表
CREATE TABLE Administrator_Info (AdminID INT PRIMARY KEY AUTO_INCREMENT,AdminName VARCHAR(50) NOT NULL,Password VARCHAR(255) NOT NULL,Email VARCHAR(100) NOT NULL UNIQUE,Role ENUM('SuperAdmin', 'Admin') DEFAULT 'Admin',CreationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,LastLoginDate TIMESTAMP,Status ENUM('Active', 'Inactive') DEFAULT 'Active'
);
- 用户偏好表
-- 用户偏好表
CREATE TABLE Preferences_Info (PreferenceID INT PRIMARY KEY AUTO_INCREMENT,UserID INT,Destination VARCHAR(100),BarrierFree BOOLEAN DEFAULT FALSE,ParentChild BOOLEAN DEFAULT FALSE,PetFriendly BOOLEAN DEFAULT FALSE,MinBudget DECIMAL(10, 2),MaxBudget DECIMAL(10, 2),PreferredNatureSce VARCHAR(100),PreferredSocialSce VARCHAR(100),PreferredDietary VARCHAR(100),OtherRequirements TEXT,CreationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,Status ENUM('Active', 'Inactive') DEFAULT 'Active',FOREIGN KEY (UserID) REFERENCES User_Info(UserID)
);
- 旅游景点表
-- 旅游景点表
CREATE TABLE Scenic_Info (ScenicID INT PRIMARY KEY AUTO_INCREMENT,ScenicName VARCHAR(100) NOT NULL,Description TEXT,Location VARCHAR(100),ImageURL VARCHAR(255),Status ENUM('Open', 'Closed') DEFAULT 'Open'
);
- 天气表
-- 旅游景点表
CREATE TABLE Weather_Info (WeatherID INT PRIMARY KEY AUTO_INCREMENT,Destination VARCHAR(100),Date DATE NOT NULL,WeatherCondition VARCHAR(50),Temperature DECIMAL(5, 2),Rainfall DECIMAL(5, 2),WindSpeed DECIMAL(5, 2),FOREIGN KEY (Destination) REFERENCES Scenic_Info(Location)
);
- 行程状态表
CREATE TABLE Trip_Info (TripID INT PRIMARY KEY AUTO_INCREMENT,UserID INT,TripDate DATE NOT NULL,TripSchedule TEXT,TripWarning TEXT,Status ENUM('Planned', 'Ongoing', 'Completed', 'Cancelled') DEFAULT 'Planned',CreationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,Notes TEXT,FOREIGN KEY (UserID) REFERENCES User_Info(UserID)
);
对象关系映射
ORM 类名 | 属性 | 关系描述 |
---|---|---|
User | user_id, username, user_profile_pic, password, email, creation_date, last_login_date, status | 与Preference类 |
Administrator | admin_id, admin_name, password, email, role, creation_date, last_login_date, status | - |
Preference | preference_id, destination, barrier_free, parent_child, pet_friendly, min_budget, max_budget, preferred_nature_sce, preferred_social_sce, preferred_dietary, other_requirements, creation_date, status | 外键关联到User类 |
Scenic | scenic_id, scenic_name, description, location, image_url, status | 与Weather类建立一对多关系 |
Weather | weather_id, date, weather_condition, temperature, rainfall, wind_speed | 外键关联到Scenic类 |
Trip | trip_id, trip_date, trip_schedule, trip_warning, status, creation_date, notes | 外键关联到User类 |
class UserInfo(Base):__tablename__ = 'User_Info'user_id = Column(Integer, primary_key=True, autoincrement=True)username = Column(String(50), nullable=False)user_profile_pic = Column(String(255))password = Column(String(255), nullable=False)email = Column(String(100), unique=True, nullable=False)creation_date = Column(TIMESTAMP, default='CURRENT_TIMESTAMP')last_login_date = Column(TIMESTAMP)status = Column(Enum('Active', 'Inactive'), default='Active')preferences = relationship("PreferencesInfo", back_populates="user")trips = relationship("TripInfo", back_populates="user")class AdministratorInfo(Base):__tablename__ = 'Administrator_Info'admin_id = Column(Integer, primary_key=True, autoincrement=True)admin_name = Column(String(50), nullable=False)password = Column(String(255), nullable=False)email = Column(String(100), unique=True, nullable=False)role = Column(Enum('SuperAdmin', 'Admin'), default='Admin')creation_date = Column(TIMESTAMP, default='CURRENT_TIMESTAMP')last_login_date = Column(TIMESTAMP)status = Column(Enum('Active', 'Inactive'), default='Active')class PreferencesInfo(Base):__tablename__ = 'Preferences_Info'preference_id = Column(Integer, primary_key=True, autoincrement=True)user_id = Column(Integer, ForeignKey('User_Info.UserID'))destination = Column(String(100))barrier_free = Column(Boolean, default=False)parent_child = Column(Boolean, default=False)pet_friendly = Column(Boolean, default=False)min_budget = Column(DECIMAL(10, 2))max_budget = Column(DECIMAL(10, 2))preferred_nature_sce = Column(String(100))preferred_social_sce = Column(String(100))preferred_dietary = Column(String(100))other_requirements = Column(Text)creation_date = Column(TIMESTAMP, default='CURRENT_TIMESTAMP')status = Column(Enum('Active', 'Inactive'), default='Active')user = relationship("UserInfo", back_populates="preferences")class ScenicInfo(Base):__tablename__ = 'Scenic_Info'scenic_id = Column(Integer, primary_key=True, autoincrement=True)scenic_name = Column(String(100), nullable=False)description = Column(Text)location = Column(String(100))image_url = Column(String(255))status = Column(Enum('Open', 'Closed'), default='Open')weather_records = relationship("WeatherInfo", back_populates="scenic")class WeatherInfo(Base):__tablename__ = 'Weather_Info'weather_id = Column(Integer, primary_key=True, autoincrement=True)destination = Column(String(100), ForeignKey('Scenic_Info.Location'))date = Column(Date, nullable=False)weather_condition = Column(String(50))temperature = Column(DECIMAL(5, 2))rainfall = Column(DECIMAL(5, 2))wind_speed = Column(DECIMAL(5, 2))scenic = relationship("ScenicInfo", back_populates="weather_records")class TripInfo(Base):__tablename__ = 'Trip_Info'trip_id = Column(Integer, primary_key=True, autoincrement=True)user_id = Column(Integer, ForeignKey('User_Info.UserID'))trip_date = Column(Date, nullable=False)trip_schedule = Column(Text)trip_warning = Column(Text)status = Column(Enum('Planned', 'Ongoing', 'Completed', 'Cancelled'), default='Planned')creation_date = Column(TIMESTAMP, default='CURRENT_TIMESTAMP')notes = Column(Text)user = relationship("UserInfo", back_populates="trips")
团队协作
预期开发计划时间安排
周次 | 日期范围 | 里程碑 | 产出 |
---|---|---|---|
第一周 | 11月2日 - 11月8日 | 前端开发初步完成,建立数据库 | 根据原型设计完成大部分前端开发,初步建立数据库 |
第二周 | 11月9日 - 11月15日 | 前端开发基本完成,后端开发初步完成 | 根据API接口文档初步完成后端开发 |
第三周 | 11月16日 - 11月22日 | 前后端集成开发 | 初步实现系统演示,进行测试 |
第四周 | 11月23日 - 11月29日 | 代码审查,测试组对系统进行测试与反馈 | 完成代码审查,根据测试结果与反馈修改程序漏洞,完善功能 |
预计开发计划分工安排
姓名 | 角色 | 负责开发部分 |
---|---|---|
施靖杰 | 组长 | 项目管理与分工,撰写文案 |
朱思颖 | 设计组负责人 | 负责系统的整体UI设计,界面布局规划 |
洪金举 | 设计组人员 | 协助UI设计,图标和图片资源设计 |
高鑫源 | 前端组负责人 | 前端架构设计与关键页面开发,指导前端组 |
邓才慧 | 前端组人员 | 负责实现旅行规划和推荐模块的前端界面 |
黄森福 | 前端组人员 | 负责用户管理、登录注册等前端界面 |
黄宇舟 | 后端组负责人 | 后端架构设计,主要功能模块的API开发 |
邱予 | 后端组人员 | 实现行程管理、天气数据等功能接口 |
陈宇尧 | 测试组负责人 | 测试计划的制定,组织测试用例编写和执行 |
陆旭东 | 测试组人员 | 负责前端、后端模块的功能测试及反馈 |
协作记录
使用Github Desktop进行项目协作
Github贡献记录
- GitHub团队仓库链接:https://github.com/114John114/Ten_Lightyears
- 十光年_系统设计说明书:https://pan.quark.cn/s/15e3fd5a711b
- 十光年_数据库设计说明书:https://pan.quark.cn/s/179a42d981e5
- 十光年_原型设计+概要设计答辩PPT:https://pan.quark.cn/s/eb64b4f1bd2d