基于Derby数据库的注册登录模拟系统

2024-01-19 10:30

本文主要是介绍基于Derby数据库的注册登录模拟系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Derby真有趣.jpg

  • (题目来自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();databaseService.connect("test");databaseService.createbiao("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;
import java.text.ParseException;
import java.text.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 dataid=id.getText();String datapass=new String(password.getPassword());String datestr=rq.getText();Date datarq= null;try {datarq = simpleDateFormat.parse(datestr);} catch (ParseException parseException) {System.out.println(parseException);parseException.printStackTrace();}java.sql.Date date = new java.sql.Date(datarq.getTime());data.setDate(date);try {data.setId(dataid);data.setPassword(datapass);boolean y=databaseService.register(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 dataid=id.getText();String datapass=new String(password.getPassword());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.javaDatabaseServiceImpl.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;con=DriverManager.getConnection("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;con=DriverManager.getConnection("jdbc:derby:"+name+";create=true");SQL="create table "+this.biaoname+" (id char(10) primary key,password varchar(30),birth date)";sta=con.prepareStatement(SQL);sta.executeUpdate();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(1,data.getId());sta.setString(2,data.getPassword());sta.setDate(3,data.getDate());sta.executeUpdate();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(1,data.getId());rs=sta.executeQuery();rs.next();if(rs.getString("password").equals(data.getPassword())){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.Datejava.sql.Date 就很。。。

反正我能想到的大致是这样了最后的效果大致是这样
在这里插入图片描述

那个华容道建议无视(作业要求),具体那个按键就是为了检验有没有登录的(模拟)。

这篇关于基于Derby数据库的注册登录模拟系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622130

相关文章

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO