• 基于SSH的客车网上售票系统


    资源下载地址:https://download.csdn.net/download/sheziqiong/85825585
    资源下载地址:https://download.csdn.net/download/sheziqiong/85825585
    目 录
    摘 要 III
    ABSTRACT IV
    第一章 引言 1
    1.1课题背景 1
    1.2课题研究的意义 2
    1.3课题目标 2
    1.4 系统特点 3
    1.5本文结构 4
    第二章 设计技术与开发环境 4
    2.1运行环境 4
    2.2开发工具及技术简介 5
    2.2.1开发工具简介 5
    2.2.2技术简介 6
    2.3 可行性分析 7
    2.3.1 技术可性性 7
    2.3.2经济的可行性 8
    2.3.2政治的可行性 8
    第三章 系统需求分析与设计 8
    3.1需求分析 8
    3.1.1功能需求 8
    3.1.2权限与责任 9
    3.2概要设计 10
    3.2.1总体设计 10
    3.2.2系统功能结构图 11
    3.2.4模块结构 11
    3.3数据库概念结构设计 12
    3.3.1基本设计概念和处理流程 12
    3.3.2数据库逻辑结构设计 17
    第四章 系统详细设计 19
    4.1管理员功能模块设计 19
    4.1.1通知公告功能 19
    4.1.2会员管理功能 20
    4.1.3车票管理功能 21
    4.1.4订单管理功能 22
    4.1.5订单退票查询功能 23
    4.1.6余票查询功能 23
    4.1.7留言管理功能 24
    4.2会员功能模块设计 25
    4.2.1会员注册功能 25
    4.2.2票务查询功能 26
    4.2.3会员订票功能 27
    4.2.4订单退票功能 31
    4.2.5车票改签功能 32
    第五章 系统测试 34
    5.1系统测试目的与意义 34
    5.2测试过程 34
    5.2.1主页面的登录模块测试 34
    5.3其他错误 35
    结 论 37
    参考文献 38
    致 谢 39
    第三章 系统需求分析与设计
    3.1需求分析
    计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。
    数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。
    3.1.1功能需求
    1.车站方面的需求
    1.订票与取票分离
      实现订票方式的多样化,可以采取网络订票,电话订票,代售点订票等多种方法,在订票时需要订票人提供身份证号码与订票人姓名,通过与公安系统协助的网络订票系统对比身份证的所有人是否和订票人提供的信息是否相同,杜绝虚假的订购信息。
    2.付款
      对于网络付款可以直接通过网络银行等手段进行付款。对于电话订票、订票点订票可以在固定地点进行付款,并人工操作直接给予付款人发票或其他的可作为付款凭证的物品。同时铁路系统内部数据库记录购票人的身份证号码与座次等车票信息。
    3.取票
      取票可在车站内部进行或者在代售点、取票点等地进行。应该通过机器自动进行。可以使用整合身份证识别器的终端系统印刷车票。购票者需要携带身份证换票。
    4.验票
      验票应采取与取票类似的方式,使用终端自动验票,乘客需要携带身份证和车票通过中断自动验票登车。终端系统将扫描车票上印刷的乘客身份证号码和身份证信息对比,当二者信息相符方能放行。
    5.保留人工现场售票、验票系统
      人工现场售票处将作为办理特别票销售的地点。同时也是为因种种原因没有随身携带身份的乘客提供售票服务的地点。毕竟车系统是为了服务大众的系统,所以应该人性化。对于不能提供身份证的乘客应该携带可以证明身份的证件,如驾驶证、户口本、学生证、军官证、工作证等证件,车站方面对购票乘客身份进行登记记录,发放没有印制身份证号码的特殊票种。学生票等特殊票种办理同上。对于农民工团体票等团体票办理需提供有购票人签名的购票委托书,同时提供购票成员每人的身份证信息,对信息进行记录,发放销售价格特定的正常票种。验票处保留人工验票点,处理与特殊票种有关的验票事项。
    2.旅客的需求
    1.旅客要求可对车票信息实时的查询,包括车票起点站和终点站,以及余票等信息,方便订票。
    2.旅客要求可以查看车站方面发布的实时通知公告,以便及时了解,改变行程。
    3.旅客要求可以网上支付。
    4.旅客要求对已订购的车票能改签、退票。
    5.旅客要求系统设置功能可以提交建议给车站。
    3.1.2权限与责任
    客车售票系统有两种角色的人员,因此需要设置两种权限。会员可以在线查询车票,购买车票,车票的退改签;管理员能管理所有票务信息,对票务信息及时更新,查询车票的销量情况等。
    1、会员:查询通知、查询车票、车票预订、车票退改签,个人信息修改
    2、管理员:通知公告信息维护,票务信息维护,余量盘存,销售统计,财务统计,会员管理,留言管理。
    3.2概要设计
    3.2.1总体设计
    该订票系统包含以下功能:用户模块的用户注册登录,车辆信息查询,车票预定,管理员模块的车辆信息管理,反馈信息管理,用户信息管理。
    该客车网上售票系统除了应具备用户模块注册、登录、验证功能的实现和管理员登录、验证的原始账号设置以及对新增加的管理员授权设置功能以外,还应该具备的基本网站使用功能如下:
    实现查询信息:用户选择目的地后,可以对车辆发车时间,发车地点,车票价格进行详细的查询,购买车票以后也可以对自己的订单进行查询
    2.实现购买车票:登录账号后,客户根据自身需求查询车辆信息找到自己要乘坐的车次,支付订单后完成购买。
    3.实现退票或改签:通过查询系统,客户可以根据自己的订单找到自己的订票信息,对已购车票进行退票操作或者改签操作,退票需要收取5%手续费,只退回95%购票金额,改签不需要另外加钱,但只允许改签一次。
    4.实现代售网点:提供代售网点的地址信息,客服服务,用户如遇问题可打电话咨询。在代售网点已购票用户可以对进行取票操作、退票操作、改签操作。
    5.实现实时车票图:a.根据用户查询的班次显示剩余票数,用户可以直观的判断该班次能否购票。当用户购买车票成功后,剩余票数减少一张。b.在自己的订单进行退票或改签操作后,该班次剩余票数增加一张,改签后的班次剩余票数减少一张。c.管理员可对某班次信息进行增删查改,票数会随着管理员的操作而改动。
    6.实现后台管理员操作:a.管理员可对车辆的发车时间,票价等信息进行修改 b.管理员对代售点进行授权以及处理代售点反馈信息 c.发布公告以及对黑名单和用户进行操作
    7.其他功能 1)用户实名验证以及限购票数,黑名单设置。2)用户建议邮箱反馈功能
    3.2.2系统功能结构图
    本系统系统功能结构图如图3.1。
    在这里插入图片描述

    图3.1 系统功能结构图
    新增通知公告的实现代码为:

    //添加公告
    	public String noticeAdd(){
    			Notice notice = new Notice();
    			notice.setTitle(title);
    			notice.setContent(content);
    			notice.setSavetime(Info.getDateStr());
    			commonDAO.save(notice);
    			suc="";
    			return "success";
    	}
    编辑通知公告的实现代码为:
    //编辑公告
    	public String noticeEdit(){
    		Notice notice = (Notice)commonDAO.findById(id, "Notice");
    		notice.setTitle(title);
    		notice.setContent(content);
    		commonDAO.update(notice);
    		suc="";
    		return "success";
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    车票管理的功能有新增、查询、编辑和删除,具体的实现代码如下:
    //新增车票
    
    public String productAdd()
    {
    	System.out.println("11=="+field1);
    		Product product=new Product();
    		product.setProname(proname);
    		product.setProno(prono);
    		//product.setImg(img);
    		product.setPrice(price);
    		product.setProtype(protype);
    		product.setRemark(remark);
    		product.setDelstatus("0"); //0:正常;1:删除
    		product.setField1(field1); //时间
    		product.setField2(field2.trim());	
    		product.setField3(field3.trim());	
    		product.setField4(field4);	
    		product.setField5(field5);	
    		product.setField6(field6);	 
    		product.setField9(field9);
    		product.setField10(field10);
    		commonDAO.save(product);
    		suc="";
    		return "success";
    }
    //编辑车票
    public String productEdit(){
    	Product product = (Product)commonDAO.findById(id, "Product");
    	product.setProname(proname);
    	product.setProno(prono);
    	product.setPrice(price);
    	
    	product.setProtype(protype);
    	product.setRemark(remark);
    	product.setField1(field1); //时间
    	product.setField2(field2);	
    	product.setField3(field3);	
    	product.setField4(field4);	
    	product.setField5(field5);
    	commonDAO.update(product);
    	suc="";
    	return "success";
    }
    
    //删除车票
    public String productDel(){
    	Product product = (Product)commonDAO.findById(id, "Product");
    	product.setDelstatus("1");
    	commonDAO.update(product);
    	return "success";
    }
    预选车票的代码实现为:
    
    public void carAdd() throws IOException
    {
    	System.out.println("aaaaaaaaa");
    Car car=new Car();
    car.setProductid(productid);
    car.setNum(num);
    car.setMemberid(memberid);
    commonDAO.save(car);
     int responseContext;
    	 responseContext=1;
     
    	System.out.println(responseContext);
    	HttpServletResponse response=ServletActionContext.getResponse();
    	response.setContentType("text/html");
    	PrintWriter out = response.getWriter();
    	out.println(responseContext);
    	out.flush();
    	out.close();
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    //移出车票
    public String carDel(){
    commonDAO.delete(id, “Car”);
    suc="";
    return “success”;
    }
    //修改购物车内车票数量
    public String carNumEdit(){
    Car car = (Car)commonDAO.findById(id, “Car”);
    car.setNum(num);
    commonDAO.update(car);
    suc="";
    return “success”;
    }

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      资源下载地址:https://download.csdn.net/download/sheziqiong/85825585
      资源下载地址:https://download.csdn.net/download/sheziqiong/85825585

    • 相关阅读:
      【C语言刷LeetCode】1953. 你可以工作的最大周数(M)
      解决LiveData数据倒灌的新思路
      1、LeetCode之两数之和
      Git分支管理流程
      6-1 邻接矩阵存储图的深度优先遍历
      使用MobaXterm连接服务器并利用Anaconda进行pytoch环境跑深度学习模型LeNet-5分类
      HTML和CSS篇章高频面试题【2023】
      基于AntBlazor的学生在线练习系统实现过程的简单总结
      凯撒密码(Python)
      docker安装open web ui
    • 原文地址:https://blog.csdn.net/sheziqiong/article/details/125523869