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

上传人:b****5 文档编号:4439870 上传时间:2022-12-01 格式:DOCX 页数:25 大小:325.76KB
下载 相关 举报
面向对象程序设计实训说明书电影院网上订票系统设计.docx_第1页
第1页 / 共25页
面向对象程序设计实训说明书电影院网上订票系统设计.docx_第2页
第2页 / 共25页
面向对象程序设计实训说明书电影院网上订票系统设计.docx_第3页
第3页 / 共25页
面向对象程序设计实训说明书电影院网上订票系统设计.docx_第4页
第4页 / 共25页
面向对象程序设计实训说明书电影院网上订票系统设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

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

《面向对象程序设计实训说明书电影院网上订票系统设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实训说明书电影院网上订票系统设计.docx(25页珍藏版)》请在冰豆网上搜索。

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

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

中北大学

面向对象程序设计实训

说明书

 

学院、系:

软件学院

专业:

软件工程

学生班级:

13140A01

学生姓名:

景贝贝

学号:

1314011438

设计题目:

电影院网上订票系统设计

起迄日期:

2015年6月29日-2015年7月10日

指导教师:

杨秋翔

 

 

 2015年7月8日

 

实训任务书

1.设计目的:

进一步掌握面向对象程序设计的思想和方法,遵照软件工程中软件系统的开发流程,使用JAVA/JAVAWEB完成一个软件系统,在实践中提高分析问题、解决问题的能力,动手编程的能力和团队协作的能力。

2.系统设计内容和要求(包括原始数据、技术参数、条件、设计要求等):

设计内容:

电影院网上订票系统应该包括以下功能:

用户信息、座位信息、订购信息、影片安排信息、放映厅信息等管理工作。

要求:

(1)基于B/S模式,并采用MVC架构,分层合理,最大限度的减少代码冗余。

(2)遵照软件工程规范,严格按照软件系统的开发流程(需求分析,概要设计,详细设计,编码实现,测试)进行。

(3)系统中的数据表设计应在数据库实训的基础上进一步规范合理、高效,尽量减少数据冗余。

(4)最终完成的软件系统应操作简捷,友好,方便,实用。

3.设计工作任务及工作量的要求〔包括课程设计说明书(论文)、图纸、实物样品等〕:

(1)根据设计内容和要求进行需求分析,分析出系统要解决的问题。

(2)根据需求分析的内容进行概要设计和详细设计,并在小组中合理分工。

(3)按格式要求,每人根据自己完成的工作写出实训说明书。

实训任务书

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上交实训报告

 

一、需求分析

需求分析包括可行性分析、系统流程图和数据流图,数据字典。

可行性分析包括技术可行性、经济可行性和操作可行性。

1.1可行性分析

1.1.1技术可行性

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

同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。

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

1.1.2经济可行性

电影院具有信息化的处理设施,并且拥有支持本系统的应用平台。

因此无需再投入资金购买其他设施。

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

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

1.1.3操作可行性

根据系统页面用户可以自动查询影片信息。

还可浏览完影片信息以后操作订票、退票等功能。

管理员也可以在后台添加、修改并删除影片信息,还可以管理注册用户信息和用户订票信息。

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

1.2系统流程图

首先未注册的用户要先注册,注册完了以后输入用户名和密码进入页面。

根据网站上的影片信息用户可以选择自己喜欢的电影来订票。

然后订票信息会自动存储到后台订票信息数据当中。

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

 

系统流程图

1.3数据流图

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

系统基本模型数据流图

系统功能数据流图

1.4数据需求

(1)影片信息:

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

(2)订票信息:

电影名称、放映时间、放映大厅、座位号、票价(单价)

(3)用户信息:

用户名、用户密码、手机号

(4)放映厅信息:

放映大厅名字、座位数

1.5数据字典

Film(电影表)

列名

含义

类型

长度

取值范围

filmid

影片编号

Int

4

0-32767

FilmName

电影名称

varchar(20)

20

Director

导演

varchar(10)

10

Language

语言

varchar(10)

10

timeLong

片长(分钟)

Int

2

Date

放映日期

varchar(50)

50

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

seatname

放映大厅

varchar10)

10

User(用户信息表)

列名

含义

类型

长度

取值范围

UID

用户序号

Int

2

1-10

username

用户名

varchar(10)

10

50

password

用户密码

varchar(10)

10

0-9

Admin(管理员信息表)

列名

含义

类型

长度

取值范围

Adminname

用户名

varchar(10)

10

50

password

用户密码

varchar(10)

10

0-9

 

Seat(座位类别)

列名

含义

类型

长度

取值范围

Seatid

主键

Int

1-10

seatname

座位编号

Nvarchar(10)

3

1-100

二、概要设计

从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依关系进

行了整合,得出本系统E-R图,如图所示。

系统E-R图

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

影片信息实体属性图

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

图影片场次实体属性图

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

图用户信息实体属性图

全局概念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

影票号

Int

主码

TFName

电影名称

Nvarchar(20)

20

TDate

放映日期

Nvarchar(50)

50

TTime

放映时间

Nvarchar(50)

50

HID

放映大

厅编号

Nvarchar(10)

10

外部码

TNumber

座位号

Int

外部码

TMoney

票数总价

Int

Seat(座位类别)

列名

含义

类型

长度

其他

SEID

座位号

Int

1-10

主码

SMoney

座位票价

Int

2

SNumber

座位编号

Nvarchar(10)

3

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(10)

10

主码

password

用户密码

Nvarchar(10)

10

 

Hall(放映大厅)

列名

含义

类型

长度

其他

HID

放映大厅编号

Int

主码

HHall

放映大厅

Nvachar10)

4、编码实现

文件目录

IOrderDAOimpl.java

packagecn.movie.impl;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.util.ArrayList;

importjava.util.List;

importcn.movie.dao.IOrderDAO;

importcn.movie.vo.FilmInformation;

importcn.movie.vo.Order;

publicclassOrderDAOImplimplementsIOrderDAO{

privateConnectionconn;

privatePreparedStatementpstmt=null;

privatePreparedStatementpstmt1=null;

privatePreparedStatementpstmt2=null;

privatePreparedStatementpstmt3=null;

publicOrderDAOImpl(Connectionconn){

this.conn=conn;

}

@Override

publicbooleandoUpdate(Ordervo)throwsException{

booleanflag=false;

returnfalse;

}

@Override

publicbooleandoRemove(intid,Stringhall,Stringfilmname,Stringseatname)throwsException{

booleanflag=false;

//System.out.println(id);

Stringsql="DELETEFROMordersWHEREorderId=?

";

this.pstmt=this.conn.prepareStatement(sql);

this.pstmt.setInt(1,id);

Stringsql1="selectseatnameafromhallwherehall='"+hall+"'";

this.pstmt1=this.conn.prepareStatement(sql1);

ResultSetrs=this.pstmt1.executeQuery();

rs.next();

//System.out.println("++++++++++"+rs.getString

(1));

Stringsql2="insertinto"+rs.getString

(1)+"(seatname)values(?

)";

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

this.pstmt2.setString(1,seatname);

this.pstmt2.executeUpdate();

Stringsql3="updatefilmsetnumber=number+1wherefilmName=?

";

this.pstmt3=this.conn.prepareStatement(sql3);

this.pstmt3.setString(1,filmname);

this.pstmt3.executeUpdate();

//System.out.println(id);

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

flag=true;

}

returnflag;

}

@Override

publicOrderfindById(Stringid)throwsException{

//TODOAuto-generatedmethodstub

returnnull;

}

@Override

publicListfindAll(StringkeyWord,intcurrentPage,intlineSize)

throwsException{

Listall=newArrayList();

Stringsql="select*fromorderswhereusername=?

";

this.pstmt=this.conn.prepareStatement(sql);

this.pstmt.setString(1,keyWord);

ResultSetrs=pstmt.executeQuery();

while(rs.next()){

Orderorder=newOrder();

order.setOrderId(rs.getInt

(1));

order.setSeatname(rs.getString(3));

order.setFilmname(rs.getString(4));

order.setTime(rs.getString(6));

order.setHall(rs.getString(5));

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

all.add(order);

}

returnall;

}

publicbooleandoCreate(Orderorder)throwsException{

booleanflag=false;

Stringsql="INSERTINTOorders(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());

Stringsql1="updatefilmsetnumber=number-1wherefilmName=?

";

this.pstmt1=this.conn.prepareStatement(sql1);

this.pstmt1.setString(1,order.getFilmname());

this.pstmt1.executeUpdate();

Stringsql2="selectseatnameafromhallwherehall='"+order.getHall()+"'";

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

ResultSetrs=pstmt2.executeQuery();

rs.next();

Stringsql3="deletefrom"+rs.getString

(1)+"whereseatname=?

";

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);

returnflag;

}

publiclonggetAllCount(StringkeyWord)throwsException{

return0;

}

@Override

publicListfindAll()throwsException{

Listall=newArrayList();

Stringsql="select*fromorders";

this.pstmt=this.conn.prepareStatement(sql);

ResultSetrs=pstmt.executeQuery();

while(rs.next()){

Orderorder=newOrder();

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));

all.add(order);

}

returnall;

}

@Override

publicbooleandoRemove(Stringid)throwsException{

//TODOAuto-generatedmethodstub

returnfalse;

}

@Override

publicListgetAllseat(StringkeyWord)throwsException{

//System.out.println(keyWord);

Stringsql="selectseatnameafromhallwherehall='"+keyWord+"'";

this.pstmt=this.conn.prepareStatement(sql);

ResultSetrs=pstmt.executeQuery();

rs.next();

//System.out.println("++++++++++"+rs.getString

(1));

Stringsql1="selectseatnamefrom"+rs.getString

(1);

this.pstmt1=this.conn.prepareStatement(sql1);

ResultSetrs1=pstmt1.executeQuery();

Listseatname=newArrayList();

inti=0;

while(rs1.next()){

//System.out.println(rs.getString

(1));

seatname.add(rs1.getString

(1));

}

returnseatname;

}

}

OrderServlet.java

packagecn.movie.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

importcn.movie.factory.DAOFactory;

importcn.movie.vo.FilmInformation;

importcn.movie.vo.Order;

publicclassOrderServletextendsHttpServle

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1