Java 实验五

实验题目:

1, 利用 GUI 模拟用户登录,所有的用户名密码存储在数据库中;定义一个类使用 JDBC 连接数据库,读取用户名密码数据进行匹配以实现用户登录,若登录成功,提示用户登录成功,否则,提示用户登录失败:

2,设计一个关于文件操作的图形化应用程序,至少实现以下功能:包含一个文本框以及添加按钮,在文本框中输入文字后,点击添加按钮可以在文件中写入文本框中的文字;包含一个读取按钮,点击该按钮后,可以读取文件内容,并显示到文本框中。

实验题目放上面,方便各位朋友们容易搜到

FH不多说,直接上代码
第一题代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class JohnGUI {
    public static void createAndShowGUI(){
        JFrame f = new JFrame("登录");
        f.setSize(400,300);
        f.setLocation(600,300);
        f.setLayout(new BorderLayout());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();//创建一个面板
        JPanel panel1 = new JPanel();
        JTextField inputField = new JTextField(23);
        JTextField password = new JPasswordField(23);
        JLabel label = new JLabel("用户名",JLabel.CENTER);
        label.setFont(new Font("宋体",Font.PLAIN,20));
        JLabel label2 = new JLabel("密码",JLabel.CENTER);
        label2.setFont(new Font("宋体",Font.PLAIN,20));
        JButton btn = new JButton("登录");
        JButton btn2 = new JButton("清空");
        btn.setPreferredSize(new Dimension(100,25));
        btn2.setPreferredSize(new Dimension(100,25));
        panel.add(label);
        panel.add(inputField);
        panel1.add(label2);
        panel1.add(password);
        panel1.add(btn);
        panel1.add(btn2);
        f.add(panel,BorderLayout.PAGE_START);
        f.add(panel1,BorderLayout.CENTER);

        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String input = inputField.getText();
                String pwd = password.getText();
                boolean flag = false;
                try {
                    flag = findData(input,pwd);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

                if (flag == true) {
                    JOptionPane.showMessageDialog(null, "登录成功");
                    f.dispose();
                }else{
                    JOptionPane.showMessageDialog(null,"账号或密码有误,登录失败!");
                }

            }
        });
        //清空的事件处理
        btn2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                inputField.setText("");
                password.setText("");
            }
        });


    }

    public static boolean findData(String user, String pwd) throws SQLException {
        Connection connection = null ;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&&useSSL=false";
            String useraccount="root";
            String password="root";//数据库密码
            connection = DriverManager.getConnection(url,useraccount, password);
            statement = connection.createStatement();
            String sql = "select * from usertable";
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String username = resultSet.getString("user");
                String passwd = resultSet.getString("password");
                System.out.println(username);
                System.out.println(passwd);
                if (username == null || passwd == null ) {
                    return false;
                } else {
                    if (username.equals(user) && passwd.equals(pwd)) {
                        return true;
                    } else
                        return false;
                }
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(resultSet != null){
                resultSet.close();
            }
            if(statement != null){
                resultSet.close();
            }
            if(connection != null){
                resultSet.close();
            }
        }

        return false;
    }
    public static void main(String[] args) {
       SwingUtilities.invokeLater(JohnGUI::createAndShowGUI);
    }
   }

在这里插入图片描述

对了,如果你需要这个代码能运行,你需要做以下三件事:
1,把里面的数据库密码改成你自己的,然后把我的class类名改成与你的一致,包括主函数中的类名也要改。
2,MySQL 中的数据库名字 ,以及表名和列名属性参照我的,你要是会改相应的代码,就按自己的想法改,嫌麻烦的话,就完全按我的
3,下载与你MySQL数据库版本相对应的驱动器,并且放在你的项目中

下面是我的数据库名字在这里插入图片描述
下面是我的table表属性
在这里插入图片描述

好了 第一个实验题结束,上第二道菜

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class JohnFile {

    static JTextField field;
    static  JTextArea area;
    public static void creatGUI(){
        JFrame frame = new JFrame("文件操作界面");
        frame.setSize(600,500);
        frame.setLocation(400,500);
        frame.setVisible(true);
        frame.setLayout(new BorderLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        field = new JTextField(20);
        area = new JTextArea(20,50);
        area.setEditable(false);
        JLabel label = new JLabel("文本框",JLabel.LEFT);
        JButton button = new JButton("添加");
        JButton button1 = new JButton("读取");
        JScrollPane scrollPane = new JScrollPane(area);
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        panel.add(label);
        panel.add(field);
        panel.add(button);
        panel.add(button1);
        frame.add(scrollPane,BorderLayout.CENTER);
        frame.add(panel,BorderLayout.NORTH);

        //添加
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    buffWriter();
                    JOptionPane.showMessageDialog(null,"添加成功");
                    field.setText("");
                    area.setText("");
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

            }
        });

        //读取
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    buffReader();

                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
    }

    public static void buffWriter()throws Exception{
        String text = JohnFile.field.getText();
        System.out.println(text);
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("textWriter.txt",true));
        bufferedWriter.write(text);
        bufferedWriter.newLine();
        bufferedWriter.close();
    }
    public static void buffReader()throws Exception{
        BufferedReader bufferedReader = new BufferedReader(new FileReader("textWriter.txt"));
        String textRead;
        while((textRead = bufferedReader.readLine())!= null){
            area.append(textRead);
        }
        JohnFile.area.append(textRead);

    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(JohnFile::creatGUI);
    }
}

下面是效果图,
在这里插入图片描述
这个代码,可以直接使用,改一下类名即可,不用配置什么环境!
还有啰嗦一句,这个代码创造的文件,在你的src 文件外面!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值