【实训项目】精点考研

news2024/11/19 23:34:13

1.设计摘要

如果说高考是一次能够改变命运的考试,那么考研应该是另外一次。为什么那么多人都要考研呢?从中国教育在线官方公布是考研动机调查来看,大家扎堆考研的原因大概集中在这6个方面:本科就业压力大,提升竞争力、通过考研选择真正感兴趣的专业、为了获得学历、继续深造、随大流、有名校情结。根据官方统计数据显示,有36%的考研人是因为就业压力大,希望通过考研提高就业竞争力;超过21%的人是希望继续深造,提高学术研究能力;紧跟着的是17%的人,希望通过考研获得学历、学位证书。还有一部分人是希望通过考研来换一个自己喜欢的专业,这部分人也占了15%左右。就业的压力想必大家也都从目前的就业形势中,能够很直观的感受到。尤其是随着高等教育的普及,大学生已经非常普遍,用人单位现在招聘起步就是大专以上学历,所以很多人为了增加自己的竞争优势,就纷纷投入到了考研的队伍中来!另外大家不要忽略一个考研的中坚力量,那就是往届生。根据官方统计数据,2019年考研报考人数中,往届生的报考比例已经占到了45%,这么大的比例,对于想考研的应届生来说也是一个不可小视的力量。在这么大的竞争压力下,大多数考研人对公共科目比较了解,但对所报院校的专业课程考试及复试不是很了解,又苦于没有专业人士指导,对自己的研究生考试忧心忡忡。

2.设计的模式及产品目标

产品采用C2C运行模式,通过我们这个平台,用户可以挑选自己所报院校的专业指导人员,对自己进行专业考试和复试的指导,使用户更加了解自己所报考的院校,提高自己的考研成功率。对于相关院校的辅导人员(大多是已经考上该校的研究生),可以在闲暇时候增加收入,补贴一下生活。

3.创新与优势

我们平台将用户与所报院校进行精准对接,使其获得所报院校的第一手资源,在考研路上事半功倍。

4.可行性分析

(1)对现有系统的分析

传统人工的方式来为考研服务存在着许多缺点,如效率低、保密性差等。另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

(2)对技术的可行性分析

此次系统开发使用html和javascript等技术,简单易学,又增强了可视化、数据库及Internet编程功能,很容易就可以进行系统开发。而对数据库的建立,可以采用mysql。该软件简单易懂,应用广泛,比较适合新手上路使用,而且建立的数据库较为安全。 

(3)安全上的可行性

在建立数据库时可以通过对数据库的设计用户名和密码进行保密,以及在建立数据库以后可以对数据进行压缩等技术,保证数据的安全,使数据库具有安全保障。

(4)社会因素的分析

随着科学技术的不断提高,计算机科学日渐成熟,作为计算机应用的一部分,使用计算机对考研资源进行共享,具有着手工所无法比拟的优点。这些优点能够极大提高学生考研的效率,也是与世界接轨的重要条件。该软件的开发不会侵犯国家、集体和他人的利益。

5.需求分析

考研人群可以在我们平台注册详细信息,根据注册用户填写的报考学校专业,我们推荐相关的考研课程,同时他也可以更精确的搜索考研课程,以及复试的课程。可以查看相关课程的详情。购买课程后,就可以对该课程进行评价,进入老师的页面,进行评论留言(得到回复,解答疑问)。授课老师可以上传课程资料,供用户消费。也可以对学生的评论进行回复,解答疑问。

6.设计总体框架

 

 7.详细功能设计

8.详细设计与实现

(1)首页--搜索 发布分类物品界面及index设计

 评论页面--发表自己评论 查看所有评论

 评论区--从数据库中查找

 

 

 jQuery的应用,与后台连接

 页面关闭函数和页面打开函数

 

 登陆注册页面(可以和数据库相连,查询,异步):

注册界面--查询数据库,发现重复,报错alert() 

 

 

 

 

 

 login中jQuery的应用(其他的不再赘述)

 发现页面--发现趣味 广告推广 学习新学法

从发现页面跳转的页面:

 订单页面--购买订单显示 订单分类

 

 页面关闭函数和页面打开函数

 订单详情--显示课程详情 进入品论区 发表评论

 从课程详情页面跳转的页面:

 我的页面--登陆 注册 个人资料

 

 登陆评论的入口

 我的资料:

 9.测试与运行

(1)页面跳转混乱,在打开和关闭frame-header和frame-body时出现匹配错乱问题。

(2)在第一次打开页面时出现错误,原因是引入静态文件的路径问题。

(3)JQuery文件引入问题,如果需要使用JQuery文件,必须在所有js文件之前引用。

(4)Ajax使用时出现错误,路径问题,需要每次更改IP地址或者是固定服务器的IP地址。

10.项目组成员分工

(1)成员组成

组长:组长1

组员:组员1 组员2 组员3 组员4 组员5

(2)成员分工

组员1:首页--搜索 发布分类物品界面及index设计;评论页面-发表自己的评论;查看所有评论、后台开发,jQuery的应用和页面关闭函数

组员2:订单页面 课程及订单详情页面 我的页面;辅助写jQuery和页面跳转

组员3:我的页面--登陆 注册 个人资料

组员4:评论页面--发表自己评论 查看所有评论;评论区--从数据库中查找

组员5:登陆注册页面(可以和数据库相连,查询,异步)

组长1:发现页面--发现趣味 广告推广 学习新学法

11.心得体会

组长1: 课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。实验过程中,也十分感谢实验指导老师陈中育老师的指点与教导。这次软件设计不仅是对这学期所学知识的一种综合检验,而且也是对自己动手能力的一种提高,增强了自己实践能力。

组员1: 此次课程设计,使我全面的了解了基于手机系统app的开发全过程,对软件的开发有了整体的认知和理解,包括前端页面设计,内容链接;后端的数据库查询,人员密码验证等。最宝贵的是基于前后端的联系,来实现用户与数据库的交互,之前不是很清楚其中的运作原理,十分感谢指导老师的悉心指导,帮助我们熟悉环境,明白前后端设计的机理。这次的开发经验十分宝贵,对我之后的学习有很大的帮助与导向作用。

组员2: 本次课设第一次接触基于安卓平台的APP的设计,不过这次因为考研的原因时间很紧,并没有全程跟着团队做,只是在其他组员的帮助下完成了我的页面和个人资料的设计,运用Web实验的基础完成了MVC模式下的登录与注册的功能。总的来说这次课设还是依靠组里的大佬完成的。

组员3: 通过此次课程设计,我进一步掌握了对小程序开发的应用理解,同时,还将小程序开发的过程与以往网页开发等相关开发经历相互结合,互相学习,触类旁通,进一步提高我的综合开发能力,增加了个人编程经历,丰富了个人学习经验,全方位提高个人综合素质。

组员4: 通过这次课程设计使我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,心得体会学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力。

组员5: 在这次的软件设计中不仅检验了我所学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,学会了理解,也学会了做人与处世。

12.核心代码

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <title>Hello APP</title>
    <link rel="stylesheet" type="text/css" href="./css/api.css" />
    <link rel="stylesheet" type="text/css" href="./css/common.css" />
    
    <style>
     
     /* 头部样式 */
     #firstHeader {background-color: #87cefa;}
     .topbar {/*background: #87cefa;*/ height:50px; border-bottom: 1px solid #DDDFE3;}
     .topbar_title {display: inline-block;font-size: 20px; line-height: 50px;padding-left: 12px;}
     .hr01, .hr02 {height: 28px;}
     .headerico {padding: 11px 15px 11px 15px;}
     .headericohover {background: #DADDE0;}
     .fr{float: right;}
     .fl{float: left;}
     
     /*第一头部*/
     #logo {padding: 11px 0 0 10px;height: 28px;}
     #citylist {height: 50px; line-height: 50px;padding-left: 15px; font-size: 18px; color: #fff;}
     .citylistarrow {vertical-align: top; width: 20px; padding-top: 15px;}
    .search {height: 34px;line-height: 34px; padding-left: 10px; border-radius: 30px;  margin-top: 8px; position: absolute; left: 20px; right: 60px;font-size: 14px;}
    .search img {vertical-align: top; width: 20px; padding-top: 7px;padding-right: 10px;}
    .firstSearch {left: 90px;right: 60px;background-color:#00bfff;color: #87cefa;}

     /* 第二头部 */
     #topbar_refresh {width: 40px;padding:5px 10px;}
     .whitebar {background-color: #fcfcfc;}
     #whitecity {height: 50px; line-height: 50px;padding-left: 15px; font-size: 18px;color: #87CEFA;}
    .secCitylistarrow {vertical-align: top; width: 15px; padding-top: 18px;padding-left: 5px;}
    .secSearch {left: 90px;right: 15px;background-color: #E8E8E8;color: #999;}

    /* 第三头部 */
    .swipepic {padding: 5px 15px 2px 15px;height: 23px;}
    .swipe div {font-size: 12px; text-align: center;color: #999;}
    .thrSearch {left: 15px;right: 60px;background-color: #E8E8E8;color: #999;}

     /* 头部切换样式 */
     .titlebar {display: none;}
     .activebar {display: block;}
     
     /* 底部切换按钮样式 */
     ul {display: -webkit-box; display: -webkit-flex; display: flex; }
     #footer {height: 61px; line-height: 60px; background-color: #FAFAFA;border-top: 1px solid #FAFAFA; }
     #footer li{-webkit-box-flex: 1; -webkit-flex: 1; flex:1; height: 60px;}

     /* 选项卡样式 */
     .scrollbar {display: -webkit-box;display: -webkit-flex; text-align: center; height: 40px; line-height: 40px;background: #EBECF0;font-size: 12px;position: relative;}
     .col1 {-webkit-box-flex:1;-webkit-flex: 1;flex:1;color: #909090;}
     .indexbar {position: absolute;/*background: #0fc;*/width: 50%;height: 5px;left: 0px;bottom: 0px;-webkit-transition: 300ms;}
     .redbox {background: #DB4646;width: 40px;height: 5px;position: relative;left: auto;right: auto; margin-left: auto; margin-right: auto;}

     /********************/
     /* 底部按钮原始样式 */
     /********************/
     .bbtn01 {background: url(./image/main_index_home_normal.png) no-repeat center 4px; }
     .bbtn02 {background: url(./image/main_index_tuan_normal.png) no-repeat center 4px; }
     .bbtn03 {background: url(./image/main_index_search_normal.png) no-repeat center 4px; }
     .bbtn04 {background: url(./image/main_index_my_normal.png) no-repeat center 4px; }
     .bottom_btn {width: 99%; height: 43px;padding-top: 18px;background-position-y: 4px; background-size: 30px;  font-size: 12px; color: #A5A5A5;}
     
     /* 底部按钮激活样式 */
     .activebtn0 {background: url(./image/main_index_home_pressed.png) no-repeat center 4px; }
     .activebtn1 {background: url(./image/main_index_tuan_pressed.png) no-repeat center 4px; }
     .activebtn2 {background: url(./image/main_index_search_pressed.png) no-repeat center 4px; }
     .activebtn3 {background: url(./image/main_index_my_pressed.png) no-repeat center 4px; }
     .activebtn {color:#87cefa; background-size: 30px; }
     .bottomhover {background-color: #46494B;}

     /* 本地刷新图标 */
     #localrefresh {display:none;float: right; width: 40px; padding: 5px 10px;}

    </style>
  </head>
  <body>
    <div id="wrap">
      <!-- 第一头部 -->
      <div id="firstHeader" class="titlebar activebar">
        <div class="topbar">
          <div class="citylist fl" id="citylist" tapmode="" onclick="openCitylist()">北京<img src="./image/title_home_arrow_down_normal.png" alt="" class="citylistarrow"></div>
          <div class="search firstSearch"  tapmode="" onclick="openSearch()">
              <img src="./image/ic_home_search.png" alt="">输入课程名
          </div>
          <img src="./image/send_msg.png" alt="" class="fr headerico hr01"  tapmode="" onclick="openNewWindow('message')">
          <!-- <img src="./image/topbar_search.png" alt="" class="fr headerico hr02"  tapmode="headericohover" onclick="openNewWindow('search')"> -->
        </div>
      </div>
      
      <!-- 第二头部 -->
      <div id="secHeader" class="titlebar">
        <div class="topbar whitebar">
          <div class="citylist fl" id="whitecity"  tapmode="" onclick="openCitylist()">北京<img src="./image/title_arrow_down_normal.png" alt="" class="secCitylistarrow"></div>
          <div class="search secSearch"  tapmode="" onclick="openSearch()">
              <img src="./image/navibar_search_icon_search.png" alt="">搜索订单...
          </div>
          <!-- <img src="./image/local_icon_refresh.png" alt="" class="fr headerico" id="topbar_refresh"   tapmode="headericohover" onclick="emptyopt()">
          <img src="./image/topbar_search.png" alt="" class="fr headerico hr02"  tapmode="headericohover" onclick="openNewWindow('search')"> -->
          
        </div>
      </div>

      <!-- 第三头部 -->
      <div id="thridHeader" class="titlebar">
        <div class="topbar whitebar">
          <div class="search thrSearch"  tapmode="" onclick="openSearch()">
              <img src="./image/navibar_search_icon_search.png" alt="">查找爱好
          </div>
          <div class="swipe fr" tapmode="headericohover" onclick="openScan()">
              <img src="./image/navibar_icon_qr.png" alt="" class="swipepic">
              <div>扫一扫</div>
          </div>
        </div>
      </div>


      <!-- 第四头部 -->
      <div id="fortheader" class="titlebar">
        
      </div>
      
      <div id="main">
        
      </div>
      
      <div id="footer">
        <ul>
          <li tapmode="activebtn0 activebtn" onclick="switchframe('first_frame', 0)">
            <a class="bottom_btn bbtn01 weixin activebtn activebtn0">首页</a>
          </li>

          <li tapmode="activebtn1 activebtn" onclick="switchframe('second_frame', 1)">
            <a class="bottom_btn bbtn02 communicate">订单</a>
          </li>

          <li tapmode="activebtn2 activebtn" onclick="switchframe('third_frame', 2)">
            <a class="bottom_btn bbtn03 discover">发现</a>
          </li>

          <li tapmode="activebtn3 activebtn" onclick="switchframe('forth_frame', 3)">
            <a class="bottom_btn bbtn04 home">我的</a>
          </li>
        </ul>
      </div>
    </div>
  </body>
  <script type="text/javascript" src="./script/api.js"></script>
  <script type="text/javascript">
   var firstHeader = $api.byId('firstHeader');
   var secHeader = $api.byId('secHeader');
   var thirdHeader = $api.byId('thridHeader');
   var fortheader = $api.byId('fortheader');
   var firstHeaderOffset;
   
   var main = $api.byId('main');
   var mainPos = $api.offset(main);

   var footer = $api.byId('footer');
   var footerPos = $api.offset(footer);

   var gFrameIndex;

   function emptyopt () {}

   function openNewWindow(type)
   {
     api.openWin({
       name: type,
       url: './html/'+type+'.html',
       pageParam: {},
       bounces: false,
       opaque: false
     });
   }

   function openScan()
   {
     // api.openWin({
     //   name: 'scan',
     //   url: './html/scan.html',
     //   bounces: false
     // });
     var obj = api.require('scanner');
      obj.open(function(ret,err) {
          api.alert({
              title: '扫描结果', 
              msg: ret.msg
          });
      });
   }
   function openSearch()
    {
      api.openWin({
      name: 'search',
      url: './html/search.html',
      bounces: false,
      delay:200
      });
    }

    function openCitylist() {
      api.openWin({
        name: 'citylist',
        url: './html/citylist_header.html',
        bounces: false,
        delay:200
      });
    }
   // 随意切换按钮
   function randomSwitchBtn(name, index)
   {
     var lis = $api.domAll('.bottom_btn');
     var i = 0, len = lis.length;
     var curLi = lis[index];

    for(i; i<len; i++){
       var thisLi = lis[i];
       if(thisLi === curLi){
           $api.addCls(thisLi,'activebtn');
           $api.addCls(thisLi,'activebtn'+index);
           continue;
       }else{
           if($api.hasCls(thisLi,'activebtn')){
               $api.removeCls(thisLi,'activebtn');
               $api.removeCls(thisLi,'activebtn'+i);
           }
       }
    }

        // 切换头部
        var lis = $api.domAll('.titlebar');
        var i = 0, len = lis.length;
        var curLi = lis[index];

        for(i; i<len; i++){
            var thisLi = lis[i];
            if(thisLi === curLi){
                $api.addCls(thisLi,'activebar');
                $api.addCls(thisLi,'activebar'+index);
                continue;
            }else{
                if($api.hasCls(thisLi,'activebar')){
                        $api.removeCls(thisLi,'activebar');
                        $api.removeCls(thisLi,'activebar'+i);
                    }
                }
            }
    }

    // 隐藏所有的一级frame
    function hideAllFrame()
    {
        api.setFrameAttr({
            name: 'first_frame',
            hidden:true
        });
        api.setFrameAttr({
            name: 'second_frame',
            hidden:true
        });
        api.setFrameAttr({
            name: 'third_frame',
            hidden:true
        });
        api.setFrameAttr({
            name: 'forth_frame',
            hidden:true
        });
    }

    // 自己修复ios显示frame的时候bug
    // ios自己主动隐藏后,再open就不显示了
    function showgroup(type)
    {
        api.setFrameGroupAttr({
            name: type + 'group',
            hidden:false
        });
    }

    // 展示指定的frame
    function showframe(type)
    {
        api.setFrameAttr({
            name: type,
            hidden:false
        });
    }

    // 打开第一个、第三个frame
    function openframeinstance( frame, marginTop, isBounce)
    {
        api.openFrame ({
            name: frame,
            url: './html/' + frame +'/' + frame + '_body.html',
            rect:{
                x:0,
                y:marginTop,
                w:'auto',
                h:api.frameHeight - marginTop - footerPos.h
            },
            pageParam: {name: 'test'},
            // bounces: isBounce,
            bounces: false,
            vScrollBarEnabled:false,
            hScrollBarEnabled:false,
            delay:200
        });
    }

   // 移动滑动块
   function sliderbarCallback(id, num) {
     
     // 得到背景元素的宽度
     // var width=parseInt(window.getComputedStyle($api.byId('matchwidth'),null).width);
     var width = parseInt(api.frameWidth / 2);
     // api.alert({msg:width});
     if(num!=0){
       num=width;
     }
     // 移动背景元素的宽度  在index.html不能获得 forth_frame.html上面的dom,虽然是在同一个手机屏幕上
     $api.css($api.byId(id),"-webkit-transform:translate(" + num + "px,0)");
   }

    // ===================================
    // 响应底部按钮的切换frame
    // ===================================
    function switchframe(type, _index)
    {
        if ( _index === gFrameIndex ) {
          return 0;
        } else {
          gFrameIndex = _index;
        }
        
        switch(type)
        {
            case 'first_frame':
                randomSwitchBtn('first_frame', 0);
                hideAllFrame();
                openframeinstance('first_frame', firstHeaderOffset.h, true);
                // showframe('first_frame');
            break;
            case 'second_frame':
                randomSwitchBtn('second_frame', 1);
                hideAllFrame();
                openframeinstance('second_frame', firstHeaderOffset.h, true);
                // showgroup('hot');
            break;
            case 'third_frame':
                randomSwitchBtn('third_frame', 2);
                hideAllFrame();
                openframeinstance('third_frame', firstHeaderOffset.h, false);
                // showframe('third_frame');
            break;
            case 'forth_frame':
                randomSwitchBtn('forth_frame', 3);
                hideAllFrame();
                openframeinstance('forth_frame', 0, false);
                // showgroup('forth_frame');
            break;
            default:
            break;
        }

    }

    // 完成首页初始化
    apiready = function(){
        // 设置ios7的标题栏字体变亮,全局用一个就行了
        api.setStatusBarStyle({
          style: 'dark'
        });

        firstHeader = $api.byId('firstHeader');
        secHeader = $api.byId('secHeader');
        thirdHeader = $api.byId('thridHeader');
        fortheader = $api.byId('fortheader');
        $api.fixIos7Bar(firstHeader);
        $api.fixIos7Bar(secHeader); 
        $api.fixIos7Bar(thirdHeader);
        $api.fixIos7Bar(fortheader); 

        firstHeaderOffset = $api.offset(firstHeader);

        var main = $api.byId('main');
        var mainPos = $api.offset(main);

        var footer = $api.byId('footer');
        var footerPos = $api.offset(footer);
        gFrameIndex = 0;

        // 第一次进入打开 first_frame body
        api.openFrame ({
            name: 'first_frame',
            url: './html/first_frame/first_frame_body.html',
            rect:{
            x:0,
            y:firstHeaderOffset.h,
            w:'auto',
            h:api.frameHeight-firstHeaderOffset.h -footerPos.h
            },
            bounces: false,
            opaque: false
            // vScrollBarEnabled:false,
            // hScrollBarEnabled:false
        });

    };
  </script>
</html>
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <title>Hello APP</title>
    <link rel="stylesheet" type="text/css" href="../css/api.css" />
    <link rel="stylesheet" type="text/css" href="../css/common.css" />
    
    <style>
    
     /* 头部样式 */
     .topbar {background: #87cefa; height:50px; border-bottom: 1px solid #DDDFE3;}
     .topbar_title {display: inline-block;font-size: 20px; line-height: 50px;padding-left: 12px;}
     .hr01, .hr02 {height: 28px;}
     .headerico {padding: 11px 15px 11px 15px;}
     .headericohover {background: #DADDE0;}
     .fr{float: right;}
     .fl{float: left;}
     
     /*第一头部*/
     #logo {padding: 11px 0 0 10px;height: 28px;}
     #citylist {height: 50px; line-height: 50px;padding-left: 15px; font-size: 18px; color: #fff;}
     .citylistarrow {vertical-align: top; width: 20px; padding-top: 15px;}
    .search {height: 34px;line-height: 34px; padding-left: 10px; border-radius: 30px;  margin-top: 8px; position: absolute; left: 20px; right: 60px;font-size: 14px;}
    .search img:first-child {vertical-align: top; width: 20px; padding-top: 7px;padding-right: 10px;}
    .search img:last-child {vertical-align: top; width: 27px; padding-top: 4px;}
    .firstSearch {left: 90px;right: 60px;background-color: #FA6604;color: #FDC29B;}

     /* 第二头部 */
     #topbar_refresh {width: 40px;padding:5px 10px;}
     .whitebar {background-color: #fcfcfc;}
     #whitecity {height: 50px; line-height: 50px;padding-left: 15px; font-size: 18px;color: #87cefa;}
    .secCitylistarrow {vertical-align: top; width: 15px; padding-top: 18px;padding-left: 5px;}
    .secSearch {left: 90px;right: 15px;background-color: #E8E8E8;color: #999;}

    /* 第三头部 */
    .swipepic {padding: 5px 15px 2px 15px;height: 23px;}
    .swipe div {font-size: 4px; text-align: center;color: #999;}
    .thrSearch {left: 50px;right: 60px;background-color: #E8E8E8;color: #999;}

     /* 头部切换样式 */
     .activebar {display: block;}
     
     /* 底部切换按钮样式 */
     ul {display: -webkit-box; display: -webkit-flex; display: flex; }
     #footer {height: 61px; line-height: 60px; background-color: #FAFAFA;border-top: 1px solid #FAFAFA; }
     #footer li{-webkit-box-flex: 1; -webkit-flex: 1; flex:1; height: 60px;}

     /* 选项卡样式 */
     .scrollbar {display: -webkit-box;display: -webkit-flex; text-align: center; height: 40px; line-height: 40px;background: #EBECF0;font-size: 12px;position: relative;}
     .col1 {-webkit-box-flex:1;-webkit-flex: 1;flex:1;color: #909090;}
     .indexbar {position: absolute;/*background: #0fc;*/width: 50%;height: 5px;left: 0px;bottom: 0px;-webkit-transition: 300ms;}
     .redbox {background: #DB4646;width: 40px;height: 5px;position: relative;left: auto;right: auto; margin-left: auto; margin-right: auto;}

    
     /* 本地刷新图标 */
     #localrefresh {display:none;float: right; width: 40px; padding: 5px 10px;}
     #field1::-webkit-input-placeholder { color:#666; }
     #field1 {height: 30px; /*line-height: 30px;*/ width: 70%;}
     .thridHeader .search input::-webkit-input-placeholder {line-height: 30px; }

     .swipe {line-height: 50px;margin-right: 10px;color: #87cefa;}
     .back {float: left; }
     .back img {height: 30px;margin-top: 10px;margin-left: 10px;}
    </style>
  </head>
  <body>
    <div id="wrap">
      <!-- 第三头部 -->
      <div id="thridHeader" class="titlebar">
        <div class="topbar whitebar">
          <div class="back"  tapmode="" onclick="goback()"><img src="../image/ic_back_u.png" alt=""></div>
          <div class="search thrSearch">
              <img src="../image/navibar_search_icon_search.png" alt="">
              <input type="text" class="" id="field1" placeholder="请输入搜索内容">
              <img src="../image/icon_mic_normal.png" alt="" tapmode="" onclick="voiceSearch()">
          </div>
          <div class="swipe fr">
              搜索
          </div>
        </div>
      </div>
    </div>
  </body>
  <script type="text/javascript" src="../script/api.js"></script>
  <script type="text/javascript">
   function goback () {
      api.closeWin({name:'search'});
    }

    // 完成首页初始化
    apiready = function(){
      var thridHeader = $api.byId('thridHeader');
      $api.fixIos7Bar(thridHeader);
      var thridHeader = $api.offset(thridHeader);

      // var type = api.pageParam.name;
      
      api.openFrame ({
            name: 'search_body',
            url: './search_body.html',
            rect:{
                x:0,
                y:thridHeader.h,
                w:'auto',
                h:'auto'
            },
            bounces: false,
            delay:200
        });
      
      
    };

    function voiceSearch () {
      var obj = api.require('speechRecognizer');
      api.toast({
        msg : "语音识别开始,请说话",
        duration : 1000,
        location : "middle"
      });

      obj.record({
      },function(ret,err){
          if(ret.status){
              // ret.wordStr;
              api.alert({
                title : "识别结果",
                msg : ret.wordStr
              })
              obj.stopRecord();
          }
      });
    }
  </script>
</html>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>全部分类</title>
	<link rel="stylesheet" type="text/css" href="../css/api.css" />
    <link rel="stylesheet" type="text/css" href="../css/common.css" />

	<style>
		html, body {width: 100%;min-height: 100%;background: #f0f0f0;}
		.h80 {height: 80px;}
		.h40 {height: 40px;}
		.h20 {height: 20px;}
    	.h10 {height: 10px;background: #f0f0f0;}
		.h1 {height: 1px;margin-left: 15px;background: #f0f0f0;}
		.fr {float: right;}
		.fl {float: left;}
		.hightitem {background-color: #fff;}
		.inwrap {margin: 0 10px;}

		/* 2X2样式 */
		.row {display: -webkit-box;display: -webkit-flex;}
		.col {-webkit-box-flex:1; -webkit-flex:1; flex:1;position: relative;}
		.col img {position: absolute; right: 0; width: 80px; top: 0;}
		.col .matrixcell {display: table-cell;vertical-align: middle; padding-left: 10px;}
		.col .matrixcell .title {margin-bottom: 10px;}
		.matrix {display: table;height: inherit;}

		/* 1. 2X2 */
		.flipcard {height: 30px; line-height: 30px; text-align: center; margin: 5px 5px 3px 5px; color: #000; background-color: #fff; font-size: 14px;}
		.darktitle {height: 40px;line-height: 40px;margin-left: 15px;font-size: 14px;color: #666;}

		/* 2. 三列 */
		.scratch02 .word {margin-top: 10px;margin-left: 10px;}
		.scratch02 .word .title{font-size: 18px;}
		.scratch02 .word .info{font-size: 12px;color: #666;}
		.scratch02 img {position: relative;width: 60px; height: 50px;}
		.showposter {text-align: center;margin-top: 5px;padding-bottom: 10px;}

		/* 列表 */
		.classify {height: 60px;line-height: 60px;background-color: #fff;position: relative;border-bottom: 1px solid #e0e0e0;}
		.classify .sublogo {width: 30px;margin-top: 15px;margin-left: 15px;float: left;}
		.classify .arrow {position: absolute;vertical-align: top;right: 15px;top:20px;height: 20px;}
		.classify .info {line-height: 20px; float: left; height: 60px;margin-left: 10px;}
		.classify .info .title {font-size: 15px; color: #000; margin-top: 10px;}
		.classify .info .subtitle {font-size: 12px; color: #666; margin-top: 5px;}
		.subclass {display: none;}
		.subclass .flipcard {margin:0;}
		.brb {border-right: 1px solid #e0e0e0;border-bottom: 1px solid #e0e0e0;}
		.bb {border-bottom: 1px solid #e0e0e0;}

		.presshover {background-color: #FAFAFA;}
	</style>
</head>
<body>
	<!-- 1 2X2 -->
	<div class="darktitle">热门搜索</div>
	<div class="row inwrap">
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">铁板烧</div>
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">麻辣烫</div>
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">羊蝎子</div>
	</div>
	<div class="row inwrap">
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">亚运</div>
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">望京</div>
		<div class="col flipcard" tapmode="presshover" onclick="openDetail()">国贸</div>
	</div>

</body>
<script type="text/javascript" src="../script/api.js"></script>
<script>
function openDetail()
{
	api.openWin({
		name: 'tuandetail',
		url: './tuandetail_header.html',
		// delay:200
		bounces: false
	});
}
</script>
</html>

 13.答辩PPT展示

喜欢的点赞收藏加关注私信作者沟通交流 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 面试题(一)--C++基础,面向对象,内存管理

目录 1.part1 C基础 1 C特点 2 说说C语言和C的区别 3 说说 C中 struct 和 class 的区别 4 include头文件的顺序以及双引号""和尖括号<>的区别 5 说说C结构体和C结构体的区别 6 导入C函数的关键字是什么&#xff0c;C编译时和C有什么不同&#xff1f; 7…

Tomcat安装及基本使用

1. 什么是Web服务器 Web服务器是一种应用程序&#xff08;软件&#xff09;&#xff0c;它封装了对HTTP协议的操作&#xff0c;使得开发人员无需直接操作协议&#xff0c;从而简化了Web开发。其主要功能是提供网上信息浏览服务。 Web服务器安装在服务器端&#xff0c;我们可以…

JavaWeb 速通JSON

目录 一、JSON快速入门 1.基本介绍 : 2.定义格式 : 3.入门案例 : 二、JSON对象和字符串的相互转换 1.常用方法 : 2.应用实例 : 3.使用细节 : 三、JSON在Java中的使用 1.基本说明 : 2.应用场景 : 2.1 JSON <---> JavaBean 2.2 JSON <---> List 2.3 JSON …

java对时间序列根据阈值进行连续性分片

问题描述&#xff1a;我需要对一个连续的时间戳list进行分片&#xff0c;分片规则是下一个数据比当前数据要大于某一个阈值则进行分片&#xff1b; 解决方式&#xff1a; 1、输入的有顺序的list &#xff0c;和需要进行分片的阈值 2、调用方法&#xff0c;填入该排序的list和阈…

非煤矿山风险监测预警算法 yolov8

非煤矿山风险监测预警算法通过yolov8网络模型深度学习算法框架&#xff0c;非煤矿山风险监测预警算法在煤矿关键地点安装摄像机等设备利用智能化视频识别技术&#xff0c;能够实时分析人员出入井口的情况&#xff0c;人数变化并检测作业状态。YOLO的结构非常简单&#xff0c;就…

element-ui el-upload组件 on-remove事件 传自定义参数

element-ui el-upload组件 on-remove事件 传自定义参数 1.vue页面 :on-remove"(file, fileList) > {handleRemove(file, fileList, item.order)}"2.methods方法里面

promethues监控postgres,emqx,redis

一、监控postgres 1、安装监控 docker pull wrouesnel/postgres_exporter2、执行 docker run -d -p 9187:9187 --name postgres_exporter --nethost -d -e DATA_SOURCE_NAME"postgresql://postgres:123456192.168.12.116:5432/rcc-manage?sslmodedisable" wroues…

移动隔断墙,高隔间将是一种十分理想的空间划分装饰

移动隔断墙&#xff0c;高隔间是一种非常理想的空间划分装饰方式。它可以根据需要随时移动和重新布置&#xff0c;提供灵活的空间解决方案。高隔间可以用于划分办公区域、会议室、展示区、休息区等不同功能的空间&#xff0c;使整个空间更加有序和高效。 高隔间的设计具有多样性…

context.WithCancel()的使用

“ WithCancel可以将一个Context包装为cancelCtx,并提供一个取消函数,调用这个取消函数,可以Cancel对应的Context Go语言context包-cancelCtx[1] 疑问 context.WithCancel()取消机制的理解[2] 父母5s钟后出门&#xff0c;倒计时&#xff0c;父母在时要学习&#xff0c;父母一走…

yo!这里是Linux进程入门介绍

目录 前言 os定位 进程基本介绍 进程基本操作 查看进程 创建进程 进程状态 理论层面 具体状态 进程优先级 环境变量 地址空间 进程地址空间&&页表介绍 深入理解地址空间 后记 前言 在了解学习过Linux环境下的基本操作以及工具之后&#xff0c;就来到了…

本地套接字通信

1.本地套接字 本地套接字的作用&#xff1a;本地的进程间通信 有关系的进程间的通信 没有关系的进程间的通信 本地套接字实现流程和网络套接字类似&#xff0c;一般采用TCP的通信流程 2.本地套接字通信的流程 - tcp // 服务器端 1.创建监听的套接字int lfd socket(AF_U…

聊聊中南亚跨境电商的机遇与前景

随着工业转移&#xff0c;中南亚地区作为一个充满潜力的区域&#xff0c;正逐渐成为跨境电商领域的热点。这一地区包括印度、孟加拉国、巴基斯坦、斯里兰卡等国家&#xff0c;拥有庞大的人口、不断增长的中产阶级&#xff0c;以及逐步完善的数字基础设施&#xff0c;为跨境电商…

Android投屏总结

#android手机投屏 ####导语 至于手机投屏的实现方法可谓五花八门&#xff0c;今天小袁就说下以开发人员的角度来说下当今手机的主流投屏方法。目前这种将终端信号经由WiFi传输到电视、电视盒的技术有三种&#xff1a;DLNA、AirPlay、Miracast、Google Cast。 ##手机投屏智能电…

for...in和for...of有什么区别

在JavaScript中遍历数组通常是使用for...i循环&#xff0c;在ES5具有遍历数组功能的还有forEach、map、filter、some、every、reduce、reduceRight等。 for...in和for...of是两种增强型循环&#xff0c;for...in是ES5标准&#xff0c;在ES6中新增了for...of的循环方式。 1.fo…

基于ADAU1452 DSP语音信号处理算法系统构建

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送音频&#xff0c;DSP音频项目核心开发资料 1 LMS, NLMS 最小均方自适应滤波算法 2 语音活动检测&#xff0c;去混响&#xff0c;波束形成算…

字符设备驱动读写操作实现

一、读操作实现 ssize_t xxx_read(struct file *filp, char __user *pbuf, size_t count, loff_t *ppos); 完成功能&#xff1a;读取设备产生的数据 参数&#xff1a;filp&#xff1a;指向open产生的struct file类型的对象&#xff0c;表示本次read对应的那次openpbuf&#xf…

十四五双碳双控时代下的“低碳认证”

目录 前言 十四五双碳双控时代下的“低碳认证” 一、关于“低碳认证” 二、低碳认证优势 三、环境产品认证EPD 四、EPD相关运营机构 五、碳中和相关机构 六、EPD的认证流程 七、低碳产品认证认证流程和要求 八、相关机构认证证书样例 九、证书附件表 前言 通过本篇文…

JavaWeb JQuery操作结点

目录 一、查找结点 1.简介 : 2.实例 : 二、创建结点 1.创建结点介绍 : 2.内部插入 : 2.1 介绍 : 2.2 实例 3.外部插入 : 3.1 介绍 3.2 实例 三、结点的其他相关操作 1.删除结点 &#xff1a; 2.复制结点 : 3.替换结点 : 4.遍历结点 : 一、查找结点 1.简介 : 查找到…

RAID磁盘阵列(RAID0/1/4/6/1+0)

目录 一、概述&#xff1a; 二、RAID 级别介绍 RAID 0 RAID 1 RAID 4 RAID 5 RAID 6 RAID10&#xff1a; 一、概述&#xff1a; RAID&#xff08; Redundant Array of Inexpensive Disks&#xff09;称为廉价磁盘冗余阵列。 RAID 的基本思想是把多个便宜的小磁盘组合到…

编写简单的支付接口测试用例思路

支付接口Python代码示例 以下是一个简单的支付接口Python代码示例&#xff0c;实现了用户登录后购买商品并支付的功能&#xff1a; import requests import json # 定义支付接口的URL和请求参数 url "https://example.com/pay" payment_data {"username&quo…