基于JSP和MySQL的汽车票务管理系统

攻城狮0829

发布日期: 2020-08-26 10:31:39 浏览量: 180
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

东风吹,战鼓擂,现代社会发展变化之快让人咋舌,信息化潮流浩浩荡荡,影响着 人们对现代生活的认知。本次的毕业设计是基于 JSP 的汽车票务管理系统的设计开发, 主要针对汽车售票中心对售票信息的管理而设计的,从而改变售票现有传统的管理模式, 使售票工作更规范,更标准,进而提高工作效率。最终实现的系统将分为管理员和用户 会员,管理员部分,主要功能包括会员信息管理、订单信息管理、车次信息管理以及修 改登录密码,会员部分的功能则有在线购票、查看系统公告等功能。本汽车票务管理系 统的设计制作可以很大程度的提高汽车售票的效率,充分接轨信息化大时代。

本系统采用了 Browser/Server 体系结构,JSP 作为前台开发工具,MySQL 作为后台 数据库进行开发。

关键字: JSP;数据库;B/S 模式;汽车售票

1 绪论

1.1 背景

当今时代,大到国家运行,小到送货订单,无不被信息化所包围,离不 开信息的处理和计算机的广泛应用。本系统就是为了方便汽车售票中心的网 上自动售票而设计的。这是个美好的时代,是属于我们软件开发人员的时 代,在如今,任何信息都可以通过计算机来进行管理的,不但能极大的提高 人员办公的效率,也能降低出错率。然而要想使用计算机来对汽车售票信息 管理就必须使用相应的汽车票务管理系统,因此,开发这样的汽车票务管理 系统成为了很有必要的事情。本文所介绍的便是一个基于 JSP 的汽车票务管 理系统的设计开发过程,以方便实现汽车售票中心对实现自动售票的系统 化,规范化以及自动化,从而达到提高汽车售票效率的目的。

1.2 本产品设计的主要思路

降低管理运行上的成本,依赖于提高汽车售票中心的工作效率。因此本 汽车票务管理系统采用 JSP 技术和 MySQL 数据库进行系统的开发。

2 需求分析

2.1 需求分析概述

2.1.1 编写的目的

汽车票务管理系统主要目的是让汽车售票中心实现网上自动售票,并且合 理管理好会员购票和购票审核的管理流程。一直以来,传统的汽车售票中心都 是使用人工方式来进行售票,在广泛依赖于手工,然而手工过程的不足之处显 而易见,因此执行起来效率比较低并且容易出现错误。利用计算机超级的处理 能力来提高效率,无疑不是一种最为简便的方法。

2.1.2 用户的特点

本系统操作简单,采用易于维护的 B/S 模式,输入信息页面大多数都是下 拉框的选择形式,利用高性能的关系型数据库来存储信息资源,信息更新及 时,界面方便用户操作,操作简便,对操作人员的要求很低。

2.2 需求规定

根据需求调研结果确定本汽车票务管理系统的功能结构。管理员部分,主 要功能包括会员信息管理、订单信息管理、车次信息管理以及修改登录密码, 会员部分的功能则有在线购票、查看系统公告等功能。

2.3 需求建模

2.3.1 用例列表

序号 用例编号 用例名称 简单描述
1 CASE001 修改密码登录 管理员通过输入用户名和密码登录网站。
2 CASE002 车次信息管理 管理员能对车次信息进行更新,添加和删除。
3 CASE003 会员信息管理 管理员对会员信息添加,查询和删除。
4 CASE004 登录 管理员,会员对自己信息的修改。
5 CASE005 在线注册登录 会员对自己账号进行注册,登录,和对密码的修改
6 CASE006 订单信息管理 管理员能对订单信息进行更新,添加和删除。
7 CASE007 系统公告管理 管理员对车次,订单的管理可以查询公告的详细情 况
8 CASE008 查看系统公告 会员可查询车次的详细情况。
9 CASE009 在线购票 会员进行在线股票

2.3.2 用例描述

  • CASE01:管理员修改登录密码

    • 描述:管理员输入用户名和密码登录进行操作
    • 参与者:管理员、数据库系统
    • 条件:账号和密码是否正确
    • 结果:登录成功或失败
    • 基本流程
      • 管理员进入系统登录界面
      • 修改用户名和密码
      • 系统进行验证
      • 系统返回验证结果,用户名和密码正确则转到指定提示页面,出错则返回 到登录界面
    • 异常:由于帐号密码错误或帐号不存在引起的登录失败、访问数据库出错
    • 数据格式:帐号、密码
    • 返回数据:登录结果、帐号名、系统欢迎信息
  • CASE02:车次信息管理

    • 描述:管理员对车次添加、更新和删除
    • 参与者:管理员、数据库系统
    • 条件:管理员登录成功
    • 结果:返回处理结果
    • 基本流程
      • 管理员进入车次界面
      • 输入要添加的车次信息
      • 如果出错界面提示信息
      • 添加车次
      • 系统返回结果
    • 异常:访问数据库出错
    • 数据格式
    • 返回数据:修改后的结果
  • CASE06:订票管理

    • 描述:管理员对订票、更新和删除
    • 参与者:管理员、数据库系统
    • 条件:管理员登录成功
    • 结果:返回处理结果
    • 基本流程
      • 管理员进入订票
      • 输入要查询的订票信息
      • 如果出错界面提示信息
      • 修改订票
      • 系统返回结果
    • 异常:访问数据库出错
    • 数据格式
    • 返回数据:修改后的结果
  • CASE07:系统公告管理

    • 描述:管理员对系统公告的添加,删除
    • 参与者:管理员、数据库系统
    • 条件:管理员登录成功
    • 结果:返回处理结果
    • 基本流程
      • 管理员进入公告页面
      • 选择公告,输入信息
      • 返回查询的结果
    • 异常:访问数据库出错
    • 数据格式
    • 返回数据

2.4 运行环境规定

2.4.1 服务器运行环境

  • 数据库:Mysql

  • Web 服务器软件:Tomcat+JDK6.0 以上

  • 浏览器:IE、360

  • 处理器:酷睿 I3 及以上

  • 内存:4GB

  • 硬盘:128G SSD 或更高

  • 网络环境:10Mbps 或更高

3 概要设计

系统采用 B/S 结构模式,系统的分析设计采用面向对象的技术,应用 Visio 等工具进行辅助设计。

软件采用分层结构进行架构,分为界面表现层、业务逻辑层、数据访问层 三层:

  • 数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形 式)的操作层,直接操作数据库,针对数据的增添、删除、修改、查找等,具 体为业务逻辑层或表示层提供数据服务

  • 业务逻辑层:主要是针对具体的问题的操作,对数据业务逻辑处理

  • 界面表示层:在该软件中,客户端的请求会送给 Servlet,Servlet 用来处 理请求的事务,并将业务对象返回的数据模型,然后根据用户的行为,决定将 哪个 JSP 页面发给用户

逻辑架构图

顶层系统包图

类包说明

  • 页面:用户动态网页,主要是 jsp 文件

  • 过滤器:处理用户登录的操作,放在包 filters 中

  • 控制器:处理用户交互的逻辑的 servlet

  • 业务逻辑:解决具体的问题的业务实现,放在包 service 中

  • 数据处理:对业务数据的增、删、改、查等操作,放在包 dao 中

  • 数据实体:业务对象的实体类,放在包 project 中

3.2 动态建模

3.2.1 登录时序图

系统管理员,会员登录

3.2.2 订单管理时序图

管理员、会员修改密码

4 数据库设计

4.1 数据库建模

4.1.1 概念模型

4.1.2 逻辑模型

4.1.3 物理模型

4.2 数据字典

系统管理员表 t_admin

序号 列名 数据类型 可否为空 说明
1 userId int(11) 用户 id
2 userName varchar(30) 用户名
3 userPw varchar(30) 密码

会员信息表 t_user

序号 列名 数据类型 可否为空 说明
1 id int(11) 用户 id
2 loginname varchar(30) 用户名
3 loginpw varchar(30) 密码
4 name varchar(10) 姓名
5 sex varchar(2) 性别
6 age int(10) 年龄
7 address varchar(50) 地址
8 tel varchar(15) 电话
9 email varchar(20) 电子邮箱

系统公告信息表 t_gonggao

序号 列名 数据类型 可否为空 说明
1 gonggao_id int(11) 公告 id
2 gonggao _title varchar(300) 标题
3 gonggao _content varchar(3000) 内容
4 gonggao _data date 发布时间

车次信息表 t_checi

序号 列名 数据类型 可否为空 说明
1 id int(11) 主键递增
2 shifazhan varchar(30) 始发站
3 daodazhan varchar(30) 到达站
4 piaoshijian varchar(100) 票日期
5 startshijian varchar(200) 发车时间
6 endshijian int(10) 到达时间
7 piaojia varchar(10) 票价
8 piaoshu varchar(200) 余票

订单信息表 t_yuding

序号 列名 数据类型 可否为空 说明
1 id int(11) 主键递增
2 user_id Int(11) 用户 ID
3 checi_id Int(11) 车次 ID
4 shuliang date 数量
5 zongjine Int(10) 总价
6 nidexingming varchar(200) 客户姓名
7 lianxihua varchar(10) 联系方式
8 songhuodizhi date 送货地址
9 zhifufangshi Int(10) 支付方式
10 yudingshi varchar(10) 预定时间
11 zhuangtai varchar(10) 状态

4.3 Mysql 脚本代码

创建数据库 db_qichep

  1. Source Server : localhost_3323 Source Server Version : 50162
  2. Source Host : localhost:3323 Source Database : db_qichep
  3. Target Server Type : MYSQL Target Server Version : 50162 File Encoding : 65001

创建数据表

  1. DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (
  2. `userId` int(11) NOT NULL,
  3. `userName` varchar(55) DEFAULT NULL,
  4. `userPw` varchar(50) DEFAULT NULL, PRIMARY KEY (`userId`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  6. -- ----------------------------
  7. -- Records of t_admin
  8. -- ----------------------------
  9. INSERT INTO `t_admin` VALUES ('1', 'a', 'a');
  10. -- ----------------------------
  11. -- Table structure for `t_checi`
  12. -- ----------------------------
  13. DROP TABLE IF EXISTS `t_checi`; CREATE TABLE `t_checi` (
  14. `id` int(11) NOT NULL,
  15. `shifazhan` varchar(66) DEFAULT NULL,
  16. `daodazhan` varchar(50) DEFAULT NULL,
  17. `piaoshijian` varchar(50) DEFAULT NULL,
  18. `startshijian` varchar(50) DEFAULT NULL,
  19. `endshijian` varchar(50) DEFAULT NULL,
  20. `piaojia` int(11) DEFAULT NULL,
  21. `piaoshu` int(11) DEFAULT NULL,
  22. `leixing` varchar(255) DEFAULT NULL,
  23. `zhongjian` varchar(255) DEFAULT NULL,
  24. `del` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5 产品实现

5.1 用户登录模块实现

5.1.1 界面效果

管理员进入系统之后首先要进入到系统的登录页面,验证用户输入的用户名以及密码,在输入正确的用户名及密码之后,才可以成功的登录系统,如果用户名或者密码错误将返回错误提示,如图所示。

系统管理员登录界面

会员登录界面

5.1.2 关键代码

  1. public String adminAdd()
  2. {
  3. TAdmin admin=new TAdmin();
  4. admin.setUserName(userName);
  5. admin.setUserPw(userPw);
  6. adminDAO.save(admin);
  7. this.setMessage("操作成功");
  8. this.setPath("adminManage.action");
  9. return "succeed";
  10. }
  11. public String adminManage()
  12. {
  13. List adminList=adminDAO.findAll();
  14. Map request=(Map)ServletActionContext.getContext().get("request");
  15. request.put("adminList", adminList);
  16. return ActionSupport.SUCCESS;
  17. }
  18. public String adminDel()
  19. {
  20. adminDAO.delete(adminDAO.findById(userId));
  21. this.setMessage("删除成功");
  22. this.setPath("adminManage.action");
  23. return "succeed";
  24. }

管理员成功登录系统之后,点击 “修改登录密码”,在这里需要输入正 确的原密码和设置新密码,才能实现修改操作,如图所示。

5.2 用户注册功能界面

5.2.1 用户注册

点击“注册用户”菜单,可以打开用户注册信息,在这里需要填写或选择用户帐 号、密码、姓名、性别、年龄、住址以及电话信息,确定保存时系统会对必填项进行非 空验证,是否为空是通过 form 表单中的 onsubmit=”return checkForm()来检查, checkForm()函数中是各种的校验输入数据的方式,其实现页面如图 5.2.1 所示。

5.2.2 关键代码

  1. String sql="from TUser where loginname=? and del='no'";
  2. Object[] c={loginname.trim()};
  3. List list=userDAO.getHibernateTemplate().find(sql,c);
  4. if(list.size()>0)
  5. {
  6. this.setMessage("账号已被占用,请重新注册");
  7. this.setPath("/qiantai/user/userReg.jsp");
  8. return "succeed";
  9. }
  10. TUser user=new TUser();
  11. user.setLoginname(loginname);
  12. user.setLoginpw(loginpw);
  13. user.setName(name);
  14. user.setSex(sex);
  15. user.setAge(age);
  16. user.setAddress(address);
  17. user.setTel(tel);
  18. user.setEmail(email);
  19. user.setFujian(fujian);
  20. user.setJifen(0);
  21. user.setDel("no");
  22. userDAO.save(user);
  23. this.setMessage("注册成功,请登陆");
  24. this.setPath("/qiantai/user/userLogin.jsp");
  25. return "succeed";
  26. }
  27. public String userEdit()
  28. {
  29. TUser user=userDAO.findById(id);
  30. user.setLoginname(loginname);
  31. user.setLoginpw(loginpw);
  32. user.setName(name);
  33. user.setSex(sex);
  34. user.setAge(age);
  35. user.setAddress(address);
  36. user.setTel(tel);
  37. user.setEmail(email);
  38. user.setFujian(fujian);
  39. user.setDel("no");
  40. userDAO.attachDirty(user);
  41. this.setMessage("修改成功,重新登陆后生效");
  42. this.setPath("/qiantai/default.jsp");
  43. return "succeed";
  44. }

5.3 车次管理功能实现

5.3.1 车次管理功能界面

预订车票界面

订票管理界面

5.3.2 关键代码

  1. String sql="from TYuding order by id desc";
  2. List yudingList=yudingDAO.getHibernateTemplate().find(sql);
  3. Map request=(Map)ServletActionContext.getContext().get("request"); request.put("yudingList", yudingList);
  4. return ActionSupport.SUCCESS;
  5. }
  6. public String yudingDel()
  7. {
  8. TYuding yuding=yudingDAO.findById(id);
  9. yudingDAO.delete(yuding);
  10. this.setMessage("操作成功");
  11. this.setPath("yudingMana.action");
  12. return "succeed";
  13. }
  14. public String yudingShouli()
  15. {
  16. TYuding yuding=yudingDAO.findById(id);
  17. yuding.setZhuangtai("已受理");
  18. yudingDAO.attachDirty(yuding);
  19. this.setMessage("操作成功");
  20. this.setPath("yudingMana.action");
  21. return "succeed";
  22. }
  23. public String yudingMine()
  24. {
  25. Map session= ServletActionContext.getContext().getSession();
  26. TUser user=(TUser)session.get("user");
  27. String sql="from TYuding where userId="+user.getId();
  28. List yudingList=yudingDAO.getHibernateTemplate().find(sql);
  29. Map request=(Map)ServletActionContext.getContext().get("request");
  30. request.put("yudingList", yudingList);
  31. return ActionSupport.SUCCESS;
  32. }
  33. public String yudingTuipiao()
  34. {
  35. TYuding yuding=yudingDAO.findById(id);
  36. if(yuding.getZhuangtai().equals("已受理"))
  37. {
  38. this.setMessage("订单信息已受理,不能退票");
  39. this.setPath("yudingMine.action");
  40. }
  41. else
  42. {
  43. yudingDAO.delete(yuding); this.setMessage("成功退票");
  44. this.setPath("yudingMine.action");
  45. }
  46. return "succeed";

6 产品测试

对主要模块进行测试,如下所示:

测试项 验证过程 预期结果 实际结果 结论
系统管理员 登录 系统管理员登录时输入 账号:admin 密码:admin 进入系统主界面 进入系统主界面 通过
会员 登录 会员登录时输入 账号:liusan 密码: 000000 进入系统主界面 进入系统主界面 通过
车次查看 进入车次管理页面 成功显示所有车次列表 成功显示所有车次列表 通过
车次添加 进入车次添加页面,输入 车次信息 添加成功,出现添加成 功的提示 添加成功,出现添加成 功的提示 通过
车次删除 进入车次管理页面,点击 删除按钮 删除成功,出现删除成 功的提示 删除成功,出现删除成 功的提示 通过
会员查看 进入会员管理页面 成功显示所有会员列表 成功显示所有会员列表 通过
会员删除 进入会员管理页面,点击 删除按钮 删除成功,出现删除成 功的提示 删除成功,出现删除成 功的提示 通过
订单查看 进入订单管理页面 成功显示所有订单列表 成功显示所有订单列表 通过
系统公告查 看 进入系统公告管理页面 成功显示所有系统公告 列表 成功显示所有系统公告 列表 通过
系统公告添 加 进入系统公告添加页面输 入 标题:标题 1 内容:内容 1 添加成功,出现添加成 功的提示 添加成功,出现添加成 功的提示 通过
系统公告删 除 进入系统公告管理页面, 点击删除按钮 删除成功,出现删除成 功的提示 删除成功,出现删除成 功的提示 通过
在线注册会 员 进入会员注册页面,按提 示输入会员信息 注册成功,出现注册成 功的提示 注册成功,出现注册成 功的提示 通过
在线购票 进入在线购票页面 选择始发站和终点站,输 入数量、联系人、联系电 话 购票成功,跳转到购票 成功的页面 购票成功,跳转到购票 成功的页面 通过
上传的附件 cloud_download 基于JSP的汽车票务管理系统.zip ( 4.92mb, 8次下载 )
error_outline 下载需要11点积分

发送私信

47
文章数
12
评论数
最近文章
eject