• PHP课程设计


    PHP课程设计

    1.wenjuan2021后台用户登录

    1.views/index.blade.php 视图中,将请求匹配到特定路由Route中

    <div class="submit_btn">
      <input type="submit" id="btn_submit" class="btn" value="提交" /><br><br>
      <a href="/login">后台</a>
    </div>

    2.跳转路由地址栏wenjuan2021/login 到routes.php中,映射到特定UserController.php中,控制器处理请求

    Route::get('/login','UserController@login');

    3.控制器UserController.php获取请求,返回到视图login.blade.php中

    public function login(){
      return View::make('user.login');
    }

    4.视图login.blade.php中设计新用户的书写格式,其中提交方式为post请求方式,将请求匹配到特定路由Route中

    <form name="myform" method="post" action="/login" onsubmit="">
      {{Form::token()}}
      <div class="dl_one"><label>用户名:</label><input type="text" name="username" value=""></div>
      <div class="dl_two"><label>密 码:</label><input type="password" name="password" value=""></div>
      <div class="dl_btn">
          <input type="hidden" name="cookietime" value="0">
          <input type="hidden" name="forward" value="?">
          <input name="dosubmit" type="submit" value="登录" class="btn_p">
          <input type="reset" name="reset" class="btn_p" value="重置">
      </div>
    </form>

    5.跳转路由地址栏wenjuan2021/login 到routes.php中,映射到特定UserController.php中,控制器处理请求

    Route::post('/login','UserController@dologin');//基础路由

    6.控制器UserController.php获取提交请求,提交成功返回到后台首页,提交失败返回到用户登录界面

    public function dologin(){
      $username=Input::get('username');
      $password=Input::get('password');
      if(Auth::attempt(array('username'=>$username,'password'=>$password))){
          return Redirect::to('/adm');
      }   //用户登录使用了Auth::attempt()方法 用户认证为true,用户成功登录
      else{
          return Redirect::to('/login'); //用户认证为false,用户登录失败
      }
      注意:在调用attempt方法时,auth.attempt事件将会触发。如果验证成功以及用户登录了,auth.login事件也会触发

    2.后台首页

    2.跳转路由地址栏wenjuan2021/adm 到routes.php中,映射到特定SurveyController.php中,控制器处理请求

    Route::get('/adm','SurveyController@adminindex');

    3.控制器SurveyController.php获取请求,返回到视图adminindex.blade.php中

    public function adminindex(){
      return View::make('adminindex');
    }

    4.视图adminindex.blade.php中设计后台首页的书写格式(整体布局视图在layout.blade.php里边)获取数据

    1.满意度调查饼图信息
    var chart1 = document.getElementById('showcharts');  //获取ID为showchart的值传给变量chart1
    var myChart1 = echarts.init(chart1);   //变换类型
    var chart2 = document.getElementById('showcharts2');
    var myChart2 = echarts.init(chart2);   //变化类型
    var option1,option2;
    option1 = {
      title: {
          text: '满意度调查',
          left: 'center'
      },
      tooltip: {                 //饼图上的数据
          trigger: 'item'
      },
      legend: {                   //图例
          orient: 'vertical',
          left: 'left',
      },
      series: [
          {
              name: '问卷汇总',   //获取的showchart的信息
              type: 'pie',
              radius: '50%',
              data: [

              ],
              emphasis: {
                  itemStyle: {
                      shadowBlur: 10,
                      shadowOffsetX: 0,
                      shadowColor: 'rgba(0, 0, 0, 0.5)'
                  }
              }
          }
      ]
    };
    myChart1.setOption(option1);   //显示获取信息的数据
    2.建议意见饼图信息
    option2 = {
      title: {                 //标题"建议意见"
          text: '建议意见',
          left: 'center'
      },
      tooltip: {
          trigger: 'item'
      },
      legend: {             //图例
          orient: 'vertical',
          left: 'left',
      },
      series: [
          {
              name: '问卷汇总', //鼠标靠近饼图显示问卷汇总
              type: 'pie',     //饼图
              radius: '50%',
              data: [
                                //发送服务器的数据
              ],
              emphasis: {
                  itemStyle: {
                      shadowBlur: 10,
                      shadowOffsetX: 0,
                      shadowColor: 'rgba(0, 0, 0, 0.5)'
                  }
              }
          }
      ]
    };
    myChart2.setOption(option2); //显示获取信息的数据
    $.ajax({              
      type:'get',             //请求方式为get类型
      url:'/adm/show-chart', //发送请求地址
      dataType:'json',     //返回json数据
      success:function(result){   //请求成功后的回调函数,函数的数据由index.blade.php进行处理后的数据
          myChart1.setOption({
              series:{
                  data:[                 //发送服务器的数据
                      {value: result['q11'], name: '满意'},
                      {value: result['q12'], name: '不满意'}
                  ]
              }
          })
          myChart2.setOption({
              series:{
                  data:[
                      {value: result['q21'], name: '检索结果不够精确准确'},
                      {value: result['q22'], name: '检索结果不全面'},
                      {value: result['q23'], name: '反馈时间超出规定天数'},
                      {value: result['q24'], name: '流程繁琐'},
                      {value: result['q25'], name: '服务态度不佳'},
                  ]
              }
          })
      },
      error:function(errorMsg){
          alert('图表请求失败');
          myChart1.hideLoading();
      }
    });

    5.views/adminindex.blade.php 视图中,将请求匹配到特定路由Route中

    series: [
      {
          name: '问卷汇总',
          type: 'pie',
          radius: '50%',
          data: [

          ],
          emphasis: {
              itemStyle: {
                  shadowBlur: 10,
                  shadowOffsetX: 0,
                  shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
          }
      }
    ]

    6.跳转路由地址栏wenjuan2021/adm/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求

    Route::get('/adm/show-chart','SurveyController@showchart');

    7.控制器SurveyController.php获取请求,整理检索结果数据

    public  function showchart(){
      error_reporting(E_ALL ^ E_NOTICE);
      $q1s = DB::table('records')->lists('q1'); //获取数据库records中列表中q1的个数
      $q21s = DB::table('records')->lists('q21');
      $q22s = DB::table('records')->lists('q22');
      $q23s = DB::table('records')->lists('q23');
      $q24s = DB::table('records')->lists('q24');
      $q25s = DB::table('records')->lists('q25');
    $agree=0;
    $disagree=0;
    $q21=0;
    $q22=0;
    $q23=0;
    $q24=0;
    $q25=0;
    for ($i=0;$i<count($q1s);$i++) {
      if ($q1s[$i]== 1) {
          $agree += 1;
      } else if ($q1s[$i] == 0) {
          $disagree += 1;
      }
    }
    for ($i=0;$i<count($q21s);$i++) {
      if ($q21s[$i] == 1) {
          $q21 += 1;
      }
    }
    for ($i=0;$i<count($q22s);$i++) {
      if ($q22s[$i] == 1) {
          $q22 += 1;
      }
    }
    for ($i=0;$i<count($q23s);$i++) {
      if ($q23s[$i] == 1) {
          $q23 += 1;
      }
    }
    for ($i=0;$i<count($q22s);$i++) {
      if ($q24s[$i]== 1) {
          $q24 += 1;
      }
    }
    for ($i=0;$i<count($q25s);$i++) {
      if ($q25s[$i] == 1) {
          $q25 += 1;
      }
    }

     

    3.用户User管理中添加管理员(后台)

    1.views/user/list.blade.php 视图中,将请求匹配到特定路由Route中

    @section('content')
      <h2>用户列表页</h2>
      <div class="a_link"><a href="/adm/user/add-user">添加管理员</a></div>
      <div class="table_style">

          <table border="1" width="100%" cellspacing="0" cellpadding="0">
              <tbody><tr>
                  <td width="5%">id</td>
                  <td width="14%">username</td>
                  <td width="14%">email</td>
                  <td width="10%">更新时间</td>
                  <td width="10%">管理</td>
              </tr>

    2.跳转路由地址栏wenjuan2021/adm/user/add-user 到routes.php中,映射到特定UserController.php中,控制器处理请求

    Route::controller('/adm/user','UserController');//控制器路由,默认访问getIndex方法

    3.控制器UserController.php获取请求,返回到视图adduser.blade.php中

    getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据

    public function getIndex(){
      $surveys=Survey::orderBy('created_at','desc')->paginate(5);
      return View::make('survey.list')->with('surveys',$surveys);
    }
    public function getAddUser(){
      // return "用户添加页面";
      return View::make('user.adduser');
    }

    4.视图adduser.blade.php中设计添加新用户的书写格式,其中提交方式为post请求方式,返回控制器UserController.php中

    <form method="post" action="/adm/user/add-user">
      <input type="hidden" name="_token" value="{{csrf_token()}}">
      <div class="input_dl">

    5.控制器UserController.php获取post请求

    1.定义postAddUser方法,进行表单验证,先使$data获取用户待验证的数据,$rules 获取数据库属性规则,生成一条表数据,如果添加成功直接返回添加新用户界面,添加失败也返回添加新用户界面,并附带报错信息
    public function postAddUser(){
      $data=Input::all();                       //获取用户待验证的数据(表单验证$data参数)
      $rules=array(
          'username'=>'required',
          'email'=>'required|email|unique:users', //该数据需要应用的验证规则(表单验证$rules参数)
          'password'=>'required|min:6|confirmed'
      );
      $validator=Validator::make($data,$rules); //表单验证(例如验证密码不能重复,密码不能少于6位)
      if ($validator->fails()){
          $errors= $validator->messages();   //如果验证失败,可以从验证器中获取错误信息
          return Redirect::to('/adm/user/add-user')->with('errors',$errors);
      }
    2.获取界面输入的内容将值传给变量$name,数据库user表中username属性获取变量$name的数据,其余类似
        $name=Input::get('username');
      $email=Input::get('email');
      $password=Input::get('password');
      $user=new User();
      $user->username=$name;
      $user->email=$email;
      $user->password=Hash::make($password);
      $user->save();
      return Redirect::to('/adm/user');

    }

    4.用户User管理中修改密码(后台)

    1.views/user/list.blade.php 视图中,将请求匹配到特定路由Route中

    @foreach($users as $v)
      <tr>
          <td width="5%"><a href="/adm/user/add-user">{{$v->id}}</a></td>
          <td width="14%">{{$v->username}}</td>
          <td width="14%">{{$v->email}}</td>
          <td width="14%">{{$v->created_at}}</td>
          <td width="4%"><a href="/adm/user/edit-user/{{$v->id}}">修改密码</a></td>
      </tr>
    @endforeach

    2.跳转路由地址栏wenjuan2021/adm/user/add-user 到routes.php中,映射到特定UserController.php中,控制器处理请求

    Route::controller('/adm/user','UserController');//控制器路由,默认访问getIndex方法

    3.控制器UserController.php获取请求,返回到视图edituser.blade.php中

    getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据

    public function getIndex(){
      $surveys=Survey::orderBy('created_at','desc')->paginate(5);
      return View::make('survey.list')->with('surveys',$surveys);//
    }
    public function getEditUser($id){
      $user=User::find($id);
      return View::make('user.edituser')->with('user',$user);
    }

    4.视图edituser.blade.php中设计修改密码的书写格式,其中提交方式为post请求方式,返回控制器UserController.php中

    <form method="post" action="/adm/user/edit-user/{{$user->id}}">
      <input type="hidden" name="_token" value="{{csrf_token()}}">
      <div class="input_dl">

    5.控制器UserController.php获取post请求

    1.定义postEditUser方法,进行表单验证,先使$data获取用户新输入数据,$rules 获取数据库应用的属性规则,生成一条表单数据,如果修改成功直接返回修改密码界面,添加失败也返回修改密码界面,并附带报错信息
    public function postEditUser($id){
          $data=Input::all();     //获取用户待验证的数据(表单验证$data参数)
          $rules=array(          
              'username'=>'required',
              'email'=>'required|email',   //该数据需要应用的验证规则(表单验证$rules参数)
              'password'=>'required|min:6|confirmed'
          );
        $validator=Validator::make($data,$rules);//表单验证(例如验证密码不能重复,密码不能少于6位)
          if ($validator->fails()){
              $errors= $validator->messages(); //如果验证失败,可以从验证器中获取错误信息
              return Redirect::to('/adm/user/edit-user/'.$id)->with('errors',$errors);
          }
    2.获取界面输入的内容将值传给变量$password,数据库user表中upassword属性获取变量$password的数据,并进行哈希加密,其余类似
            $password=Input::get('password');
          $user=User::find($id);
          $user->password=Hash::make($password);
          $user->save();
          return Redirect::to('/adm/user');
      }
    }

    5.问卷Survey列表中答卷列表获取数据(后台)

    1.views/survey/list.blade.php 视图中,将请求(获取问卷信息)匹配到特定路由Route中

    @foreach($surveys as $v)
    <tr>
      <td width="5%"><a href="/adm/survey">{{$v->id}}</a></td>
    </tr>
    @endforeach

    2.跳转路由地址栏wenjuan2021/adm/survey 到routes.php中,映射到特定SurveyController.php中,控制器处理请求

    Route::controller('/adm/survey','SurveyController');//默认访问getIndex方法

    3.控制器SurveyController.php获取请求,返回到视图list.blade.php中

    getIndex()方法中问卷记录提交时间、倒序排列、并且每页只有5条数据,视图list.blade.php获取问卷数据

    public function getIndex(){
      $surveys=Survey::orderBy('created_at','desc')->paginate(5);
      return View::make('survey.list')->with('surveys',$surveys);
    }

    views/list.balde.php文件分页形式

    {{$surveys->links()}}

    wenjuan2021/php/vendor/laravel/farmework/src/Illuminate/Pagination/views/slider-3.php

    <?php $presenter = new IlluminatePaginationBootstrapPresenter($paginator);
    ?>
    <?php if($paginator->getLastPage() > 1):?>
      <div class="paging">总数:<b><?php echo $paginator->getTotal()?></b>&nbsp;&nbsp;
          <?php echo $presenter->render();?>   //进行数据传送
          <div class="clear"></div>
      </div>
    <?php endif; ?>

    4.视图list.blade.php获取数据email、ip、问卷检索信息

    <td width="14%">{{$v->email}}</td>
    <td width="14%">{{$v->ip}}</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q1==1)√@endif</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q21==1)√@endif</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q22==1)√@endif</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q23==1)√@endif</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q24==1)√@endif</td>
    <td style="color: green;font-weight: bold" align="center" width="10%">@if($v->q25==1)√@endif</td>
    <td width="15%">{{$v->created_at}}</td>

    6.后台注销

    1.views/layout/layout.blade.php 视图中,将请求(用户注销)匹配到特定路由Route中

    <li class="li_style"><a href="/adm">首页</a></li>
    <li class="li_style"><a href="/adm/survey">问卷列表</a></li>
    <li class="li_style"><a href="/adm/user">用户管理</a></li>
    <li class="li_style"><a href="/logout">注销</a></li>

    2.跳转路由地址栏wenjuan2021/logout 到routes.php中,映射到特定UserController.php中,控制器处理请求

    Route::get('/logout','UserController@logout');

    3.控制器UserController.php获取注销请求,返回到视图login.blade.php中

    public function logout(){
      Auth::logout();   //注销用户登录状态
      return Redirect::to('/login');
    }

    7.满意度调查问卷Index填写(前台)

    1.views/index.blade.php 视图中,将请求(获取邮箱信息)匹配到特定路由Route中

    <div class="email">
      <label>您的邮箱是</label>
      <input type="text" name="email" id="email" value="{{$email}}"/>
    </div>

    2.跳转路由地址栏wenjuan2021/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求

    Route::get('/{email?}', 'SurveyController@survey');

    3.控制器SurveyController.php获取请求,返回到视图index.blade.php中

    public function survey($email=""){
      return View::make('index')->with('email',$email);
    }

    4.视图index.blade.php中显示问卷界面需要书写信息

       <div class="ques_one">
          <p>问题1: 您对文献检索的结果是否满意?</p>
          <p>
              <input type="radio" name="q1" id="q11" value="1" /><span>满意</span>
              <input type="radio" name="q1" id="q12" value="0" /><span>不满意</span>
          </p>
      </div>
      <div class="ques_one" id="q2" style="display: none">
          <p>问题2: 若不满意,请问我们应该在哪些方面改进?</p>
          <p>
              <input type="checkbox" name="q21" id="q21" value="1" />检索结果不够精准
          </p>
          <p>
              <input type="checkbox" name="q22" id="q22" value="2" />检索结果不全面
          </p>
          <p>
              <input type="checkbox" name="q23" id="q23" value="3" />反馈时间超出规定天数
          </p>
          <p>
              <input type="checkbox" name="q24" id="q24" value="4" />流程繁琐
          </p>
          <p>
              <input type="checkbox" name="q25" id="q25" value="5" />服务态度不佳
          </p>
      </div>

    8.满意度调查问卷Index提交(前台)

    1.views/index.blade.php 视图中,将请求(获取提交信息)匹配到特定路由Route中

    <div class="submit_btn">
      <input type="submit" id="btn_submit" class="btn" value="提交" /><br><br>
      <a href="/login">后台</a>

    2.跳转路由地址栏wenjuan2021/ 到routes.php中,映射到特定SurveyController.php中,控制器处理请求,找到submitsurvey方法

    Route::post('/','SurveyController@submitsurvey');

    3.控制器SurveyController.php获取请求

    1.定义submitsurvey方法,如果提交成功直接返回满意度调查问卷界面,提交失败也返回满意度调查问卷界面,并附带报错信息
    public function submitsurvey(){
      $datas=Input::all(); //获取用户待验证的数据(表单验证$data参数)
      $rules=array(
          'email'=>'required|email|unique:records' //该数据需要应用的验证规则(表单验证$rules参数)
      );
      $validtor=Validator::make($datas,$rules); //表单验证(例如验证密码不能重复,密码不能少于6位)
      if($validtor->fails()){
          $msg=$validtor->messages()->first('email');
          return json_encode(array('success'=>false,'msg'=>$msg));
      }
    2.数据库获取新输入的表单信息email、ip、问卷检索信息
        $survey=new Survey();
      $survey->email=$datas['email'];
      $survey->ip=$_SERVER['REMOTE_ADDR'];
      $survey->q1=$datas['q1'];
      if ($survey->q1==0){
          $survey->q21=$datas['q21'];
          $survey->q22=$datas['q22'];
          $survey->q23=$datas['q23'];
          $survey->q24=$datas['q24'];
          $survey->q25=$datas['q25'];
      }
      $survey->save();
      return json_encode(array('success'=>true,'msg'=>"成功提交,感谢您的参与"));
    }
  • 相关阅读:
    Java自带工具jstack故障分析的一个案例
    当spring 容器初始化完成后执行某个方法
    tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
    RESTful API 设计指南
    GitHub简单使用入门
    Newton's method
    把一个文件夹下的多个excel文件合并到同一个excel的一个sheet里
    multimap的使用 in C++,同一个关键码存在多个值
    pandas把多个sheet读进一个DataFrame
    数据预处理之Minkowski距离计算
  • 原文地址:https://www.cnblogs.com/Hiramunderneath/p/14757913.html
Copyright © 2020-2023  润新知