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展示
喜欢的点赞收藏加关注私信作者沟通交流