基于JavaWeb的电影售票网站的设计与实现

138 篇文章 15 订阅
137 篇文章 2 订阅

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇基于JavaWeb的电影网站的设计与实现。

功能需求

电影网站自助购票服务平台针对广大影视观众和影视剧院的需求而设计,由于用户范围较大,就要求系统要有友好的用户界面。用户可以在 WEB 端查看电影的简介,了解大众点评。根据个人需求购票选择影院场次位置。
后端管理员监控整个网站数据和运转。为了考虑到网站信息安全性,所有进入系统的用户需要登录,如果没有账号,则需要先注册一个本网站的账号,注册完成后返回登录页面,输入自己的账号即可登录。之后可以查看个人订单信息、修改个人信息、查看电影介绍以及放映场次并进行选择购买,并选择场次和影院的座位并支付。
在这里插入图片描述

具备以下功能:
  • 前端

首页模块、游客登录注册、电影检索详情查看、影票购买选座以及影视作品的评价。

  • 后端
    管理员主要管控整个系统的运转和业务日常维护,主要有用户管理、电影管理、影院管理、影厅管理、用户订单管理、用户评论管理等
系统功能模块框架图

在这里插入图片描述

部分效果图

登录注册界面:

在这里插入图片描述

在这里插入图片描述

首页
在这里插入图片描述

电影选购界面
在这里插入图片描述在这里插入图片描述

个人中心
在这里插入图片描述

后台用户管理
在这里插入图片描述

电影管理
在这里插入图片描述

影院管理
在这里插入图片描述

数据库设计

系统中用到了10张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示。
(1)用户信息表
在这里插入图片描述

(2)场次表
在这里插入图片描述

(3)订单信息表
在这里插入图片描述

(4)放映信息表
在这里插入图片描述

(5)评价信息表
在这里插入图片描述

部分代码

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String method = req.getParameter("method");
		if("findMovieById".equals(method)){
			findMovieById(req,resp);
		}else if("findAllMovies".equals(method)){
			findAllMovies(req,resp);
		}else if("findAllMoviesBack".equals(method)){
			findAllMoviesBack(req,resp);
		}else if("findMoviesByName".equals(method)){
			findMoviesByName(req,resp);
		}else if("findMoviesByType".equals(method)){
			findMoviesByType(req,resp);
		}else if("sortAllMovies".equals(method)){
			sortAllMovies(req,resp);
		}else if("deleteMovie".equals(method)){
			deleteMovie(req,resp);
		}else{
			try {
				Movie movie = new Movie();
				//所有表单非文件类型的集合
		        Map<String,Object> param = new HashMap<String,Object>();  
				//创建一个解析器工厂
		        DiskFileItemFactory factory = new DiskFileItemFactory();
		        //文件上传解析器
		        ServletFileUpload upload = new ServletFileUpload(factory);
				//解析请求,将表单中每个输入项封装成一个FileItem对象
		        List<FileItem> fileItems = upload.parseRequest(req);
		        Boolean isFile =false;
		        for (FileItem fileItem : fileItems) {
		        	//判断输入的类型是 普通输入项 还是文件
		            if (!fileItem.isFormField()) {
		                //上传的是文件,获得文件上传字段中的文件名
		                //注意IE或FireFox中获取的文件名是不一样的,IE中是绝对路径,FireFox中只是文件名
		                String fileName = fileItem.getName();
		                System.out.println(fileName);
		                //Substring是字符串截取,返回值是一个截取后的字符串
		                //lastIndexOf(".")是从右向左查,获取.之后的字符串
		                String ext = fileName.substring(fileName.lastIndexOf("."));
		                //UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法, UUID的唯一缺陷在于生成的结果串会比较长
		                String name = UUID.randomUUID()+ext;
		                //将FileItem对象中保存的主体内容保存到某个指定的文件中
		    			String path =req.getRealPath("/file") + "/upload/head/" + name;
		                File file = new File(path);
		            
		                String filePath = "/file/upload/head/" + name;
		                movie.setMovie_picture(filePath);
		        		
		                fileItem.write(file);
		                isFile = true;
		            }else{
		            	param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的
		            }
		        }
		        movie.setMovie_cn_name(param.get("movie_cn_name") == null?"":param.get("movie_cn_name").toString());
				movie.setMovie_fg_name(param.get("movie_fg_name") == null?"":param.get("movie_fg_name").toString());
				movie.setMovie_actor(param.get("movie_actor") == null?"":param.get("movie_actor").toString());
				movie.setMovie_director(param.get("movie_director") == null?"":param.get("movie_director").toString());
				movie.setMovie_detail(param.get("movie_detail") == null?"":param.get("movie_detail").toString());
				movie.setMovie_duration(param.get("movie_duration") == null?"":param.get("movie_duration").toString());
				movie.setMovie_type(param.get("movie_type") == null?"":param.get("movie_type").toString());
				movie.setMovie_country(param.get("movie_country") == null?"":param.get("movie_country").toString());
				String movie_releaseDate = param.get("movie_releaseDate") == null?"":param.get("movie_releaseDate").toString();
				if(!"".equals(movie_releaseDate)){
					Date date = new SimpleDateFormat("yyyy-MM-dd").parse(movie_releaseDate);
					movie.setReleaseDate(date);
					
				}
				resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
		        PrintWriter out = resp.getWriter();
		        Map<String,Object> map = new HashMap<>();
		        //新增电影
		        if("addMovie".equals(param.get("method").toString())){
		        	movie.setMovie_state(1);
		        	Integer rs = movieService.addMovie(movie);
		    		if(rs > 0) {
		    			map.put("code", 0);
		    			map.put("msg", "添加成功~");
		    		}else {
		    			map.put("code", 200);
		    			map.put("msg", "添加失败~");
		    		}
		        }else{//更新电影
		        	movie.setMovie_id(Long.valueOf(param.get("movie_id").toString()));
		        	if(!isFile){
		    			Movie oldMovie = this.movieService.findMovieById(movie.getMovie_id());
		    			movie.setMovie_picture(oldMovie.getMovie_picture());
		    		}
		    		Integer rs = movieService.updateMovie(movie);
		    		if(rs > 0) {
		    			map.put("code", 0);
		    			map.put("msg", "修改成功~");
		    		}else {
		    			map.put("code", 200);
		    			map.put("msg", "修改失败~");
		    		}
		        }
		        String resJSON = JSON.toJSONString(map);
		        out.print(resJSON); // 输出
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
		// 重定向
		//resp.sendRedirect("product_list");
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	private void findAllMoviesBack(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		Integer page = req.getParameter("page") == null?1:Integer.valueOf(req.getParameter("page"));
		Integer limit = req.getParameter("limit") == null?10:Integer.valueOf(req.getParameter("limit"));
		List<Movie> list = movieService.findAllMoviesPage(1,page,limit);
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
        map.put("code", 0);
        map.put("count", movieService.findAllMovies(1).size());
        map.put("data", list);
        String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
		
	}
	
	private void findAllMovies(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		List<Movie> list = movieService.findAllMovies(1);
		List<Movie> offList = movieService.sortMovieByScore();
		String type[] = {"喜剧","动作","爱情","动画","科幻","惊悚","冒险","犯罪","悬疑"};
		ArrayList<Object> typeArr = new ArrayList<Object>();
		for(int i = 0;i < type.length;i++) {
			List<Movie> movieList = this.movieService.findMoviesLikeType("",type[i],"","","");
			float boxOffice = 0;
			for(int j = 0; j < movieList.size();j++) {
				boxOffice += movieList.get(j).getMovie_boxOffice();
			}
			JSONObject typeJson = new JSONObject();
			typeJson.put(type[i], boxOffice);
			typeArr.add(typeJson);
		}
		
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
        map.put("code", 0);
        map.put("count", list.size());
        map.put("data", list);
        map.put("sort", offList);
        map.put("type", typeArr);
        String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
		
	}
安装部署需求

eclipse、idea运行启动
在这里插入图片描述

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.5版本以上版本数据库,创建数据库并执行脚本创建表;
在Eclipse中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:SSM

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
微信扫下方二维码关注公众号,经常分享一些技术上的理解文章。
在这里插入图片描述

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
基于javaweb的购物网站设计实现需要按照以下步骤进行: 1. 确定需求:首先需明确购物网站的功能,包括用户注册登录、商品浏览、购物车管理、订单生成与支付等。 2. 数据库设计设计数据库,包括用户表、商品表、购物车表和订单表等。使用MySQL等数据库管理系统创建相应表结构,确保数据的存储和管理。 3. 界面设计:根据需求设计网站的用户界面。使用HTML、CSS和JavaScript构建前端页面,并采用响应式设计,以适应不同的设备和屏幕大小。 4. 后端开发:采用Java作为开发语言,使用JSP/Servlet或者框架(如Spring MVC)进行后端开发。编写处理用户请求和数据交互的代码,实现用户注册登录、商品浏览、购物车管理和订单生成等功能。 5. 数据交互与传输:使用JSON或XML格式进行数据交互,实现前后端之间数据的传输和更新。可以使用Ajax技术实现异步请求,提升用户体验。 6. 安全性保障:对用户输入进行有效性检查和数据过滤,防止SQL注入和XSS攻击。同时,使用HTTPS协议进行数据加密传输,确保用户信息的安全。 7. 测试和优化:进行系统测试,检查功能是否正常运行,并进行性能优化,确保网站的响应速度和稳定性。 8. 上线和部署:将网站部署到服务器上,在公网上发布,确保用户可以访问并使用。同时进行监控和维护,及时修复漏洞和更新功能。 通过以上步骤,基于javaweb的购物网站设计实现完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿麦小七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值