设计任务:设计了基于Java的车辆信息管理系统,实现了用户的登录注册功能以及对车辆信息的增删改查功能。
完成任务的思路、方法与算法
思路
1.数据库的设计与创建,用户表和车辆信息表的设计与创建
2.设计与编写JDBC连接数据库
3.登录界面的设计与创建
4.注册界面的设计与创建
5.主界面的设计与创建
6.增加车辆信息的界面设计与创建
7.删除车辆信息的界面设计与创建
8.修改车辆信息的界面设计与创建
9.查询车辆信息的界面设计与创建
方法和算法
- 使用关系型数据库MySQL,设计考虑到数据结构,数据类型,增删改查等SQL语句等,Java提供了访问数据库的API:JDBC。通过JDBC,Java程序可以连接数据库,执行SQL语句,访问数据库中的数据。
- 程序界面的设计使用到了AWT,Java最早的GUI工具包,提供了一些基本的窗口,按钮,文本框,下拉列表等组件,swing在AWT的基础上进行了扩展,提供了更多的组件和更好的外观,Swing组件都是纯Java代码实现的,因此具有跨平台性。
- 信息管理系统通常需要处理大量的数据,需要使用算法和数据结构,Java提供了多种常用的算法和数据结构,本系统使用到了顺序结构,选择结构,循环结构。
-
数据库中表的结构设计图示
-
核心程序(对主要的语句要加注释)
JDBC.java
package 程序设计;
import java.sql.*;
import javax.swing.JOptionPane;
public class JDBC {
Connection conn;
Statement st;
String uri;
public Statement connection() {
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //1
uri="jdbc:mysql://localhost:3306/infosystem?user=root&password=123456&useSSL=false";
conn=DriverManager.getConnection(uri); //2
st=conn.createStatement(); //3
}catch(ClassNotFoundException ex) {
ex.printStackTrace();
}catch(SQLException ex) {
ex.printStackTrace();
}
return st;
}
}Register.java
package 程序设计; import javax.swing.*; import java.sql.*; import java.awt.Font; import java.awt.event.*; public class Register extends JFrame{ public JButton button1,button2;//事件源,按钮 public JTextField field1,field2; public JLabel label,label1,label2; public Register(){ //创建构造方法,设计界面,构造方法初始化对象的数据 this.setTitle("注册账户");//this引用当前对象 init(); this.setVisible(true); this.setBounds(600,300,400,350); JLabel background = new JLabel(new ImageIcon("D:/javapicture/3.jpeg")); this.add(background); background.setBounds(0, 0, this.getWidth(), this.getHeight()); this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗口关闭时默认的操作为退出程序 } public void init() { //普通方法,设置组件的大小位置 this.setLayout(null);//设置当前容器的布局管理器为null,组件的位置大小手动设置。 Font ffont=new Font("隶书",Font.BOLD,28); Font font=new Font("黑体",Font.BOLD,15); label=new JLabel("注册您的账户"); label1=new JLabel("新用户姓名:"); label2=new JLabel("新用户密码:"); label.setFont(ffont); label1.setFont(font); label2.setFont(font); label.setBounds(100,20,200,30); label1.setBounds(80,80,90,30); label2.setBounds(80,120,90,30); this.add(label); this.add(label1); this.add(label2); field1=new JTextField(20); field2=new JTextField(20); field1.setBounds(190,80,140,25); field2.setBounds(190,120,140,25); this.add(field1); this.add(field2); button1=new JButton("确定"); button1.setBounds(80,220,70,30); this.add(button1); button2=new JButton("返回"); button2.setBounds(240,220,70,30); this.add(button2); Handler1 handle=new Handler1();//创建监听器对象 handle.setFrame(this); button1.addActionListener(handle);//为确定按钮添加监听器 button2.addActionListener(handle);//为返回按钮添加监听器 } public static void main(String[] args) { //main方法 Register s=new Register(); } } class Handler1 implements ActionListener{ //Handler类实现ActionListener接口,可以处理用户在界面上点击按钮等操作所触发的事件 Register frame; public void setFrame(Register f) { //普通方法 frame=f; } public void actionPerformed(ActionEvent e) { //普通方法 String s1=frame.field1.getText();//获取事件源赋值给s1 String s2=frame.field2.getText();//获取事件源赋值给s2 JDBC m=new JDBC();//连接数据库 if(e.getSource()==frame.button1) { //获取事件源(点击确定按钮) ResultSet rs;//定义一个结果集变量 try{ //执行sql语句查询将数据库的结果集赋值给rs rs=m.connection().executeQuery("select * from login where name='"+s1+"' and password='"+s2+"'"); if(rs.next()) { //判断输入的用户密码是否在数据库中,若在就注册失败,否则注册成功 JOptionPane.showMessageDialog(null, "已存在,注册失败!请重新输入!");//对话框 }else { //注册成功,往数据库插入信息 m.connection().executeUpdate("insert into login values('" + s1 + "','" + s2 + "')"); JOptionPane.showMessageDialog(null, "注册成功!"); frame.dispose();//窗口释放 new LoginFrame().setVisible(true);//跳转登录注册界面 } } catch(SQLException ex) { ex.printStackTrace(); } } if(e.getSource()==frame.button2) { //获取事件源(点击返回按钮) JOptionPane.showMessageDialog(null, "返回成功!"); frame.dispose();//窗口释放 new LoginFrame().setVisible(true);//跳转登录注册界面 } } }
LoginFrame.java
package 程序设计; import java.sql.*; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class LoginFrame extends JFrame{ //创建LogonFrame类并继承JFrame类 public JButton button1,button2,button3;//登录、注册、取消按钮 public JTextField field1;//用户ID文本框 public JPasswordField field2;//密码框 public JLabel label1,label2;//标签 public LoginFrame(){ //创建构造方法,设计界面,构造方法初始化对象的数据 this.setTitle("登录注册账户"); init(); this.setVisible(true);//this引用当前对象 this.setResizable(false); this.setBounds(600,300,400,350); this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗口关闭时默认的操作为退出程序 JLabel background = new JLabel(new ImageIcon("D:/javapicture/3.jpeg")); this.add(background); background.setBounds(0, 0, this.getWidth(), this.getHeight()); } public void init() { //普通方法,设置组件的大小位置 this.setLayout(null);//设置当前容器的布局管理器为null,组件的位置大小手动设置。 Font ffont=new Font("黑体",Font.BOLD,15); label1=new JLabel("用户姓名:"); label1.setFont(ffont); label1.setBounds(50,80,90,30); this.add(label1); label2=new JLabel("密 码:"); label2.setFont(ffont); label2.setBounds(60,120,90,30); this.add(label2); field1=new JTextField(); field1.setBounds(120,80,170,30); this.add(field1); field2=new JPasswordField(); field2.setBounds(120,120,170,30); this.add(field2); button1=new JButton("登录"); button1.setBounds(50,180,70,30); this.add(button1); button2=new JButton("注册"); button2.setBounds(140, 180, 70, 30); this.add(button2); button3=new JButton("退出"); button3.setBounds(230, 180, 70, 30); this.add(button3); Handler handle=new Handler();//创建监听器对象 handle.setFrame(this); button1.addActionListener(handle);//为登录按钮添加监听器 button2.addActionListener(handle);//为注册按钮添加监听器 button3.addActionListener(handle);//为取消按钮添加监听器 } public static void main(String[] args) { //main方法,程序执行入口 LoginFrame f=new LoginFrame(); } } class Handler implements ActionListener { //创建Handler类实现ActionListener接口 LoginFrame frame;//将Hander类与LoginFrame连接起来 public void setFrame(LoginFrame f) { //通过setFrame()方法将LoginFrame对象传递给Haneder类 frame=f; } public void actionPerformed(ActionEvent e) { String s1=frame.field1.getText();//获取field1文本框的内容 String s2=new String(frame.field2.getPassword());//获取field2密码框的内容 JDBC m=new JDBC();//创建数据库对象,为了连接数据库 if(e.getSource()==frame.button1) { //获取事件源 ResultSet rs;//定义一个结果集变量 try{ //执行sql语句将数据库的结果集赋值给rs rs=m.connection().executeQuery("select * from login where name='"+s1+"' and password='"+s2+"'"); if(rs.next()) { //判断输入的账号密码是否在数据库中,若在就登录成功,否则登录失败 JOptionPane.showMessageDialog(null, "登录成功!");//对话框 frame.dispose(); new MainFrame().setVisible(true);//跳转到主界面 } else JOptionPane.showMessageDialog(null, "登录失败,请重新登录或注册!"); } catch(SQLException ex) { ex.printStackTrace(); } } if(e.getSource()==frame.button2) { //获取事件源点击注册按钮 frame.dispose();//窗口释放 new Register();//跳转到注册界面 } if(e.getSource()==frame.button3) { //获取事件源点击退出按钮 System.exit(0);//退出 } } }
MainFrame.java
package 程序设计; import java.awt.Color; import java.awt.Font; import