实验题目:
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 文件外面!