版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电影分类与赏析系统的设计与实现 摘要这个系统的设计和开发,主要实现电影的分类,评价,评论功能,与用户对话,通过评论在用户之间进行交流的电影分类和鉴赏系统的开发为目的。这个系统使用VisualStudioCode开发工具,数据库是MongoDB环境。系统开发过程是指软件项目管理的开发过程,通过多个过程来描述程序。项目的明确化,项目要求的描述,整体框架的设计,代码的实现,以及项目的测试。对于种类繁多的电影和口碑电影,有合理的、系统的电影分类和评价,观众可以选择更有参与感的喜欢的电影。观众十分舒适的和其他用户的沟通的需求,为了满足作为观看者,使观众找到符合自己口味的电影,既满足用户间沟通的欲望,又成为其他用户的导游。鼓励观众发言,刺激中国电影产业,提高观众的审美素质关键词:电影分类;Node.js;MongoDB;前端三件套;JavaScriptDesignandImplementationofFilmClassificationandAppreciationSystemAbstractThedesignanddevelopmentofthissystemmainlyimplementsthefunctionsofmovieclassification,evaluation,comment,dialoguewithusers,andthedevelopmentofamovieclassificationandappreciationsystemthatcommunicatesbetweenusersthroughcomments.ThissystemusesVisualStudioCodedevelopmenttools,andthedatabaseisaMongoDBenvironment.Thesystemdevelopmentprocessreferstothedevelopmentprocessofsoftwareprojectmanagement,describingtheprogramthroughmultipleprocesses.Clarificationoftheproject,descriptionoftheprojectrequirements,designoftheoverallframework,implementationofthecode,andtestingoftheproject.Forawidevarietyofmoviesandword-of-mouthmovies,therearereasonableandsystematicmovieclassificationsandevaluations,andviewerscanchoosefavoritemoviesthataremoreengaging.Theaudienceisverycomfortablewiththeneedsofcommunicationwithotherusers.Inordertomeettheviewersandmaketheaudiencefindmoviesthatmeettheirowntastes,itnotonlysatisfiesthedesireforcommunicationbetweenusers,butalsobecomesaguideforotherusers.Encouragetheaudiencetospeak,stimulatetheChinesefilmindustryandimprovetheaestheticqualityoftheaudienceKeywords:movieclassification;Node.js;MongoDB;front-endthree-piecesuit;JavaScript
目录1前言 61.1研究的现状及其意义 61.1.1选题背景 61.2研究目标、研究内容和需要解决的关键问题 62电影分类与赏析系统分析 72.1电影分类与赏析系统初步调查分析 72.1.1电影分类与赏析系统的必要性 72.1.2电影分类与赏析系统的特点及注意事项 72.2需求分析 72.2.1电影分类与赏析系统的功能需求 82.2.2系统运行需求 82.3开发可行性分析 82.3.1技术可行性分析 82.3.2系统易操作性 83电影分类与赏析系统工具及关键技术 83.1系统开发环境及工具 83.2系统开发技术简介 94总体设计 94.1用户(观众)总体设计 94.2管理员总体设计 104.3数据设计 104.3.1E-R图 104.3.2数据库表设计 115详细设计与实现 125.1系统总体架构和模块设计概述 125.2模块设计与实现 135.2.1用户模块 135.2.2管理员模块 136页面设计及详细的实现 156.1login界面 156.2index界面 176.2.1个人信息管理 206.2.2电影上传 226.2.3电影列表 246.2.4评论上传 256.2.5精彩评论列表 276.3管理员管理用户界面 286.3.1注册页面 306.3.2文件的管理 327系统测试 337.1测试概要 337.1.1测试用例设计 337.1.2测试环境配置 337.1.3测试方法 337.2主要测试用例 348结论 36参考文献 37致谢 38
1前言1.1研究的现状及其意义1.1.1选题背景目前网络总的电影资源庞大,而质量却稂莠不齐,许多观众观看电影后表示并不像宣传的那么好,浪费时间,且没有收获。而有些口碑极好的电影却鲜为人知。大部分观众观看完之后没有分享自己的感想,对其他人起不到分享和借鉴作用当今社会中,更智能的信息整合分配系统走入人们的生活,利用赏析软件帮助读者快速找到自己所喜欢且有价值的电影。所以需要在如此庞大的电影资源中整合分类出最合适的读者且有良好的观看体验十分有必要。更为人性化的界面设计,满足了顾客浏览的舒适感和满足与其他用户的交流需求,自己作为欣赏人的同时也成为了引路人。电影分类系统相比之前的海量电影自由选择更具优势,是能够让观众在最短的时间内找到合自己口味的电影,并且满足了用户的交流欲望。鼓励观影人发声,刺激中国电影行业,提高观众的审美素质。1.2研究目标、研究内容和需要解决的关键问题研究目的主要是:一、熟悉Node.js原理的开发,以及在web当中的开发应用。二、搭建服务器。详细方面有以下几个:1)理解掌握javscrip语言的语法提高编程能力。2)理解node.js原理。3)了解前后端一体化构建项目流程。4)电影分类与赏析系统开发实现用户注册和登录。5)让电影分类与赏析系统界面的操作简便。6)实现用户的评论功能。7)实现用户对电影的评分功能。8)实现模板引擎对电影列表界面的电影简介渲染。9)实现用户与电影细节连接数据库。10)实现电影的分类细化。项目研究内容为:《电影分类与赏析系统的设计与实现》,系统主要功能实现用户对电影的评论,上传,以及电影的分类。详细内容:1)使用HTML与CSS搭建网页画面的框架和设计。2)搭建服务器连接MongoDB数据库。3)使用art-template模板引擎渲染页面实现页面的自更新。4)编写请求事件对应的路由来解决请求的问题。5)系统是否运行安全可靠、是否易于扩展。2电影分类与赏析系统分析2.1.0电影分类与赏析系统初步调查分析目前网络在整个电影的资源庞大,品质却是稂莠不齐,许多观众在看电影后说:“电影并没有宣传的那么好,浪费了时间,却没有收获”。而部分优秀电影鲜为人知。大部分的观众看到结束后,没有共享自己的感想,让其他的未观影者失去了参考。2.1.1电影分类与赏析系统的必要性电影行业的发展历程中电影分类与赏析系统的出现是不可或缺的一环,若没有电影分类与赏析系统的分类和评分以及评论功能很可能的后果是观众需要浪费大量时间在鉴别优秀电影上,可能花费了大量时间与精力仍然找不到自己喜欢的电影,面对海量的电影资源而一脸茫然,靠口耳相传的原始方式满足不了电影市场的大量用户,此时则需要一款能够对电影分类并评分的系统,让观众根据电影类别,电影评分以及评论自主选择电影。所以根据以上分析:电影分类与赏析系统网站的设计与实现是电影行业发展进程中重要的环节。2.1.2电影分类与赏析系统的特点及注意事项电影分类与赏析系统的特点:电影分类与赏析系统是独立运行的系统电影分类与赏析系统的特点具有很好的保护数据完整性的和连续性,然而,系统的功能需求需要经过程序员缜密的思考,防止出现漏洞,和纰漏。如当用户在未登录的情况下禁止访问主页和,电影信息列表页面,所以应当撰写登陆拦截路由,对未登录的操作进行重定向会登录页面等等。在系统开发中,需要考虑数据的交互能力和吞吐量问题。主要注意事项:保护好用户的隐私。2.2需求分析电影分类与赏析系统主要需求包括用户的注册:将注册信息上传到数据库中用户登录:对照数据库中的邮箱地址比对用户输入的密码,比对成功后,用户进入首页用户信息修改:用户在修改页面,修改自己的信息,并更新数据库用户上传电影:用户上传的电影在电影列表,上传成功后刷新页面用户上传评论:用户上传评论在评论列表,成功后刷新评论页面管理员删除用户:管理员在用户管理界面可以删除用户2.2.1电影分类与赏析系统的功能需求电影分类与赏析系统的角色有用户,管理员。用户的功能有:用户在电影中添加评论以及上传电影。管理员的功能有:删除,查询,用户等。2.2.2系统运行需求本地PC系统为win10,使用web本地服务器为WindowsPowerShell。浏览器为火狐浏览器。2.3开发可行性分析在win10系统用visualstudiocode开发HTML和JavaScript源码,运行的浏览器为技术较新的浏览器。运行环境为Node.js,非block的输入输出模型,轻量又高效。因此该项目在系统可行性分析上是能实现的。2.3.1技术可行性分析利用MongoDB数据库连接系统,并用art-template模板引擎渲染页面,art-template本身语言难度不大,MongoDB语句难度低于数据库语言,Node.js运行环境本身也使用JavaScript语句,且原理清晰简单。买一送二降低可实现难度。2.3.2系统易操作性用户可在电影详情界面、操作自己的信息,以及上传评论和上传电影。3电影分类与赏析系统工具及关键技术3.1系统开发环境及工具本系统的开发平台:PC端的系统:微软Windows10系统,64位操作系统,开发语言为JavaScript,脚本语言为,HTML,CSS,JAVASCRIPT.开发环境为Node.js,模板引擎为art-template,代码开发软件为visualstudiocode、数据贮存在MongoDB。3.2系统开发技术简介node.js是基于ChromeV8引擎的JavaScript执行环境。node.js采用了事件驱动、无阻塞I/O的模型。[1]Node是用于在服务端运行JavaScript的开发平台,它是与Python、PHP、Perl、Ruby等服务端语言相同的脚本语言。[2]2009年5月由RyanDahl开发,安装了ChromeV8引擎。Node优化了一些特殊的使用情况,提供了替换的API,使得V8可以在非浏览器环境中运行流畅。V8引擎执行Javascript的速度非常快,性能良好。该节点是在执行ChromeJavaScript时构建的平台,可以轻松构建响应速度快、易于扩展的网络应用。节点使用事件驱动,非常适合在分布式设备上运行数据密集型实时应用,而不阻塞I/O模型。JavaScript(JavaScript,缩写:JS)是编程语言的一种。为了开发web网页的脚本语言而闻名,但更多的非浏览器环境中被利用,而javascript原型编程,多范式的动态脚本语言为基础,面向对象,命令型,宣言(函数型编程等)风格的支持。1995年,Netscape公司的BrendanEich首次在web浏览器上设计并实现了JavaScript。Netscape与Sun合作,Netscape的管理层希望Netscape看起来像Java,所以取名为JavaScript。但实际上语法风格接近Self或Scheme。JavaScript的标准是ECMAScript。2012年,所有浏览器都完全支持ECMAScript5.1。2015年6月17日,ECMA国际发布了ECMAScript2015的第六版。VisualStudioCode,简称VSCode,是微软公司下的开源免费的代码书写软件,自动纠错,自动代码补全,方便好用,界面清新简洁,开发起来不会眼花缭乱。很人性化Mongodb数据库对比SQL,mysql,语言较为简洁,容易上手,小型数据库使用利器,易扩展,特别是前后端一体的软件非常合适。4总体设计使用HTML与CSS完成前端页面的设计与展现,使用JavaScript对页面进行处理优化。使用express框架简化书写代码。3使用art-template模板引擎对电影详情页进行渲染,实现界面自更新。4连接MongoDB数据库,管理用户与电影等资源,实现数据的更新。4.1用户(观众)总体设计用户注册:用户通过输入个人信息,界面通过点击注册按钮事件,将自己的信息传入数据库,数据库自行生成新的用户身份。用户登录:用户通过登录后数据库得到用户个人信息、个人ID。用户评论:新的身份获得权限进行评论与功能。系统将自动更新至数据库。用户上传:用户可自行上传电影,按照系统中的电影模块,进行顺序的添加。4.2管理员总体设计 用户信息管理:管理员通过查删权限更新用户的信息实现管理,用户信息包涵用户ID号用户年龄、用户姓名、用户号码、用户邮箱。电影管理:管理员可通过查删的权限对电影进行更新,添加,下架,查询等操作电影管理包括连接电影与导演,主演,编剧,年份,地区,语言等。还需将电影进行分类存入数据库。4.3数据设计4.3.1E-R图管理员模块:管理员admin管理员admin1电影名ID号电影名ID号HA管理电影类型语言姓名电话电影类型语言姓名电话电影信息用户信息NN电影信息用户信息内容内容邮箱密码邮箱密码年份地区NN年份地区用户上传用户评论用户上传用户评论评论的电影评论的电影查询删除查询查询删除查询用户(观众)users用户(观众)usersIID号密码姓名密码姓名用户(观众)模块:用户(观众)用户(观众)1管理管理11用户信息1用户信息上传上传评论评论密码密码评论上传电影上传评论上传电影上传用户用户ID号ID号密码姓名4.3.2数据库表设计总数据库表表名中文描述表名功能说明Users用户表记录用户相关信息Films电影表记录电影相关信息Comments评论表记录该评论和评论来源Users用户表表名Users列名数据类型长度是否必填约束条件中文备注idString不限是唯一,标识用户ID主键userameString64是无课程编码EmailString64是无用户邮箱PnumberNumber64否无用户电话PasswordString64是无用户密码ageNumber120否无用户年龄Moviess电影表表名Moviess列名数据类型长度是否必填约束条件中文描述备注idString64是唯一,标识方案ID主键MovietypeString64是无电影类型movienamerString200是无电影名ContentString200是无内容movieareaString50否无地区MoviesyearsString200否无年代UploaderString200否无上传用户的IDComments评论表表名Comments列名数据类型长度是否必填约束条件中文描述备注idString64是唯一,标识评论ID主键FilmnameString64是无是否通过的当前状态CommentderString200是无上传用户的IDContentsString1000是无评论5详细设计与实现5.1系统总体架构和模块设计概述电影分类与赏析系统的开发实现:通过操作MongoDB对数据库实现改删增查,使用HTML,CSS,JavaScript来实现界面。通过界面中的点击按钮事件,把界面所发出的请求发送到noderouter,由routernoderequest响应请求,本系统由四个模板组成:①管理员模块②用户模块③电影模块和评论模块。总体实现思路是HTML页面编写好后,生成对应的art后缀的文件便于模板引擎的识别,在art文件的a连接上填写其他页面的art后缀文件,提交get请求到对应的路由文件中(router),对链接进行相应的跳转,当需要渲染页面信息时,在form表单中填写处理请求地址使用post提交方式,将数据库中的信息渲染到页面中。接下来分为四个模块进行类似操作。5.2模块设计与实现5.2.1用户模块用户注册用户注册页面中,输入个人信息后通过点击注册按钮触发事件,HTML页面中填写用户名,密码,电话,邮箱,年龄。以邮箱为唯一标识,一个邮箱只能注册一个用户。通过req.body拿到用户注册页面中用户填写的信息,creat方法添加到数据库中,用户点击提交后跳转回到longin页面进行登录,登陆成功则标识注册成功。密码进行bcrypt的方式进行加密,保障用户隐私。用户登录用户在没有注册前尝试登录,会弹出提示,密码或邮箱不正确,当用户注册完成后进行登录,信息输入正确后则登陆成功进入首页,根据findone方法查询数据库中的邮箱是否存在,存在则对密码进行比对,比对通过后,就可进入首页,当使用者在未登录的情况下试图访问其他页面时则会被编写的loginguard路由拦截,重新定向回登录页面用户信息修改当用户进入首页后便可进行自己的信息修改,用户的信息修改页面和注册页面实际上是同一个页面,为了能够分开处理,编写了一个判断条件,当用户从首页访问的修改页面时,在地址栏添加一个?name=modify,如果地址栏出现这个单词,则实现用户信息修改功能,若地址了没有这个单词,则执行注册页面的请求。当用户访问用户信息修改页面成功时,该用户对应的原始信息除了密码外已被模板引擎渲染显示在了输入框中,以此来完成查询操作。当用户修改了信息点击提交按钮后,数据库信息则被刷新。5.2.2管理员模块管理员登录管理员的登录界面和用户登录界面处于一个模态框中,管理员在信息输入正确后则登陆成功进入用户管理页面,根据findone方法查询数据库中的邮箱是否存在,存在则对密码进行比对,比对通过后,就可进入用户管理页面,当使用者在未登录的情况下试图访问其他页面时则会被编写的loginguard路由拦截,重新定向回登录页面管理员管理用户管理员登陆成功后就进入用户管理页面,该页面是通过art文件中的form表单发送的post请求,由user路由做出响应将数据库中的user集合的属性及对应的值响应在页面中,同时对页面实现了分页功能,一页输出十条用户信息,使用bootstrap提供的分页按钮,默认显示第一页的信息,管理员可对用户进行删除操作,删除标签绑定删除事件,对应的删除路由通过查找用户ID并使用findbyidandremove方法删除掉数据库中的此条数据,达到删除用户的效果。5.2.3电影模块电影上传用户登录成功后,在首页可点击上传电影按钮,在数据库中新建一个movies集合,电影上传列表的信息在form表单当中,action属性填写处理的地址,method属性为post,表示提交post请求,将用户在表单中填写的信息添加到数据库中,生成新的数据。电影列表当用户提交完上传的电影便会定向到电影列表页面,首页也能直接访问电影列表页面,页面的信息是通过模板引擎在art文件中对应的tr标签下,用{{$value…}}的方式将数据库中的信息拿过来渲染到页面中,该页面也实现了分页功能,每页显示五条数据,默认显示第一页5.2.4评论模块评论上传用户登录成功后,在首页可点击精彩评论按钮,直接显示评论列表页面,在评论列表页面中有一个添加评论按钮,为这个按钮绑定一个页面,请求为post,在数据库中新建一个comment集合,评论上传列表的信息在form表单当中,action属性填写处理的地址,method属性为post,表示提交post请求,将用户在表单中填写的信息添加到数据库中,生成新的数据。评论列表当用户提交完上传的评论便会定向到评论列表页面,首页也能直接访问精彩评论页面,页面的信息是通过模板引擎在art文件中对应的tr标签下,用{{$value…}}的方式将数据库中的信息拿过来渲染到页面中,该页面也实现了分页功能,每页显示五条数据,默认显示第一页6页面设计及详细的实现6.1login界面登录页面是bootstrap模态框界面代码展示<body><astyle="display:block;width:200px;height:42px;line-height:42px;font-size:18px;text-align:center;margin:40pxauto;font-weight:800;"href="#"class="tbox">点击登录</a><astyle="display:block;width:200px;height:42px;line-height:42px;font-size:18px;text-align:center;margin:40pxauto;font-weight:800;"href="/admin/am-user"class="">点击注册</a><divclass="modalfade"id="myModal"><divclass="modal-dialog"><divclass="modal-content"><divclass="modal-header"><buttontype="button"class="close"data-dismiss="modal"aria-label="Close"><spanaria-hidden="true">×</span></button></div><h3>用户登录</h3><divclass="modal-body"><h4class="modal-title"align="center">登录框</h4><br/><formclass="form-horizontal"role="form"action="/admin/login"method="post"id="loginForm"><divclass="form-group"><labelfor="name"class="col-sm-offset-2col-sm-2control-label">邮箱</label><divclass="col-sm-5"><inputname="email"type="email"class="form-control"id="name"placeholder="请输您的入邮箱"></div></div><divclass="form-group"><labelfor="password"class="col-sm-offset-2col-sm-2control-label">密码</label><divclass="col-sm-5"><inputname="password"type="password"class="form-control"id="password"placeholder="请输入您的密码"></div></div><divclass="form-group"><divclass="col-sm-offset-4col-sm-5"><buttonid="submitBtn"type="submit"class="btnbtn-defaultbtn-blockbtn-primary">登录</button></div></div></form></div>6.2index界面页面介绍:将电影大图直接放在首页,以此美化页面,首页展示最近的热门电影,和高评分电影,直接展示在用户眼前。界面代码展示:<div><divclass="serch"><inputtype="text"value="输入关键词"><button>搜索</button></div><divclass="loginbutton"><ahref="/admin/am-user?name=modify"><button>个人信息管理</button></a></div><divclass="loginbutton"><ahref="/admin/am-movie"><button>电影上传</button></a></div><divclass="loginbutton"><ahref="/admin/movies"><button>电影列表</button></a></div><divclass="loginbutton"><ahref="/admin/comment"><button>精彩评论</button></a></div><divclass="useless"></div><divclass="banner"><divclass="w"></div></div><divclass="mainwidth"><divclass="w"><divclass="imgItem1"><ahref="movies.html"><imgsrc="images/1.jpg"alt="第一监视者"width="250"height="360">第一监视者</a></div><divclass="imgItem2"><ahref="#"><imgsrc="images/2.jpg"alt="穆赫兰道"width="250"height="360">穆赫兰道</a></div><divclass="imgItem3"><ahref="#"><imgsrc="images/3.jpg"alt="逃离生存营"width="250"height="360">逃离生存营</a></div><divclass="imgItem4"><ahref="#"><imgsrc="images/4.jpg"alt="卢斯塔姆餐厅"width="250"height="360">卢斯塔姆餐厅</a></div><divclass="imgItem5"><ahref="#"><imgsrc="images/5.jpg"alt="爆烈之城"width="250"height="360">爆烈之城</a></div><divclass="imgItem6"><ahref="#"><imgsrc="images/6.jpg"alt="味色小厨"width="250"height="360">味色小厨</a></div><divclass="imgItem7"><ahref="#"><imgsrc="images/7.jpg"alt="两个女人"width="250"height="360">两个女人</a></div><divclass="imgItem8"><ahref="#"><imgsrc="images/8.jpg"alt="点指兵兵"width="250"height="360">点指兵兵</a></div><divclass="imgItem9"><ahref="#"><imgsrc="images/9.jpg"alt="大三元"width="250"height="360">大三元</a></div><divclass="imgItem10"><ahref="#"><imgsrc="images/10.jpg"alt="异种4"width="250"height="360">异种4</a></div></div></div><script>vartext=document.querySelector('input');text.onfocus=function(){if(this.value==='输入关键词'){this.value='';}this.style.color='#333';}text.onblur=function(){if(this.value===''){this.value='请输入关键词';}this.style.color='#999';}</script></body>6.2.1个人信息管理界面代码展示:</div><!--Defaultpanelcontents--><labelfor="Username"style="font-weight:100;font-size:20px;">用户名</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon1">Username</span><inputname="username"type="text"class="form-control"placeholder="pleaseentertheusername"aria-describedby="basic-addon1"value="{{user&&user.username}}"></div><labelfor="age"style="font-weight:100;font-size:20px;">年龄</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon2">age</span><inputname="age"type="text"class="form-control"placeholder="pleaseenteryourage"aria-describedby="basic-addon2"value="{{user&&user.age}}"></div><labelfor="pnumber"style="font-weight:100;font-size:20px;">手机号</label><divclass="input-group"><spanclass="input-group-addon">+86</span><inputname="pnumber"type="text"class="form-control"aria-label="Amount(tothenearestdollar)"placeholder="pleaseentertheelven-digitphonenumber(11位)"value="{{user&&user.pnumber}}"><spanclass="input-group-addon">请输入用户手机号</span></div><labelfor="email"style="font-weight:100;font-size:20px;">邮箱</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon3">email</span><inputname="email"type="email"class="form-control"id="basic-url"aria-describedby="basic-addon3"placeholder='pleaseenteremaillikexxx@'value="{{user&&user.email}}"></div><labelfor="email"style="font-weight:100;font-size:20px;">密码</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon3">password</span><inputname="password"type="password"class="form-control"id="basic-url"aria-describedby="basic-addon3"placeholder='pleaseenterthepassword'></div><divclass="btn-groupadd11"role="group"aria-label="..."><buttontype="submit"class="btnbtn-default">submit</button></div></div>路由展示:const
{
User
}
=
require('../../model/user');module.exports
=
async
(req,
res)
=>
{
req.app.locals.currentLink
=
'user';
const
{
message,
name
}
=
req.query;
if
(name)
{
//修改
const
user
=
await
User.findOne({
_id:
req.session._id
})
//渲染用户编辑页面(修改页面)
res.render('admin/am-user',
{
msg:
req.session.username,
message:
message,
user:
user,
link:
'/admin/user-modify?id',
});
}
else
{
//注册页面
res.render('admin/am-user',
{
//
msg:
req.session.username,
message:
message,
link:
'/admin/am-user',
});
}}6.2.2电影上传界面代码展示:<formaction="/admin/movies"method="post"><divclass="main-body"><divclass="panelpanel-defaultadd9"><labelfor="Movie"style="font-weight:100;font-size:20px;">电影名</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon3">Moviename</span><inputtype="text"class="form-control"placeholder="pleaseenterthemoviename"aria-describedby="basic-addon1"name="moviename"></div><labelfor="ID"style="font-weight:100;font-size:20px;">上传用户ID</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon4">Uploaduserid</span><inputtype="text"class="form-control"placeholder="pleaseentertheIDoftheuploadinguser"aria-describedby="basic-addon2"name="uploader"value="{{@userInfo._id}}"></div><labelfor="type"style="font-weight:100;font-size:20px;">电影类型</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon4">Movietype</span><inputtype="text"class="form-control"placeholder="pleaseenterthetypeoftheMovie"aria-describedby="basic-addon2"name="movietype"></div><labelfor="area"style="font-weight:100;font-size:20px;">电影地区</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon4">Moviearea</span><inputtype="text"class="form-control"placeholder="pleaseentertheareaoftheMovie"aria-describedby="basic-addon2"name="moviearea"></div><labelfor="Years"style="font-weight:100;font-size:20px;">电影年代</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon4">Years</span><inputtype="text"class="form-control"placeholder="pleaseentertheYearsoftheMovie"aria-describedby="basic-addon2"name="movieyears"></div><labelfor="content"style="font-weight:100;font-size:30px;">内容</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon5">Content</span><textareaname="content"class="form-control"id="editor"></textarea></div><divclass="btn-groupadd11"role="group"aria-label="..."><buttontype="submit"class="btnbtn-default">submit</button></div></div></form>路由展示:const
{
Movies
}
=
require('../../model/movies')module.exports
=
async
(req,
res)
=>
{
await
Movies.create(req.body);
let
moviess
=
await
Movies.find({})
res.render('admin/movies',
{
moviess:
moviess
});}6.2.3电影列表界面代码展示:<tableclass="table"><thead><tr><td>电影名</td><td>上传者id</td><td>电影类型</td><td>电影地区</td><td>电影年份</td><td>内容</td></tr></thead><tbody>{{eachmoviess}}<tr><td>{{@$value.moviename}}</td><td>{{$value.uploader}}</td><td>{{$value.movietype}}</td><td>{{$value.moviearea}}</td><td>{{$value.movieyears}}</td><td>{{$value.content}}</td></tr>{{/each}}</tbody></table>路由展示:const
{
Movies
}
=
require('../../model/movies')module.exports
=
async
(req,
res)
=>
{
let
page
=
req.query.page
||
1;
let
pagesize
=
5;
let
count
=
await
Movies.countDocuments({});
let
total
=
Math.ceil(count
/
pagesize);
let
start
=
(page
-
1)
*
pagesize;
let
moviess
=
await
Movies.find({}).limit(pagesize).skip(start)
res.render('admin/movies',
{
moviess:
moviess,
page:
page,
total:
total,
});}6.2.4评论上传界面代码展示:<formaction="/admin/am-comment"method="post"><divclass="main-body"><divclass="panelpanel-defaultadd9"><labelfor="Movie"style="font-weight:100;font-size:20px;">电影名</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon3">Moviename</span><inputtype="text"class="form-control"placeholder="pleaseenterthemoviename"aria-describedby="basic-addon1"name="filmname"></div><labelfor="ID"style="font-weight:100;font-size:20px;">上传用户名</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon4">Uploaduserid</span><inputtype="text"class="form-control"placeholder="pleaseentertheIDoftheuploadinguser"aria-describedby="basic-addon2"name="commentder"></div><labelfor="content"style="font-weight:100;font-size:30px;">内容</label><divclass="input-group"><spanclass="input-group-addon"id="basic-addon5">Content</span><textareaname="contents"class="form-control"id="editor"></textarea></div><divclass="btn-groupadd11"role="group"aria-label="..."><buttontype="submit"class="btnbtn-default">submit</button></div></div></form>路由展示:const
{
Comment
}
=
require('../../model/comment')module.exports
=
async
(req,
res)
=>
{
conso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 储运装卸试题及答案
- 瓷砖瓦检测试题及答案
- 护理机理与伦理道德
- 护理伦理与医疗伦理研究
- 护理职业生涯规划方法
- 手术室护理健康教育
- 护理营养学:关注患者饮食
- 主流新闻软文发布渠道靠谱平台横向对比:信源权重与服务品质深度评估
- 多发伤患者的压疮预防与护理
- 护理学课件学习效果提升
- 汽机专业试题及答案
- 多媒体设备验收标准
- 老旧小区改造应急预案与风险防范措施
- 新概念英语第二册课后答案全部超级详细的哦
- 小学三年级数学竖式计算题大全
- GB/T 1040.1-2025塑料拉伸性能的测定第1部分:总则
- GB/T 22107-2025气动方向控制阀切换时间的测量
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 转基因的科学-基因工程智慧树知到期末考试答案章节答案2024年湖南师范大学
- DLT 1051-2019电力技术监督导则
- 2023检测检验机构全套质量手册体系程序文件
评论
0/150
提交评论