博客目录

  • Swing+Mysql实现的火车票管理系统3
    • 实现功能截图
    • 系统功能
    • 使用技术
    • 代码
    • 完整源码

Swing+Mysql实现的火车票管理系统3

本系统是一个火车票购票管理系统,分为普通用户和管理员两种角色,普通用户可以购票、改签、查询订单,管理员可以对价格、车站、联系人、用户等进行管理。
(文末查看完整源码)

实现功能截图

注册登录


用户首页

购票

改签

车票查询

我的订单

车站管理

价格管理

用户管理

联系人管理

系统功能

本系统实现了以下功能:
1、注册登录
2、车票查询
3、购票
4、改签
5、我的订单
6、用户管理
7、价格管理
8、车站管理

使用技术

数据库:mysql
开发工具:Idea(Myeclispe、Eclipse也可以)
知识点:Swing

项目结构

代码

java端
实体类
Trains.java

package com.code2life.train.ticketing.system.entity;/*** @Project: StationTicketingSystem* @Date: 2020/2/23 17:07* @author: Eric* @Description: TODO 列车实体类*/
public class Trains {private String trainno;private int traintypeno;private String startplace;private String endplace;private String starttime;private String endtime;private String runtime;public String getTrainno() {return trainno;}public void setTrainno(String trainno) {this.trainno = trainno;}public int getTraintypeno() {return traintypeno;}public void setTraintypeno(int traintypeno) {this.traintypeno = traintypeno;}public String getStartplace() {return startplace;}public void setStartplace(String startplace) {this.startplace = startplace;}public String getEndplace() {return endplace;}public void setEndplace(String endplace) {this.endplace = endplace;}public String getStarttime() {return starttime;}public void setStarttime(String starttime) {this.starttime = starttime;}public String getEndtime() {return endtime;}public void setEndtime(String endtime) {this.endtime = endtime;}public String getRuntime() {return runtime;}public void setRuntime(String runtime) {this.runtime = runtime;}
}

Users.java

package com.code2life.train.ticketing.system.entity;/*** @Project: StationTicketingSystem* @Date: 2020/2/23 17:06* @author: Eric* @Description: TODO 用户实体类*/
public class Users {private String usertel;private String password;private String username;private String usergender;private int usertypeno;private String userid;private int idtypeno;public String getUsertel() {return usertel;}public void setUsertel(String usertel) {this.usertel = usertel;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getUsergender() {return usergender;}public void setUsergender(String usergender) {this.usergender = usergender;}public int getUsertypeno() {return usertypeno;}public void setUsertypeno(int usertypeno) {this.usertypeno = usertypeno;}public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public int getIdtypeno() {return idtypeno;}public void setIdtypeno(int idtypeno) {this.idtypeno = idtypeno;}
}

dao层
TrainsDao.java

package com.code2life.train.ticketing.system.dao;import com.code2life.train.ticketing.system.utils.SQLHelper;
import com.code2life.train.ticketing.system.entity.Trains;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;/*** @Project: StationTicketingSystem* @Date: 2020/2/23 17:55* @author: Eric* @Description: TODO 对列车信息的数据库操作类*/
public class TrainsDao {//获得全部列车信息public ArrayList<Trains> trainQueryAll() {String mysql = "select * from trains;";System.out.println(mysql);return getTrains(mysql);}//通过列车号来搜索列车public Trains trainQueryByno(String trainno) {String mysql = "select * from trains where trainno='" + trainno + "'";System.out.println(mysql);return getTrains(mysql).get(0);}//搜索除了列车类型为traintypeno的所有符合条件的列车public ArrayList<Trains> trainTicketsQuery(String startplace, String endplace, int traintypeno) {String mysql = "select * from trains where startplace='" + startplace +"' and endplace='" + endplace + "' " +"and traintypeno!=" + traintypeno;System.out.println(mysql);return getTrains(mysql);}//搜索所有符合条件的列车(管理员用)public ArrayList<Trains> trainQueryByAdmin(String startplace, String endplace, int traintypeno) {String mysql = "select * from trains where startplace='" + startplace +"' and endplace='" + endplace + "' " +"and traintypeno=" + traintypeno;System.out.println(mysql);return getTrains(mysql);}//判断列车是否存在public boolean trainIsExist(String trainno) {boolean isExist = false;String mysql = "select * from trains where trainno='" + trainno + "'";try {ResultSet rs = SQLHelper.executeQuery(mysql);isExist = rs.next();//如果列车存在,则会返回一个true值SQLHelper.closeConnection();} catch (Exception e) {System.out.println("判断列车是否存在方法报错");}return isExist;}//修改列车信息public int updateTrain(String trainno, int traintypeno, String startplace, String endplace,String starttime, String endtime, String runtime) {String mysql = "update trains set traintypeno=" + traintypeno + ",";String mysql1 = "startplace='" + startplace + "',endplace='" + endplace + "',";String mysql2 = "starttime='" + starttime + "',endtime='" + endtime + "',runtime='";String mysql3 = runtime + "' where trainno='" + trainno + "'";mysql = mysql + mysql1 + mysql2 + mysql3;System.out.println(mysql);return SQLHelper.executeUpdate(mysql);}//增加列车public int addTrain(String trainno, int traintypeno, String startplace, String endplace,String starttime, String endtime, String runtime) {String mysql = "insert into trains values('" + trainno + "'," + traintypeno;String mysql1 = ",'" + startplace + "','" + endplace + "','";String mysql2 = starttime + "','" + endtime + "','" + runtime + "')";mysql = mysql + mysql1 + mysql2;System.out.println(mysql);return SQLHelper.executeUpdate(mysql);}//删除列车public boolean deleteTrain(String trainNo) {String mysql = "delete from trains where trainno=" + trainNo + "'";System.out.println(mysql);return 0 != SQLHelper.executeUpdate(mysql);}//获取列车信息数组列表private ArrayList<Trains> getTrains(String mysql) {ArrayList<Trains> trains = new ArrayList<>();try {ResultSet rs = SQLHelper.executeQuery(mysql);while (rs.next()) {Trains train = new Trains();train.setTrainno(rs.getString(1));train.setTraintypeno(Integer.parseInt(rs.getString(2)));train.setStartplace(rs.getString(3));train.setEndplace(rs.getString(4));train.setStarttime(rs.getString(5));train.setEndtime(rs.getString(6));train.setRuntime(rs.getString(7));trains.add(train);}SQLHelper.closeConnection();} catch (SQLException e) {System.out.println("获取列车数组列表方法中报错");}return trains;}
}

UsersDao.java

package com.code2life.train.ticketing.system.dao;import com.code2life.train.ticketing.system.utils.SQLHelper;
import com.code2life.train.ticketing.system.entity.Users;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;/*** @Project: StationTicketingSystem* @Date: 2020/2/23 17:18* @author: Eric* @Description: TODO 对用户信息的数据库操作类*/
public class UsersDao {//判断用户是否存在以及密码是否输入正确public boolean userValidate(String tel, String pwd, int type) {boolean existed = false;String mysql = "select usertel,password from users ";mysql += "where usertel='" + tel + "'" + " and password='" + pwd + "'";mysql += " and usertypeno='" + type + "'";System.out.println(mysql);try {ResultSet rs = SQLHelper.executeQuery(mysql);//如果用户存在if (rs.next()) {existed = true;}SQLHelper.closeConnection();} catch (SQLException e) {System.out.println("验证用户方法中报错");}return existed;}//通过用户手机号获取用户信息public Users userQueryByTel(String usertel) {String mysql = "select * from users where usertel='" + usertel + "'";System.out.println(mysql);return getUsers(mysql).get(0);}//通过身份证号来获取用户信息public Users userQueryById(String userid) {String mysql = "select * from users where userid='" + userid + "'";System.out.println(mysql);return getUsers(mysql).get(0);}//获得全部用户信息public ArrayList<Users> userQueryAll() {String mysql = "select * from users";return getUsers(mysql);}//更新用户信息(用于管理员)public int updateUser(String usertel, String password, String username,String usergender, int usertypeno, String userid) {String mysql = "update users set usertel='" + usertel + "',password='" + password + "',";String mysql1 = "username='" + username + "',usergender='" + usergender + "',";String mysql2 = "usertypeno=" + usertypeno + ",idtypeno=0";String mysql3 = " where userid='" + userid + "'";mysql = mysql + mysql1 + mysql2 + mysql3;System.out.println(mysql);return SQLHelper.executeUpdate(mysql);}//删除用户信息(用于管理员)public int deleteUser(String userid) {String mysql = "delete from users where userid='" + userid + "'";return SQLHelper.executeUpdate(mysql);}//修改自我信息public int modifySelfInfo(String usertel, String password,String username, String userid) {String mysql = "update users set usertel='" + usertel +"',password='" + password + "',username='" + username + "' " +"where userid='" + userid + "'";System.out.println(mysql);return SQLHelper.executeUpdate(mysql);}//查询用户是否存在,不存在返回falsepublic boolean userExisted(String usertel) {String mysql = "select * from users where usertel='" + usertel + "'";System.out.println(mysql);Object obj = SQLHelper.executeSingleQuery(mysql);return obj == null;}//注册用户信息,返回注册是否成功public boolean register(String tel, String password, String name, String gender, int usertype, String id, int idtype) {String mysql = "insert into users values('" + tel +"','" + password + "','" + name + "','" + gender + "'," +usertype + ",'" + id + "'," + idtype + ");";System.out.println(mysql);int rs = 0;//0表示插入失败try {rs = SQLHelper.executeUpdate(mysql); //如果更新成功,则rs=1} catch (Exception e) {System.out.println("注册用户信息报错");}return rs != 0;}//获得用户信息数组列表private ArrayList<Users> getUsers(String mysql) {ArrayList<Users> users = new ArrayList<>();try {ResultSet rs = SQLHelper.executeQuery(mysql);while (rs.next()) {Users user = new Users();user.setUsertel(rs.getString(1));user.setPassword(rs.getString(2));user.setUsername(rs.getString(3));user.setUsergender(rs.getString(4));user.setUsertypeno(rs.getInt(5));user.setUserid(rs.getString(6));user.setIdtypeno(rs.getInt(7));users.add(user);}SQLHelper.closeConnection();} catch (SQLException e) {System.out.println("获取用户数组列表方法中报错");}return users;}
}

view层
LoginWindow.java

package com.code2life.train.ticketing.system.view;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;import com.code2life.train.ticketing.system.dao.*;
import com.code2life.train.ticketing.system.utils.Background;
import com.code2life.train.ticketing.system.entity.Users;/*** @Project: StationTicketingSystem* @Date: 2020/2/23 18:44* @author: Eric* @Description: TODO 登录界面类*/
public class LoginWindow extends JFrame implements ActionListener {private JTextField txt_tel;                           //用户电话private JPasswordField txt_password;                  //用户密码private JComboBox<String> com_role;                   //用户角色类型private JButton btn_login, btn_register, btn_cancel;  //功能按钮private static Users user; //登录的用户信息,在乘客界面中用到public LoginWindow(String title) {//设置登录界面题头和符号setTitle(title);String iconSrc = "picture/logo1.jpg";ImageIcon icon = new ImageIcon(iconSrc);setIconImage(icon.getImage());//自定义设置主界面主面板的背景String bgdSrc = "picture/rail5.jpg";ImageIcon background = new ImageIcon(bgdSrc);Background.setBackgroundPicture(this, background);//界面显示信息面板JLabel lbl_show = new JLabel("售票登陆系统");lbl_show.setForeground(Color.WHITE);lbl_show.setFont(new Font("楷体", Font.PLAIN, 65));lbl_show.setHorizontalAlignment(JLabel.CENTER);JPanel jp_show = new JPanel();jp_show.setOpaque(false);jp_show.add(lbl_show);//用户信息模块//1.手机号JLabel lbl_tel;lbl_tel = new JLabel("手机号:");lbl_tel.setForeground(Color.WHITE);lbl_tel.setFont(new Font("楷体", Font.BOLD, 30));lbl_tel.setHorizontalAlignment(SwingConstants.CENTER);//2.密码JLabel lbl_password = new JLabel("密  码:");lbl_password.setForeground(Color.WHITE);lbl_password.setFont(new Font("楷体", Font.BOLD, 30));lbl_password.setHorizontalAlignment(SwingConstants.CENTER);//3.身份选择JLabel lbl_role = new JLabel("身  份:");lbl_role.setForeground(Color.WHITE);lbl_role.setFont(new Font("楷体", Font.BOLD, 30));lbl_role.setHorizontalAlignment(SwingConstants.CENTER);//4.信息输入框txt_tel = new JTextField(15);txt_password = new JPasswordField(20);com_role = new JComboBox<>(new String[]{"乘客", "管理员"});//5.用户信息面板(排版)JPanel jp_userInfo = new JPanel();jp_userInfo.setOpaque(false);//将面板背景设计为透明,因为要显示自定义的背景图片jp_userInfo.setLayout(new GridLayout(7, 2));jp_userInfo.add(new JLabel());jp_userInfo.add(new JLabel());jp_userInfo.add(lbl_tel);jp_userInfo.add(txt_tel);jp_userInfo.add(new JLabel());jp_userInfo.add(new JLabel());jp_userInfo.add(lbl_password);jp_userInfo.add(txt_password);jp_userInfo.add(new JLabel());jp_userInfo.add(new JLabel());jp_userInfo.add(lbl_role);jp_userInfo.add(com_role);jp_userInfo.add(new JLabel());jp_userInfo.add(new JLabel());// 登录界面功能按钮模块//1.登录按钮btn_login = new JButton("登录");btn_login.setFont(new Font("楷体", Font.PLAIN, 20));btn_login.addActionListener(this);//2.注册按钮btn_register = new JButton("注册");btn_register.setFont(new Font("楷体", Font.PLAIN, 20));btn_register.addActionListener(this);//3.取消按钮btn_cancel = new JButton("取消");btn_cancel.setFont(new Font("楷体", Font.PLAIN, 20));btn_cancel.addActionListener(this);//4.功能按钮面板JPanel jp_functionBtn = new JPanel();jp_functionBtn.setOpaque(false);jp_functionBtn.add(btn_login);jp_functionBtn.add(btn_register);jp_functionBtn.add(btn_cancel);//设置主面板布局,并添加上面自定义的面板this.setLayout(new BorderLayout());this.add(jp_show, BorderLayout.NORTH);this.add(jp_userInfo, BorderLayout.CENTER);this.add(jp_functionBtn, BorderLayout.SOUTH);this.validate();this.setVisible(true);this.setSize(background.getIconWidth(), background.getIconHeight());this.setResizable(false);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {//登录if (e.getSource() == btn_login) {String userTel = txt_tel.getText().trim();String password = new String(txt_password.getPassword());int type = com_role.getSelectedIndex();login(userTel, password, type);return;}//注册判断if (e.getSource() == btn_register) {RegisterWindow RegisterWindow = new RegisterWindow("注册为乘客");return;}//取消登陆if (e.getSource() == btn_cancel) {txt_tel.setText("");txt_password.setText("");com_role.setSelectedIndex(0);}}public static Users getUser() {return user;}//用户点击登录按钮时调用此方法private void login(String userTel, String password, int type) {Icon success = new ImageIcon("picture/success.jpg");Icon failed = new ImageIcon("picture/failed.jpg");final int PASSENGER = 0;final int ADMIN = 1;//用户信息均不能为空if (userTel.equals("") || password.equals("")) {JOptionPane.showMessageDialog(this, "输入不能为空!", "提醒", JOptionPane.WARNING_MESSAGE, failed);return;}//如果用户信息不为空,验证此用户是否存在UsersDao usersDao = new UsersDao();boolean existed = usersDao.userValidate(userTel, password, type);if (!existed) {JOptionPane.showMessageDialog(this, "输入信息有误", "提醒", JOptionPane.WARNING_MESSAGE, failed);return;}//如果用户存在,判断是哪种用户类型,并进入用户界面if (type == PASSENGER) {user = usersDao.userQueryByTel(userTel);JOptionPane.showMessageDialog(this, "欢迎您!  " + userTel + " 用户!", "登陆成功", JOptionPane.PLAIN_MESSAGE, success);new PassengerWindow("用户");this.dispose();} else if (type == ADMIN) {JOptionPane.showMessageDialog(this, "欢迎您!  " + userTel + " 管理员!", "登陆成功", JOptionPane.PLAIN_MESSAGE, success);new AdminWindow("管理员");this.dispose();}}
}

完整源码

觉得有用,记得一键三连哦!

Swing+Mysql实现的火车票管理系统3(功能分为普通用户和管理员,包含登录、车票查询、改签、购票、我的订单、用户注册、用户首页、车站管理、价格管理、用户管理等)相关推荐

  1. 基于Java+Swing+Mysql实现汽车信息管理系统

    基于Java+Swing+Mysql实现汽车信息管理系统 一.系统介绍 二.功能展示 1.登陆 2.车辆信息 3.车辆入库 4.车辆出库 5.车辆查询 6.车辆信息修改 三.数据库 四.其它 1.其他 ...

  2. 基于Java+Swing+mysql餐厅点餐管理系统

    基于Java+Swing+mysql餐厅点餐管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.用户注册(顾客) 3.顾客可以点餐 4.顾客可以查看订单信息 5.顾客可以修改个人信息 6.新增套餐 ...

  3. 【Java课程设计】基于Java Swing+MySQL的学生基本信息管理系统----附git仓库地址

    一.项目简介 功能描述: 基于Java Swing+MySQL的学生基本信息管理系统,支持对学院.班级.学生信息的增删改查. 参考git地址或博客地址: https://www.bilibili.co ...

  4. Eclipse+Java+Swing+Mysql实现员工信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 二.系统展示 1.登录系统 2.主页面 3.部门管理 4.职位管理 5.员工管理 三.部分代码 AdminDao.java D ...

  5. Eclipse+Java+Swing+Mysql实现学生信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 二.系统展示 1.注册系统 2.登录系统 3.系统主页面 4.添加学生信息 5.修改学生信息 6.查询学生信息 三.部分代码 ...

  6. Swing+Mysql实现的学院管理系统(角色:学生、教师、管理员 功能包含学生管理、教师管理、班级管理、成绩管理、点名考勤系统、休闲游戏、校园通信、音乐系统、留言管理、专业管理等)

    博客目录 Swing+mysql的校园管理系统 实现功能截图 系统功能 使用技术 代码 写在最后 Swing+mysql的校园管理系统 本系统综合了校园管理的所有功能,一共分为三个角色:学生.教师.管 ...

  7. Java+Swing+MySQL机票预订和管理系统

    1. 系统设计目标 随着社会发展的不断进步,出行选择飞机的消费者也越来越多,为了满足人们的出行需求,方便旅客购票以及机场管理,实现航空公司的现代化管理,进一步提高工作效率,需要开发一个售票及管理系统. ...

  8. 基于Java Swing+mysql的学生信息管理系统

    学生信息管理系统 学生管理系统目录 学生信息管理系统 一.前期工作 ①下载eclipse.mysql.navicat ②建立navicat与mysql的连接 二.明确项目的具体实现思路 ★系统功能分析 ...

  9. mysql人事管理系统源代码_java Swing mysql实现的人事管理系统项目源码附带视频指导教程...

    大家好,今天给大家演示一款由Java swing mysql实现的简单的人事管理系统,功能非常简单,实现了基本人事的增删改查,采用了mvc的分层设计模式,结构非常清晰,是Java初学者参考的非常好的资 ...

最新文章

  1. linux 下如何安装php,详解在Linux下如何安装配置PHP
  2. 转:使用curl来调试你的应用
  3. php 上一条下一条,thinkPhp里添加显示上一条和下一条
  4. 自动化测试,面试【必备题】
  5. JAVA电子书大礼包
  6. 【小月电子】国产安路FPGA开发板系统学习教程-LESSON9简易测试系统
  7. 【锋迷商城】01数据库设计
  8. 硕士论文各章节的篇幅多少比较合适
  9. ODI(Oracle Data Integrator)基本使用教程(1)
  10. border-radius理解-边框棱角变圆
  11. vc 6.0与mysql win10_vc 6.0官方下载win10-vc 6.0 win10 64位下载中文完整版-西西软件下载...
  12. Python股票交易决策 - 计算收益率并控制风险
  13. 如何将 ONLYOFFICE 文档 v7.2 与 Jira Software集成?
  14. 在macbook上安装windows几种方案
  15. delphi FastReport经验
  16. Web前端学习第一周
  17. linux截图桌面,Ubuntu Linux应用桌面截图
  18. Unity3D 武器拖尾效果(刀光) 使用PocketRPG Trails
  19. [备忘]QCP文件格式
  20. 2012虚拟机配置服务器配置,Windows Server 2012 R2 NAP服务器安装与配置03之 NPS服务器DHCP访问控制配置...

热门文章

  1. agaular 离线文档_超全离线开发手册
  2. python适合用来做什么游戏,python 主要用来做什么
  3. M4——GPIO配置
  4. label中不同颜色字体的显示
  5. 实现中文分词、词性标注、关键词提取、句法分析等智能预处理
  6. 使用css样式替代v-html完成回车换行
  7. vue textarea阻止回车换行默认行为
  8. jspm 馨悦养生馆管理系统毕业设计(附源码、运行环境)
  9. 21哈工程计算机考研经验贴
  10. 请教各位如何获取y轴的数值啊,需要把y轴的所有数据都输出