java SSM火车票务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点
    java SSM火车票务管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,spring+springMVC+mybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代
码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。

java ssm火车票务管理系统


二、功能介绍
(1)用户管理:对用户信息进行添加、删除、修改和查看
(2)管理员管理:对管理员信息进行添加、删除、修改和查看
(3)新闻管理:对新闻信息进行添加、删除、修改和查看
(4)列车管理:对列车信息进行添加、删除、修改和查看
(5)途径站点管理:对途径站点信息进行添加、删除、修改和查看
(6)订票管理:对订票信息进行添加、删除、修改和查看。
(7)用户登录、个人信息修改

数据库设计

(1)用户信息表如表3.1所示:

表3.1 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

xb

VARCHAR

40

性别

6

dh

VARCHAR

40

电话

7

yx

VARCHAR

40

邮箱

8

zjh

VARCHAR

40

证件号

(2)管理员信息表如表3.2所示:

表3.2 管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

INTEGER

11

管理员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

xb

VARCHAR

40

性别

6

dh

VARCHAR

40

电话

7

yx

VARCHAR

40

邮箱

(3)新闻信息表如表3.3所示:

表3.3新闻信息表

序号

字段名称

数据类型

长度

主键

描述

1

xwid

INTEGER

11

新闻编号

2

bt

VARCHAR

40

标题

3

nr

VARCHAR

40

内容

4

fbsj

VARCHAR

40

发布时间

(4)列车信息表如表3.4所示:

表3.4 列车信息表

序号

字段名称

数据类型

长度

主键

描述

1

lcid

INTEGER

11

列车编号

2

cc

VARCHAR

40

车次

3

qsz

VARCHAR

40

起始站

4

mdz

VARCHAR

40

目的站

5

fcsj

VARCHAR

40

发车时间

6

dzsj

VARCHAR

40

到站时间

7

pj

VARCHAR

40

票价

8

ptzjg

VARCHAR

40

普通座价格

9

wpjg

VARCHAR

40

卧铺价格

10

rwjg

VARCHAR

40

软卧价格

控制层代码

@RequestMapping(value="/add")
	public String add(lieche lieche,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		//String name=(String)request.getParameter("name");

		map.put("lcid", lieche.getLcid());//列车编号

		map.put("cc", lieche.getCc());//车次

		map.put("qsz", lieche.getQsz());//起始站

		map.put("mdz", lieche.getMdz());//目的站

		map.put("fcsj", lieche.getFcsj());//发车时间

		map.put("dzsj", lieche.getDzsj());//到站时间

		map.put("pj", lieche.getPj());//票价

		map.put("ptzjg", lieche.getPtzjg());//普通座价格

		map.put("wpjg", lieche.getWpjg());//卧铺价格

		map.put("rwjg", lieche.getRwjg());//软卧价格

		String lcid=(String)lieche.getLcid();//列车编号

		String cc=(String)lieche.getCc();//车次

		String qsz=(String)lieche.getQsz();//起始站

		String mdz=(String)lieche.getMdz();//目的站

		String fcsj=(String)lieche.getFcsj();//发车时间

		String dzsj=(String)lieche.getDzsj();//到站时间

		String pj=(String)lieche.getPj();//票价

		String ptzjg=(String)lieche.getPtzjg();//普通座价格

		String wpjg=(String)lieche.getWpjg();//卧铺价格

		String rwjg=(String)lieche.getRwjg();//软卧价格

		
	String sql="select count(1) as num from lieche where cc='"+cc+"'";
		
		ResultSet rs=null;
		int num=0;
		DBO db=new DBO();
		try{
			
			
			rs=db.query(sql);
			if(rs.next()){
				
				num=rs.getInt("num");
			}
			if(num>0){
				request.setAttribute("msg", "<script>alert('添加失败、车次重复');</script>");
				
			}else{
				liechedao.save(map);
				request.setAttribute("msg", "<script>alert('添加成功');</script>");	
			}
		}catch(Exception e){
			
			e.printStackTrace();
		}
		
	
		
		
	//	request.setAttribute("msg", "<script>alert('添加成功');</script>");
		System.out.println("addok");
		return "lieche/liecheadd";
	}
	
	/**删除 
	 * 
	 */
	@RequestMapping(value="/del")
	public String  del(Integer id,HttpServletRequest request,Map<String,Object> map){
	//	Map<String,Object> map= new HashMap<String,Object>();
		String a=(String)request.getParameter("keyid");
		id=Integer.parseInt(a);
		request.setAttribute("msg", "<script>alert('删除成功');</script>");
		liechedao.del(id);
		return selectall(null,map,request);
	}
	/**
	 * 修改lieche信息
	 */
	@RequestMapping(value="/update")
	public String update(lieche lieche,HttpServletRequest request,Map<String,Object> map1){
		Map<String,Object> map= new HashMap<String,Object>();
		map.put("lcid", lieche.getLcid());//列车编号

		map.put("cc", lieche.getCc());//车次

		map.put("qsz", lieche.getQsz());//起始站

		map.put("mdz", lieche.getMdz());//目的站

		map.put("fcsj", lieche.getFcsj());//发车时间

		map.put("dzsj", lieche.getDzsj());//到站时间

		map.put("pj", lieche.getPj());//票价

		map.put("ptzjg", lieche.getPtzjg());//普通座价格

		map.put("wpjg", lieche.getWpjg());//卧铺价格

		map.put("rwjg", lieche.getRwjg());//软卧价格

		String lcid=(String)lieche.getLcid();//列车编号

		String cc=(String)lieche.getCc();//车次

		String qsz=(String)lieche.getQsz();//起始站

		String mdz=(String)lieche.getMdz();//目的站

		String fcsj=(String)lieche.getFcsj();//发车时间

		String dzsj=(String)lieche.getDzsj();//到站时间

		String pj=(String)lieche.getPj();//票价

		String ptzjg=(String)lieche.getPtzjg();//普通座价格

		String wpjg=(String)lieche.getWpjg();//卧铺价格

		String rwjg=(String)lieche.getRwjg();//软卧价格

		request.setAttribute("msg", "<script>alert('修改成功');</script>");
		liechedao.update(map);
		return selectall(null,map1,request);
	}
	/**
	 * 查询lieche信息
	 */
	@RequestMapping(value="/modify")
	public String modify(Integer id,Map<String,Object> map,HttpServletRequest request){
		String keyid=(String)request.getParameter("keyid");
		List<Map<String,Object>> list= new  ArrayList<Map<String,Object>>();
		list=liechedao.select(Integer.parseInt(keyid));
		request.setAttribute("lcid", list.get(0).get("lcid"));//列车编号

		request.setAttribute("cc", list.get(0).get("cc"));//车次

		request.setAttribute("qsz", list.get(0).get("qsz"));//起始站

		request.setAttribute("mdz", list.get(0).get("mdz"));//目的站

		request.setAttribute("fcsj", list.get(0).get("fcsj"));//发车时间

		request.setAttribute("dzsj", list.get(0).get("dzsj"));//到站时间

		request.setAttribute("pj", list.get(0).get("pj"));//票价

		request.setAttribute("ptzjg", list.get(0).get("ptzjg"));//普通座价格

		request.setAttribute("wpjg", list.get(0).get("wpjg"));//卧铺价格

		request.setAttribute("rwjg", list.get(0).get("rwjg"));//软卧价格

		
		return "lieche/liechemodify";
	}

持久层代码

public void save(Map<String, Object> map) {
		sqlSession.insert("com.lieche.insertlieche", map);
		
	}
	/**
	 * 删除aa
	 * @param id
	 */
	public void del(Integer id) {
		sqlSession.delete("com.lieche.dellieche", id);
	}

	/**
	 * 修改lieche信息
	 * @param map
	 */
	public void update(Map<String, Object> map) {
		sqlSession.update("com.lieche.updatelieche", map);
	}

	/**
	 * 查询lieche信息
	 * @param id
	 * @return 
	 */
	public List<Map<String, Object>> select(Integer id) {
		return sqlSession.selectList("com.lieche.selectlieche", id) ; 
	}
	/**
	 * 查询lieche信息
	 * 
	 * @return 
	 */
	public List<Map<String, Object>> selectAll(Map<String, Object> map) {
		return sqlSession.selectList("com.lieche.selectall", map) ; 
	}

mybatis 配置文件

<insert id="insertlieche"  parameterType="java.util.Map">
 insert  into  lieche(cc,qsz,mdz,fcsj,dzsj,pj,ptzjg,wpjg,rwjg)  values(#{cc},#{qsz},#{mdz},#{fcsj},#{dzsj},#{pj},#{ptzjg},#{wpjg},#{rwjg})
</insert>

<delete id="dellieche" parameterType="int">
 delete  from  lieche where lcid=#{lcid}
</delete>

<update id="updatelieche" parameterType="java.util.Map">
update lieche set cc=#{cc},qsz=#{qsz},mdz=#{mdz},fcsj=#{fcsj},dzsj=#{dzsj},pj=#{pj},ptzjg=#{ptzjg},wpjg=#{wpjg},rwjg=#{rwjg} where lcid=#{lcid}
</update>

<!--  查询返回的是 list<map> -->
<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectlieche"  parameterType="int" resultType="java.util.Map">
  select  * from lieche where lcid=#{lcid}
</select>

<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectall"  parameterType="java.util.Map" resultType="java.util.Map">
  select  * from lieche where 1=1
<if test=" null != cc and cc!=''" >
 and cc = #{cc}
</if>
<if test=" null != qsz and qsz!=''" >
 and qsz = #{qsz}
</if>
<if test=" null != mdz and mdz!=''" >
 and mdz = #{mdz}
</if>
<if test=" null != fcsj and fcsj!=''" >
 and fcsj = #{fcsj}
</if>
<if test=" null != dzsj and dzsj!=''" >
 and dzsj = #{dzsj}
</if>
<if test=" null != pj and pj!=''" >
 and pj = #{pj}
</if>
<if test=" null != ptzjg and ptzjg!=''" >
 and ptzjg = #{ptzjg}
</if>
<if test=" null != wpjg and wpjg!=''" >
 and wpjg = #{wpjg}
</if>
<if test=" null != rwjg and rwjg!=''" >
 and rwjg = #{rwjg}
</if>

</select>


三、注意事项
    1、管理员账号:admin 密码:admin 数据库配置文件datasource.properties
     2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
    3、数据库文件名是jspssmhcpw.sql,系统名称ssmhcpw
    4、系统首页地址:http://127.0.0.1:8080/ssmhcpw/login.jsp

四 系统实现


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

读书心得(内容取自高质量C/C++编程)

版式虽然不会影响程序的功能&#xff0c;但会影响可读性。程序的版式追求清晰、美观&#xff0c;是 程序风格的重要构成因素。 可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然&#xff0c;看得兴致勃勃。差的程序“书法”如螃蟹爬行&#xff0c;让人看得…

Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、语法结构 1 复习 2 理论知识 3 Shader里声明的写法 4 Properties和SubShader毕竟不是一家人 三、 片元着色器中使用资源 四、代码实现 五、全部代码 六、下集介绍 相关阅读 Unity - Manual: Writing Surface Shaders…

ACL——访问控制列表

目录 1、ACL的产生背景及概述 2、ACL的应用 3、ACL的分类 4、ACL的组成 5、ACL的匹配位置 6、ACL的案例 案例1-----拒绝源IP为192.168.10.1的数据包 案例2------拒绝源IP在192.168.10.0/24整个网段的所有数据包 案例3------拒绝源IP为192.168.10.0/24所有奇数主机发送的…

VUE学习三、前端项目部署

1.前端项目打包 执行命令 npm run build:prod正常命令结束 , 会在前端项目里面出现dist文件夹 2.nginx下载安装 nginx下载 : http://nginx.org/en/download.html Windows 下载版本 Mainline version&#xff1a;Mainline 是 Nginx 目前主力在做的版本&#xff0c;可以说…

【Java JVM】实例对象内存布局

当 Java 应用启动后, 基本就是在不断的创建对象, 回收对象的过程中。 而这些创建的对象基本都是存放在应用的堆 (heap) 中, 但是这些对象在堆中又是什么样子的呢? 在这篇文章中, 我们分析一下 Java JVM 中实例对象的内存布局。 在 HotSpot 虚拟机里, 对象在堆内存中的存储布局…

如何禁止孩子在电脑中浏览某些网页?

在使用电脑的过程中&#xff0c;我们会使用浏览器来查看网页。而在孩子使用电脑的过程中&#xff0c;有些网页并不适合孩子查看。因此&#xff0c;我们需要禁止孩子浏览不健康的网页。那么&#xff0c;该如何禁止孩子在电脑中浏览某些网页呢&#xff1f; 定时关机3000简介 定时…

【docker】部署minio对象存储并用rclone同步

docker部署minio对象存储并用rclone同步 本文首发于 ❄️慕雪的寒舍 1.什么是minio&#xff1f; minio是一个开源的对象存储服务器&#xff0c;兼容S3协议。 官网&#xff1a;https://min.io/ 官方在开源的基础上也提供云端S3服务&#xff0c;分为个人和企业&#xff0c;有不…

Axure的动态图使用以及说明

认识Axure动态图 Axure动态图是Axure中的一种功能&#xff0c;它允许用户在原型中添加动画效果和交互动作&#xff0c;使原型更加生动和具有真实的用户体验。用户可以通过添加动态图来展示页面过渡、按钮点击、下拉菜单等交互操作的效果。 这是&#xff1a;就是我们今天要叫的…

ISCTF(a)

where_is_the_flag 答案应该被分成了三份了 蚁剑连接看看 第一个 第二个 第三个&#xff0c;在www下 Yunxi{0797d78c-0cb2-4cfb-87e6-f9c102f716f3} 命令执行 POST : 1 system ( tac flag.php ); 1 system ( tac /flag2 ); 1 system ( env ); 1z_Ssql 使用万能密码 后…

【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

【数学建模】《实战数学建模&#xff1a;例题与讲解》第十四讲-模拟退火、遗传算法&#xff08;含Matlab代码&#xff09; 基本概念模拟退火&#xff08;Simulated Annealing&#xff09;遗传算法&#xff08;Genetic Algorithms&#xff09; 习题14.1&#xff08;1&#xff09…

Leetcode—118.杨辉三角【简单】

2023每日刷题&#xff08;六十&#xff09; Leetcode—118.杨辉三角 实现代码 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ans(numRows);for(int i 0; i < numRows; i) {ans[i].resize(i 1);ans…

小狐狸GPT付费2.4.9弹窗版学习源码介绍

小狐狸GPT付费2.4.9弹窗版学习源码是一套基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的开源代码库&#xff0c;旨在帮助开发者快速构建和训练自己的语言模型。该源码集成了多个先进的自然语言处理技术&#xff0c;包括预训练、微调、对话生成等&am…

BugKu-Web-滑稽

题目环境 持续的动态图片 F12审查元素 拿下flag&#xff1a;flag{595d994a34342417bfc3a3c3a23e0a48}

基于ssm新锐台球厅管理系统的设计与实现论文

新锐台球厅管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;作为一般的台球厅都会跟上时代的变化&#xff0c;用上计算机来代表重复性的劳动&#xff0c;并且给用户一种新奇的感受&#xff0c;实现新锐台球厅管理系统 在技术上已成熟。本文介绍了新锐台…

【linux】(ubuntu)下 QT 出现的问题

错误一&#xff1a;Make 运行QT程序以后出现这样的错误。 【解决方法】 我的ubuntu版本是18.04.4&#xff0c; 原因1&#xff1a;没有更换软件源 原因2&#xff1a;没安装相关 软件包 注意&#xff1a;这一步很有可能卡死这一步&#xff0c;所以如果一直卡在这并且进度…

51单片机的串口通信

串口通信 本文主要涉及51单片机的串口以及串口通信&#xff0c;包括串口控制寄存器的设置以及波特率的计算方法等。 文章目录 串口通信一、 串行通信与并行通信二、 单工、半双工与全双工通信三、 单片机串口介绍&#xff08;1&#xff09;串口控制寄存器 SCON&#xff08;2&am…

C++:命名空间

从今天正式开始对C的学习&#xff0c;这里只学习C对C的拓展&#xff0c;和C相同的部分在C语言专栏中都可以找到&#xff0c;我们先看一段C代码 #include<iostream> using namespace std; int main() {cout<<"hello world<<endl;return 0; } 同样也是打…

Docker--Docker镜像仓库

一、搭建私有镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。 官网地址&#xff1a;https://hub.docker.com/_/registry &#xff08;一&#xff09;简化版镜像仓库 Docker官方的Docker Registry是一个基础版本的Docker镜像仓库&#xff0c;具备仓库…

pycharm某个xxx.sh文件显示问号,无法编辑

文章目录 pycharm某个xxx.sh文件显示问号,无法编辑其他参考 pycharm某个xxx.sh文件显示问号,无法编辑 问题描述&#xff1a;pycharm某个xxx.sh文件显示问号,无法编辑 问题分析&#xff1a; pycharm无法识别文件类型。 问题解决&#xff1a; 在pycharm中选中该文件&#xff0…

自动化测试(三)webdriver的常用api(1)

目录 等待 sleep休眠 隐式等待 显式等待 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器宽、高 操作浏览器的前进、后退 控制浏览器滚动条 键盘事件 键盘按键用法 键盘组合键用法 鼠标事件 定位一组元素 前面两章我们讲了selenium环境的…