javaSwing窗口实现注册用户功能 将用户信息自动导入mysql数据库中

//有菜单栏选项 文件中有保存和打开功能 点击保存会自动将用户信息导入数据库中,并在控制台输出保存的路径。

//菜单栏文件中有打开功能,可以打开用户的信息,并输出在控制台上

//Register.class 注册窗口的实现

import java.awt.*;
import java.awt.event.ActionEvent;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class Register extends JFrame{
    public static void main(String[] args) {
        Register jfd = new Register();
    }
    public Register(){
        super("注册页面实现功能!");
        //菜单栏
        JMenuBar jmb=new JMenuBar();
        this.setJMenuBar(jmb);

        //菜单
        JMenu jmFile = new JMenu("文件");
        JMenu jmEdit = new JMenu("编辑");
        JMenu jmHelp = new JMenu("帮助");
        JMenu jmNewCreate = new JMenu("新建");

        jmb.add(jmFile);
        jmb.add(jmEdit);
        jmb.add(jmHelp);

        //菜单项
        JMenuItem jmiOpen = new JMenuItem("打开");
        JMenuItem jmiSave = new JMenuItem("保存");
        JMenuItem jmiExit = new JMenuItem("退出");
        JMenuItem jmiCopy = new JMenuItem("复制");
        JMenuItem jmiPaste = new JMenuItem("粘贴");
        JMenuItem jmiAbout = new JMenuItem("关于");
        JMenuItem jmiClass = new JMenuItem("java类");
        JMenuItem jmiPro = new JMenuItem("java项目");
        JMenuItem jmiOther = new JMenuItem("其他");

        //菜单添加菜单项
        jmNewCreate.add(jmiClass);
        jmNewCreate.add(jmiPro);
        jmNewCreate.add(jmiOther);

        jmFile.add(jmNewCreate);
        jmFile.add(jmiOpen);
        jmFile.add(jmiSave);
        jmFile.add(jmiExit);

        jmEdit.add(jmiCopy);
        jmEdit.add(jmiPaste);

        jmHelp.add(jmiAbout);


        JPanel jp ;
        jp = new JPanel(new GridLayout(7,1));
        JLabel jl1 = new JLabel("注册页面", new ImageIcon("images/logo.png"),SwingConstants.CENTER);
        JPanel p = new JPanel();
        p.add(jl1);
        jp.add(p);

        JLabel jl2 = new JLabel("用户名:");
        JTextField jtf = new JTextField(30);
        JPanel p1 = new JPanel(new FlowLayout(FlowLayout.LEADING));
        p1.add(jl2);
        p1.add(jtf);
        jp.add(p1);

        JLabel jl3 = new JLabel("密    码:");
        JPasswordField jpf = new JPasswordField(30);
        JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        p2.add(jl3);
        p2.add(jpf);
        jp.add(p2);

        JLabel jl4 = new JLabel("性    别:");
        JRadioButton rbmale = new JRadioButton("男");
        JRadioButton rbfemale= new JRadioButton("女");
        ButtonGroup sex = new ButtonGroup();
        sex.add(rbmale);
        sex.add(rbfemale);
        JPanel p3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        p3.add(jl4);
        p3.add(rbmale);
        p3.add(rbfemale);
        jp.add(p3);

        JLabel jl5 = new JLabel("省    份:");
        JComboBox<String> cmbCity = new JComboBox<String>();
        cmbCity.addItem("北京");
        cmbCity.addItem("上海");
        cmbCity.addItem("广州");
        cmbCity.addItem("深圳");
        cmbCity.addItem("郑州");
        JPanel p4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        p4.add(jl5);
        p4.add(cmbCity);
        jp.add(p4);

        JLabel jl6 = new JLabel("爱    好:");
        JCheckBox ckRead = new JCheckBox("阅读");
        JCheckBox ckNet = new JCheckBox("上网");
        JCheckBox ckSwim = new JCheckBox("游泳");
        JCheckBox ckTour = new JCheckBox("旅游");
        JPanel p5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        p5.add(jl6);
        p5.add(ckRead);
        p5.add(ckNet);
        p5.add(ckSwim);
        p5.add(ckTour);
        jp.add(p5);

        JButton jb1 = new JButton("确认");
        JButton jb2 = new JButton("取消");
        JPanel p6 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        p6.add(jb1);
        p6.add(jb2);
        jp.add(p6);
        jb1.addActionListener(e-> System.out.println("注册成功"));
        jb2.addActionListener(e-> {System.out.println("退出成功! ");System.exit(0);});
        jl2.setBounds(120,30,165,25);
        this.add(jp);
        this.setLocation(500,300);

        //为退出功能添加事件监听器
        jmiExit.addActionListener( e -> System.exit(0)); //Lambda表达式的优化(参数一个可省略(),一行代码可省略{};System.exit(0)虚拟机强制结束
        //为打开功能添加事件监听器
        jmiOpen.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jfc = new JFileChooser();
                int rVal = jfc.showOpenDialog(jmb);
                if(rVal==JFileChooser.APPROVE_OPTION){
                    //获取文件对话框中用户选中的文件名
                    String fileName = jfc.getSelectedFile().getName();
                    //获取文件对话框中用户选中的文件所在路径
                    String path = jfc.getCurrentDirectory().toString();
                    StringBuilder sb = new StringBuilder();
                    try {
                        //输入流 读取指定文件数据
                        FileReader fr = new FileReader(path + "/" + fileName);
                        //创建缓冲流 不仅效率高 而且缓冲流中有读取一行的方法 !!!非常方便
                        BufferedReader br = new BufferedReader(fr);
                        //读取一行
                        String line = br.readLine();
                        //遍历文件信息
                        while(line!=null){
                            sb.append(line+"\n");
                            line=br.readLine();
                        }
                        System.out.println("文件中的信息:"+sb);
                        br.close();
                        fr.close();
                    } catch (FileNotFoundException e1) {
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }

            }
        });
        //为保存功能添加事件监听器  保存后通过jdbc插入到数据库mysql中
        jmiSave.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jfc=new JFileChooser();
                int rVal = jfc.showSaveDialog(jmb);
                StringBuilder sb = new StringBuilder();
                String id = jl2.getText();
                sb.append(jtf.getText());
                String pas = jl3.getText();
                //getPassword()返回的是char[] 可以使用过时的getText()
                sb.append("-" + String.copyValueOf(jpf.getPassword()));
                if (rbmale.isSelected()) {
                    sb.append("-" + "男");
                } else {
                    sb.append("-" + "女");
                }
                sb.append("-"+cmbCity.getSelectedItem());

                sb.append("-");
                if (ckRead.isSelected()) {
                    sb.append(ckRead.getText());
                }
                if (ckNet.isSelected()) {
                    sb.append(ckNet.getText());
                }
                if (ckSwim.isSelected()) {
                    sb.append(ckSwim.getText());
                }
                System.out.println(sb);
                if(rVal==JFileChooser.APPROVE_OPTION){
                    //获取文件对话框中用户选中的文件名
                    String fileName = jfc.getSelectedFile().getName();
                    //获取文件对话框中用户选中的文件所在路径
                    String path = jfc.getCurrentDirectory().toString();
                    System.out.println("成功写入文档中! 文档的路径在:"+path + "/" + fileName);
                    try {
                        //文件输出流 将保存的信息写入到文件中 文件路径就是上面获取到的:path + "/" + fileName
                        FileWriter fw = new FileWriter(path + "/" + fileName);
                        //将用户信息写入到文件中
                        fw.write(sb.toString());
                        fw.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
                //将保存的信息写入到数据库中
                try {
                    Connection conn = DBUtils.getConn();
                    //创建发送器
                    //创建一个SQL命令发送器Statement
                    PreparedStatement pstmt = conn.prepareStatement("insert into userXinxi values(?,?,?,?,?)");
                    //将信息写入到数据库中
                    String str = sb.toString();
                    String[] split = str.split("-");
                    for(int i=1;i<split.length+1;i++){
                        pstmt.setString(i,split[i-1]);
                    }
                    int i = pstmt.executeUpdate();
                    System.out.println("成功往数据库中插入"+i+"条信息");
                    conn.close();
                    pstmt.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            }
        });
        //为确认增加模式对话框
        JDialog jDialog = new JDialog(this);
        //设置对话框合适大小
        jDialog.pack();

        jb1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JLabel qr=new JLabel("注册成功");
                jDialog.add(qr);
                //窗口位置
                jDialog.setLocation(850,450);
                //窗口大小
                jDialog.setSize(150,150);
                jDialog.setVisible(true);
            }
        });
        //this.setSize(400,300);
        //调整合适大小
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }


}

//封装连接数据库的工具类 DBUtils.class

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DBUtils {
    public static String driverClassName,url,user,password;
    static Connection conn=null;
    static {
        //获取类加载器 -->反射
        ClassLoader cl = DBUtils.class.getClassLoader();
        //读取db.properties文件
        InputStream is=cl.getResourceAsStream("com/heima/优化jdbc/db.properties.properties");
        //Properties流操作 键值对 key value
        Properties pros = new Properties();
        try {
            pros.load(is);
            driverClassName = pros.getProperty("driverClassName");
             url = pros.getProperty("url");
             user = pros.getProperty("user");
             password = pros.getProperty("password");
            //加载驱动
            Class.forName(driverClassName);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConn() throws SQLException {
         conn = DriverManager.getConnection(url, user, password);
        System.out.println("连接成功!");
         return conn;
    }
}

//配置文件db.properties.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false
user=root
password=123456

 //数据库test下userxinxi表中的字段

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白龙威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值