面向对象程序设计实训说明书--电影院网上订票系统设计

更新时间:2024-05-22 21:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中北大学

面向对象程序设计实训

说 明 书

学 院、系: 专 业: 学 生 班 级: 学 生 姓 名: 设 计 题 目:

景贝贝

软件学院 软件工程 13140A01

学 号: 1314011438

电影院网上订票系统设计

起 迄 日 期: 2015年6月29日- 2015年7月10日 指 导 教 师:

杨秋翔

2015 年 7月 8 日

实 训 任 务 书

1.设计目的: 进一步掌握面向对象程序设计的思想和方法,遵照软件工程中软件系统的开发流程,使用JAVA/JAVA WEB完成一个软件系统,在实践中提高分析问题、解决问题的能力,动手编程的能力和团队协作的能力。 2.系统设计内容和要求(包括原始数据、技术参数、条件、设计要求等): 设计内容: 电影院网上订票系统应该包括以下功能: 用户信息、座位信息、订购信息、影片安排信息、放映厅信息等管理工作。 要求: (1) 基于B/S模式,并采用MVC架构,分层合理,最大限度的减少代码冗余。 (2) 遵照软件工程规范,严格按照软件系统的开发流程(需求分析,概要设计,详细设计,编码实现,测试)进行。 (3) 系统中的数据表设计应在数据库实训的基础上进一步规范合理、高效,尽量减少数据冗余。 (4) 最终完成的软件系统应操作简捷,友好,方便,实用。 3.设计工作任务及工作量的要求〔包括课程设计说明书(论文)、图纸、实物样品等〕: (1) 根据设计内容和要求进行需求分析,分析出系统要解决的问题。 (2) 根据需求分析的内容进行概要设计和详细设计,并在小组中合理分工。 (3) 按格式要求,每人根据自己完成的工作写出实训说明书。 1

实 训 任 务 书

4.自己承担的任务 (1)普通用户的登陆验证 (2)查看电影信息 (3)用户选择电影和座位 (4)用户提交订单,删除订单 5.设计成果形式及要求: 实训说明书 软件系统 6.工作计划及进度: 2015年 6.29-7.30 需求分析 7.1-7.2 7.3-7.7 概要设计和详细设计 系统实现与测试 7.8 撰写实训说明书 7.9 验收答辩、成绩考核 7.10 上交实训报告

2

一、需求分析

需求分析包括可行性分析、系统流程图和数据流图,数据字典。可行性分析包括技术可行性、经济可行性和操作可行性。 1.1 可行性分析 1.1.1 技术可行性

根据电影院提出的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。

由以上分析可知,影院售票系统的开发在技术上是可行的。 1.1.2 经济可行性

电影院具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。

系统的开发基于本人对程序开发的实践学习而来,电影院无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受。

由以上分析可知,影院售票系统在经济上是可行的。 1.1.3 操作可行性

根据系统页面用户可以自动查询影片信息。还可浏览完影片信息以后操作订票、退票等功能。管理员也可以在后台添加、修改并删除影片信息,还可以管理注册用户信息和用户订票信息。

由以上分析可知本系统在操作上也是可行的。 1.2 系统流程图

首先未注册的用户要先注册,注册完了以后输入用户名和密码进入页面。根据网站上的影片信息用户可以选择自己喜欢的电影来订票。然后订票信息会自动存储到后台订票信息数据当中。

本系统的具体流程为如图所示。

3

系统流程图

1.3 数据流图

本系统的基本模型数据流图为如图所示。

系统基本模型数据流图

4

系统功能数据流图

1.4数据需求

(1)影片信息:电影名称、导演、演员、电影简介、语言、片场(分钟)、放映日期、时间、价格、票数、

(2)订票信息:电影名称、放映时间、放映大厅、座位号、票价(单价) (3)用户信息:用户名、用户密码、手机号 (4)放映厅信息:放映大厅名字、座位数 1.5数据字典

Film(电影表)

列名 含义 类型 长度 取值范围 filmid 影片编号 Int 4 0-32767 FilmName 电影名称 varchar(2020 ) Director 导演 varchar(1010 ) Language 语言 varchar(1010 ) timeLong 片长(分钟) Int 2 Date 放映日期 varchar(5050 0-31 ) Money 价格 Int 2 0-100 Number 票数 Int 2 0-300 Time 放映时间 Int 10 order(订票表) 列名 含义 类型 长度 取值范围 orderid 主键 Int 2 filmname 电影名称 varchar(20) 20 Time 放映时间 varchar(50) 50 Hall 放映大厅 varchar(10) 10 seatname 座位号 Int 2 money 票的单价 Int 2 Hall(放映大厅) 列名 含义 类型 长度 取值范围 hall 放映大厅编号 Int 5

seatname 放映大厅 User(用户信息表) 列名 UID username password 含义 用户序号 用户名 用户密码 varchar10) 类型 Int varchar(10) varchar(10) 类型 varchar(10) varchar(10) 10 长度 2 10 10 取值范围 1-10 50 0-9 Admin(管理员信息表) 列名 Adminname password

Seat(座位类别)

列名 Seatid seatname 含义 主键 座位编号 类型 Int Nvarchar(10) 长度 1-10 3 取值范围 1-100 含义 用户名 用户密码 长度 10 10 取值范围 50 0-9 二、概要设计

从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依关系进 行了整合,得出本系统E-R图,如图所示。

系统E-R图

其中影片信息实体属性图又为如下图所示。

6

影片信息实体属性图

订单详情实体属性图为如图所示。

图影片场次实体属性图

用户实体属性图为如图所示。

图用户信息实体属性图

7

全局概念E-R图

三、详细设计

ER图向关系模型的转换

影片(影片编号,类别,票价,播放日期,名称,导演,片长) 影票(影票编号,票价,播放日期,影片名称,座位号) 注册用户(用户编号,用户名,密码) 放映大厅(大厅编号,名字) 座位(座位id,座位号)

Orders(orderId,FName,Time,Hall,Number,Money); Seat(SEID,seatname); Hall(HID,HHall);

User(username,password,phonenumber);

Film(FID,FilmName,FDirector,FLanguage,FLong,FDate,FMoney,FNumber,FTimeID); Ticket(订票表) 列名 TId TFName TDate TTime HID

含义 影票号 电影名称 放映日期 放映时间 放映大 类型 Int Nvarchar(20) Nvarchar(50) Nvarchar(50) Nvarchar(10长度 20 50 50 10 其他 主码 外部码 8

厅编号 ) TNumber 座位号 Int 外部码 TMoney 票数总价 Int

Seat(座位类别) 列名 含义 类型 长度 其他 SEID 座位号 Int 1-10 主码 SMoney 座位票价 Int 2 SNumber 座位编号 Nvarchar(13 0) Film(电影表) 列名 含义 类型 长度 其他 FID 影片编号 Int 4 主码 FFilmName 电影名称 Nvarchar(20) 20 FDirector 导演 Nvarchar(10) 10 FLanguage 语言 Nvarchar(10) 10 FLong 片长(分钟) Int FDate 放映日期 Nvarchar(50) 50 FMoney 价格 Int FNumber 票数 Int FTimeID 放映日期 Int

user(用户表)

列名 含义 类型 长度 其他 phonenumber 用户电话 Varchar 11 Username 用户名 Nvarchar(110 主码 0) password 用户密码 Nvarchar(110 0)

Hall(放映大厅) 列名 含义 类型 长度 其他 HID 放映大厅编号 Int 主码 HHall 放映大厅 Nvachar10) 四、编码实现

9

文件目录

IOrderDAOimpl.java package cn.movie.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import cn.movie.dao.IOrderDAO; import cn.movie.vo.FilmInformation; import cn.movie.vo.Order;

10

public class OrderDAOImpl implements IOrderDAO{

private Connection conn;

private PreparedStatement pstmt = null; private PreparedStatement pstmt1 = null; private PreparedStatement pstmt2 = null; private PreparedStatement pstmt3 = null; public OrderDAOImpl(Connection conn) { } @Override

public boolean doUpdate(Order vo) throws Exception { } @Override

public boolean doRemove(int id,String hall,String filmname,String seatname)

boolean flag = false; return false; this.conn=conn;

throws Exception {

boolean flag = false; //System.out.println(id);

String sql = \this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setInt(1,id );

String sql1 = \this.pstmt1 = this.conn.prepareStatement(sql1); ResultSet rs = this.pstmt1.executeQuery(); rs.next();

//System.out.println(\

String sql2=\this.pstmt2 = this.conn.prepareStatement(sql2);

11

}

this.pstmt2.setString(1,seatname); this.pstmt2.executeUpdate();

String sql3=\this.pstmt3=this.conn.prepareStatement(sql3); this.pstmt3.setString(1,filmname); this.pstmt3.executeUpdate(); //System.out.println(id);

if (this.pstmt.executeUpdate() > 0) { }

return flag;

flag = true;

@Override

public Order findById(String id) throws Exception { } @Override

public List findAll(String keyWord, int currentPage, int lineSize)

throws Exception {

// TODO Auto-generated method stub return null;

List all = new ArrayList();

String sql = \this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setString(1, keyWord); ResultSet rs = pstmt.executeQuery(); while (rs.next()) {

Order order = new Order(); order.setOrderId(rs.getInt(1)); order.setSeatname(rs.getString(3));

12

}

}

order.setFilmname(rs.getString(4)); order.setTime(rs.getString(6)); order.setHall(rs.getString(5)); order.setMoney(rs.getInt(7));

all.add(order);

return all;

public boolean doCreate(Order order) throws Exception {

boolean flag = false; String

sql

=

\

INTO

orders(username,seatname,filmname,hall,time,money) VALUES (?,?,?,?,?,?) \ \

this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setString(1,order.getUsername()); this.pstmt.setString(2, order.getSeatname()); this.pstmt.setString(3,order.getFilmname()); this.pstmt.setString(4,order.getHall()); this.pstmt.setString(5,order.getTime()); this.pstmt.setInt(6, order.getMoney());

String sql1=\this.pstmt1=this.conn.prepareStatement(sql1); this.pstmt1.setString(1,order.getFilmname()); this.pstmt1.executeUpdate();

String sql2 = \seatnamea from hall where hall='\

this.pstmt2 = this.conn.prepareStatement(sql2); ResultSet rs = pstmt2.executeQuery(); rs.next();

String sql3=\

13

this.pstmt3 = this.conn.prepareStatement(sql3); this.pstmt3.setString(1,order.getSeatname()); this.pstmt3.executeUpdate();

if (this.pstmt.executeUpdate() > 0) { flag = true;

//System.out.println(\判断\

}

//System.out.println(flag); return flag;

}

public long getAllCount(String keyWord) throws Exception { return 0; }

@Override

public List findAll() throws Exception { List all = new ArrayList(); String sql = \

this.pstmt = this.conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Order order=new Order(); order.setOrderId(rs.getInt(1)); order.setUsername(rs.getString(2)); order.setSeatname(rs.getString(3)); order.setHall(rs.getString(4)); order.setTime(rs.getString(5));

order.setMoney(rs.getInt(6));

14

all.add(order);

}

return all;

}

@Override

public boolean doRemove(String id) throws Exception { // TODO Auto-generated method stub return false;

}

@Override

public List getAllseat(String keyWord) throws Exception { //System.out.println(keyWord);

String sql = \ this.pstmt = this.conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); rs.next();

//System.out.println(\ String sql1=\ this.pstmt1 = this.conn.prepareStatement(sql1); ResultSet rs1 = pstmt1.executeQuery();

List seatname =new ArrayList(); int i=0;

while (rs1.next()) { //System.out.println(rs.getString(1)); seatname.add(rs1.getString(1));

}

return seatname;

15

}

}

OrderServlet.java package cn.movie.servlet; import java.io.IOException; import java.io.PrintWriter;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.movie.factory.DAOFactory; import cn.movie.vo.FilmInformation; import cn.movie.vo.Order;

public class OrderServlet extends HttpServlet {

public OrderServlet() { }

public void destroy() { }

super.destroy(); // Just puts \// Put your code here super();

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

16

response.setContentType(\

request.setCharacterEncoding(\ String status = request.getParameter(\接收操作的状态

if(request.getParameter(\

String

filmname=

String(request.getParameter(\

String

hall

=

String(request.getParameter(\ String time=request.getParameter(\

int money =Integer.parseInt(request.getParameter(\ HttpSession se=request.getSession(); se.setAttribute(\ se.setAttribute(\ se.setAttribute(\ se.setAttribute(\ }

if (!(status == null || \ if (\ this.seatlist(request, response);

}

if (\ //this.listdetails(request, response);

}

if (\ this.insert(request, response);

}

if (\

new

new

17

}

}

//this.update(request, response);

if (\ }

if (\ }

//this.show(request, response); this.delete(request, response);

} else { // 如果没有的话才执行此跳转 }

//request.getRequestDispatcher(pages).forward(request, response);

private void seatlist(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(\String

hall

=

new

String(request.getParameter(\

try {

//System.out.println(\request.setAttribute(\

DAOFactory.getIOrderDAOinstance().getAllseat(hall));

} catch (Exception e) { }

request.getRequestDispatcher(\

e.printStackTrace();

response);

18

}

public void insert(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String seatname = request.getParameter(\//System.out.println(\try {

HttpSession session=request.getSession();

String username =(String) session.getAttribute(\String filmname=(String) session.getAttribute(\String hall=(String) session.getAttribute(\String time=(String) session.getAttribute(\//System.out.println(\

int money=(Integer) session.getAttribute(\ /*String

filmname=

new

String(request.getParameter(\

String

hall

=

new

String(request.getParameter(\ e);

String time=request.getParameter(\

int money =Integer.parseInt(request.getParameter(\

System.out.println(\

//System.out.println(money); //System.out.println(\

Order order=new Order(); order.setFilmname(filmname); order.setHall(hall); order.setMoney(money);

19

本文来源:https://www.bwwdw.com/article/fht7.html

Top