前段时间公司的事情太忙,CSDN博客停止更新快两个月。今天为大家分享一个java火车票预定系统436,目前系统功能已经很全面,具有购票、退票、改签等功能,和实际购买火车票功能非常接近。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步.
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发,不需要安装第三方JAR包。MySQL数据库,纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。运行方法直接可以run as appliaiton或者JAR --.jar
主要功能
火车票售票系统用Java语言编写,是一个典型的窗体程序,采用swing框架编写,系统涉及到文件、UI、数据库操作、事件等操作。系统分系统管理员和普通用户:
1 系统管理员的主要功能有以下一些功能:
用户管理:对系统中的用户进行日常的维护。包括增加用户、删除用户、修改用户
火车管理:对系统中的火车信息进行日常的维护。包括增加编号、容量
票价管理:对火车类型进行日常维护,包括增加、删除、修改操作。包括高铁、快速、普通车
票价管理:对火车的硬座、卧铺、一等座、商务座等价格进行设置
2 普通用户的主要功能有以下一些功能
用户登陆:输入用户名和密码,登陆到系统中
火车票购买:根据条件查询出符合条件的城市,然后点击预定。火车票分:硬件票、卧铺票、无座票
订单查询:查询用户所订购的火车票信息
退票和改签:对已经购买的火车票进行改签和退票操作,这是常用功能,也是系统中的主要特色之一。
联系人:对自己的主要联系人进行管理,包括联系人的增加、删除、修改。联系人需要输入:姓名,身份证、电话等信息。
运行效果
1 用户登录
2 用户注册
3 线路维护管理
4 价格管理维护
5 用户管理
6 用户购票
7 订单查看
8 联系人管理
关键代码
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);
}
项目总结
(1)在写代码之前,在大脑里一定要把思路理清楚,不能模模糊糊,一定要把功能图和流程图画出来,然后根据它去实现每一个功能块,要多分析,培养一种良好的逻辑思维能力。
(2)在写代码的过程中,一定要采取就近原则,同一个功能,或者对同一个组件的设置一般要写在一块,这样写的程序比较清晰,不容易出错,也便于查找。
(3)要养成良好的注释习惯,一是有利于别人阅读你的程序,同时也有利于自己以后再看,就能很快的读懂程序,提高效率。
(4)把功能模块化,即把实现相同功能的代码段封装成一到一个类或者一个方法中,实现的时候调用即可,这样能提高代码的可读性
(5)养成创建包来存放不同功能的类,使系统的结构更加模块化和规范化。
(6)在编写代码的时候,一定要边写边调试,要适时的设置断点,或者把某些变量的值输出到控制台,通过观察和分析变量的值,便于判断问题所在,同时,需要捕获异常的一定要把异常信息打印出来,便于分析问题。