景点售票系统设计报告-源代码.doc

上传人:李司机 文档编号:1088971 上传时间:2022-06-21 格式:DOC 页数:49 大小:554.06KB
返回 下载 相关 举报
景点售票系统设计报告-源代码.doc_第1页
第1页 / 共49页
景点售票系统设计报告-源代码.doc_第2页
第2页 / 共49页
景点售票系统设计报告-源代码.doc_第3页
第3页 / 共49页
景点售票系统设计报告-源代码.doc_第4页
第4页 / 共49页
景点售票系统设计报告-源代码.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《景点售票系统设计报告-源代码.doc》由会员分享,可在线阅读,更多相关《景点售票系统设计报告-源代码.doc(49页珍藏版)》请在三一办公上搜索。

1、 . . Oracle课程设计报告 华清池售票管理系统目录第一章引言1第二章系统分析22.1需求分析22.2功能模块图2 2.3数据流程图3第三章系统概要设计43.1数据库设计53.1.1实体描述6 3.1.2联系描述63.1.3 E-R图7第四章系统详细设计 84.1数据库的逻辑设计84.2数据库的实现94.3 人机界面的设计94.3.1登陆界面设计10 4.3.2管理员基本信息与功能界面设计114.3.3 用户基本信息与功能界面设计13第五章系统实现 165.1概述165.2系统运行与维护16第六章小结 1749 / 49第一章引言数据库(Database)是按照数据结构来组织、存储和管理

2、数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。其中Oracle以其使用方便,安全性高,功能强大和完善的企业服务系统赢得了众多用户的青睐。下面我将用这学期学到的最基本的oracle知识简单地设计一个景点售票系统。该系统实现了基本的对数据库的增删改查。作为买票的顾客(用户),我们实现了其买票,退票和查票的功能,作为卖票的一方(管理员),也可以对余票进行查询,同时也可以

3、增加,修改票务信息!当然,用户角色可以注册以与登录该售票系统,而管理员则默认账户为admin,只能进行登录该系统,不能注册管理员账户。其中使用的oracle知识只是oracle里面很少的一部分,但也作为这学期学到的成果展现给大家,如有不对之处欢迎纠正第二章系统分析2.1 需求分析该系统主要实现了一般的简单售票系统的最基本的功能。购票者要购票首先需要注册账号才能登陆,注册时需要填写账号和密码。登陆以后可以购票,也可以查询余票。这里,客户购得的票会有票号、票价和有效日期等信息。购票成功后,顾客还可以查询自己的订单。当然,如果顾客发现买错票,这时候也可以退票。卖票者,也就是管理员可以查询余票,也可以

4、增加、修改票信息。当然,顾客查询和管理员查询看到的东西肯定是不一样的。这里管理员会特殊一点,会看到每一余票的具体信息,而顾客只能看到剩余的总票数和日期以与票价。增加功能主要实现对每一天的票务信息的更新的功能。每天不管票是否卖完,都须更新票务信息。修改功能主要针对票价与票的日期进行修改,比如某天要做活动,有优惠,票价半价,这时管理员便可以修改票价。在现在竞争激烈的电子商务中,系统的安全性和稳定性是首要的选择,其次是提供完善的服务流程。当然实际上的景点售票系统要比这个复杂得多,在这里我只是做了一个系统的抽象和简单建模,也只实现了其中的部分功能,实际上还要包括更多更复杂的子模块和交互性设置来提高系统

5、的完整性和可操作性。2.2功能模块图华清池售票系统功能模块图就是将系统的功能进行分解,按功能从属关系表示出来的图表。画出功能模块图主要是为了更加明确的表达部组织关系,更加清晰的理清部逻辑关系,做到一目了然规各自功能部分,使之条理化。游客功能模块管理员功能模块查询余票查询余票修改票信息增加票退票查询订单购票图2.12.3数据流程图票游客管理员购票查票查票增加票退票修改票提交订单订单查询订单图2.2第三章系统概要设计在经过了系统分析之后,接下来的任务就是系统设计。管理信息系统设计阶段的主要目的是将系统分析阶段所提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)

6、方案。在系统设计中,应尽量满足以下要求: 1) 系统性; 2) 灵活性; 3) 可靠性; 4) 经济性。所以在这一阶段的主要任务是从管理信息系统的总体目标出发,根据系统分析阶段对系统的逻辑功能的要求,并考虑到经济、技术和运行环境等方面的条件,确定系统的总体结构和系统各组成部分的技术方案,合理选择计算机和通信的软、硬件设备,提出系统的实施计划,确保总体目标的实现。系统总体结构设计阶段的工作是一项技术性强、涉与面广的活动,它包括如下主要活动: 1)系统总体布局方案的确定; 2)软件系统总体结构的设计; 3)计算机硬件方案的选择和设计; 4)数据存储的总体设计。结构化设计是系统开发的结构化方法和基本

7、思路与原则在软件系统设计中的应用,也是软件系统设计中应用最广的一种方法。它适用于任何类型的软件系统总体设计,可以同结构化分析和结构化设计前后衔接起来使用。结构化设计方法是从建立一个拥有良好结构的系统的观点出发,基于把一个复杂的系统分解成相对独立模块的原则,主要研究了将系统分解为不同模块的方法和技术,分析系统分解时产生的各种影响,提出了评价模块结构质量的具体标准,并给出了从表达用户要求的数据流程图导出结构图的规则性强、涉与面广的活动,它包括如下主要活动:1)系统总体布局方案的确定;2)软件系统总体结构的设计;3)计算机硬件方案的选择和设计;4)数据存储的总体设计。结构化设计是系统开发的结构化方法

8、和基本思路与原则在软件系统设计中的应用,也是软件系统设计中应用最广的一种方法。它适用于任何类型的软件系统总体设计,可以同结构化分析和结构化设计前后衔接起来使用。结构化设计方法是从建立一个拥有良好结构的系统的观点出发,基于把一个复杂的系统分解成相对独立模块的原则,主要研究了将系统分解为不同模块的方法和技术,分析系统分解时产生的各种影响,提出了评价模块结构质量的具体标准,并给出了从表达用户要求的数据流程图导出结构图的规则。3.1数据库设计数据库设计是开发数据库与其应用系统的技术,也是信息系统开发和建设的重要组成部分。具体的说,数据库设计是要在一个给定的应用环境中,通过合理的逻辑设计和有效的物理设计

9、,构造较优的数据库模式,建立数据库与其应用系统,满足用户的各种信息需求。在系统的数据库设计中,首先对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后得出系统的关系模式。本系统用实体-联系图(简称E-R图)来描述系统的概念模型。E-R图由实体、属性、联系三部分组成,其符号如图4.6所示:实体 属性联系图4.63.1.1 实体描述本系统中涉与的实体有四个,其结构如下:票(票价、日期、票号)管理员(管理员账号、管理员密码)游客(游客账号、游客密码)订单(游客账号、票价、票号、日期)3.1.2 联系描述本系统中实体之间有3个联系,其关系如下:(1)购票关系:管理员、游客和票的

10、关系是1:M:1,因为多个游客可以向一个管理员一次订购一票;(2)退票关系:管理员、游客和票的关系是1:M:1,因为多个游客可以向一个管理员一次退一票;(3)管理员增加票关系:管理员和票的关系是1:N,因为一个管理员可以同时增加N票。以上实体的联系属性如下:购票(买票游客、票号、日期、数量、票价、卖票管理员)退票(买票游客、票号、日期、数量、票价、退票管理员)管理员增加票(管理员、票号、数量、日期、票价)3.1.3 E-R图本系统的E-R图如图3.1所示:票游客账号密码1 11购票退票查询票价n nn有效日期票号查询修改增加 n 1 n 1管理员 1 1账号密码图3.1第四章系统详细设计4.1

11、 数据库的逻辑设计数据库的逻辑设计的任务就是把概念结构设计阶段的基本ER图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是ER图关系模型的转化。而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定这些关系模式的属性和码。对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。对于实体间的联系,可以分成三种情况: 1)若实体间的联系是1:1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。 2)若实体间的联系是1:n,则在n端实体转换成的关系中加入1端实体转换成的关系码。3)若实体间的联系是

12、n:m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。本系统中所涉与到的4个实体转换为4个关系,3个三元联系转换为3个关系,所以本系统共有7个关系。4.2 数据库的实现按照数据字典中的数据元素说明确定每个数据项的类型和长度,使每个关系都对应一个数据库表:(其中游客信息表和管理员信息表合成一个用户密码表,购票信息表和退票信息表都在票的基本信息表里动态变化,因此这里只建四表)一、 票的基本信息表(TICKET):列名数据类型长度属性描述TICKET_NUMVARCHAR28主键票号TICKET_DATEVARCHAR212不允许为空票的日期TICK

13、ET_PRICEFLOAT6不允许为空票的价格二、 票的副本信息表(TICKET_TRANSCRIPT):列名数据类型长度属性描述TICKET_NUMVARCHAR28主键票号TICKET_DATEVARCHAR212不允许为空票的日期TICKET_PRICEFLOAT6不允许为空票的价格三、 用户订单表(TICKET_ORDER_FORM):列名数据类型长度属性描述USER_NAMEVARCHAR216不允许为空用户名TICKET_NUMVARCHAR28主键票号TICKET_DATEVARCHAR212不允许为空票的日期TICKET_PRICEFLOAT6不允许为空票的价格四、 用户密码表

14、(TICKET_USERS):列名数据类型长度属性描述USER_NAMEVARCHAE216主键用户名USER_PWDVARCHAR210不允许为空用户密码4.3 人机界面的设计用户界面是指软件系统和用户交互的接口,良好的用户界面往往可以提高用户使用系统的热情,并刺激他们的积极性。本系统采用的是JAVA代码进行编写的。实现的界面如下所示:4.3.1 登录界面设计为了保证系统的安全性,进入系统之前必须经过必要的安全性,简洁、清晰、友好是此设计的风格,如图4.1所示:图4.1上面的注册以与登陆页面是管理员进行登录的界面,是游客进行注册和登陆的界面。图4.2是登录出错的界面:图4.24.3.2 管理

15、员基本信息与功能界面设计输入正确的用户名和密码后,即进入系统。图4.3是管理员登录进去的主页面。有增加票、修改票和查询票的功能。图4.3图4.4是管理员查询功能界面;图4.5是管理员增加票的功能界面;图4.6是管理员修改票信息功能的实现界面;图4.4图4.5图4.64.3.3用户基本信息与功能界面设计图4.7是用户登陆成功后的界面;图4.8是游客购票时的界面;图4.9是游客查询余票的界面;图4.10是游客查询订单时的界面,该界面上,游客可以选择退票;图4.7图4.8 图4.9图4.10第五章系统实现5.1 概述在管理信息系统的生命周期中,经过了系统规划、系统分析和系统设计等阶段以后,便开始了系

16、统实施阶段。系统实施阶段要继承此前各阶段的工作成果,将技术设计转化成物理实现,因此,系统实施的成果是系统分析和设计阶段的结晶。同时,系统实施作为系统生命周期中的后期阶段,是把系统设计转化为可实际运行的物理系统的必然步骤。再好的系统设计,不通过系统实施也只能是不能带来现实效益的空中楼阁。系统实施作为系统的最后物理实现阶段,对于系统的质量、可靠性和可维护性等有着十分重要的影响。5.2 系统运行与维护经过上述一系列测试通过后,系统就可以投入使用了。为了保证MIS长期高效地工作,必须加强对MIS运行的日常管理。MIS的日常运行管理包括系统每天运行状况、数据输入和输入情况以与系统的安全性,完备性能与时地

17、如实记录和处置。这些工作主要由系统运行值班人员来完成。系统维护的目的是为了保证管理信息系统正常可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用。系统应用程序维护:业务处理是通过程序进行的,一旦程序发生问题或业务发生变化就必然地引起程序的修改和调整。数据维护:需求为业务是不断在变化的,因此反映这种变化的数据也要求随之改变,包括容增加与数据结构的调整。代码维护:系统的任何变化最终要通过修改代码实现。硬件设备维护:主要指主机与外设的日常维护和管理,以保证系统正常有效地运行。第六章小结 通过Oracle数据库这门课,不仅使我们学到Oracle的知识、得到动手锻炼的实践机会。最重要的是,通过它与

18、以前学的SQLServer数据库的对比学习,更使我们了解到二者的区别与共性。为我们以后更深入的学习数据库打下基础。 我们这次的课程设计选用的题目是景点售票系统,为了迎接新的挑战,我们没用上一学期的系统。该系统虽然不算大,但从着手到完成也是费了一凡功夫的。无论什么样的系统,用我们现在的知识都无法将其做的很完善,所以我们的系统还有一些想到但没能完成的功能,不过我们会记住这些缺陷,在后面的学习中进一步攻破。最后,再次感老师对我们这一学期的教育,!登录界面源代码import java.awt.Dimension;import java.awt.GridLayout;import java.awt.To

19、olkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import

20、 javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;public class LogOn public static void main(String args)throws SQLExceptionfinal JFrame jfrmlogin=new JFrame(系统登录);jfrmlogin.setSize(400,280);Dimension screenSize=Toolkit.getDefaultToolk

21、it().getScreenSize();jfrmlogin.setLocation(int) (screenSize.width-400)/2,(int)(screenSize.height-300)/2);/设置框出现的位置JPanel p1=new JPanel();p1.add(new JLabel(用户名:);final JTextField jtxtuser=new JTextField(14);JPanel p2=new JPanel();p2.add(new JLabel(密 码:);final JPasswordField jspwd=new JPasswordField(1

22、4);JPanel p3=new JPanel();final JButton jbtUser=new JButton(登 录);final JButton jbtreg=new JButton(注 册);JButton jbtexit=new JButton(退 出);p1.add(jtxtuser);p2.add(jspwd);p3.add(jbtUser);p3.add(jbtreg);p3.add(jbtexit);jbtUser.addActionListener(new ActionListener()public void actionPerformed(ActionEvent

23、e) Connection conn=null; ResultSet rs=null; Statement stmt=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(); String USER_NAME=jtxtuser.getText(); rs =

24、 stmt.executeQuery(select * from TICKET_USERS where USER_NAME=+jtxtuser.getText()+and USER_PWD=+jspwd.getText()+); if(rs.next() if(USER_NAME.equals(admin)=false) MainUser mf=new MainUser(); mf.setVisible(true); jfrmlogin.dispose(); else MainFrame mf=new MainFrame(); mf.setVisible(true); jfrmlogin.di

25、spose(); else JOptionPane.showMessageDialog(null,用户名或密码不一致,请重新输入!,系统提示,JOptionPane.ERROR_MESSAGE); jtxtuser.setText(); jspwd.setText(); catch (Exception ex) JOptionPane.showMessageDialog(null,用户名或密码不一致,请重新输入!,系统提示,JOptionPane.ERROR_MESSAGE); jtxtuser.setText(); jspwd.setText(); );jbtreg.addActionLis

26、tener(new ActionListener()public void actionPerformed(ActionEvent e) Connection conn=null; ResultSet rs=null; Statement stmt=null; if(e.getSource()=jbtreg) try Class.forName(oracle.jdbc.driver.OracleDriver); conn = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl, system, 123); stmt=

27、conn.createStatement(); rs = stmt.executeQuery(insert into TICKET_USERS(USER_NAME,USER_PWD) values(+jtxtuser.getText()+,+jspwd.getText()+); if(rs.next() JOptionPane.showMessageDialog(null,你已成功注册!可以登录了!,系统提示,JOptionPane.INFORMATION_MESSAGE); jtxtuser.setText(); jspwd.setText(); else JOptionPane.showM

28、essageDialog(null,用户注册失败!,系统提示,JOptionPane.ERROR_MESSAGE); jtxtuser.setText(); jspwd.setText(); catch (Exception ex) JOptionPane.showMessageDialog(null,用户注册失败!,系统提示,JOptionPane.ERROR_MESSAGE); jtxtuser.setText(); jspwd.setText(); ); jbtexit.addActionListener(new ActionListener() public void actionPe

29、rformed(ActionEvent e) System.exit(0); ); jfrmlogin.getContentPane().setLayout(new GridLayout(3,1); jfrmlogin.getContentPane().add(p1);jfrmlogin.getContentPane().add(p2); jfrmlogin.getContentPane().add(p3); jfrmlogin.setVisible(true);连接数据库代码import java.sql.*; publicclass ConnectOracle publicstaticvo

30、id connection(String args) throws SQLException /Connection conn=null; /Statement stmt=null; /ResultSet rs=null; /JDBC 直连Oracle数据库 加载驱动 try System.out.println(正在连接数据库.); Class.forName(oracle.jdbc.driver.OracleDriver); /*conn =*/ DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl, system

31、, 123); System.out.println(已经连接到数据库.); /stmt=conn.createStatement(); /stmt.executeQuery(insert into student(STUID,STUNAME,SEX,AGE)values(0001,华,男,20);/rs=stmt.executeQuery(select * from STUDENT); /System.out.println( stuID + StuName + Sex + Age);/while(rs.next() /int STUID=rs.getInt(STUID); /String

32、STUNAME=rs.getString(STUNAME); /String SEX=rs.getString(SEX);/int AGE=rs.getInt(AGE);/System.out.println( +STUID+ +STUNAME+ +SEX+ +AGE); /System.out.println( STUID +STUID+ STUNAME +STUNAME+SEX+SEX+AGE+AGE); / catch (Exception ex) /System.out.println(出现的异常为 + ex); 增加票源代码import java.awt.Rectangle;impo

33、rt java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.s

34、wing.JTextField;public class AddTicket extends JPanel implements ActionListenerConnection con;Statement st;JLabel jLabel1=new JLabel(票 单 价:);JLabel jLabel2=new JLabel(票 日 期:);JTextField jTextField1=new JTextField();JTextField jTextField2=new JTextField();JButton jButton1=new JButton(确定增加);public Add

35、Ticket()tryjbInit();catch(Exception exception)exception.printStackTrace();private void jbInit() throws ExceptionClass.forName(oracle.jdbc.driver.OracleDriver); con = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl, system, 123); this.setLayout(null);jLabel1.setBounds(new Rectangle(4

36、0,40,64,24);jLabel2.setBounds(new Rectangle(40,100,53,22);jTextField1.setBounds(new Rectangle(102,40,200,30);jTextField2.setBounds(new Rectangle(102,100,200,30);jButton1.setBounds(new Rectangle(120,220,150,32);jButton1.addActionListener(this);this.add(jLabel1);this.add(jTextField1);this.add(jLabel2)

37、;this.add(jTextField2);this.add(jButton1);ResultSet rs=null;st=con.createStatement();rs = st.executeQuery(select * from TICKET_TRANSCRIPT);if(rs.next() jTextField1.setText(rs.getString(TICKET_PRICE);public void actionPerformed(ActionEvent e)tryst=con.createStatement();st.executeUpdate(delete from TI

38、CKET);st.executeUpdate(delete from TICKET_ORDER_FORM);st.executeUpdate(insert into TICKET select * from TICKET_TRANSCRIPT); st.executeUpdate(update TICKET set TICKET_DATE=+jTextField2.getText()+); st.executeUpdate(update TICKET set TICKET_PRICE=+jTextField1.getText()+);JOptionPane.showMessageDialog(

39、this,票增加成功!);jTextField1.setText();jTextField2.setText();catch(Exception ex)JOptionPane.showMessageDialog(this,票增加失败!);ex.printStackTrace();管理员查询票源代码import javax.swing.*;import javax.swing.table.JTableHeader;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;public class AdminInquireTicket extends JFrameConnection con;Statement st; private JScrollPane scpDemo; private JTableHeader jth; pri

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号