当前位置: 首页 > news >正文

php计算机毕业设计基于thinkphp框架的特色旅游网站vue

目前家乡石泉市是一个有不同民族“大杂居,小聚居”的地方,所以对于发展家乡特色业还是比较有优势的。现在随着国内经济的增长和科技的发展,以及人们日常生活方式的改变,网络越来越成为人们高效、快速选择旅游目的地的重要方式。目前市场上还没有专门针对石泉游玩的网站,对于喜欢旅游的人来说,一个详细的石泉门户网站介绍是非常重要的。在当下的互联网时代,为了更加方便的为用户提供详细的家乡信息以及更好的宣传石泉,有一个完善且全面的信息宣传系统是尤为重要的。

请添加图片描述
PHP语言是当前最流行的高级语言之一,它主要是为了网页开发而诞生的,尤其是最近两年随着互联网的高速发展,越来越多的网站诞生了,这也就导致更多的人喜欢上了PHP,和PHP等其他语言相比,它的语法结构简单,大多数学习过编程的人基本只需要看下说明和教程就可以快速的上手进行开发,而其他语言都需要经过漫长的学习和培训才能做到这一点。为此很多人说PHP是世界上最好的语言。
PHP虽然是为了WEB诞生的,但是它在配置和运行方面都非常的方便,它也是一个可以跨平台的语言,可以在Windows和Unix,Linux甚至苹果的Mac IOS上运行,在环境配置方面现在市面上有很多的集成开发环境,比较知名的有PHPstudy,Wamp,XAMPP等,这些环境安装都是比较简单的,及其方便安装和部署,这些都是让PHP快速吸粉的主要因素。而且PHP语言是一种开源且免费的语言,这更加让它深受广发开发人员的喜欢。

请添加图片描述
请添加图片描述
针对目前世界上流行的大量软件和开发工具进行分析其优缺点。软、硬件能否满足需要,决定本系统采用基于B/S架构,开发语言PHP,MVC开发模式。数据库系统采的是MySQL,它能够处理大量数据,是一种关系型数据库管理系统,具有运行速度快,灵活性高,同时在一定程度上能保持数据的完整性、安全性。使用PHP开发网站具有成本低、速度快等优势,而且我对这项技术比较熟悉,不需要花费额外时间再去学习,因此本系统的开发平台已经相对成熟可行。
请添加图片描述
开发了石泉网站,希望可以帮助游客查询了解石泉的景区,网站提供了各景区的精美图片,可以让用户提前感受秀美的风景。在互联网时代,更需要有一个完善的石泉资讯宣传平台,给游客提供便利并且更好地让石泉的文化得到广泛的传播。比如热门景区中坝峡谷,后柳水乡,石泉古城的景区等,为游客和各相关的行业提供全面详细的旅游信息。论文分别论述了基于PHP完成的石泉网的设计与实现。
在家乡石泉网站系统的实现下,家乡石泉网站人员能够充分发挥信息化处理的优势,提高日常管理的处理速率。用户一方可以更好的享受信息化处理带来的便利。系统运行能够稳定且高效。并且人机友好程度能够显著提升。

请添加图片描述

<?php
namespace app\index\controller;

use http\Params;
use think\Cache;
use think\Controller;
use think\Db;
use think\Request;
use think\Session;

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(){
        $name = trim(input('get.username'));
        $password = trim(input('get.password'));
        $result = Db::table('users')->where(['username' => $name, 'password' => $password])->find();
        if ($result){
            $token_array = [
                "iat" => time(), //签发时间
                "exp" => time()+7200, //token 过期时间
				'id' => $result['id'],
				'isAdmin' => 1,
                'tablename'=> 'users',//表名
                "success" => $result, //记录的uid的信息,如果有其它信息,可以再添加数组的键值对
            ];
            $tokens = base64_encode(json_encode($token_array));
            $data = ['code' => 0, 'token' => $tokens];
            Cache::set($tokens,$result['id']);
            Cache::set(md5($result['id']),$result['username']);
            return json($data);
        }
        return json(['code' => 500,'msg'=>"登陆失败,账号或密码错误。"]);
    }
    /**
     * 退出
     * POST
     */
    public function logout(){
        $token = $this->token();
        Cache::pull($token);
        return json(['code'=>0,'msg'=>'退出成功']);
    }
    /**
     * 获取session的接口
     * GET
     */
    public function session(){
        if (Cache::get($this->token())==false) return json(["code"=> 500,'msg'=>"您还没有登陆。"]);
        $data = json_decode(base64_decode($this->token()),true);
        $arrayData = $data['success'];
        return json(['code'=>0,'data'=>$arrayData]);
    }
    /**
     * 找回密码 重置为123456
     **/
    public function resetPass(){
        $username = input('post.username');
        $count = DB::table('users')->where(['username' => $username])->count();
        if($count==0) return json(['code'=>500,'mas'=>"账号不存在"]);
        $result = Db::table('users')->where(['username' => $username])->update(['password' => '123456']);
        return json(['code'=>0,'mas'=>"密码已重置为:123456"]);
    }
    /**
     * 分页接口 GET
     * $page   当前页
     * $limit  每页记录的长度
     * $sort   排序字段
     * $order  升序(默认asc)或者降序(desc)
     * */
    public function page(){
        $token = $this->token();
        if (Cache::get($token) == false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
        $userid = Cache::get($token);
        $base = json_decode(base64_decode($token,true),true);
        $tabnames = $base['tablename'];
        $page = isset($_GET['page'])?input('get.page'):"1";
        $limt = isset($_GET['limit'])?input('get.limit'):"10";
        $sort = isset($_GET['sort'])?input('get.sort'):"id";
        $order = isset($_GET['order'])?input('get.order'):"asc";
        $where = [];//判断条件
        $count = Db::table('users')->where($where)->count();
        // 取整函数(ceil,floor,round)
        $page_count = ceil($count/$limt);//页数
        $result = Db::table('users')->where($where)->limit(($page-1)*10,$limt)->order($sort." ".$order)->select();
        return json([
            'code' => 0,
            'data' => [
                "total" => $count,
                "pageSize" => $limt,
                "totalPage" => $page_count,
                "currPage" => $page,
                "list" => $result
            ]
        ]);
    }

    /**
     * 保存接口 post
     *
     */
    public function save(){
        $token = $this->token();
        $session = Cache::get($token);
        if ($session == false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
        $postData = input('post.');
        if (!empty($postData)&&!is_array($postData)){
             $postData = json_decode($postData,true);
        }
		$v = array();
        foreach ($postData as $key => $value){
            if (in_array($key, $this->columData)){
                $v[$key] = $value;
            }
        }
        $result = Db::table('users')->insert($v);
        if (!$result) return json(['code'=>500,'msg'=>"新增失败"]);
        return json(['code'=>0]);
    }
    /**
     * 更新接口 post
     * 包含主键
     */
    public function update(){
        $postData = input('post.');
        $token = $this->token();
        if (Cache::get($token)==false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
        $v = $where = array();
        foreach ($postData as $key => $value){
            if (in_array($key, $this->columData)){
                if ($key == "id"){
                    $where[$key] = $value;
                }
                $v[$key] = $value;
            }
        }
        $result = Db::table('users')->where($where)->update($v);
        if (!$result) return json(['code'=>500]);
        return json(['code'=>0]);
    }
    /**
     * 删除接口 post
     * $id id
     */
    public function delete(){
        $ids = input('post.');
        $result = Db::table('users')->delete($ids);
        return json(["code"=> 0]);
    }
    /**
     * 详情接口info ,后台接口
     * get
     * $id id
     * */
    public function info($id=false){
        $token = $this->token();
        if (Cache::get($token)==false) return json(["code"=> 500,'msg'=>"您还没有登陆。"]);
        $where = ['id'=>$id];
        $result = Db::table('users')->where($where)->find();
        return json(["code"=> 0,'data' => $result]);
    }
}

请添加图片描述
目录
1 绪论 1
1.1课题背景 1
1.2课题研究现状 1
1.3初步设计方法与实施方案 2
1.4本文研究内容 2
2 系统开发环境 4
2.1 使用工具简介 4
2.2 环境配置 4
2.3 B/S结构简介 4
2.4 MySQL数据库 5
2.5 框架介绍 5
3 系统分析 6
3.1系统可行性分析 6
3.1.1经济可行性 6
3.1.2技术可行性 6
3.1.3运行可行性 6
3.2系统现状分析 6
3.3功能需求分析 7
3.4系统设计规则与运行环境 8
3.5系统流程分析 8
3.5.1操作流程 8
3.5.2添加信息流程 9
3.5.3删除信息流程 10
4 系统设计 11
4.1系统设计主要功能 11
4.2数据库设计 11
4.2.1数据库设计规范 11
4.2.2 E/R图 11
4.2.3数据表 12
5 系统实现 25
5.1系统功能模块 25
5.2后台模块 27
5.2.1管理员功能模块 27
5.2.2用户功能模块 30
6 系统测试 33
6.1功能测试 33
6.2可用性测试 33
6.3性能测试 34
6.4测试结果分析 34
7结 论 35
参考文献 36
致 谢 37

相关文章:

  • 开学季:好好聊聊自己的大学生活
  • java评论、回复功能设计和实现
  • IPIDEA的使用方式
  • 【机器学习笔记】【决策树】【回归树】
  • IDEA版Postman插件Restful Fast Request,细节到位,功能好用
  • jmeter-12-Jenkins持续集成测试一键式使用
  • 9月10日OpenCV学习笔记——Mask、彩色直方图、人脸检测
  • 【JavaWeb】一篇文章复习JDBC、DAO及相关实现类
  • java计算机毕业设计ssm 音乐播放交流论坛网站
  • GO开发环境配置
  • Docker-compose安装mysql
  • 字符函数和字符串函数(C语言)
  • zynq pl访问ps ddr
  • JavaEE初阶:HTML
  • IDEA中JDBC连接MYSQL数据库步骤超详细总结
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 2017-09-12 前端日报
  • 3.7、@ResponseBody 和 @RestController
  • const let
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Docker下部署自己的LNMP工作环境
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • SegmentFault 2015 Top Rank
  • Tornado学习笔记(1)
  • zookeeper系列(七)实战分布式命名服务
  • 关于List、List?、ListObject的区别
  • 记一次和乔布斯合作最难忘的经历
  • 事件委托的小应用
  •  一套莫尔斯电报听写、翻译系统
  • Java性能优化之JVM GC(垃圾回收机制)
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 进程与线程(三)——进程/线程间通信
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (14)Hive调优——合并小文件
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (接口自动化)Python3操作MySQL数据库
  • (循环依赖问题)学习spring的第九天
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • ***测试-HTTP方法
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .htaccess配置重写url引擎
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net framework profiles /.net framework 配置
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 事件模型教程(二)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解