电影网站后台描述

电影网站后台描述

修改之前老师评语:

看了看,感觉分得各级标题有点乱,就比如三,需求规定那块和你的第二部分,整合一下。首先简要介绍系统开发的目的,其次介绍系统所使用的关键技术,再次介绍系统开发的过程以及系统所实现的功能。一般情况,第一章介绍系统的研究背景、研究内容。第二章介绍采用的技术路线、研究方法。第三章介绍系统的需求分析,包括功能需求、性能需求、安全需求、软硬件需求等。第四章介绍系统设计。在概要设计阶段对系统功能模块进行划分,描述系统工作流程。在详细设计阶段,对数据进行分析,确定本系统所涉及的数据表。第五章描述系统的实现过程。首先介绍开发环境的搭建过程,然后对各功能模块的实现进行详细说明,给出部分关键代码和系统的主要界面图。最后可以总结一下。

1.系统开发的目的

编写背景

对于当下的年轻人来说,追剧已经成为了一种热潮,那么各大追剧软件在市面上也是非常常见,但是有的是爱奇艺独播,有的是芒果独播,还有的是优酷独播,我们的手机要还要全部下载这些app去看剧吗?有没有一个平台可以实现汇聚当下热剧的平台呢?煲剧吧秉承这一理念,为广大观影用户提供这一平台.

2.使用的关键技术

2.1 技术路线

Eclipse(或者Idea)+mysql+JDK+Navicat for Mysql+Tomcat+Maven+spring+springMVC+mybatis

2.2 文档说明

本文档的编写为下阶段的设计、开发提供依据,为项目组成员对需求的详尽理解,以及在开发开发过程中的协同工作提供强有力的保证。同时本文档也作为项目评审验收的依据之一。
本文档的预期读者为项目经理、系统分析人员、系统设计人员以及系统的开发、测试人员等。

3.系统开发的过程

3.1 用户需求

后台管理员:对于项目中基本的增删改查一定是要实现的,方便给管理员一个视图化的界面,对于基本的数据筛选,留言审核,对于数据的清晰,简化管理有着高度的需求.从而给我们的管理员一个便捷的途径来实现我们的对后台数据管理的需求.
前端用户:对于用户来说,是要从我们网站的页面上看到他想看的剧,我们对于频道(电视剧,电影,综艺等等),模块(爱情片,喜剧片,纪录片,纪实片,恐怖片等)以及查询功能,都要给用户一个很好的展示.用户注册登录前后的状态也是不一样的.

3.2 技术需求

该项目采用SSM(Spring+SpringMVC+Mybatis)整合后的架构来写

3.1.1为什么选择这个架构

对于当前Boss,拉钩,应届生求职等网站,很多公司要求主流的技术为SSM

3.1.2为什么不用Springboot?

对于逻辑代码,Springboot和SSM是一样的,但是Springboot更加降低的了开发的门槛,配置文件不需要我们自己手动来配置,内置Tomcat,也不需要我们自己开导入.应用与开发是很好的,效率很高.但是对于教学,我个人认为一定应该有学生手动自己配的过程,因为我们不仅仅是要完成需求,我们要做的是在完成客户需求的前提下很好的去认识,了解底层的原理.
当然,在项目收尾的时候,会加入Springboot的原理讲解以及开发应用.

3.1.3开发工具的选择

对应服务器端的开发工具,对于开发,当然是idea的效率更高,但是对于学习来说,自己手动敲的过程是很重要的,Eclipse可能说没有idea那么的智能,有时候不用我们自己手动敲很多就可以帮助我们来构建代码,也是idea的聪明之处.但是作为教学,我个人更倾向于Eclipse,虽然很多的配置需要我们手动去设置,但是在设置的过程中,也可以让我们学生更好的理解原理.

4.系统所实现的功能

4.1 功能的图解

电影网站后台描述

4.2 功能的详解

演员模块(actor):演员编号(id),演员姓名(name),演员个人信息详述(desc)
系列主题模块(theme):主题编号(id),主题名称(name),主题图片(pic)
地区分类模块(area):地区编号(id),地区名称(name),关联频道channel表id(channel_id)
频道分类模块(channel):频道编号(id),频道名称(name)
隶属种类模块(mold):种类编号(id),种类名称(name),关联channel表(channel_id)
导演模块(director):导演编号(id),导演姓名(name),导演个人信息详述(desc)
用户模块(user):用户编号(id),用户账号名(account),用户密码(password),用户积分(score),用户头像(header),用户qq号(qq),用户邮箱(email),用户电话(phone),登录时间(login_time),用户ip(ip)(详细表关联情况见下图)
留言模块(message):留言编号(id),留言内容(context),用户id关联user表(user_id),影片id(video_id)
收藏模块(collection):收藏编号(id),关联user表用户id(user_id),关联影视id(movie_id)
历史记录模块(history):记录编号(id),关联user表用户id(user_id),关联影视id(movie_id)

4.3数据管理设计需求

电影网站后台描述

4.4用户登录注册功能
4.4.1.判断用户的登录状态

在业务逻辑层写逻辑代码判断用户是否是通过正常的方式登录,判断用户名是否为空 密码时候为空当拿到用户在客户端输入的用户名和密码的时候,我们需要在业务逻辑层来判断我们的用户是不是存在,存在的话,密码输入的是不是正确,如果这些都没有问题的话,那就可以登录了.

4.4.2.用户的登录信息加密

当我们实现登录功能的时候,用户在地址栏里面是无法看到自己的相关信息的,我们采用MD5+随机字符串的加密方式实现对用户信息的加密,所以就算是要**,也是不能够的,因为我们的随机字符串足够随机,会前后夹击在真实信息里面,最终我们在地址栏里面看到的就是混合起来的数据加密后的结果.

4.4.3.拦截器

在项目其他功能测试完毕的时候,我们自定义拦截器,把DispatchServlet接受来的所有除了登录请求全部拦截,这样的话,就算你**了我们的MD5加密,也无法跳过我们的登录界面直接进入后台(在项目快结束的时候写这个模块)

4.4.4.注册

注册功能调用后台添加用户信息接口,注册成功之后,用户信息成功添加到数据库中,返回登录页面再进行登录

5.项目部分展示

电影网站后台描述
那么我们写后台的目的就是为了方便我们的管理员去管理后台,需要什么数据,我们都可以获取到.那么管理员是无法从数据库里面直接添加或者修改数据的如何设计才能使我们的管理员更加方便呢?
在这里我举那一个模块来举例子,好比电影模块,我们点击影片库
电影网站后台描述

这个时候我们看到的信息其实 不仅仅是一个电影表,而是电影表关联了13个表,其中有的是一对多,有的是多对多,一个电影有多个演员,也可能有多个导演,一个演员也可能演了多部电影,这样的话,我们想给一个电影库添加数据的时候,是要去一个表一个表的找吗?显然我们在添加的时候,通过复选框,关联表之间通过id进行添加,但是对于管理员来说,他不知道那一个id对应哪个演员,我们就需要通过EL表达式把对应的id的name属性(或者是名称)等信息传给管理员可视的界面中.

最终的优化都是从最简单的步骤开始的
我们在写一个电影网站的时候,首先要考虑的事情就是电影表和对应的演员表示怎么实现关联的
一个演员可以出演多部电影,一部电影也可以有多个演员,这就是我们常常说的多对多的关系.
那么对于后台管理员来说,我们在电影表要添加演员,在演员表里面我们有提前录入好的演员的数据,那么就需要我们考虑在影片表查看演员之后,实现对应电影(或者电视剧)里面的演员的添加.需要注意的就是我们在添加演员的时候,和在演员表里面直接添加演员是不一样的.我们需要判断这个演员是不是已经出演过了这个电影,已经出演过的演员呢,我们就不然这个演员再出现在添加的下拉菜单里面了.
关于mybatis的好处呢,是有很多的,其中动态sql就是hibernate等JPA框架所没有的,我们可以根据用户的真正需求去实现我们的功能
对于基本的一对多,多对一,多对多我们是必须要掌握的,而且sql优化也是需要我们考虑的
这里我抽一个模块举例子来说
所以在添加的时候,我们还需要通过EL表达式把对应的video(影视表里面对应的id)传到后台,目的就是为了实现我们数据筛选的第一步,在Controller层接受我们的id,通过id来找集合
1.首先是要通过影片表来查看对应的演员
2.然后添加演员,是从演员表里面进行筛选,这个演员要是已经表演过这个影片,那么在接下来的查询中我们就要考虑剔除掉这个对应的演员
3.那么查到的就是这个演员对应的video_id是空或者是演员的video_id不为空,但是演员演的其他的电影,这样的话就需要进行数据的排除,我们在写sql语句的时候需要考虑的就是包含条数据的数字要[排除].
4.第一种情况:’%’,‘对应的video_id’,’%’
第二种情况:’%’,‘对应的video_id’

电影网站后台描述