版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...wd......wd......wd...沈阳航空航天大学课程设计报告课程设计名称:软件综合课程设计课程设计题目:基于web的在线问卷调查系统的设计与实现院〔系〕:计算机学院专业:计算机科学与技术班级:学号:2姓名:指导教师:说明:结论〔优秀、良好、中等、及格、不及格〕作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。学术诚信声明本人声明:所呈交的报告〔含电子版及数据文件〕是我个人在导师指导下独立进展设计工作及取得的研究结果。尽我所知,除了文中特别或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何奉献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据假设有不实之处,本人愿意承受本教学环节“不及格〞和“重修或重做〞的评分结论并承当相关一切后果。本人签名:日期:年月日沈阳航空航天大学课程设计任务书课程设计名称软件综合课程设计专业计算机科学与技术学生姓名班级学号题目名称基于web的在线问卷调查系统的设计与实现起止日期2016年12月19日起至2017年1月13日止课设内容和要求:在校园、企事业单位里,由于各种调查研究的需要,经常会有各种各样的调查问卷,在传统模式下,人们不但要花费不少的费用印刷问卷,而且还要消耗大量时间和精力对调查问卷进展发放和回收,对调查问卷进展统计,并且人工操作调查问卷随意性较大,容易产生遗漏等问题。本系统建设在信息技术根基上,构建一个在线的问卷设计、分发、调查、回收、统计的系统,根本解决传统问卷的上述老大难问题。实现用户管理系统,注册用户可以发布、编辑问卷;非注册用户只可以填写问卷。实现问卷发布管理系统,可以对问卷进展增加,修改,删除,查询等操作。实现数据可视化,对问卷统计结果通过图表进展展示。界面美观,用户交互、体验良好。参考资料:麦克劳克林.PHP&MySQL实战手册-第二版[M].中国电力出版社,2014.杨克李强,裴云,黄向党.PHP和MySQLWeb开发从新手到高手[M].人民邮电出版社,2013.教研室审核意见:教研室主任签字:指导教师〔签名〕2016年12月16日学生〔签名〕2016年12月19日课程设计总结:本次课程设计的主要任务是在线问卷系统。此实现了问卷创立,编辑,用户管理,问卷信息统计等功能,使用PHP语言的laravel框架,Mysql数据库。在这次课程设计中,使我懂得了理论与实际相结合是很重要的,只有知识是远不够的,只有把所学理论知与实践相结合起来从中得出识是远不够的,只有把所学理论知与实践相结合起来从中得出才能真正为社会服务,从而提高自己的实际动手力和独立思考。才能真正为社会服务,从而提高自己的实际动手力和独立思考。才能真正为社会服务,从而提高自己的实际动手力和独立思考。才能真正为社会服务,从而提高自己的实际动手力和独立思考。系统中存在的一些缺乏和设计上存在的缺憾,说明自己这些方面还有很多缺乏之处有待自己进一步学习、提高。在这次课程设计中,我学到很多东西真正达与用合,增强了对数据库方面应用的理解自己今后参与开发系统积累不少经历,在课程设计过中从建设数据开场对库理念及思想上有更高的认识。从书本上知运用到实际动手操作来,收获颇多我真正学了计算机教科书上所没有或者真正用到了课本的知识。这样,既稳固旧又掌握了新知识。不仅提高自己的动手能力,更体会到软件开发乐趣加深入的了解数据库实际应用,为我们将来践打下良好的根基。在课设期间,与同学之间的相互探讨对我有很大的启发。让我对有关知识有了更加深入的理解,也增强了我解决困难,抑制困难的勇气和决心。这次课设的感悟对我日后的学习和工作有了很大的促进作用。目录58691需求分析1310551.1系统开发背景1253011.2系统开发目的1139391.3系统开发意义211452概要设计349812.1总体设计3164592.2功能设计375762.2.1用户系统设计3180972.2.2问卷系统设计37922.3数据库设计4303942.3交互设计6290573详细设计7203723.1用户管理系统771223.1.1用户注册7201353.1.2用户登录9201413.2问卷管理系统9101063.2.1问卷信息管理9274323.2.2题目信息管理12275983.2.3选项信息管理1494643.2.4问卷结果统计17116733.2.5问卷生成1817973.2.6问卷提交19127394测试2065814.1出现的错误20168464.2解决方法208296参考文献2123513附录〔关键局部程序清单〕22204761.路由文件22152592.用户管理后台文件23118653.问卷后台管理文件27195234.问卷生成文件4128855.登录界面45211006.注册页面46176977.问卷信息管理页面47221378.题目信息管理页面50246309.选项信息管理页面532332610.选择题统计信息展示552809011.简答题统计信息展示58227012.错误页面592655413.CSS文件603244914.JavaScript文件761需求分析1.1系统开发背景随着互联网技术的飞速开展,互联网的全球覆盖,交互功能等特性给调查方法带来新的变化,在线调查作为一种基于互联网平台上信息采集及处理方式,越来越受到许多评估研究机构和媒介机构的关注与运用。在校园、企事业单位里,由于各种调查研究的需要,经常会有各种各样的调查问卷,在传统模式下,人们不但要花费不少的费用印刷问卷,而且还要消耗大量时间和精力对调查问卷进展发放和回收,对调查问卷进展统计,并且人工操作调查问卷随意性较大,容易产生遗漏等问题。本系统建设在信息技术根基上,构建一个在线的问卷设计、分发、调查、回收、统计的系统,根本解决传统问卷的上述老大难问题。借助互联网这一现代化的信息沟通渠道,在线调查具有低本钱、高速度、跨越空间局限、丰富的表现形式、智能化及互动性等优点。因为其方便性,许多企业也在自己的网络上进展自主调研,使用调查的方式收集自己用户的观点等。不仅可以迅速了解社会不同层次、不同行业的人员需求,客观的收集需求信息,调整修正产品策略和营销策略,满足不同的需求。在线调查问卷系统是一个实用性很强的系统。1.2系统开发目的在线问卷调差的目的就是能够提高调查效率,节约调查经费,使调查数据的分析更加的方便,应具有以下的功能特点:〔1〕向用户提交交互式,个性化的问卷调查服务。〔2〕智能的后台管理,可以在线生成调查问卷,可分析统计调查的结果。〔3〕使用简单、方便,问卷生成,投放,结果分析简单易用。〔4〕具有灵活性,能应用不同的调查环境。1.3系统开发意义调查问卷系统的目的是企业、组织或个人需要调查或掌握一些数据、信息或资料时,为这样的需求者提供适合的网上问卷、回收、统计数据活动答案,为需求者掌握资料提供方便。〔1〕对调查问卷的统计结果进展分析汇总,并使需求者能及时了解最新的调查结果。〔2〕可以根据不同的需求灵活设计问卷。〔3〕支持多种题型,如单项选择、多项选择、简答等。2概要设计2.1总体设计系统的总体设计可以分为以下几个局部:使用PHP的Laravel框架实现系统的后台管理系统,包括问卷管理和用户管理。使用Mysql作为数据库系统。使用JavasScript,Ajax和CSS构建前端页面和交互系统。使用HighCharters库实现数据可视化,实现问卷统计信息的图表展示。2.2功能设计2.2.1用户系统设计用户可分为注册用户和一般用户,注册用户需注册信息前方可使用系统,而一般用户可直接访问系统。3种用户权限不同,具体如下:系统管理员:管理系统和所有用户的问卷。注册用户:设计、编辑、发布问卷,查看问卷统计结果。一般用户:填写问卷。2.2.2问卷系统设计注册用户可以访问问卷系统,并编辑问卷〔增加,删除,修改,查询〕与问卷对应的题目、选项。问卷属性:问卷标题,发布者,发布时间,有效时间,提交量,题目。题目属性:题号,题目,题目类型,选项。选项属性:选项号,选项值。题目类型:单项选择题、多项选择题、简答题。问卷只有在有效时间内才可以参与答题,超出有效时间后不可进展答题。2.3数据库设计数据库包含5个表,分别是:users〔用户表〕,questionnaires〔问卷表〕,subjects〔题目表〕,options〔选项表〕,short_answers〔简答表〕。所有表的数据字典以及E-R图如下。图2.1E-R图表2.1用户表users字段名称字段类型注释idint(10)用户标识,唯一,主键,自增namevarchar(255)用户名,唯一emailvarchar(255)用户邮箱passwordvarchar(60)用户密码groupint(11)用户组〔管理员、注册用户〕created_attimestamp创立时间updated_attimestamp更新时间表2.2问卷表questionnaires字段名称字段类型注释idint(10)问卷标识,唯一,主键,自增user_namevarchar(255)创立者titletext问卷标题countsint(11)问卷提交量active_timeint(11)有效时间delete_tokenint(11)删除标识〔0:未删除,1:已删除〕created_attimestamp创立时间updated_attimestamp更新时间表2.3题目表subjects字段名称字段类型注释idint(10)题目标识,唯一,主键,自增questionnaire_idint(11)题目对应的问卷标识〔外键〕user_namevarchar(255)创立者numberint(11)题号titletext题目内容typevarchar(255)题目类型〔单项选择、多项选择、简答〕option_countint(11)题目对应的选项数delete_tokenint(11)删除标识〔0:未删除,1:已删除〕created_attimestamp创立时间updated_attimestamp更新时间表2.4选项表options字段名称字段类型注释idint(10)选项标识,唯一,主键,自增subject_idint(11)选项对应的题目标识〔外键〕user_namevarchar(255)创立者numbervarchar(255)选项号titletext选项内容select_countint(11)选项被选择的次数delete_tokenint(11)删除标识〔0:未删除,1:已删除〕created_attimestamp创立时间updated_attimestamp更新时间表2.5简答表short_answers字段名称字段类型注释idint(10)答复标识,唯一,主键,自增subject_idint(11)答复对应的题目标识〔外键〕answervarchar(255)答复内容delete_tokenint(11)删除标识〔0:未删除,1:已删除〕created_attimestamp创立时间updated_attimestamp更新时间2.3交互设计使用JavaScript,Ajax等实现系统交互,实现对话框设计以及UI动画交互,使用HighCharters库实现数据可视化系统,对问卷统计结果进展图表展示。3详细设计3.1用户管理系统3.1.1用户注册本模块用于实现新用户的信息注册,在注册页面检查用户输入是否合法:邮箱格式是否正确,是否已被注册。用户名是否和已注册用户重复。两次密码输入是否一致。假设用户输入合法,允许注册,并跳转至用户界面;否则,给出错误提示。此页面URL为:://localhost/auth/register〔localhost为系统域名,同下〕。用户注册页面UI与流程图如图3.1和图3.2所示。图3.1用户注册页面图3.2用户注册流程图图3.3用户登录流程图3.1.2用户登录本模块用于实现用户登录,在用户输入正确的用户名和密码后,进入系统;否则,提示用户错误信息。此页面URL为:://localhost,假设存在Session,跳转至问卷展示页面。用户登录流程图与页面UI如图3.3和图3.4所示。图3.4用户登录界面3.2问卷管理系统3.2.1问卷信息管理本模块用于实现用户问卷信息的后台管理。具体的操作有:问卷信息展示、创立新问卷、更新问卷、删除问卷等操作。要展示的问卷信息有:问卷ID〔系统内唯一,在创立问卷时由系统自动生成〕。问卷标题。问卷创立者的用户名。问卷的创立时间和有效时间〔在有效时间内问卷可以答题〕。问卷的提交量。查看问卷统计信息的链接。查看问卷地址的链接。编辑问卷内题目的链接。问卷操作按钮,包括问卷更新按钮和问卷删除按钮。此页面URL为:://localhost/userconsole/{用户名},{}内为变量,是不同用户进入自己问卷管理页面的条件。更新问卷的post地址为:://localhost/userconsole/{用户名}/updatequestionnaire。删除问卷的post地址为:://localhost/userconsole/{用户名}/deletequestionnaire。问卷信息管理页面UI与流程图如图3.5和图3.6所示。图3.5问卷信息展示页面除此之外,还有一个添加问卷按钮。使用JavaScript捕获按钮点击消息,生成建设新问卷对话框,用户填写问卷标题与有效时间后可以创立新问卷。使用Ajax与服务器交流将问卷信息写入数据库,做到平滑操作,改善用户体验。添加表单的post地址为:://localhost/userconsole/{用户名}/addquestionnaire创立新问卷流程图与页面UI如图3.7和图3.8所示。图3.6问卷信息展示流程图图3.7建设新问卷流程图图3.8建设新问卷页面3.2.2题目信息管理本模块用于实现题目信息的后台管理。具体的操作有:题目信息展示、创立新题目、更新题目、删除题目等操作。要展示的题目信息有:题号,用于展示问卷时的题目排序。题目内容。题型〔单项选择题、多项选择题、简答题〕。编辑题目对应选项的链接〔简答题除外〕。题目操作按钮,包括题目更新按钮和题目删除按钮。此页面URL为:://localhost/userconsole/{用户名}/questionnaire/{问卷id}。题目信息管理页面UI与流程图如图3.9和图3.10所示。图3.9题目信息展示页面图3.10题目信息展示流程图除此之外,还有一个添加题目按钮。使用JavaScript捕获按钮点击消息,生成建设新题目对话框,用户通过下拉框选择题号与题型,输入题目后可以创立新题目,已有的题号不会出现在下拉框中,防止生成问卷的题号重复。使用Ajax与服务器交流将问卷信息写入数据库,做到平滑操作,改善用户体验。添加新题目页面UI与流程图如图3.11和图3.12所示。图3.11建设新题目页面图3.12建设新题目流程图3.2.3选项信息管理本模块用于实现选项信息的后台管理。具体的操作有:选项信息展示、创立新选项、更新选项、删除选项等操作。要展示的选项信息有:选项号,用于展示题目时的选项排序。选项内容。选项操作按钮,包括选项更新按钮和选项删除按钮。此页面URL为:://localhost/userconsole/{用户名}/subject/{题目id}。选项信息管理页面UI与流程图如图3.13和图3.14所示。图3.13选项信息管理页面图3.14选项信息管理流程图除此之外,还有一个添加选项按钮。使用JavaScript捕获按钮点击消息,生成建设新选项对话框,用户通过下拉框选择选项号,输入选项内容后可以创立新选项,已有的选项号不会出现在下拉框中,防止生成问卷的题号重复。使用Ajax与服务器交流将问卷信息写入数据库,做到平滑操作,改善用户体验。添加新题目页面UI与流程图如图3.15和图3.16所示。图3.15建设新选项页面图3.16建设新选项流程图3.2.4问卷结果统计根据用户填写的问卷信息,统计选择题每一道选项的选项次数以及简答题的答案。同一道题目不同选项选择次数使用饼状图显示百分比。使用HighCharte库绘制饼状图。页面URL为:://localhost/userconsole/{用户名}/questionnaire/{问卷id}/result。页面UI如图3.17与图3.18所示。图3.17问卷统计选择题展示页面图3.18问卷统计简答题展示页面3.2.5问卷生成根据用户创立的问卷、题目以及对应的选项信息,生成一个完整的问卷页面,页面URL为:://localhost/questionnaire/{问卷id}。页面UI如图3.19所示。图3.19问卷页面3.2.6问卷提交在用户填写完问卷并提交之后,向用户反响此问卷的统计信息。页面UI如图3.20所示图3.20反响信息4测试4.1出现的错误用户权限问题,导致注册用户可以编辑其他用户创立的题目以及选项。无法通过Laravel的MVC框架联立不同的数据库表格。更新数据库时,导致多个行被错误修改。4.2解决方法在后台页面首先根据URL的用户名变量,判断变量与Session用户标识是否一致,假设一致,转入编辑页面;不一致,转到错误页面。外键与主键设置错误,修改即可。错误使用MVC的find语句,修改成where语句即可。参考文献[1]麦克劳克林.PHP&MySQL实战手册-第二版[M].中国电力出版社,2014.[2]杨克李强,裴云,黄向党.PHP和MySQLWeb开发从新手到高手[M].人民邮电出版社,2013.[3]陈惠贞,陈俊荣.PHP&MySQL程序设计实例讲座[M].清华大学出版社,2010.[4]孔潇.PHP&MySQL网站建设[M].国防工业出版社,2001.[5]TimBoronczyk,MartinE.Psinas.PHP&MySQL范例精解:创立、修改、重用[M].清华大学出版社,2009.[6]万川梅,周建儒.PHPWEB程序设计[M].西南交通大学出版社,2014.[7]陆凯.PHP网站开发实用技术[M].人民邮电出版社,2016.[8]传智播客高教产品研发部.PHP程序设计高级教程[M].中国铁道出版社,2015.附录〔关键局部程序清单〕1.路由文件<?phpRoute::get('/','Auth\AuthController@index');// 身份验证Route::group(['prefix'=>'auth','namespace'=>'Auth'],function(){ Route::post('loginCheck','AuthController@loginCheck'); Route::get('register','AuthController@register'); Route::post('registerCheck','AuthController@registerCheck'); Route::post('registerEmailCheck','AuthController@registerEmailCheck'); Route::post('registerNameCheck','AuthController@registerNameCheck');});// 问卷展示页Route::group(['prefix'=>'questionnaire','namespace'=>'Questionnaire'],function(){ Route::get('{questionnaireid}','QuestionnaireController@index'); Route::post('{questionnaireid}/result','QuestionnaireController@result');});// 用户后台Route::group(['prefix'=>'userconsole','namespace'=>'UserConsole'],function(){ // 展示用户的问卷 Route::get('{username}','UserConsoleController@index'); // 增加问卷 Route::post('{username}/addquestionnaire','UserConsoleController@addquestionnaire'); // 修改问卷 Route::post('{username}/updatequestionnaire','UserConsoleController@updatequestionnaire'); // 删除问卷 Route::post('{username}/deletequestionnaire','UserConsoleController@deletequestionnaire'); // 展示问卷的题目 Route::get('{username}/questionnaire/{questionnaireid}','UserConsoleController@questionnaire'); // 提交结果统计 Route::get('{username}/questionnaire/{questionnaireid}/result','UserConsoleController@submitresult'); Route::get('{username}/questionnaire/{questionnaireid}/result/{subjectid}','UserConsoleController@answerresult'); // 增加题目 Route::post('{username}/questionnaire/{questionnaireid}/addsubject','UserConsoleController@addsubject'); // 修改题目 Route::post('{username}/questionnaire/{questionnaireid}/updatesubject','UserConsoleController@updatesubject'); // 删除题目 Route::post('{username}/questionnaire/{questionnaireid}/deletesubject','UserConsoleController@deletesubject'); // 展示题目的选项 Route::get('{username}/subject/{subjectid}','UserConsoleController@subject'); // 增加选项 Route::post('{username}/subject/{subjectid}/addoption','UserConsoleController@addoption'); // 修改选项 Route::post('{username}/subject/{subjectid}/updateoption','UserConsoleController@updateoption'); // 删除选项 Route::post('{username}/subject/{subjectid}/deleteoption','UserConsoleController@deleteoption');});2.用户管理后台文件<?phpnamespaceApp\\Controllers\Auth;useApp\\Controllers\Controller;useIlluminate\Contracts\Auth\Guard;useIlluminate\Contracts\Auth\Registrar;useIlluminate\Foundation\Auth\AuthenticatesAndRegistersUsers;useApp\User;useSession;classAuthControllerextendsController{ /* | |Registration&LoginController | | |Thiscontrollerhandlestheregistrationofnewusers,aswellasthe |authenticationofexistingusers.Bydefault,thiscontrolleruses |asimpletraittoaddthesebehaviors.Whydon'tyouexploreit? | */ useAuthenticatesAndRegistersUsers; /** *Createanewauthenticationcontrollerinstance. * *@param\Illuminate\Contracts\Auth\Guard$auth *@param\Illuminate\Contracts\Auth\Registrar$registrar *@returnvoid publicfunction__construct(Guard$auth,Registrar$registrar) { $this->auth=$auth; $this->registrar=$registrar; $this->middleware('guest',['except'=>'getLogout']); }*/ /** *登陆页面展示 * *@returnResponse */ publicfunctionindex() { returnview('auth.login'); } /** *登录验证 * *@returnResponse */ publicfunctionloginCheck() { //处理表单: if((!empty($_POST['user_nicename']))&&(!empty($_POST['user_pass']))) { $user_nicename=htmlspecialchars(stripslashes(trim($_POST['user_nicename']))); $user_pass=htmlspecialchars(stripslashes(trim($_POST['user_pass']))); $user_pass=md5($user_pass); // 查找与用户名对应行 $user_info=User::where('name',$user_nicename)->first(); // 信息匹配 if($user_info!=NULLAND$user_info->password==$user_pass) { Session::put('auth_state','1'); Session::put('user_name',"$user_nicename"); return"1"; } // 信息不匹配 else { return"0"; } } else { return"0"; } } /** *注册界面 * *@returnResponse */ publicfunctionregister() { returnview('auth.register'); } /** *注册验证 * *@returnResponse */ publicfunctionregisterCheck() { //处理表单: if((!empty($_POST['user_nicename']))&&(!empty($_POST['user_pass']))&&(!empty($_POST['user_email']))) { $user_nicename=htmlspecialchars(stripslashes(trim($_POST['user_nicename']))); $user_pass=htmlspecialchars(stripslashes(trim($_POST['user_pass']))); $user_pass=md5($user_pass); $user_email=htmlspecialchars(stripslashes(trim($_POST['user_email']))); $created_at=$updated_at=date('Y-m-dH:i:s'); $userurl_id=User::insertGetId( array('name' =>$user_nicename, 'email' =>$user_email, 'password' =>$user_pass, 'created_at' =>$created_at, 'updated_at' =>$updated_at) ); Session::put('auth_state','1'); Session::put('user_name',"$user_nicename"); } } /** *注册验证--邮箱 * *@returnResponse */ publicfunctionregisterEmailCheck() { //处理表单: if(!empty($_POST['user_email'])) { // 查找与用户名对应行 $user_info=User::where('email',$_POST['user_email'])->first(); // 邮箱信息存在 if($user_info!=NULL) { return"1"; } else { return"0"; } } } /** *注册验证--用户名 * *@returnResponse */ publicfunctionregisterNameCheck() { //处理表单: if(!empty($_POST['user_name'])) { // 查找与用户名对应行 $user_info=User::where('name',$_POST['user_name'])->first(); // 用户信息存在 if($user_info!=NULL) { return"1"; } else { return"0"; } } }}3.问卷后台管理文件<?phpnamespaceApp\\Controllers\UserConsole;useApp\\Requests;useApp\\Controllers\Controller;useApp\User;useApp\Questionnaire;useApp\Subject;useApp\Option;useApp\Short_answer;useSession;useIlluminate\\Request;classUserConsoleControllerextendsController{ /** *用户控制台 * *@returnResponse */ publicfunctionindex($userName) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此用户所创立的所有问卷表 $user=User::where('name',$userName)->first(); $QuestionnairesList=$user->hasManyQuestionnaire()->where('delete_token','0')->orderBy('id','desc')->get(); returnview('userconsole.index')->with('QuestionnairesList',$QuestionnairesList); } // 显示错误信息 else { returnview('errors.authority'); } } /*添加问卷 * *@returnResponse */ publicfunctionaddquestionnaire($userName) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 处理添加新选项的表单 if((!empty($_POST['NewQuestionnaireTitle']))&&(!empty($_POST['NewQuestionnaireTime']))) { $NewQuestionnaireTitle=$_POST['NewQuestionnaireTitle']; $NewQuestionnaireTime=$_POST['NewQuestionnaireTime']; // 插入一行记录 $created_at=$updated_at=date('Y-m-dH:i:s'); $questionnaire=Questionnaire::insertGetId( array('user_name' =>$userName, // 问卷创立者 'title' =>$NewQuestionnaireTitle, // 问卷标题 'active_time' =>$NewQuestionnaireTime, // 有效时间 'delete_token' =>0, // 删除标记 'created_at' =>$created_at, // 创立时间 'updated_at'=>$updated_at) // 更新时间 ); return"success"; } else { return"inputnull"; } } // 显示错误信息 returnview('errors.authority'); } /*修改问卷 * *@returnResponse */ publicfunctionupdatequestionnaire($userName) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 处理添加新选项的表单 if((!empty($_POST['UpdateQuestionnaireTitle']))&&(!empty($_POST['UpdateQuestionnaireTime']))&&(!empty($_POST['QuestionnaireId']))) { $UpdateQuestionnaireTitle=$_POST['UpdateQuestionnaireTitle']; $UpdateQuestionnaireTime=$_POST['UpdateQuestionnaireTime']; $QuestionnaireId=$_POST['QuestionnaireId']; // 更新一行记录 $created_at=$updated_at=date('Y-m-dH:i:s'); $questionnaire=Questionnaire::where('id',$QuestionnaireId)->update( array('title' =>$UpdateQuestionnaireTitle, // 问卷标题 'active_time'=>$UpdateQuestionnaireTime) // 有效时间 ); return"success"; } else { return"inputnull"; } } // 显示错误信息 returnview('errors.authority'); } /*删除问卷 * *@returnResponse */ publicfunctiondeletequestionnaire($userName) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 处理添加新选项的表单 if(!empty($_POST['QuestionnaireId'])) { $QuestionnaireId=$_POST['QuestionnaireId']; // 更新一行记录 $created_at=$updated_at=date('Y-m-dH:i:s'); $questionnaire=Questionnaire::where('id',$QuestionnaireId)->update( array( 'delete_token' =>1 // 删除标记 ) ); return"success"; } else { return"inputnull"; } } // 显示错误信息 returnview('errors.authority'); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** *问卷编辑 * *@returnResponse */ publicfunctionquestionnaire($userName,$questionnaireId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此问卷表所包含的所有题目 $Questionnaire=Questionnaire::where('id',$questionnaireId)->first(); // 此问卷表创立者与登录用户一致 if($Questionnaire->user_name==$userName) { $SubjectsList=$Questionnaire->hasManySubject()->where('delete_token','0')->orderBy('number')->get(); $AllNumber=array(); for($i=1;$i<100;$i++) { array_push($AllNumber,$i); } $SubjectNumbers=array(); foreach($SubjectsListas$Subject) { array_push($SubjectNumbers,$Subject->number); } $otherSubjectNumber=array_diff($AllNumber,$SubjectNumbers); returnview('userconsole.questionnaire')->with("SubjectsList",$SubjectsList) // 题目列表 ->with("QuestionnaireId",$questionnaireId) // 问卷ID ->with("QuestionnaireTitle",$Questionnaire->title) // 问卷标题 ->with("SubjectNumbers",$otherSubjectNumber); // 可用选项 } } // 显示错误信息 returnview('errors.authority'); } /*给指定问卷添加新题目 * *@returnResponse */ publicfunctionaddsubject($userName,$questionnaireId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此问卷表所包含的所有题目 $Questionnaire=Questionnaire::where('id',$questionnaireId)->first(); // 此题目创立者与登录用户一致 if($Questionnaire->user_name==$userName) { // 处理添加新选项的表单 if((!empty($_POST['NewSubjectNumber']))&&(!empty($_POST['NewSubjectType']))&&(!empty($_POST['NewSubjectTitle']))) { $NewSubjectNumber=$_POST['NewSubjectNumber']; $NewSubjectType=$_POST['NewSubjectType']; $NewSubjectTitle=$_POST['NewSubjectTitle']; // 插入一行记录 $created_at=$updated_at=date('Y-m-dH:i:s'); $subject_id=Subject::insertGetId( array('questionnaire_id' =>$questionnaireId, // 问卷id 'user_name' =>$userName, // 问卷创立者 'number' =>$NewSubjectNumber, // 题号 'title' =>$NewSubjectTitle, // 题目 'type' =>$NewSubjectType, // 题目类型(单项选择,多项选择,简答) 'delete_token' =>0, // 删除标记 'created_at' =>$created_at, // 创立时间 'updated_at' =>$updated_at) // 更新时间 ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } /*修改指定题目的值 * *@returnResponse */ publicfunctionupdatesubject($userName,$questionnaireId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此问卷表所包含的所有题目 $Questionnaire=Questionnaire::where('id',$questionnaireId)->first(); // 此问卷表创立者与登录用户一致 if($Questionnaire->user_name==$userName) { // 处理添加新题目的表单 if((!empty($_POST['UpdateSubjectNumber']))&&(!empty($_POST['UpdateSubjectTitle']))&&(!empty($_POST['SubjectId']))) { $SubjectId=$_POST['SubjectId']; $UpdateSubjectNumber=$_POST['UpdateSubjectNumber']; $UpdateSubjectTitle=$_POST['UpdateSubjectTitle']; // 更新一行记录 $subject_id=Subject::where('id',$SubjectId)->update( array( 'number'=>$UpdateSubjectNumber, // 题号 'title' =>$UpdateSubjectTitle // 题目 ) ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } /*删除指定题目的值 * *@returnResponse */ publicfunctiondeletesubject($userName,$subjectId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此问卷表所包含的所有题目 $Questionnaire=Questionnaire::where('id',$subjectId)->first(); // 此问卷表创立者与登录用户一致 if($Questionnaire->user_name==$userName) { // 处理删除题目的表单 if((!empty($_POST['SubjectId']))) { $SubjectId=$_POST['SubjectId']; // 更新一行记录,将删除标记置1 $subject_id=Subject::where('id',$SubjectId)->update( array( 'delete_token' =>1 // 删除标记 ) ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** *题目编辑 * *@returnResponse */ publicfunctionsubject($userName,$subjectId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此题目所包含的所有选项 $Subject=Subject::where('id',$subjectId)->first(); // 此题目创立者与登录用户一致 if($Subject->user_name==$userName) { $OptionsList=$Subject->hasManyOption()->where('delete_token','0')->orderBy('number')->get(); $Alphabet=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); $OptionNumber=array(); foreach($OptionsListas$Option) { array_push($OptionNumber,$Option->number); } $otherOptionNumber=array_diff($Alphabet,$OptionNumber); returnview('userconsole.subject')->with("OptionsList",$OptionsList) // 选项列表 ->with("QuestionnaireId",$Subject->questionnaire_id) // 问卷ID ->with("SubjectId",$subjectId) // 题目ID ->with("SubjectIdType",$Subject->type) // 题目类型 ->with("SubjectIdTitle",$Subject->title) // 题目内容 ->with("SubjectIdNumber",$Subject->number) // 题号 ->with("OptionsCount",$Subject->option_count) // 某选项已选次数 ->with("OptionNumbers",$otherOptionNumber); // 可用选项 } } // 显示错误信息 returnview('errors.authority'); } /*给指定题目添加新选项 * *@returnResponse */ publicfunctionaddoption($userName,$subjectId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此题目所包含的所有选项 $Subject=Subject::where('id',$subjectId)->first(); // 此题目创立者与登录用户一致 if($Subject->user_name==$userName) { // 处理添加新选项的表单 if((!empty($_POST['NewOptionNumber']))&&(!empty($_POST['NewOptionValue']))) { $NewOptionNumber=$_POST['NewOptionNumber']; $NewOptionValue=$_POST['NewOptionValue']; // 插入一行记录 $created_at=$updated_at=date('Y-m-dH:i:s'); $option_id=Option::insertGetId( array('subject_id' =>$subjectId, // 题目id 'user_name' =>$userName, // 问卷创立者 'number' =>$NewOptionNumber, // 选项号(A、B、C、D...) 'title' =>$NewOptionValue, // 选项内容 'select_count' =>0, // 选择数目 'delete_token' =>0, // 删除标记 'created_at' =>$created_at, // 创立时间 'updated_at' =>$updated_at) // 更新时间 ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } /*修改指定工程的值 * *@returnResponse */ publicfunctionupdateoption($userName,$subjectId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此题目所包含的所有选项 $Subject=Subject::where('id',$subjectId)->first(); // 此题目创立者与登录用户一致 if($Subject->user_name==$userName) { // 处理添加新选项的表单 if((!empty($_POST['OptionId']))&&(!empty($_POST['UpdateOptionValue']))) { $OptionId=$_POST['OptionId']; $UpdateOptionValue=$_POST['UpdateOptionValue']; // 更新一行记录 $option_id=Option::where('id',$OptionId)->update( array( 'title' =>$UpdateOptionValue // 选项内容 ) ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } /*删除指定工程的值 * *@returnResponse */ publicfunctiondeleteoption($userName,$subjectId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此题目所包含的所有选项 $Subject=Subject::where('id',$subjectId)->first(); // 此题目创立者与登录用户一致 if($Subject->user_name==$userName) { // 处理删除选项的表单 if((!empty($_POST['OptionId']))) { $OptionId=$_POST['OptionId']; // 更新一行记录,将删除标记置1 $option_id=Option::where('id',$OptionId)->update( array( 'delete_token' =>1 // 删除标记 ) ); return"success"; } else { return"inputnull"; } } } // 显示错误信息 returnview('errors.authority'); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// /*提交结果统计选择 * *@returnResponse */ publicfunctionsubmitresult($userName,$questionnaireId) { // 登陆用户正确,显示用户控制台 if(Session::has('auth_state')&&Session::get('user_name')==$userName) { // 此问卷表所包含的所有题目 $Questionnaire=Questionnaire::where('id',$questionnaireId)->first(); $QuestionnaireCount=$Questionnaire->counts; // 问卷提交量 $SubjectArray=array(); // 存储题目信息的数组 // 此问卷表创立者与登录用户一致 if($Questionnaire->user_name==$userName) { $SubjectsList=$Questionnaire->hasManySubject()->where('delete_token','0')->orderBy('number')->get(); $SubjectsArray=array(); foreach($SubjectsListas$OneSubject) { $Subject=array(); $Subject["id"]=$OneSubject->id; // 题目id $Subject["questionnaire_id"]=$OneSubject->questionnaire_id; // 问卷id $Subject["user_name"]=$OneSubject->user_name; // 问卷创立者 $Subject["number"]=$OneSubject->number; // 题号 $Subject["title"]=$OneSubject->title; // 题目 $Subject["type"]=$OneSubject->type; // 题目类型(单项选择,多项选择,简答) $Subject["option_count"]=$OneSubject->option_count; // 选项数目 $Subject["delete_token"]=$OneSubject->delete_token; // 删除标记 $Subject["options"]=array(""); // 题目的选项 // 此题对应的选项 $OptionArray=array(); if($OneSubject->type!="简答题") { $Subject["options"]=$OneSubject->hasManyOption()->where('delete_token','0')->orderBy('number')->get(); } array_push($SubjectsArray,$Subject); } returnview('userconsole.result')->with('Questionnaires',$Questionnaire) // 问卷根本信息 ->with(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理技术铺床
- 能源审计与节能技术实施手册
- 输变电工程施工安全管理及风险控制方案编制纲要模板
- 2026年剧本杀运营公司快递收发管理制度
- 2025年电力设施巡检与故障排除手册
- 互感器校验培训课件
- 全期护理中的跨学科合作
- 护理专业春季护理信息技术应用
- 2025年智慧农业五年物联网应用报告
- 云南英文介绍
- 14J936《变形缝建筑构造》
- 地产绿化景观规划方案
- 2024年安全员之B证(项目负责人)考试题库(含答案)
- 儿童性格发展与个性独立性的培养
- 胸外科-胸部创伤
- 2024届河北省石家庄市普通高中学校毕业年级教学质量摸底检测物理试卷含答案
- 2023版设备管理体系标准
- 苏教版数学五年级上册 期末冲刺测评卷(一)(含答案)
- 第四讲 Meta分析的数据提取与分析-课件
- 宫内节育器放置术
- 外墙涂料安全交底
评论
0/150
提交评论