面向对象程序设计实训说明书电影院网上订票系统设计
中北大学
面向对象程序设计实训
说明书
学院、系:软件学院
专业:软件工程
学生班级:13140A01
学生姓名:景贝贝学号:1314011438 设计题目:电影院网上订票系统设计
起迄日期: 2015年6月29日- 2015年7月10日指导教师:杨秋翔
2015 年 7月 8 日
一、需求分析
需求分析包括可行性分析、系统流程图和数据流图,数据字典。可行性分析包括技术可行性、经济可行性和操作可行性。
1.1 可行性分析
1.1.1 技术可行性
根据电影院提出的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。
由以上分析可知,影院售票系统的开发在技术上是可行的。
1.1.2 经济可行性
电影院具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。
系统的开发基于本人对程序开发的实践学习而来,电影院无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受。
由以上分析可知,影院售票系统在经济上是可行的。
1.1.3 操作可行性
根据系统页面用户可以自动查询影片信息。还可浏览完影片信息以后操作订票、退票等功能。管理员也可以在后台添加、修改并删除影片信息,还可以管理注册用户信息和用户订票信息。
由以上分析可知本系统在操作上也是可行的。
1.2 系统流程图
首先未注册的用户要先注册,注册完了以后输入用户名和密码进入页面。根据网站上的影片信息用户可以选择自己喜欢的电影来订票。然后订票信息会自动存储到后台订票信息数据当中。
本系统的具体流程为如图所示。
系统流程图
1.3 数据流图
本系统的基本模型数据流图为如图所示。
系统基本模型数据流图
系统功能数据流图
1.4数据需求
(1)影片信息:电影名称、导演、演员、电影简介、语言、片场(分钟)、放映日期、时间、价格、票数、
(2)订票信息:电影名称、放映时间、放映大厅、座位号、票价(单价)
(3)用户信息:用户名、用户密码、手机号
(4)放映厅信息:放映大厅名字、座位数
1.5数据字典
order(订票表)
seatname 放映大厅varchar10)10
列名含义类型长度取值范围
UID 用户序号Int 2 1-10
10 50
username 用户名varchar(10
)
10 0-9
password 用户密码varchar(10
)
列名含义类型长度取值范围
10 50
Adminname 用户名varchar(10
)
10 0-9
password 用户密码varchar(10
)
Seat(座位类别)
列名含义类型长度取值范围
Seatid 主键Int 1-10
3 1-100
seatname 座位编号Nvarchar(1
0)
二、概要设计
从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依关系进行了整合,得出本系统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 主码
20
TFName 电影名称Nvarchar(20
)
50
TDate 放映日期Nvarchar(50
)
TTime 放映时间Nvarchar(50
50
)
HID 放映大Nvarchar(1010 外部码
user(用户表)
四、编码实现
文件目录
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;
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) {
this.conn=conn;
}
@Override
public boolean doUpdate(Order vo) throws Exception {
boolean flag = false;
return false;
}
@Override
public boolean doRemove(int id,String hall,String filmname,String seatname) throws Exception {
boolean flag = false;
//System.out.println(id);
String sql = "DELETE FROM orders WHERE orderId=?";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1,id );
String sql1 = "select seatnamea from hall where hall='"+hall+"' ";
this.pstmt1 = this.conn.prepareStatement(sql1);
ResultSet rs = this.pstmt1.executeQuery();
rs.next();
//System.out.println("++++++++++"+rs.getString(1));
String sql2="insert into "+rs.getString(1)+"(seatname) values(?)" ;
this.pstmt2 = this.conn.prepareStatement(sql2);
this.pstmt2.setString(1,seatname);
this.pstmt2.executeUpdate();
String sql3="update film set number=number+1 where filmName=?";
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;
}
return flag;
}
@Override
public Order findById(String id) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public List
List
String sql = "select * from orders where username=?";
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));
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 = "INSERT 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="update film set number=number-1 where filmName=?";
this.pstmt1=this.conn.prepareStatement(sql1);
this.pstmt1.setString(1,order.getFilmname());
this.pstmt1.executeUpdate();
String sql2 = "select seatnamea from hall where hall='"+order.getHall()+"' ";
this.pstmt2 = this.conn.prepareStatement(sql2);
ResultSet rs = pstmt2.executeQuery();
rs.next();
String sql3="delete from "+rs.getString(1)+" where seatname=?";
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
List
String sql = "select * from orders";
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));
all.add(order);
}
return all;
}
@Override
public boolean doRemove(String id) throws Exception {
// TODO Auto-generated method stub
return false;
}
@Override
public List
String sql = "select seatnamea from hall where hall='"+keyWord+"' ";
this.pstmt = this.conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
rs.next();
//System.out.println("++++++++++"+rs.getString(1));
String sql1="select seatname from "+rs.getString(1);
this.pstmt1 = this.conn.prepareStatement(sql1);
ResultSet rs1 = pstmt1.executeQuery();
List
int i=0;
while (rs1.next()) {
//System.out.println(rs.getString(1));
seatname.add(rs1.getString(1));
}
return seatname;
}
}
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() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
request.setCharacterEncoding("GBK");
String status = request.getParameter("status"); // 接收操作的状态
if(request.getParameter("film")!=null){
String filmname= new String(request.getParameter("film").getBytes("iso8859-1"),"GBK");
String hall = new String(request.getParameter("hall").getBytes("iso8859-1"),"GBK");
String time=request.getParameter("time");
int money =Integer.parseInt(request.getParameter("money"));
HttpSession se=request.getSession();
se.setAttribute("film", filmname);
se.setAttribute("hall", hall);
se.setAttribute("time", time);
se.setAttribute("money",money);
}
if (!(status == null || "".equals(status))) {
if ("list".equals(status)) {
this.seatlist(request, response);
}
if ("listdetails".equals(status)) {
//this.listdetails(request, response);
}
if ("insert".equals(status)) {
this.insert(request, response);
}
if ("update".equals(status)) {
//this.update(request, response);
}
if ("delete".equals(status)) {
this.delete(request, response);
}
if ("show".equals(status)) {
//this.show(request, response);
}
} else { // 如果没有的话才执行此跳转
//request.getRequestDispatcher(pages).forward(request, response);
}
}
private void seatlist(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GBK") ;
String hall = new String(request.getParameter("hall").getBytes("iso8859-1"),"GBK");
try {
//System.out.println("-----------"+hall);
request.setAttribute("seat",
DAOFactory.getIOrderDAOinstance().getAllseat(hall));
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("seat_list.jsp").forward(request, response);
}
public void insert(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String seatname = request.getParameter("seatname");
//System.out.println("zhixing1");
try {
HttpSession session=request.getSession();
String username =(String) session.getAttribute("username");
String filmname=(String) session.getAttribute("film");
String hall=(String) session.getAttribute("hall");
String time=(String) session.getAttribute("time");
//System.out.println("zhixing2");
int money=(Integer) session.getAttribute("money");
/*String filmname= new String(request.getParameter("film").getBytes("iso8859-1"),"GBK");
String hall = new String(request.getParameter("hall").getBytes("iso8859-1"),"GBK");
String time=request.getParameter("time");
int money =Integer.parseInt(request.getParameter("money"));*/
System.out.println("------------------"+filmname+username+hall+time+seatnam e);
//System.out.println(money);
//System.out.println("zhixing2");
Order order=new Order();
order.setFilmname(filmname);
order.setHall(hall);
order.setMoney(money);
影院网上售票系统的设计与实现开题报告
毕 业 设 计(论 文)任 务 书 课题名称 影院网上售票系统的设计与实现 姓 名 学 号 院 系 专 业 指导教师 讲师 2011年2月25日 ※ ※※※※※※※※ ※ ※ ※ ※ ※※ 2011届学生 毕业设计(论文)材料 (一)
一、设计(论文)的教学目的 通过本课题的设计,培养学生综合运用科学知识解决实际问题的能力,培养学生独立思考和独立工作、调查研究、查阅文献和资料及编写技术文档的能力。深化和拓展学生的知识视野,使学生加深对统计知识和理解,掌握系统开发的方法和流程,锻炼和提高学生运用可视化编程工具进行软件开发的能力。培养学生以后对工作的责任感。提高个人素质,能和团队合作完成大型项目的开发。 二、设计(论文)的主要内容 1. Jsp影院网上售票系统的架构是基于Jsp/JavaBean的模式,这种模式以其稳定性和优越的速度,被全球企业证明公认为可以高效稳定的进行企业运算开发的平台。 2. 本平台利用现在比较广泛的JSP+Oracle数据库的架构实现的。完成一个完整的影院售票系统,分为影院内部管理和网络服务2个系统,影院内部管理子系统主要实现影院售票员对影院的售票功能,网络服务实现网上查询浏览约定电影院功能。这些功能可以分为以下二部个部分:前台管理,,后台管理。 前台现场售票:电影名称,票价,票价打折,售票,座位,打印票,结帐 后台管理模块:管理员主要用于电影类型管理:添加电影种类,介绍,票价,放映场次,放映时间,放映大厅,近几日放映订划管理。具体的功能可以分为以下几个部分:影院介绍,预订电影等。 3.系统的建设关键在于其所使用的架构,而电影院网上售票这种基于web的系统,传统的c/s架构已经不能满足大量用户的访问和操作,b/s基于浏览器的架构则是目前网络系统应用的主流,它将大量的数据处理工作交给服务器端来处理,客户端只用通过普通的IE浏览器即可访问系统,方便快捷而且利于系统的更新和维护,java语言在该方面更是得天独厚,j2ee规范的出现则使系统的开发更加规范,层次更加清楚,更利于对复杂事务的处理,而且在安全性方面也做的更好。基于mvc的开发流程则使开发过程更加清晰明了,利于做一些复杂的逻辑实现,从而节省了开发周期和开发成本。 三、设计(论文)的基本要求 1、设计者必须发挥独立思考、独立操作、独立编程的能力; 2
第3章 面向对象程序设计基础
第3章面向对象程序设计基础
第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {
studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){
c++面向对象程序设计大作业
《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日
目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)
一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
C++课设电影院售票管理系统
内蒙古科技大学 本科生《C++程序设计》课程设计说明书 题目:电影院售票管理系统 学生姓名: 学号: 专业:计算机科学与技术 班级:计2010-2班 指导教师:
成绩评定标准 课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式。
目录 摘要......................................................................................................... 错误!未定义书签。第一章问题描述. (1) 第二章问题分析 (2) 2.1 阐述你对问题的理解、解决问题的方案说明 (2) 2.2 系统功能模块的划分 (3) 第三章数据模型 (6) 3.1 相关数据结构的说明 (6) 3.2 类的设计 (6) 3.3 程序结构说明,即程序各个部分之间如何协调来完成任务 (6) 3.4 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释 (7) 第四章算法描述 (8) 4.1 解题算法的设计思路介绍 (8) 4.2 主要程序代码,加上详细的注释 (8) 4.3 画出程序流程图 (36) 第五章设计总结 (37) 参考文献 (38) ……………………………………………………………………………………………… ………………………………………………………………………
摘要 论文主要描述了电影院售票管理系统,具体可分为以下五章:问题描述,问题分析, 数据模型, 算法描述,设计总结。在第一部分主要阐述了关于电影院售票系统的问题描述,包括所包含的录入信息,浏览信息,查询信息,以及售票和退票功能。第二部分主要是对电影院售票系统的设计方法和解决方案以及系统的模块划分等。第三部分是数据模型,叙述系统中数据结构和对类的设计,各功能之间的联系,以及各变量的意义等。第四部分是算法描述,其中需要详细介绍各功能的功能介绍和演示。第五部分描述了本次设计的总结。
影院网上售票系统的设计与实现开题报告
毕 业 设 计(论 文)任 务 书 课题名称 影院网上售票系统的设计与实现 姓 名 学 号 院 系 专 业 指导教师 讲师 2011年2月25日 ※※※※※※※※※ ※※ ※ ※ ※※ ※※※※※※※※※ 2011届学生 毕业设计(论文)材料 (一)
一、设计(论文)的教学目的 通过本课题的设计,培养学生综合运用科学知识解决实际问题的能力,培养学生独立思考和独立工作、调查研究、查阅文献和资料及编写技术文档的能力。深化和拓展学生的知识视野,使学生加深对统计知识和理解,掌握系统开发的方法和流程,锻炼和提高学生运用可视化编程工具进行软件开发的能力。培养学生以后对工作的责任感。提高个人素质,能和团队合作完成大型项目的开发。 二、设计(论文)的主要内容 1. Jsp影院网上售票系统的架构是基于Jsp/JavaBean的模式,这种模式以其稳定性和优越的速度,被全球企业证明公认为可以高效稳定的进行企业运算开发的平台。 2. 本平台利用现在比较广泛的JSP+Oracle数据库的架构实现的。完成一个完整的影院售票系统,分为影院内部管理和网络服务2个系统,影院内部管理子系统主要实现影院售票员对影院的售票功能,网络服务实现网上查询浏览约定电影院功能。这些功能可以分为以下二部个部分:前台管理,,后台管理。 前台现场售票:电影名称,票价,票价打折,售票,座位,打印票,结帐 后台管理模块:管理员主要用于电影类型管理:添加电影种类,介绍,票价,放映场次,放映时间,放映大厅,近几日放映订划管理。具体的功能可以分为以下几个部分:影院介绍,预订电影等。 3.系统的建设关键在于其所使用的架构,而电影院网上售票这种基于web的系统,传统的c/s架构已经不能满足大量用户的访问和操作,b/s基于浏览器的架构则是目前网络系统应用的主流,它将大量的数据处理工作交给服务器端来处理,客户端只用通过普通的IE浏览器即可访问系统,方便快捷而且利于系统的更新和维护,java语言在该方面更是得天独厚,j2ee规范的出现则使系统的开发更加规范,层次更加清楚,更利于对复杂事务的处理,而且在安全性方面也做的更好。基于mvc的开发流程则使开发过程更加清晰明了,利于做一些复杂的逻辑实现,从而节省了开发周期和开发成本。 三、设计(论文)的基本要求 1、设计者必须发挥独立思考、独立操作、独立编程的能力; 2、收集和查询有关技术资料;