资源描述
电影分类与赏析系统的设计与实现摘 要 这个系统的设计和开发,主要实现电影的分类,评价,评论功能,与用户对话,通过评论在用户之间进行交流的电影分类和鉴赏系统的开发为目的。这个系统使用Visual Studio Code开发工具,数据库是MongoDB环境。系统开发过程是指软件项目管理的开发过程,通过多个过程来描述程序。项目的明确化,项目要求的描述,整体框架的设计,代码的实现,以及项目的测试。对于种类繁多的电影和口碑电影,有合理的、系统的电影分类和评价,观众可以选择更有参与感的喜欢的电影。观众十分舒适的和其他用户的沟通的需求,为了满足作为观看者,使观众找到符合自己口味的电影,既满足用户间沟通的欲望,又成为其他用户的导游。鼓励观众发言,刺激中国电影产业,提高观众的审美素质关键词:电影分类;Node.js;MongoDB;前端三件套;JavaScriptDesign and Implementation of Film Classification and Appreciation SystemAbstractThe design and development of this system mainly implements the functions of movie classification, evaluation, comment, dialogue with users, and the development of a movie classification and appreciation system that communicates between users through comments. This system uses Visual Studio Code development tools, and the database is a MongoDB environment. The system development process refers to the development process of software project management, describing the program through multiple processes. Clarification of the project, description of the project requirements, design of the overall framework, implementation of the code, and testing of the project. For a wide variety of movies and word-of-mouth movies, there are reasonable and systematic movie classifications and evaluations, and viewers can choose favorite movies that are more engaging. The audience is very comfortable with the needs of communication with other users. In order to meet the viewers and make the audience find movies that meet their own tastes, it not only satisfies the desire for communication between users, but also becomes a guide for other users. Encourage the audience to speak, stimulate the Chinese film industry and improve the aesthetic quality of the audienceKeywords: movie classification; Node.js; MongoDB; front-end three-piece suit;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.1 E-R图104.3.2数据库表设计115详细设计与实现125.1系统总体架构和模块设计概述125.2模块设计与实现135.2.1用户模块135.2.2管理员模块136页面设计及详细的实现156.1 login界面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致 谢381前言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需求分析电影分类与赏析系统主要需求包括(1) 用户的注册:将注册信息上传到数据库中(2) 用户登录:对照数据库中的邮箱地址比对用户输入的密码,比对成功后,用户进入首页(3) 用户信息修改:用户在修改页面,修改自己的信息,并更新数据库(4) 用户上传电影:用户上传的电影在电影列表,上传成功后刷新页面(5) 用户上传评论:用户上传评论在评论列表,成功后刷新评论页面(6) 管理员删除用户:管理员在用户管理界面可以删除用户2.2.1电影分类与赏析系统的功能需求电影分类与赏析系统的角色有用户,管理员。用户的功能有:用户在电影中添加评论以及上传电影。管理员的功能有:删除,查询,用户等。2.2.2系统运行需求本地PC系统为win10,使用web本地服务器为Windows PowerShell。浏览器为火狐浏览器。2.3开发可行性分析在win10系统用visual studio code开发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,代码开发软件为visual studio code 、数据贮存在MongoDB。 3.2系统开发技术简介node.js是基于Chrome V8引擎的JavaScript执行环境。node.js采用了事件驱动、无阻塞I/O的模型。1Node是用于在服务端运行JavaScript的开发平台,它是与Python 、PHP、Perl、Ruby等服务端语言相同的脚本语言。2 2009年5月由Ryan Dahl开发,安装了Chrome V8引擎。Node优化了一些特殊的使用情况,提供了替换的API,使得V8可以在非浏览器环境中运行流畅。V8引擎执行Javascript的速度非常快,性能良好。该节点是在执行Chrome JavaScript时构建的平台,可以轻松构建响应速度快、易于扩展的网络应用。节点使用事件驱动,非常适合在分布式设备上运行数据密集型实时应用,而不阻塞I/O模型。JavaScript (JavaScript,缩写:JS)是编程语言的一种。为了开发web网页的脚本语言而闻名,但更多的非浏览器环境中被利用,而javascript原型编程, 多范式的动态脚本语言为基础,面向对象,命令型,宣言(函数型编程等)风格的支持。1995年,Netscape公司的Brendan Eich首次在web浏览器上设计并实现了JavaScript。Netscape与Sun合作,Netscape的管理层希望Netscape看起来像Java,所以取名为JavaScript。但实际上语法风格接近Self或Scheme。JavaScript的标准是ECMAScript。2012年,所有浏览器都完全支持ECMAScript 5.1。2015年6月17日,ECMA国际发布了ECMAScript 2015的第六版。Visual Studio Code,简称VSCode,是微软公司下的开源免费的代码书写软件,自动纠错,自动代码补全,方便好用,界面清新简洁,开发起来不会眼花缭乱。很人性化Mongodb数据库对比SQL,mysql,语言较为简洁,容易上手,小型数据库使用利器,易扩展,特别是前后端一体的软件非常合适。4总体设计1. 使用HTML与CSS完成前端页面的设计与展现,使用JavaScript对页面进行处理优化。2. 使用express框架简化书写代码。3使用art-template模板引擎对电影详情页进行渲染,实现界面自更新。4连接MongoDB数据库,管理用户与电影等资源,实现数据的更新。4.1用户(观众)总体设计用户注册:用户通过输入个人信息,界面通过点击注册按钮事件,将自己的信息传入数据库,数据库自行生成新的用户身份。用户登录:用户通过登录后数据库得到用户个人信息、个人ID。用户评论:新的身份获得权限进行评论与功能。系统将自动更新至数据库。用户上传:用户可自行上传电影,按照系统中的电影模块,进行顺序的添加。4.2管理员总体设计用户信息管理:管理员通过查删权限更新用户的信息实现管理,用户信息包涵用户ID号用户年龄、用户姓名、用户号码、用户邮箱。电影管理:管理员可通过查删的权限对电影进行更新,添加,下架,查询等操作电影管理包括连接电影与导演,主演,编剧,年份,地区,语言等。还需将电影进行分类存入数据库。4.3数据设计4.3.1 E-R图管理员模块:管理员admin 1电影名ID号HA管理电影类型语言姓名电话电影信息用户信息 N N内容邮箱密码年份地区 N N用户上传用户评论评论的电影查询删除查询用户(观众)usersID号密码姓名用户(观众)模块:用户(观众) 1管理 1 1用户信息 1 上传评论密码评论上传电影上传用户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来实现界面。通过界面中的点击按钮事件,把界面所发出的请求发送到node router,由 router node request 响应请求, 本系统由四个模板组成:管理员模块用户模块电影模块和评论模块。总体实现思路是HTML页面编写好后,生成对应的art后缀的文件便于模板引擎的识别,在art文件的a连接上填写其他页面的art后缀文件,提交get请求到对应的路由文件中(router),对链接进行相应的跳转,当需要渲染页面信息时,在form表单中填写处理请求地址使用post提交方式,将数据库中的信息渲染到页面中。接下来分为四个模块进行类似操作。5.2模块设计与实现5.2.1用户模块5.2.1.1用户注册用户注册页面中,输入个人信息后通过点击注册按钮触发事件,HTML页面中填写用户名,密码,电话,邮箱,年龄。以邮箱为唯一标识,一个邮箱只能注册一个用户。通过req.body拿到用户注册页面中用户填写的信息,creat方法添加到数据库中,用户点击提交后跳转回到longin页面进行登录,登陆成功则标识注册成功。密码进行bcrypt的方式进行加密,保障用户隐私。5.2.1.2用户登录用户在没有注册前尝试登录,会弹出提示,密码或邮箱不正确,当用户注册完成后进行登录,信息输入正确后则登陆成功进入首页,根据findone方法查询数据库中的邮箱是否存在,存在则对密码进行比对,比对通过后,就可进入首页,当使用者在未登录的情况下试图访问其他页面时则会被编写的loginguard路由拦截,重新定向回登录页面5.2.1.3用户信息修改当用户进入首页后便可进行自己的信息修改,用户的信息修改页面和注册页面实际上是同一个页面,为了能够分开处理,编写了一个判断条件,当用户从首页访问的修改页面时,在地址栏添加一个?name=modify,如果地址栏出现这个单词,则实现用户信息修改功能,若地址了没有这个单词,则执行注册页面的请求。当用户访问用户信息修改页面成功时,该用户对应的原始信息除了密码外已被模板引擎渲染显示在了输入框中,以此来完成查询操作。当用户修改了信息点击提交按钮后,数据库信息则被刷新。5.2.2管理员模块5.2.2.1管理员登录管理员的登录界面和用户登录界面处于一个模态框中,管理员在信息输入正确后则登陆成功进入用户管理页面,根据findone方法查询数据库中的邮箱是否存在,存在则对密码进行比对,比对通过后,就可进入用户管理页面,当使用者在未登录的情况下试图访问其他页面时则会被编写的loginguard路由拦截,重新定向回登录页面5.2.2.2管理员管理用户管理员登陆成功后就进入用户管理页面,该页面是通过art文件中的form表单发送的post请求,由user路由做出响应将数据库中的user集合的属性及对应的值响应在页面中,同时对页面实现了分页功能,一页输出十条用户信息,使用bootstrap提供的分页按钮,默认显示第一页的信息,管理员可对用户进行删除操作,删除标签绑定删除事件,对应的删除路由通过查找用户ID并使用findbyidandremove方法删除掉数据库中的此条数据,达到删除用户的效果。5.2.3电影模块5.2.3.1电影上传用户登录成功后,在首页可点击上传电影按钮,在数据库中新建一个movies集合,电影上传列表的信息在form表单当中,action属性填写处理的地址,method属性为post,表示提交post请求,将用户在表单中填写的信息添加到数据库中,生成新的数据。5.2.3.2电影列表当用户提交完上传的电影便会定向到电影列表页面,首页也能直接访问电影列表页面,页面的信息是通过模板引擎在art文件中对应的tr标签下,用$value的方式将数据库中的信息拿过来渲染到页面中,该页面也实现了分页功能,每页显示五条数据,默认显示第一页5.2.4评论模块5.2.4.1评论上传用户登录成功后,在首页可点击精彩评论按钮,直接显示评论列表页面,在评论列表页面中有一个添加评论按钮,为这个按钮绑定一个页面,请求为post,在数据库中新建一个comment集合,评论上传列表的信息在form表单当中,action属性填写处理的地址,method属性为post,表示提交post请求,将用户在表单中填写的信息添加到数据库中,生成新的数据。5.2.4.2评论列表当用户提交完上传的评论便会定向到评论列表页面,首页也能直接访问精彩评论页面,页面的信息是通过模板引擎在art文件中对应的tr标签下,用$value的方式将数据库中的信息拿过来渲染到页面中,该页面也实现了分页功能,每页显示五条数据,默认显示第一页6页面设计及详细的实现6.1 login界面登录页面是bootstrap模态框界面代码展示 点击登录点击注册 × 用户登录 登录框 邮箱 密码 登录 6.2index界面页面介绍:将电影大图直接放在首页,以此美化页面,首页展示最近的热门电影,和高评分电影,直接展示在用户眼前。界面代码展示: 搜索 个人信息管理 电影上传 电影列表 精彩评论 第一监视者 穆赫兰道 逃离生存营 卢斯塔姆餐厅 爆烈之城 味色小厨 两个女人 点指兵兵 大三元 异种4 var text = 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; 6.2.1个人信息管理界面代码展示: 用户名 Username 年龄 age 手机号 +86 请输入用户手机号 邮箱 email 密码 password submit 路由展示:constUser=require(././model/user);module.exports=async(req,res)=req.app.locals.currentLink=user;constmessage,name=req.query;if(name)/修改constuser=awaitUser.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电影上传界面代码展示: 电影名 Movie name 上传用户ID Upload user id input type=text class=form-control placeholder=please enter the I
展开阅读全文