首页 > 编程语言 >【精品毕设】基于JavaEE的模拟火车售票系统设计与实现

【精品毕设】基于JavaEE的模拟火车售票系统设计与实现

时间:2024-06-02 09:33:04浏览次数:14  
标签:售票 毕设 End 修改 Recordset Text JavaEE 车次 系统

                                            

一可行性研究

1.概述

用户:某省市乃至全国

开发单位:浙江海洋学院D02计算机(2)班  何升高

系统名称:火车售票系统

2.系统目标

  在2005年5月1日之前,开发一个火车售票系统,实现对火车售票自动化,轻松方便大家的交通运输。用户可以在任何一个站点购买任何两站间的火车票,可以大大减轻买票的烦索步骤,同时也可以订票.

3.存在的问题

范围太大,开发人数太少,开发人员技术有限

4.建立新系统

  根据系统的长期目标,以及现行系统存在的主要问题,建立系统可分以下几步实现。

(1)对新系统实现的硬件条件

    显然该系统只是一个软件系统,它若要真正放于现实,则尚须相应的硬件支持,如打印机等.

(2)新系统可能产生的影响

    要对火车站售票工作人员进行此系统软件的使用,使其逐步适应计算机化的要求。

(3)效益分析

    该系统提高了大家买票的方便度,全国各地的客户可以在任何火车站购买到任何两地间的火车票,方便了大家的生活.

5.结论

 由于该系统在国内外是一个技术上成熟的系统,并且有工程技术方面的保证,以及负责人采取的积极态度,因此该系统是可行的.

二系统开发计划     

1.概述

(1)系统开发的目标

  在一个月内建立一个完善的系统,以实现工程项目管理计算机化。

(2)系统开发的基本方针

  以浙江海洋学院D02计算(2)班 何升高同学开发为主

2.实施计划

(1)工作进度

阶段

人数

工作量/人日

时间/日

起止时间

可行性研究

1

2

2

2005.3.11~2005.3.13

系统分析

1

7

7

2005.3.14~2005.3.21

系统设计

1

5

5

2005.3.22~2004.3.27

程序设计

1

5

5

2005.3.28~2005.4.2

系统测试

1

2

2

2005.4.3~2005.4.5

系统试运行

1

2

2

2005.4.6~2005.4.8

验收

1

3

3

2005.4.9~2005.4.12

三需求分析

1.概述

(1)系统分析的原理

分析目前火车的状况,及客户的需求,确定开发的目的和目标。

(2)系统分析方法

采用结构化分析方法,建立新的系统的逻辑模型,这个逻辑模型将尽可能避免计算机的专业术语,以便于客户和开发者双方人员共同讨论。

2.系统功能

第一阶段建立的工程项目管理系统由一个登录系统组成,但它分两部分登录,一个是管理员登录,一个是售票员登录,因为他们两个登录后虽然是一样的界面,但会有不一样的功能.

火车售票系统的第一层数据流程图如图1所示。

                             1

第二阶段: 进入火车售票系统后分为两个父系统

(1)管理员系统

该父系统又包括以下三个子系统:

1)。删除车次系统

2)。修改车次系统

3)。增加车次系统

图2

(2)售票员系统

    该系统又包括以下四个子系统 

1)。购票系统

2)。订票系统

3)。退票系统

4)。订票结款系统

                                                                  

(1)删除车次系统

其数据流程图如图1—1所示

                                                                                图1—1

(2)增加车次系统

  其数据流程图如图1—2所示

                 

(4) 售票员信息修改系统

   该系统分为三个子系统:

   1) 增加售票员系统

     其数据流程图如下所示:

        

  • 系统需求分析报告(数据流图、数据词典和功能分析)

系统应具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。

    1. 功能需求

经过分析后确定系统应具备以下功能:

(1)、售票功能

  • 销售车票
  • 预订车票
  • 退票

(2)、查询功能

  • 车次查询
  • 时刻表查询
  • 售票情况查询

(3)、调度功能

  • 运价修改
  • 车辆修改
  • 终点站修改
  • 车次修改

(4)、维护功能

  • 车票表修改
  • 预订车票表修改
  • 退票表修改
  • 密码修改

(5)、统计功能

  • 售票统计
  • 报表打印

2、数据流图

使用结构化分析方法,确定系统的数据主要是运价、车次、终点站名、发车时间和车票,对数据的操作主要有运价修改、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。

3、数据字典:

经过分析可以得到以下数据流条目:

车次表=车辆编号+车型+座位数

终点站名表=站名+里程

运价表=车型+运价

发车时刻表=车次+车辆编号+站名+发车时间+检票口

已售车票表=票号+乘车日期+车次+站名+发车时间+票价+全半价+工号+退票否

预订车票表=预订号+乘车日期+车次+站名+发车时间+车型+票价+客户名称+订票数量

退票表=票号+退票时间+票价+应退款

售票员编号=工号+姓名

车辆编号=6{数字}6

车次=4{字符}5

车型=1{字符}8

座位数=2{数字}2

检票口=1{数字}2

站名=1{字符}10

里程=1{数字}5

运价=1{数字}6

发车时间={时间}

乘车日期={日期}

票号=7{数字}7

票价=1{数字}5

全半价=2{字符}2

退票否={T|F}

预订号=4{数字}4

客户名称=6{字符}20

订票数量=1{数字}2

退票时间={日期时间}

应退款=1{数字}5

工号=3{字符}3

姓名=4{字符}8

  • 数据逻辑结构设计(E-R图、关系模式和数据库结构)

1ER

2、关系模式

车辆(车辆编号车型,座位数)

目标站名(站名,里程)

发车时刻表(车次站名车辆编号,发车时间,检票口)途径(车次,站名)

车票(票号,乘车日期,车次站名,票价,全半价,座位号,工号,退票否)

预订(预订号车次站名,乘车日期,顾客名称,票数)

退票(票号,退票时间,票价,应退款)

售票员(工号,姓名)

运价(车型,价格)

3、数据库结构

车辆表:

字段名

类型

长度

小数点

允许空

主/外键

车辆编号

Int

4

车型

Varchar

8

座位数

smallInt

2

目标站名:

字段名

类型

长度

小数点

允许空

主/外键

站名

Varchar

10

里程

Int

4

发车时刻表:

字段名

类型

长度

小数点

允许空

主/外键

车次

Varchar

5

站名

Varchar

10

车辆编号

Int

4

发车时间

Datetime

8

检票口

smallInt

2

途径表:

字段名

类型

长度

小数点

允许空

主/外键

车次

Varchar

5

站名

Varchar

10

车票表:

字段名

类型

长度

小数点

允许空

主/外键

票号

Int

4

乘车日期

Datetime

8

车次

Varchar

5

站名

Varchar

10

票价

Float

8

全半价

Char

2

座位号

smallInt

2

工号

Char

3

退票否

Char

1

预订表:

字段名

类型

长度

小数点

允许空

主/外键

预订号

Int

4

车次

Varchar

5

站名

Varchar

10

乘车日期

Datetime

8

顾客名称

Varchar

20

票数

smallInt

2

退票表:

字段名

类型

长度

小数点

允许空

主/外键

票号

Int

4

退票时间

Datetime

8

票价

Float

8

应退款

Float

8

售票员表:

字段名

类型

长度

小数点

允许空

主/外键

工号

Char

3

姓名

Char

8

运价表:

字段名

类型

长度

小数点

允许空

主/外键

车型

Varchar

8

价格

Float

8

  • 软件结构设计(画出系统软件结构图)

  • 程序模块设计与调试(设计和调试各程序模块,提交主要的程序段)

用户登入用户名和密码校对:

Private Sub Cmdok_Click()

Dim username1 As String, username2 As String

username1 = Text1.Text

If Option1.Value Then

   Set Text3.DataSource = Adodc1

   Text3.DataField = "口令"

   Adodc1.Recordset.MoveFirst

   If username1 <> "" Then

      username2 = "用户名='" & username1 & "'"

      Adodc1.Recordset.Find username2

      If Adodc1.Recordset.EOF Then

        MsgBox "用户名错误请重输", 16, "错误"

      Else

        If Text2.Text <> Text3.Text Then

           MsgBox "密码错误请重输", 16, "错误"

           Text2.Text = ""

        Else             

           MDIForm1.Show

           Form1.Hide

        End If

      End If

  End If

Else

  If Option2.Value Then

     Set Text3.DataSource = Adodc2

     Text3.DataField = "口令"

     Adodc2.Recordset.MoveFirst

    If username1 <> "" Then

       username2 = "工号='" & username1 & "'"

       Adodc2.Recordset.Find username2

       If Adodc2.Recordset.EOF Then

         MsgBox "用户名错误请重输", 16, "错误"

       Else

         If Text2.Text <> Text3.Text Then

            MsgBox "密码错误请重输", 16, "错误"

            Text2.Text = ""

         Else

            MDIForm1.Show

            Form1.Hide

         End If

       End If

    End If

  End If

End If

End Sub

当选中车次显示当前座位号和剩余票数,及拒售离开车只有五钟的车票

Private Sub DataGrid1_Click()

Dim cc As String, sum As Integer

sum = 0

Adodc3.Recordset.MoveFirst

Adodc4.Recordset.MoveFirst

Adodc6.Recordset.MoveFirst

Adodc7.Recordset.MoveFirst

Adodc8.Recordset.MoveFirst

If Month(Date) = Combo2.Text And Day(Date) = Combo3.Text Then

  If (Hour(Text19.Text) - Hour(Now)) * 60 + Minute(Text19.Text) - Minute(Now) < 5 Then

    MsgBox "已接近开车,停止售票", 64, "错误"

    Cmdok.Visible = False

  Else

    Cmdok.Visible = True

  End If

Else

  Cmdok.Visible = True

End If

cc = "车型='" & Text5.Text & "'"

Adodc3.Recordset.Find cc

cc = "站名='" & Text6.Text & "'"

Adodc4.Recordset.Find cc

If Combo4.Text = "全" Then

   Text2.Text = Int(Val(Text7.Text) * Val(Text8.Text) + 0.5)

Else

   Text2.Text = Int(Val(Text7.Text) * Val(Text8.Text) / 2 + 0.5)

End If

Text2.Refresh

While Not Adodc8.Recordset.EOF

   If Year(Text12) = Year(Date) And Month(Text12) = Combo2.Text And Day(Text12) = Combo3.Text And Text13.Text = Text9.Text And Text25.Text = "F" Then

     sum = sum + 1

   End If

   Adodc8.Recordset.MoveNext

Wend

Text3.Text = sum + 1

Adodc8.Recordset.MoveFirst

While Not Adodc8.Recordset.EOF

   If Year(Text12) = Year(Date) And Month(Text12) = Combo2.Text And Day(Text12) = Combo3.Text And Text13.Text = Text9.Text And Text25.Text = "T" Then

     Text3.Text = Text17.Text

     Adodc8.Recordset.MoveLast

     flag = "T"

   Else

     Adodc8.Recordset.MoveNext

   End If

Wend

While Not Adodc9.Recordset.EOF

   If Year(Text22.Text) = Year(Date) And Month(Text22.Text) = Combo2.Text And Day(Text22.Text) = Combo3.Text And Text23.Text = Text9.Text Then

     sum = sum + Val(Text24.Text)

   End If

   Adodc9.Recordset.MoveNext

Wend

cc = "车次='" & Text9.Text & "'"

Adodc7.Recordset.Find cc

cc = " 车辆编号='" & Text11.Text & "'"

Adodc6.Recordset.Find cc

Text4.Text = Val(Text10.Text) - sum

Text4.Refresh

End Sub

退票时当输入票号后算出应退款

Private Sub Text1_LostFocus()

Dim cc As String

Adodc1.Recordset.MoveFirst

Adodc2.Recordset.MoveFirst

cc = "票号='" & Text1.Text & "'"

Adodc1.Recordset.Find cc

Text3.Text = Text6.Text

Text2.Text = Now

cc = "车次='" & Text7.Text & "'"

Adodc2.Recordset.Find cc

If Not Adodc2.Recordset.EOF Then

If Month(Text5.Text) > Month(Text2.Text) Then

   Text4.Text = Int(Val(Text6.Text) * 0.1 + 0.5)

Else

  If Month(Text5.Text) = Month(Text2.Text) Then

    If Day(Text5.Text) > Day(Text2.Text) Then

      Text4.Text = Val(Text6.Text) - Int(Val(Text6.Text) * 0.1 + 0.5)

    Else

      If Day(Text5.Text) = Day(Text2.Text) Then

         If (Hour(Text9.Text) - Hour(Text2.Text)) * 60 + Minute(Text9.Text) - Minute(Text2.Text) >= 120 Then

           Text4.Text = Val(Text6.Text) - Int(Val(Text6.Text) * 0.1 + 0.5)

         Else

           If (Hour(Text9.Text) - Hour(Text2.Text)) * 60 + Minute(Text9.Text) - Minute(Text2.Text) >= 60 Then

             Text4.Text = Val(Text6.Text) - Int(Val(Text6.Text) * 0.2 + 1)

           Else

             If (Hour(Text9.Text) - Hour(Text2.Text)) * 60 + Minute(Text9.Text) - Minute(Text2.Text) < 5 Then

               MsgBox "接近发车不能退票", 16, "错误"

               Form5.Hide

             Else

               Text4.Text = Int(Val(Text6.Text) * 0.3 + 1)

             End If

           End If

         End If

      Else

        MsgBox "车票过期不能退", 16, "错误"

        Form5.Hide

      End If

     End If

   Else

     MsgBox "车票过期不能退", 16, "错误"

     Form5.Hide

   End If

End If

Else

 MsgBox "没有该票", 16, "错误"

End If

End Sub

  • 软件使用说明书

首先通过登录界面进行登录,登录的身份分为管理员和售票员,管理员的用户名默认为:Administrator,密码为:123456;售票员的用户名为自己的工号,初始密码也为:123456。密码的修改可以通过登录后选择文件菜单→口令修改,进行密码的修改。

售票员登录后能使用的菜单有:文件、售票、查询、统计。

    1. 售票菜单下有:销售车票、预订车票、退票等功能,退票时只需输入票号即可退票。
    2. 查询菜单下有:车次查询、时刻表查询、售票情况查询。车次查询可进行浏览和输入车次查询,选中某个车次后可查看它的途径站点。时刻表查询按时间的先后进行排列,一秒钟记录自动下移一条,同时显示该车的途径站点。售票情况查询按站名对每班车进行排列,每一秒钟移动一条记录,同时显示总的票数和剩余的票数。
    3. 统计菜单有:售票统计和报表打印。售票统计可以按车次进行统计,列出每一个次车所卖出的票数;也可以按售票员的工号进行统计,列出每位售票员卖出的票数。

管理员登录后能使用的菜单有:文件、查询、调度、维护、统计。

    1. 文件菜单、查询菜单及统计菜单与售票员的相同
    2. 调度菜单下有:运价修改、车辆修改、终点站修改、车次修改。运价修改可以修改运输的单价。车辆修改可以进行对车辆进行添加、修改、删除。终点站修改可以进行对终点站的添加、修改、删除。车次修改可以进行添加、修改、删除车次实现调度。
    3. 维护菜单下有:车票表修改、预订车票表修改、退票表修改、密码修改。车票表修改、预订车票表修改和退票表修改都具有添加、删除、更新等功能。密码修改可以对所有的售票员的口令进行修改、和删除,同时也可以进行添加,点击添加后是对售票员表添加售票员的工号和姓名,同时在售票员口令表里生成售票员的工号与初始密码123456。

标签:售票,毕设,End,修改,Recordset,Text,JavaEE,车次,系统
From: https://blog.csdn.net/qq_52030698/article/details/139339055

相关文章

  • 基于SpringBoot+Vue的在线答疑管理系统设计与实现毕设(文档+源码)
            目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的在线答疑管理系统,项目源码请点击文章末尾联系我哦~目前有各类成......
  • 基于SpringBoot+Vue的在线BLOG网管理系统设计与实现毕设(文档+源码)
            目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的在线BLOG网管理系统,项目源码请点击文章末尾联系我哦~目前有各类......
  • 基于SpringBoot+Vue的校园博客管理系统设计与实现毕设(文档+源码)
          目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的校园博客管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕......
  • JAVAEE之文件IO_数据流概念,字节流:InputStream、OutputStream,字符流:reader、writer,及实
    什么是数据流 顾名思义,I表示input,O表示output,也就是输入输出流,主要是在程序与文件之间,用于传输数据的通道。既然要传输数据,那么我们需要理解文件和程序之间哪种方向的传输是输入流,哪种传输作为输出流?我们可以举一个例子,如下图所示: IO流是JavaIO中的核心概念。流......
  • Vue前端的搭建(与后端JavaEE的连接)
    目录前端平台搭建(Vue2.6,App:HBulderX)创建Vue2.6项目下载相应插件方便开发路由配置对连接后端进行一些配置(main.js文件)导入ElementUI组件组件|Element同步与异步axios异步请求框架前端平台搭建(Vue2.6,App:HBulderX)创建Vue2.6项目如图,创完之后的样子下载相应插件方......
  • Java毕业设计-基于springboot开发的旅游网站-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、用户信息管理2、旅游动态管理3、景点信息管理4、公告信息管理四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的旅游网站-......
  • JAVAEE之线程多进阶(1)_常见的锁策略
    前言 在前面的线程初阶的内容中,我们已经简单介绍了锁,包括synchronized、volatile关键字(详细内容可见:https://blog.csdn.net/2301_80653026/article/details/138818637和https://blog.csdn.net/2301_80653026/article/details/138867371),我们在接下来要讲解的锁策略内容,对......
  • 【精品毕设】基于JavaEE的智能公交考勤系统管理软件设计(包含论文和源码)
    智能公交考勤系统管理软件设计摘要:随着现代科学技术的发展,越来越多的企业对职工的考勤管理都实行了信息化管理,使用计算机系统代替繁琐冗余的手工方式来管理考勤事务。针对公交考勤的系统管理、人事管理、运营管理,提出了智能公交考勤管理系统。智能公交考勤系统是典型的信......
  • 【精品毕设】基于JavaEE的高校通用排课系统(包含论文和源码)
    摘要“信息手段革命”转向“信息内容革命”,引发了全球性数字校园建设浪潮。在信息时代的今天,计算机参与事业单位日常业务管理以成为事业单位现代化管理的当务之急。随着电脑的普及与使用,现在的管理也提升了一个档次,渐渐实现了无纸化办公,即从原来的人工记录管理模式转变为电脑......
  • 智能化升级助力,中国自动售票机市场迎来新机遇
    一、行业简述自动售票机,又称自助售票机,是一种能够自动完成售票过程的电子设备。它集计算机技术、支付技术和票务系统于一体,通过触摸屏或按键等交互方式,为用户提供便捷的购票服务。自动售票机具有操作简便、购票快捷、节省人力成本等优点,被广泛应用于火车站、地铁站、公交站、......