(题目来自java作业)
(总所周知,编程只能自学。)
(我写代码比较随意,本篇里出现的代码可能并不是最优解,但肯定是可行解)
首先配置Derby环境(自己百度 狗头 )
或者安装依赖库也行吼
**友情提示:这只是使用数据库模拟注册登录系统,并没有涉及Cookie和Session,各位大大请无视此篇 **
<dependency><groupId>org.apache.derby</groupId><artifactId>derby</artifactId><version>10.15.2.0</version>
</dependency>
首先献上总目录
有点乱,随便看看就好啦。
程序大致分为几个部分:
main方法 Example.java
import service.DatabaseService;
import service.impl.DatabaseServiceImpl;public class Example {public static void main(String[] args) {DatabaseService databaseService=new DatabaseServiceImpl();t("test");atebiao("test","qwe");Win win=new Win(databaseService);}
}
总界面Win.java
import service.DatabaseService;
import service.impl.DatabaseServiceImpl;
import windows.Login;
import windows.Register;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Win extends JFrame implements ActionListener {boolean loginzt=false;JTabbedPane p;JButton button;DatabaseService databaseService;Register register;Login login;Win(DatabaseService databaseService){this.databaseService=databaseService;login=new Login(databaseService,loginzt);register=new Register(databaseService);setTitle("登录后可玩华容道");button=new JButton("玩华容道");setBounds(100,100,650,200);setVisible(true);p=new JTabbedPane(JTabbedPane.TOP);p.add("我要注册",register);p.add("我要登录",login);p.validate();button.addActionListener(this);add(button,BorderLayout.NORTH);add(p, BorderLayout.CENTER);validate();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent e) {if(login.isLoginzt()){JOptionPane.showMessageDialog(this,"已登录,开始游戏");}else{JOptionPane.showMessageDialog(this,"尚未登录");}}
}
注册界面Register.java
package windows;import model.Data;
import service.DatabaseService;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
ParseException;
SimpleDateFormat;
import java.util.Date;public class Register extends JPanel implements ActionListener {DatabaseService databaseService;JTextField id,rq;JPasswordField password;JButton button;public Register(DatabaseService databaseService){this.databaseService=databaseService;add(new JLabel("ID:"));id=new JTextField(10);add(id);add(new JLabel("密码:"));password =new JPasswordField(10);add(password);add(new JLabel("出生日期:"));rq=new JTextField(10);add(rq);button=new JButton("注册");button.addActionListener(this);add(button);}@Overridepublic void actionPerformed(ActionEvent e) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");Data data=new Data();String dataidText();String datapass=new Password());String datestrText();Date datarq= null;try {datarq = simpleDateFormat.parse(datestr);} catch (ParseException parseException) {System.out.println(parseException);parseException.printStackTrace();}java.sql.Date date = new java.sql.Time());data.setDate(date);try {data.setId(dataid);data.setPassword(datapass);boolean yister(data);if(y){JOptionPane.showMessageDialog(this,"注册成功");}else{JOptionPane.showMessageDialog(this,"注册失败,已存在该用户");}} catch (Exception exception) {exception.printStackTrace();JOptionPane.showMessageDialog(this,"注册失败,格式错误");}}
}
登录界面Login.java
package windows;import model.Data;
import service.DatabaseService;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Login extends JPanel implements ActionListener {DatabaseService databaseService;boolean loginzt;JTextField id;JPasswordField password;JButton button;public Login(DatabaseService databaseService,boolean loginzt){this.databaseService=databaseService;id=new JTextField(10);password=new JPasswordField(10);button=new JButton("登录");add(new JLabel("ID:"));add(id);add(new JLabel("密码:"));add(password);add(button);button.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent e) {Data data=new Data();String dataidText();String datapass=new Password());data.setPassword(datapass);data.setId(dataid);if(databaseService.login(data)){loginzt=true;JOptionPane.showMessageDialog(this,"登录成功");}else{JOptionPane.showMessageDialog(this,"登录失败,请检查ID和密码是否正确");}}public boolean isLoginzt() {return loginzt;}
}
方法接口DatabaseService.java和DatabaseServiceImpl.java
package service;import model.Data;public interface DatabaseService {public void connect(String name);public void createbiao(String name,String biaoname);public boolean register(Data data);public boolean login(Data data);
}
package service.impl;import java.sql.*;
import model.Data;
import service.DatabaseService;public class DatabaseServiceImpl implements DatabaseService {String biaoname,name;Connection con=null;PreparedStatement sta=null;ResultSet rs=null;String SQL=null;@Overridepublic void connect(String name) {try {Class.forName("org.apache.derby.jdbc.EmbeddedDriver");} catch (Exception e) {e.printStackTrace();System.out.println(e);}try {this.name=name;conConnection("jdbc:derby:"+name+";create=true");} catch (Exception throwables) {throwables.printStackTrace();System.out.println(throwables);}}@Overridepublic void createbiao(String name,String biaoname) {try {this.biaoname=biaoname;conConnection("jdbc:derby:"+name+";create=true");SQL="create table "+this.biaoname+" (id char(10) primary key,password varchar(30),birth date)";sta=con.prepareStatement(SQL);uteUpdate();System.out.println("建表成功");} catch (Exception throwables) {System.out.println(throwables);System.out.println("表已存在");}}public boolean register(Data data){try {SQL="insert into "+this.biaoname+" values(?,?,?)";sta=con.prepareStatement(SQL);sta.setString(Id());sta.setString(Password());sta.setDate(Date());uteUpdate();return true;} catch (SQLException throwables) {throwables.printStackTrace();return false;}}public boolean login(Data data){try {SQL="select * from "+this.biaoname+" where id = ?";sta=con.prepareStatement(SQL);sta.setString(Id());rsuteQuery();rs.next();String("password").Password())){return true;}else{return false;}} catch (SQLException throwables) {System.out.println(throwables);return false;}}}
以及数据对象 Data.java
package model;import java.sql.Date;public class Data {private String id;private String password;private Date date;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}
}
有一说一,做Derby踩了好多坑,所以我在这里扫个雷,做Derby建议使用预处理来使用SQL语句,其次要知道Date类分为java.util.Date和java.sql.Date 就很。。。
反正我能想到的大致是这样了最后的效果大致是这样
那个华容道建议无视(作业要求),具体那个按键就是为了检验有没有登录的(模拟)。
本文发布于:2024-01-28 13:42:32,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064205577815.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |