商丘网站制作建设_简阳网站推广_十家有名的国内会展公司_新疆设计公司
3.1 系统功能模块设计 “哈尔滨”旅游网站整体的功能模块包括管理员+注册用户两个模块,实现了对物流相关信息的查询管理,系统功能模块如图所示。
图3.1 “哈尔滨”旅游网站功能模块图
3.2.1 数据库概念结构设计
“哈尔滨”旅游网站的E-R图主要是根据注册用户以及管理员的实际需求设计的,用户注册以后可以查看行程推荐,只有注册登录以后才可以进行旅游贴士、收藏、评论等;管理员对整个系统的公告、用户、资讯、美食推荐等进行综合管理。“哈尔滨”旅游网站采用的是MYSQL的数据库进行存储的,数据库里面储存了很多的表信息,在此罗列出来一些主要的数据库E-R模型图。
图3.2 普通用户信息E-R关系图
图3.3 行程推荐信息E-R关系图
图3.4 美食推荐信息E-R关系图
图3.5 收藏信息E-R关系图
图3.6 评论信息E-R关系图
图3.7公告信息E-R关系图
图3.8 轮播图信息E-R关系图
“哈尔滨”旅游网站的总E-R图如下:
图3.9 “哈尔滨”旅游网站总E-R关系图
3.2.2 数据库逻辑结构设计
通过前面E-R关系图一共需要创建很多个数据表。在此罗列这几个主要数据库表的关系模型如下:
表classification_of_scenic_spots (景区分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | classification_of_scenic_spots_id | int | 10 | 0 | N | Y | | 景区分类ID |
2 | classification_of_scenic_spots | varchar | 64 | 0 | Y | N | | 景区分类 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | | 收藏ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
4 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | | 标题: |
7 | img | varchar | 255 | 0 | Y | N | | 封面: |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | | 评论ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | | 内容: |
5 | nickname | varchar | 255 | 0 | Y | N | | 昵称: |
6 | avatar | varchar | 255 | 0 | Y | N | | 头像地址:[0,255] |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
10 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表entering_harbin (走进哈尔滨)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | entering_harbin_id | int | 10 | 0 | N | Y | | 走进哈尔滨ID |
2 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户名称 |
4 | urban_history | varchar | 64 | 0 | Y | N | | 城市历史 |
5 | release_time | datetime | 19 | 0 | Y | N | | 发布时间 |
6 | cover_photo | varchar | 255 | 0 | Y | N | | 封面图片 |
7 | historical_evolution | text | 65535 | 0 | Y | N | | 历史沿革 |
8 | cultural_relics_and_historic_sites | text | 65535 | 0 | Y | N | | 文物古迹 |
9 | folk_customs | text | 65535 | 0 | Y | N | | 民俗风情 |
10 | geographical_environment | text | 65535 | 0 | Y | N | | 地理环境 |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表food_recommendations (美食推荐)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_recommendations_id | int | 10 | 0 | N | Y | | 美食推荐ID |
2 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户名称 |
4 | food_types | varchar | 64 | 0 | Y | N | | 美食类型 |
5 | food_name | varchar | 64 | 0 | Y | N | | 美食名称 |
6 | food_pictures | varchar | 255 | 0 | Y | N | | 美食图片 |
7 | release_time | datetime | 19 | 0 | Y | N | | 发布时间 |
8 | food_recommendations | longtext | 2147483647 | 0 | Y | N | | 美食推荐 |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表food_types (美食类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_types_id | int | 10 | 0 | N | Y | | 美食类型ID |
2 | food_types | varchar | 64 | 0 | Y | N | | 美食类型 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表forum_classification (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_classification_id | int | 10 | 0 | N | Y | | 论坛分类ID |
2 | forum_classification | varchar | 64 | 0 | Y | N | | 论坛分类 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hotel_recommendations_id | int | 10 | 0 | N | Y | | 酒店推荐ID |
2 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户名称 |
4 | hotel_type | varchar | 64 | 0 | Y | N | | 酒店类型 |
5 | hotel_name | varchar | 64 | 0 | Y | N | | 酒店名称 |
6 | hotel_phone | varchar | 64 | 0 | Y | N | | 酒店电话 |
7 | release_time | datetime | 19 | 0 | Y | N | | 发布时间 |
8 | hotel_image | varchar | 255 | 0 | Y | N | | 酒店图片 |
9 | hotel_details | longtext | 2147483647 | 0 | Y | N | | 酒店详情 |
10 | hotel_address | varchar | 64 | 0 | Y | N | | 酒店地址 |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hotel_type (酒店类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hotel_type_id | int | 10 | 0 | N | Y | | 酒店类型ID |
2 | hotel_type | varchar | 64 | 0 | Y | N | | 酒店类型 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | | 公告id: |
2 | title | varchar | 125 | 0 | N | N | | 标题: |
3 | content | longtext | 2147483647 | 0 | Y | N | | 正文: |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表ordinary_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | | 普通用户ID |
2 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
3 | user_gender | varchar | 64 | 0 | Y | N | | 用户性别 |
4 | contact_number | varchar | 64 | 0 | Y | N | | 联系电话 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | | 点赞ID: |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | | 来源表: |
6 | source_field | varchar | 255 | 0 | Y | N | | 来源字段: |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表recommended_itinerary (行程推荐)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | recommended_itinerary_id | int | 10 | 0 | N | Y | | 行程推荐ID |
2 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户名称 |
4 | itinerary_name | varchar | 64 | 0 | Y | N | | 行程名称 |
5 | travel_location | varchar | 64 | 0 | Y | N | | 行程地点 |
6 | journey_picture | varchar | 255 | 0 | Y | N | | 行程图片 |
7 | release_time | datetime | 19 | 0 | Y | N | | 发布时间 |
8 | itinerary_details | longtext | 2147483647 | 0 | Y | N | | 行程详情 |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表scenic_area_recommendation (景区推荐)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | scenic_area_recommendation_id | int | 10 | 0 | N | Y | | 景区推荐ID |
2 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户名称 |
4 | scenic_area_name | varchar | 64 | 0 | Y | N | | 景区名称 |
5 | classification_of_scenic_spots | varchar | 64 | 0 | Y | N | | 景区分类 |
6 | scenic_area_location | varchar | 64 | 0 | Y | N | | 景区地点 |
7 | release_time | datetime | 19 | 0 | Y | N | | 发布时间 |
8 | scenic_area_pictures | varchar | 255 | 0 | Y | N | | 景区图片 |
9 | scenic_area_details | longtext | 2147483647 | 0 | Y | N | | 景区详情 |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表sensitive_vocabulary (敏感词汇)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | | 敏感词汇ID |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | | 敏感词汇 |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | | 轮播图ID: |
2 | title | varchar | 64 | 0 | Y | N | | 标题: |
3 | content | varchar | 255 | 0 | Y | N | | 内容: |
4 | url | varchar | 255 | 0 | Y | N | | 链接: |
5 | img | varchar | 255 | 0 | Y | N | | 轮播图: |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表tourism_news (旅游新闻)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | tourism_news_id | int | 10 | 0 | N | Y | | 旅游新闻ID |
2 | news_headlines | varchar | 64 | 0 | Y | N | | 新闻标题 |
3 | news_images | varchar | 255 | 0 | Y | N | | 新闻图片 |
4 | news_content | longtext | 2147483647 | 0 | Y | N | | 新闻内容 |
5 | release_time | date | 10 | 0 | Y | N | | 发布时间 |
6 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
7 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表travelers_say (旅友说)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | travelers_say_id | int | 10 | 0 | N | Y | | 旅友说ID |
2 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
3 | user_name | varchar | 64 | 0 | Y | N | | 用户姓名 |
4 | title_name | varchar | 64 | 0 | Y | N | | 标题名称 |
5 | forum_classification | varchar | 64 | 0 | Y | N | | 论坛分类 |
6 | cover_photo | varchar | 255 | 0 | Y | N | | 封面图片 |
7 | forum_content | longtext | 2147483647 | 0 | Y | N | | 论坛内容 |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
4 关键模块的设计与实现
“哈尔滨”旅游网站的详细设计与实现主要是根据前面的“哈尔滨”旅游网站的需求分析和“哈尔滨”旅游网站的总体设计来设计页面并实现业务逻辑。主要从“哈尔滨”旅游网站界面实现、业务逻辑实现这两部分进行介绍。
4.1 用户功能模块
4.1.1 前台首页界面
当进入“哈尔滨”旅游网站的时候,首先映入眼帘的是系统的导航栏、轮播图以及旅游新闻,同时可以输入关键词对“哈尔滨”旅游网站的内容进行检索,右上角是用户登录以及注册按钮,其主界面展示如下图4.1所示。
图4.1 首页界面图
不是“哈尔滨”旅游网站中用户的是可以在线进行注册的,当用户点击右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等信息后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可注册成功。其用户注册界面展示如下图4.2所示。
图4.2 用户注册界面图
注册关键代码如下:
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
“哈尔滨”旅游网站中的前台上注册后的用户是可以通过自己的username和password进行登录的,当会员输入完整的自己的username和password信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的username和password在数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到“哈尔滨”旅游网站的首页中;否则将会提示相应错误信息,登录界面如下图4.3所示。
图4.3登录界面图
登录关键代码如下:
public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
4.1.4 旅友说界面
用户点击“旅友说”菜单显示所有的旅友说信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。界面如下图4.4所示。
图4.4旅友说界面图
4.1.5 旅游新闻界面
用户点击“旅游新闻”菜单显示所有的旅游新闻信息,可以按照条件进行旅游新闻的筛选或者输入关键词进行局部搜索,点击可以进入旅游新闻详细展示界面,在此界面用户可以收藏、点赞和评论。界面如图4.5所示。
图4.5旅游新闻界面图
4.1.6 走进哈尔滨详情界面
用户可以查看走进哈尔滨信息,在查询到自己想要了解的走进哈尔滨的时候,可以进入查看详细的介绍,支持用户对喜欢的走进哈尔滨进行收藏、点赞、评论的功能。走进哈尔滨详情界面如下图4.6所示。
图4.6走进哈尔滨详情界面图
4.1.7 美食推荐详情界面
用户可以查看美食推荐信息,在查询到自己想要了解的美食推荐的时候,可以进入查看详细的介绍,支持用户对喜欢的美食推荐进行收藏、点赞、评论的功能。美食推荐详情界面如下图4.7所示。
图4.7美食推荐详情界面图
4.1.8 休闲购物详情界面
用户可以查看休闲购物信息,在查询到自己想要了解的休闲购物的时候,可以进入查看详细的介绍,支持用户对喜欢的休闲购物进行收藏、点赞的功能。休闲购物详情界面如下图4.8所示。
图4.8休闲购物详情界面图
4.1.9 我的账户界面
当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料、登录系统的密码以及自己收藏的信息进行设置管理,我的账户界面如下图4.9所示。
图4.9我的账户界面图
4.2 管理员功能角模块
“哈尔滨”旅游网站的理员拥有最高的权限,可以对用户信息、系统信息以及物流相关信息进行管控。
4.2.1 登录界面
管理员在后台可以通过账号和密码进行登录,管理员的账号和密码是在数据库中直接设定的,如果忘记密码可以点击“忘记密码”进行密码找回。界面展示如下图4.10所示。
图4.10登录界面图
4.2.2 用户管理界面
管理员点击“用户管理”这一菜单会显示管理员和注册用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作,界面如下图4.11所示。
图4.11 用户管理界面图
用户管理关键代码如下:
public function add()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
4.2.3 美食推荐管理界面
管理员点击“美食推荐”会显示出所有的美食推荐信息,支持选择普通用户或者美食名称对美食推荐信息进行查询,如果想要添加新的美食推荐信息,点击“添加”按钮,输入普通用户、用户名称、美食名称、美食类型、美食图片、发布时间等信息,点击“提交”按钮就可以添加了,同时可以选择某一条美食推荐信息,点击“删除”进行删除,也可以对用户提交的美食推荐评论的信息进行管控。界面如下图4.12所示。
图4.12 美食推荐管理界面图
美食推荐管理关键代码如下:
public function del()
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
4.2.4 旅游贴士管理界面
管理员点击“旅游贴士管理”菜单可以查看到系统中的所有旅游贴士信息,对已经存在的旅游贴士,管理员可以修改,也可以添加新的旅游贴士或者删除旅游贴士。界面如下图4.13所示。
图4.13 旅游贴士管理界面图
4.2.5 资源管理界面
资源管理主要管理员是对旅游新闻以及旅游新闻所属的分类进行管控,包含了用户对旅游新闻提交的评论信息,界面如下图4.14所示。
图4.14 资源管理界面图
资源管理关键代码如下:
public function set()
{
if (Request::isPost()) {
$get = Request::get();
$where = [];
foreach($get as $k => $g){
if($k != 'page' && $k != 'size'){
$where[$k] = $g;
}
}
$request = Request::post();
if($this->table != 'user'){
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
}
$result = $this->validate($request, $this->validate);
if (true !== $result) {
$data['error'] = 30000;
$data['message'] = $result;
} else {
$result = $this->model->set($request, $this->table, $this->table_id, $where);
$data = $result;
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
4.2.6 交流管理界面
管理员点击“交流管理”菜单可以对其下旅友说和论坛的分类进行增删改查。界面如下图4.15所示。
图4.15 交流管理界面图
5 系统测试与结果分析
系统测试包括:用户登录功能测试、酒店推荐展示功能测试、酒店推荐添加、密码修改功能测试,如表5-1、5-2、5-3、5-4所示:
用户登录功能测试:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
酒店推荐查看功能测试:
表5-2 酒店推荐查看功能测试表
用例名称 | 酒店推荐查看 |
目的 | 测试酒店推荐查看功能 |
前提 | 用户登录 |
测试流程 | 点击酒店推荐信息 |
预期结果 | 可以查看到所有酒店推荐信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加酒店推荐界面测试:
表5-3 管理员添加酒店推荐界面测试表
用例名称 | 酒店推荐添加测试用例 |
目的 | 测试酒店推荐添加功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员点击酒店推荐,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的酒店推荐信息 |
实际结果 | 实际结果与预期结果一致 |
实际结果 | 实际结果与预期结果一致 | |
密码修改搜索功能测试:
表5-4 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
5.2 系统测试结果
通过对“哈尔滨”旅游网站的调试,能够检测“哈尔滨”旅游网站的稳定性,为“哈尔滨”旅游网站正式运行、稳定运行提供了可预测性的维护备案。能够帮助使用者熟悉整个“哈尔滨”旅游网站,并对“哈尔滨”旅游网站可能出现的错误有所了解。本章节提供了部分调试用例及调试日志,可以帮助使用者解决简单的错误问题,也加深了开发者对于此框架下的“哈尔滨”旅游网站编写的了解度,为后期开发者顺利完成“哈尔滨”旅游网站、发布“哈尔滨”旅游网站提供了非常大的帮助。
">