基于PHP的旅游管理系统

1 篇文章 0 订阅

系列文章目录

基于SpringBoot的高校在线答疑管理系统

基于SpringBoot的外卖点餐管理系统

基于SpringBoot的实验室管理系统


目录

系列文章目录

前言

一、相关技术

二、系统设计

1.系统体系结构

 2.数据库设计原则

 3.系统UML用例分析

 三、系统页面

1.管理员功能页面

 2.用户功能页面

3.前台功能页面

 四、核心代码


前言

随着旅游行业的不断发展,各家旅游行业之间的竞争日益激烈,旅游部门所需的信息量越来越大,业务操作中涉及的各种线路情况、用户情况以及旅游协作部门的情况越来越复杂多变。而除了一些个别地区已采用了的旅游网站,一般通常是以原始的手工方式处理/新闻资讯。但是工作人员若仅靠手工方式处理大量资料,很可能带来出错率的增长以及大量资源的浪费和闲置等问题。因此,只有加强对旅游信息资源的整合、统一管理,才能使旅游部门运行更加合理、高效地运转。本文是根据旅游行业的这种现状,提出解决问题的一个可行性方法:采用现代化统一的计算机网络系统,实现了旅游管理的网络化,各类信息有序地进行存储,同时采用了权限认证的方式,本系统有管理员与用户,只有经过了系统权限认证之后,方可进入系统主控界面,进行信息管理,推荐查询,在线组队,线路规划等功能的使用。

该系统开发环境为的数据库是Mysql,使用PHP技术开发,B/S结构,是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。


一、相关技术

开发语言:PHP

框架:原生php/thinkphp5

服务器:Apache

数据库:MySQL57

数据库管理工具:Navicat

运行软件:小皮phpstudy

二、系统设计

1.系统体系结构

结构图: ​​​​​​​

 登录系统结构图

 系统结构图

 2.数据库设计原则

      每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与用户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。

旅游见闻的数据流程:

用户信息:用户名、密码、用户姓名、头像、性别、手机号码、邮箱实体E-R图

 景点推荐信息:景点名称、图片、景点星级、景点介绍、地址、城市、门票价格、营业时间、注意事项E-R图

 3.系统UML用例分析

管理员登录后可进行首页、个人中心、用户管理、景点推荐管理、特色美食管理、酒店青旅管理、路线规划管理、休闲娱乐管理、结伴同行管理、结伴同行管理、视频类型管理、新闻资讯、留言板管理、系统管理

用户后台:首页、个人中心、景点推荐管理、特色美食管理、酒店青旅管理、路线规划管理、休闲娱乐管理、结伴同行管理、结伴同行管理、视频类型管理、留言板管理、我的收藏管理

 三、系统页面

1.管理员功能页面

登陆、管理员输入个人的账号、密码、角色登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的账号、密码,直到账号密码输入成功后,会提登录成功的信息。

首页:管理员进入到界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看首页、个人中心、用户管理、景点推荐管理、特色美食管理、酒店青旅管理、路线规划管理、休闲娱乐管理、结伴同行管理、留言板管理、系统管理等功能模块,进行相对应操作。

管理员对用户信息可编辑用户名、密码、用户姓名、头像、性别、手机号码、邮箱并进行添加、删除、修改以及查看。

​​​​​​​

 

景点推荐管理:管理员通过列表可以获取查看编辑景点名称、图片、景点星级、景点介绍、地址、城市、门票价格、营业时间、注意事项等信息,进行详情、修改操作。

酒店青旅管理:管理员通过列表可以获取酒店名称、图片、酒店类型、星级、酒店介绍、酒店地址、联系电话等信息,进行查看评论、详情、修改、删除操作。

休闲娱乐管理:管理员通过列表可以获取娱乐名称、图片、详情介绍、打卡地点、城市、人均消费等信息,进行查看评论、详情、修改、删除操作。

 结伴同行管理:管理员通过列表可以获取景点名称、图片、景点介绍、地址、结伴内容、结伴人数、出发时间、用户名、用户姓名、发布日期等信息,进行查看评论、详情、修改、删除操作。

 系统管理:管理员通过系统管理页面查看轮播图/新闻资讯等进行上传图片,资讯发布进行添加、删除、修改以及查看并对整个系统进行维护等操作。

 2.用户功能页面

首页:用户进入到界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看首页、个人中心、结伴同行管理、我的收藏管理等功能模块。

 结伴同行管理,在结伴同行页面可以新增景点名称、图片、景点介绍、地址、结伴内容、结伴人数、出发时间、用户名、用户姓名、发布日期等内容,并进行提交/取消、添加、删除、修改操作操作。

 

 我的收藏管理,在收藏管理页面可以查看收藏名称、收藏图片等等内容,并进行详情查看,修改,等操作。

3.前台功能页面

首页:用户通过首页列表可以查看首页、景点推荐、特色美食、酒店青旅、结伴同行、新闻资讯、留言反馈、个人中心、后台管理、客服等内容。

 注册、用户登陆,在注册页面可以填写用户名、密码、用户姓名、手机号码、邮箱等详细内容,进行注册、登录。

 

 景点推荐,在景点推荐页面通过景点名称、图片、景点星级、景点介绍、地址、城市、门票价格、营业时间、注意事项等信息进行查看、评论。

 

 特色美食,用户在特色美食页面可查看、评论操作。

 

 路线规划,在路线规划页面可查看、搜索、评论、收藏。

 个人中心,用户在个人信息页面可进行编辑用户名、密码、用户姓名、头像、性别、手机号码、邮箱进行添加、修改、删除操作。

 四、核心代码

<?php
session_start();
class UsersController extends CommonController {
	public function __construct()
    {
        header("Access-Control-Allow-Origin: *");
        header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
        header('Access-Control-Allow-Headers:Origin,Content-Type,Accept,token,X-Requested-With,device');
    }
    public $columData = [
        'id','addtime','username','password','role'
    ];
    /**
     * 登录接口
     * POST
     * */
    public function login(){
        $username = isset($_REQUEST['username'])?$_REQUEST['username']:"";
        $password = isset($_REQUEST['password'])?$_REQUEST['password']:"";
        $sql = "select * from `users` where username = '".$username."' and password = '".$password."'";
        $result = table_sql($sql);
        if ($result->num_rows > 0) {
            // 输出数据
            while($row = $result->fetch_assoc()) {
                $token_array = [
                    "iat" => time(), //签发时间
                    "exp" => time()+7200, //token 过期时间
                    'tablename'=> 'users',//表名
					'isAdmin' => 1,
                    'id' => $row["id"],
                    "success" => $row,//记录的uid的信息,如果有其它信息,可以再添加数组的键值对
                ];
                $tokens = base64_encode(json_encode($token_array));
                $data = ['code' => 0, 'token' => $tokens];
                exit(json_encode($data));
            }
        } else {
            exit(json_encode(['code'=>500,'msg'=>"账号或密码错误"]));
        }
    }
    /**
     * 退出
     * post
     */
    public function logout(){
        $token = $this->token();
        unset($token);
        exit(json_encode(['code'=>0,'msg'=>'退出成功']));
    }
    /**
     * 获取session
     */
    public function session(){
        $token = $this->token();
        $data = json_decode(base64_decode($token),true);
        $arrayData = $data['success'];
        exit(json_encode(['code'=>0,'data'=>$arrayData]));
    }
    /**
     * 找回密码 重置为123456
     **/
    public function resetPass(){
        $username = input('post.username');
        $counts = "select * from `users` where username = '".$username."'";
        $cotte = table_sql($counts);
        if($cotte->num_rows<1){
            exit(json_encode(['code'=>500,'msg'=>"用户名错误。"]));
        }
        $sql = "update users set password = '123456' where username = '".$username."'";
        $result = table_sql($sql);
        if($result) exit(json_encode(['code'=>500,'msg'=>"重置密码错误。"]));
        exit(json_encode(['code'=>0,'msg'=>"密码已重置为:123456"]));
    }
    /**
     * 分页,列表
     * get
     */
    public function page(){
        $token = $this->token();
        $tokens = json_decode(base64_decode($token),true);
        if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
        $userid = $tokens['id'];
        $page = isset($_REQUEST['page'])?$_REQUEST['page']:"1";
        $limt = isset($_REQUEST['limit'])?$_REQUEST['limit']:"10";
        $sort = isset($_REQUEST['sort'])?$_REQUEST['sort']:"id";
        $order = isset($_REQUEST['order'])?$_REQUEST['order']:"asc";
        $where = "";//查询条件
        $sql = "select * from `users`".$where;
        $count = table_sql($sql);
        if ($count->num_rows < 1){
            $numberCount = 1;
        }else{
            $numberCount = $count->num_rows;
        }
        $page_count = ceil($numberCount/$limt);//页数
        $startCount = ($page-1)*10;
        $lists = "select * from `users` ".$where." order by ".$sort." ".$order." limit ".$startCount.",".$limt;
        $result = table_sql($lists);
        $arrayData = array();
        if ($result->num_rows > 0) {
            while ($datas = $result->fetch_assoc()){
                array_push($arrayData,$datas);
            }
        }
        exit(json_encode([
            'code'=>0,
            'data' => [
                "total" => $count,
                "pageSize" => $limt,
                "totalPage" => $page_count,
                "currPage" => $page,
                "list" => $arrayData
            ]
        ]));
    }
    /**
     * 新增数据接口
     * post
     */
    public function save(){
        $token = $this->token();
        $tokens = json_decode(base64_decode($token),true);
        if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
        $userid = $tokens['id'];
        $keyArr = $valArr = array();
        $tmpData = strval(file_get_contents("php://input"));//Content-Type: application/json 需要用到php://input 处理输入流
        if (!empty($tmpData)&& isset($tmpData)){
            $postData = json_decode($tmpData,true);
            foreach ($postData as $key => $value){
                if (in_array($key, $this->columData)){
                    array_push($keyArr,"`".$key."`");
                    array_push($valArr,"'".$value."'");
                }
            }
        }
        $k = implode(',',$keyArr);
        $v = implode(',',$valArr);
        $sql = "INSERT INTO `users` (".$k.") VALUES (".$v.")";
        $result = table_sql($sql);
        if (!$result) exit(json_encode(['code'=>500,'msg'=>"新增失败"]));
        exit(json_encode(['code'=>0]));
    }

    /**
     * 更新接口
     * post
     */
    public function update(){
        $tmpData = strval(file_get_contents("php://input"));
        $postData = json_decode($tmpData,true);
        $v = array();
        foreach ($postData as $key => $value){
            if (in_array($key, $this->columData)){
                array_push($v,$key." = '".$value."'");
            }
        }
        $value = implode(',',$v);
         $sql = "UPDATE users SET ".$value;
        $result = table_sql($sql);
        if (!$result) exit(json_encode(['code'=>500,'msg'=>"修改失败"]));
        exit(json_encode(['code'=>0]));
    }
    /**
     * 删除
     * post
     */
    public function delete(){
        $ids = strval(file_get_contents("php://input"));//发现接收的是字符串
        preg_match_all('/\d+/',$ids,$arr);
        $str = implode(',',$arr[0]);//拼接字符,
        $sql = "delete from users WHERE id in({$str})";
        $result = table_sql($sql);
        if (!$result) exit(json_encode(['code'=>500,'msg'=>"删除失败。"]));
        exit(json_encode(['code'=>0]));
    }
    /**
     * 查询一条数据
     * get
     */
    public function info($id=false){
        $token = $this->token();
        $tokens = json_decode(base64_decode($token),true);
        if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
        $userid = $tokens['id'];
        $name = isset($_REQUEST['name'])? $_REQUEST['name']:"";
        if (!empty($id)){
            $where = "`id` = ".$id;
        }else{
            $where = "`name` = ".$name;
        }
        $sql = "select * from `users` where ".$where;
        $result = table_sql($sql);
        if (!$result) exit(json_encode(['code'=>500,'msg'=>"查询数据发生错误。"]));
        if ($result->num_rows > 0) {
            // 输出数据
            while($row = $result->fetch_assoc()) {
                $lists = $row;
            }
        }
        exit(json_encode([
            'code'=>0,
            'data'=> $lists
        ]));
    }
}


  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程内容主要讲解如下几点:1:如何使用navaicat导入sql2:如何设置网站的的数据库账号等,如何使用iis发布网站3:演示后台管理功能、前台用户工鞥呢 该系统主要分网站管理员、游客、注册用户这几个角色网站管理员系统设置网站设置:网站名称、关键字、描述、网站介绍关于我们设置:设置关于我们、联系我们、加入我们、法律声明广告和留言       首页轮播图设置:支持上传轮播图;       留言列表:用户的所有留言信息、支持删除会员管理查看会员信息列表、支持删除功能资讯中心       添加资讯:类型、标题、资讯内容等       管理资讯:查看所有资讯列表;支持修改功能;支持删除功能       资讯浏览列表:所有用户的信息浏览记录;支持删除功能。       信息收藏数据:所有注册用户的收藏资讯列表;支持删除功能。       信息评论列表:所有注册用户的用户评论列表;支持审核和删除功能。景区中心       属性设置:设置景区的相关地区、年代、类型属性       录入景点:选择景点的地区、类型、年代属性,填写景点名称、价格、景点图片、景点介绍       景点管理:所有录入的景点列表;支持修改,支持删除       热门关键词设定:设定查询框下面的热门关键词订单和评论       订单列表:查看所有注册的用户的订单信息,包括下单时间、景点封面、景点信息、下单用户、联系方式等等。       订单管理:对于待付款的订单,支持删除和订单处理。       订单处理:如果线下支付了,那么线上可以直接更改支付状态,待付款变更为已付款。游客关于我们关于我们、联系我们、加入我们、法律声明资讯中心查看网站的所有资讯:通知公告、帮助中心、旅游攻略、行业资讯留言反馈给网站管理员留言:主题、联系人、电话、邮箱、内容等查看景点信息可以查看景点所有相关信息:景点名称、图片、价格、详情等。不能进行收藏、订购门票、发表评论。 注册用户注册用户除了享有游客的特别功能外,还有一些功能。注册和登录注册功能:填写用户名和密码注册登录:登录后可以享有会员功能。资讯收藏、评论登录的会员可以在资讯闲情页面,收藏,评论(评论信息需要后台审核后显示)景点列表和查询功能直接点击“景点门票”栏目,可以查看所有的景点列表;也可以点击左侧的分类,按地区显示要查看的景点列表也可以在顶部,景点搜索框填写景点的关键词,点击“景点搜索”查询相关景点。景点收藏和评论功能       在景点的详情页面,支持收藏景点和发表评论。       点击“收藏景点”,可以收藏当前景点,在用户中心进行收藏景点的管理。       在景点评论,可以发表评论,每个景点每天只能发布一篇评论,后台审核后显示。景点购买门票步骤如下:第一步:通过点击景点门票栏目或者顶部查询景点,进入景点介绍页面第二步:在景点详情页面,点击“立即订购景点门票”第三步:选择时间,填写票数、电话、姓名、备注;提交预约购买信息。跳转到景点订单列表我的景点预约订单可以查看我所有的景点订单信息:下单时间、景点信息、联系信息、状态信息。提交到订单列表的,默认是待付款状态;支持删除和去付款。付款后的订单,状态变更为“已经支付”注: 真实支付需要营业执照,这里是模拟支付,点击支付,我们假定支付成功!景点浏览、收藏、评论信息管理景点浏览列表:当前会员景点的浏览信息列表景点收藏列表:当前会员景点的收藏信息列表,支持删除功能景点评论列表:当前会员景点的评论信息列表,同步会显示审核状态;默认评论显示是“待审核”状态;后台管理员审核后显示 ,通知状态变更为“已审核”。注: 后台管理员可以直接删除评论信息 资讯浏览、收藏、评论信息管理当前会员资讯的浏览信息列表;资讯收藏列表,支持删除;评论列表用户信息维护自己的会员信息,包括:姓名、联系方式、邮箱、头像、简介、详细介绍等;支持修改功能密码修改和退出登录密码修改:修改自己的密码退出登录:清除登录的cookie、跳转到首页

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值