景点售票系统设计报告 + 源代码Word格式.docx
《景点售票系统设计报告 + 源代码Word格式.docx》由会员分享,可在线阅读,更多相关《景点售票系统设计报告 + 源代码Word格式.docx(50页珍藏版)》请在冰豆网上搜索。
购票成功后,顾客还可以查询自己的订单。
当然,如果顾客发现买错票,这时候也可以退票。
卖票者,也就是管理员可以查询余票,也可以增加、修改票信息。
当然,顾客查询和管理员查询看到的东西肯定是不一样的。
这里管理员会特殊一点,会看到每一张余票的具体信息,而顾客只能看到剩余的总票数和日期以及票价。
增加功能主要实现对每一天的票务信息的更新的功能。
每天不管票是否卖完,都须更新票务信息。
修改功能主要针对票价及票的日期进行修改,比如某天要做活动,有优惠,票价半价,这时管理员便可以修改票价。
在现在竞争激烈的电子商务中,系统的安全性和稳定性是首要的选择,其次是提供完善的服务流程。
当然实际上的景点售票系统要比这个复杂得多,在这里我只是做了一个系统的抽象和简单建模,也只实现了其中的部分功能,实际上还要包括更多更复杂的子模块和交互性设置来提高系统的完整性和可操作性。
2.2功能模块图
功能模块图就是将系统的功能进行分解,按功能从属关系表示出来的图表。
画出功能模块图主要是为了更加明确的体现内部组织关系,更加清晰的理清内部逻辑关系,做到一目了然规范各自功能部分,使之条理化。
图2.1
2.3数据流程图
购票查票
查票增加票
退票修改票
提交订单
查询订单
图2.2
第三章系统概要设计
在经过了系统分析之后,接下来的任务就是系统设计。
管理信息系统设计阶段的主要目的是将系统分析阶段所提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案。
在系统设计中,应尽量满足以下要求:
1)系统性;
2)灵活性;
3)可靠性;
4)经济性。
所以在这一阶段的主要任务是从管理信息系统的总体目标出发,根据系统分析阶段对系统的逻辑功能的要求,并考虑到经济、技术和运行环境等方面的条件,确定系统的总体结构和系统各组成部分的技术方案,合理选择计算机和通信的软、硬件设备,提出系统的实施计划,确保总体目标的实现。
系统总体结构设计阶段的工作是一项技术性强、涉及面广的活动,它包括如下主要活动:
1)系统总体布局方案的确定;
2)软件系统总体结构的设计;
3)计算机硬件方案的选择和设计;
4)数据存储的总体设计。
结构化设计是系统开发的结构化方法和基本思路与原则在软件系统设计中的应用,也是软件系统设计中应用最广的一种方法。
它适用于任何类型的软件系统总体设计,可以同结构化分析和结构化设计前后衔接起来使用。
结构化设计方法是从建立一个拥有良好结构的系统的观点出发,基于把一个复杂的系统分解成相对独立模块的原则,主要研究了将系统分解为不同模块的方法和技术,分析系统分解时产生的各种影响,提出了评价模块结构质量的具体标准,并给出了从表达用户要求的数据流程图导出结构图的规则性强、涉及面广的活动,它包括如下主要活动:
1)系统总体布局方案的确定;
2)软件系统总体结构的设计;
3)计算机硬件方案的选择和设计;
4)数据存储的总体设计。
结构化设计是系统开发的结构化方法和基本思路与原则在软件系统设计中的应用,也是软件系统设计中应用最广的一种方法。
结构化设计方法是从建立一个拥有良好结构的系统的观点出发,基于把一个复杂的系统分解成相对独立模块的原则,主要研究了将系统分解为不同模块的方法和技术,分析系统分解时产生的各种影响,提出了评价模块结构质量的具体标准,并给出了从表达用户要求的数据流程图导出结构图的规则。
3.1
数据库设计
数据库设计是开发数据库及其应用系统的技术,也是信息系统开发和建设的重要组成部分。
具体的说,数据库设计是要在一个给定的应用环境中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式,建立数据库及其应用系统,满足用户的各种信息需求。
在系统的数据库设计中,首先对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后得出系统的关系模式。
本系统用实体-联系图(简称E-R图)来描述系统的概念模型。
E-R图由实体、属性、联系三部分组成,其符号如图4.6所示:
实体
属性
联系
图4.6
3.1.1实体描述
本系统中涉及的实体有四个,其结构如下:
票(票价、日期、票号)
管理员(管理员账号、管理员密码)
游客(游客账号、游客密码)
订单(游客账号、票价、票号、日期)
3.1.2联系描述
本系统中实体之间有3个联系,其关系如下:
(1)购票关系:
管理员、游客和票的关系是1:
M:
1,因为多个游客可以向一个管理员一次订购一张票;
(2)退票关系:
1,因为多个游客可以向一个管理员一次退一张票;
(3)管理员增加票关系:
管理员和票的关系是1:
N,因为一个管理员可以同时增加N张票。
以上实体的联系属性如下:
购票(买票游客、票号、日期、数量、票价、卖票管理员)
退票(买票游客、票号、日期、数量、票价、退票管理员)
管理员增加票(管理员、票号、数量、日期、票价)
3.1.3E-R图
本系统的E-R图如图3.1所示:
111
nnn
n1n
1
11
图3.1
第四章系统详细设计
4.1数据库的逻辑设计
数据库的逻辑设计的任务就是把概念结构设计阶段的基本E-R图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是E-R图关系模型的转化。
而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定这些关系模式的属性和码。
对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。
对于实体间的联系,可以分成三种情况:
1)若实体间的联系是1:
1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。
2)若实体间的联系是1:
n,则在n端实体转换成的关系中加入1端实体转换成的关系码。
3)若实体间的联系是n:
m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。
本系统中所涉及到的4个实体转换为4个关系,3个三元联系转换为3个关系,所以本系统共有7个关系。
4.2数据库的实现
按照数据字典中的数据元素说明确定每个数据项的类型和长度,使每个关系都对应一个数据库表:
(其中游客信息表和管理员信息表合成一个用户密码表,购票信息表和退票信息表都在票的基本信息表里动态变化,因此这里只建四张表)
一、票的基本信息表(TICKET):
列名
数据类型
长度
属性
描述
TICKET_NUM
VARCHAR2
8
主键
票号
TICKET_DATE
12
不允许为空
票的日期
TICKET_PRICE
FLOAT
6
票的价格
二、票的副本信息表(TICKET_TRANSCRIPT):
三、用户订单表(TICKET_ORDER_FORM):
USER_NAME
16
用户名
四、用户密码表(TICKET_USERS):
VARCHAE2
USER_PWD
10
用户密码
4.3人机界面的设计
用户界面是指软件系统和用户交互的接口,良好的用户界面往往可以提高用户使用系统的热情,并刺激他们的积极性。
本系统采用的是JAVA代码进行编写的。
实现的界面如下所示:
4.3.1登录界面设计
为了保证系统的安全性,进入系统之前必须经过必要的安全性,简洁、清晰、友好是此设计的风格,如图4.1所示:
图4.1
上面的注册以及登陆页面是管理员进行登录的界面,是游客进行注册和登陆的界面。
图4.2是登录出错的界面:
图4.2
4.3.2管理员基本信息与功能界面设计
输入正确的用户名和密码后,即进入系统。
图4.3是管理员登录进去的主页面。
有增加票、修改票和查询票的功能。
图4.3
图4.4是管理员查询功能界面;
图4.5是管理员增加票的功能界面;
图4.6是管理员修改票信息功能的实现界面;
图4.4
图4.5
图4.6
4.3.3用户基本信息与功能界面设计
图4.7是用户登陆成功后的界面;
图4.8是游客购票时的界面;
图4.9是游客查询余票的界面;
图4.10是游客查询订单时的界面,该界面上,游客可以选择退票;
图4.7
图4.8
图4.9
图4.10
第五章系统实现
5.1概述
在管理信息系统的生命周期中,经过了系统规划、系统分析和系统设计等阶段以后,便开始了系统实施阶段。
系统实施阶段要继承此前各阶段的工作成果,将技术设计转化成物理实现,因此,系统实施的成果是系统分析和设计阶段的结晶。
同时,系统实施作为系统生命周期中的后期阶段,是把系统设计转化为可实际运行的物理系统的必然步骤。
再好的系统设计,不通过系统实施也只能是不能带来现实效益的空中楼阁。
系统实施作为系统的最后物理实现阶段,对于系统的质量、可靠性和可维护性等有着十分重要的影响。
5.2系统运行与维护
经过上述一系列测试通过后,系统就可以投入使用了。
为了保证MIS长期高效地工作,必须加强对MIS运行的日常管理。
MIS的日常运行管理包括系统每天运行状况、数据输入和输入情况以及系统的安全性,完备性能及时地如实记录和处置。
这些工作主要由系统运行值班人员来完成。
系统维护的目的是为了保证管理信息系统正常可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用。
系统应用程序维护:
业务处理是通过程序进行的,一旦程序发生问题或业务发生变化就必然地引起程序的修改和调整。
数据维护:
需求为业务是不断在变化的,因此反映这种变化的数据也要求随之改变,包括内容增加及数据结构的调整。
代码维护:
系统的任何变化最终要通过修改代码实现。
硬件设备维护:
主要指主机及外设的日常维护和管理,以保证系统正常有效地运行。
第六章
小结
通过Oracle数据库这门课,不仅使我们学到Oracle的知识、得
到动手锻炼的实践机会。
最重要的是,通过它与以前学的SQL
Server数据库的对比学习,更使我们了解到二者的区别与共性。
为我们以后更深入的学习数据库打下基础。
我们这次的课程设计选用的题目是景点售票系统,为了迎接新的挑战,我们没用上一学期的系统。
该系统虽然不算大,但从着手到完成也是费了一凡功夫的。
无论什么样的系统,用我们现在的知识都无法将其做的很完善,所以我们的系统还有一些想到但没能完成的功能,不过我们会记住这些缺陷,在后面的学习中进一步攻破。
最后,再次感谢老师对我们这一学期的教育,谢谢!
登录界面源代码
importjava.awt.Dimension;
importjava.awt.GridLayout;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
publicclassLogOn
{
publicstaticvoidmain(String[]args)throwsSQLException
{
finalJFramejfrmlogin=newJFrame("
系统登录"
);
jfrmlogin.setSize(400,280);
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
jfrmlogin.setLocation((int)(screenSize.width-400)/2,(int)(screenSize.height-300)/2);
//设置框出现的位置
JPanelp1=newJPanel();
p1.add(newJLabel("
用户名:
"
));
finalJTextFieldjtxtuser=newJTextField(14);
JPanelp2=newJPanel();
p2.add(newJLabel("
密码:
finalJPasswordFieldjspwd=newJPasswordField(14);
JPanelp3=newJPanel();
finalJButtonjbtUser=newJButton("
登录"
finalJButtonjbtreg=newJButton("
注册"
JButtonjbtexit=newJButton("
退出"
p1.add(jtxtuser);
p2.add(jspwd);
p3.add(jbtUser);
p3.add(jbtreg);
p3.add(jbtexit);
jbtUser.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
if(e.getSource()==jbtUser)
{
try{
Class.forName("
oracle.jdbc.driver.OracleDriver"
conn=DriverManager.getConnection("
jdbc:
oracle:
thin:
@localhost:
1521:
orcl"
"
system"
123"
stmt=conn.createStatement();
StringUSER_NAME=jtxtuser.getText();
rs=stmt.executeQuery("
select*fromTICKET_USERSwhereUSER_NAME='
+jtxtuser.getText()+"
'
andUSER_PWD='
+jspwd.getText()+"
if(rs.next())
{
if(USER_NAME.equals("
admin"
)==false)
{
MainUsermf=newMainUser();
mf.setVisible(true);
jfrmlogin.dispose();
}
else
MainFramemf=newMainFrame();
mf.setVisible(true);
jfrmlogin.dispose();
}
else{
JOptionPane.showMessageDialog(null,"
用户名或密码不一致,请重新输入!
"
系统提示"
JOptionPane.ERROR_MESSAGE);
jtxtuser.setText("
jspwd.setText("
}catch(Exceptionex){
JOptionPane.showMessageDialog(null,"
jtxtuser.setText("
jspwd.setText("
}
}
});
jbtreg.addActionListener(newActionListener()
{
if(e.getSource()==jbtreg)
rs=stmt.executeQuery("
insertintoTICKET_USERS(USER_NAME,USER_PWD)values('
'
)"
JOptionPane.showMessageDialog(null,"
你已成功注册!
可以登录了!
JOptionPane.INFORMATION_MESSAGE);
用户注册失败!
jtxtuser.setText("
jbtexit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.exit(0);
});
jfrmlogin.getContentPane().setLayout(newGridLayout(3,1));
jfrmlogin.getContentPane().add(p1);
jfrmlogin.getContentPane().add(p2);
jfrmlogin.getContentPane().add(p3);
jfrmlogin.setVisible(true);
}
}
连接数据库代码
importjava.sql.*;
publicclassConnectOracle{
publicstaticvoidconnection(String[]args)throwsSQLExc