欢迎光临散文网 会员登陆 & 注册

JDBC综合项目:登陆系统和注册系统,数据储存到SQL中,验证码,一个.java文件变多个

2020-03-21 20:36 作者:诗书画唱  | 我要投稿


/*个人的理解记忆:DButils 是database(数据库)  utils(常用工具,比如封装后可直接调用的查找方法,增加方法,删除方法,修改方法等)的简写,缩写。*/

--create database yonghu

--use yonghu

--drop database yonghu

--select * from yonghu

--drop table yonghu

create table yonghu(


yh_ID int,

yh_Uname varchar(30),

yh_Pwd varchar(30),

yh_Name varchar(30),

yh_Age int not null,

yh_Sex varchar(20) not null,

yh_Phone varchar(100)not null,

yh_Address varchar(200)not null,

yh_Jieshao varchar(500)not null)



package zhubiao;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Random;

import java.util.Scanner;


class diaoyongSQL {

/*

* 先用私密(安全)和静态(方便直接引用)的Connection,ResultSet,

*  Statement声明为 null,方便之后赋值,或 con== null可用于if中

*/

private static Connection con = null;

private static ResultSet res = null;

private static Statement sta = null;

/*

* 加载"com.microsoft.sqlserver.jdbc.SQLServerDriver(

* 这个为包名, 可从编译器的左边找到包名)"包 , 用上static {try {}catch (ClassNotFoundException e) { e.printStackTrace();(和在主函数中加的throws Exception 一样, 这个是为了让其抛出异常,不出现红线)}}的静态代码块,用Class.forName()进行加载"com.microsoft.sqlserver.jdbc.SQLServerDriver"包

*/

static {

try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}


// 用getCon(){} 来连接:

public static Connection getCon() {

/*

* 用if (con == null)来判断连接对象是否为null, 如果为null就用getConnection创建连接

*/

if (con == null) {

try {

con = DriverManager.getConnection(

"jdbc:sqlserver://DESKTOP-49FTFSP;"

+ "databaseName=yonghu", "sa", "1234abcd");

} catch (SQLException e) {

e.printStackTrace();

}

}

return con;/*

* public static后面没void(意思为 无返回值)这个单词,说明声明了要有返回值, 所以加return con来符合声明的条件

*/

}


/*

* 用Select(String sql){}封装和声明查询的方法, 用public static 是为了更容易应用

*/

public static ResultSet Select(String sql) {

// 用con = getCon();来建立链接的对象con

con = getCon();

// 用sta = con.createStatement(); 建立执行sql语句的对象

try {

sta = con.createStatement();

// 用res = sta.executeQuery(sql);执行sql语句得到结果集

res = sta.executeQuery(sql);

} catch (SQLException e) {


e.printStackTrace();

}

return res;

}


/*

* 封装声明“ 增(Z)删(S)改(G)的方法”,用boolean(常用于循环和条件语句,可方便编写程序 和少些写代码)

*/

public static boolean ZSG(String sql) {

// 用con = getCon();建立链接的对象

boolean b = false;/* 声明b = false */

con = getCon();

// 用sta = con.createStatement();建立执行sql语句的对象

try {

sta = con.createStatement();

// 用int num = sta.executeUpdate(sql);执行sql语句得到结果集

int num = sta.executeUpdate(sql);

if (num > 0) {

b = true;/*

* 默认一开始声明的boolean ZSG(String sql)为true, 前面声明了b = false,所以如果num>0,那么b被赋值为true,执行 ZSG(String sql)

*/

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;/*

* 前面声明了b = false,所以如果num<= 0,和num > 0为true相反,那么此时b=false,b返回为false

*/

}


}


public class main {

public static Scanner s = new Scanner(System.in);

static yonghu yh = new yonghu();


/*

* 先声明个全局可用的public static Scanner s = new Scanner(System.in);,再声明一个

* 可直接调用的静态的yonghu yh = new yonghu();之后加入很 多要调用的全部数据其中去,之后再调用

*/

public static void main(String[] args) throws Exception {

boolean b = true;

/*

* 用while (b) {}包围登录代码部分,实现登录错误的时候一直登录的效果 最先声明的b =

* true成立,b为true,即表明"可行",所以 while (true) 会一值循环, 直到num_yanzhengma_bianhao == num_yanzhengma,出现false,进而就会停止当前循环,继续执行循环下面的代码语句

*/

while (b) {

System.out.println("--------欢迎使用诗书画唱商品管理系统--------");

System.out.println(" ------请输入你要执行的操作--------");

System.out.println("1.登录2.注册 3.退出系统");

int num = s.nextInt();

if (num == 1) {

//输入1,就执行登录功能

System.out.println("------执行登录功能-----");

System.out.println("请输入你的用户名");

String uname = s.next();

System.out.println("请输入你的密码");

String pwd = s.next();

boolean bb = true;

while (bb) {

System.out.println("请输入验证码");

/*用Random r = new Random();生成一个验证码(这个验证码只是用随机数字)*/

Random r = new Random();

int num_yanzhengma_bianhao = r.nextInt(9000) + 1000;

System.out.println(num_yanzhengma_bianhao);

int num_yanzhengma = s.nextInt();


if (num_yanzhengma_bianhao == num_yanzhengma) {


System.out.println("验证码输入正确");

bb = false;

} else {

System.out.println("验证码输入错误");


}

}

/*声明 String写一个sql语句,用查找语句后来判断用户输入的信息是否在 数据库中存在,只有存在才可以登录,否则登录失败,可以登录说明输入的内容储存到了SQL数据库中去了*/

String sql = "select * from yonghu where yh_Uname= '" + uname

+ "' and yh_Pwd='" + pwd + "'";

/*

* 用 ResultSet res = diaoyongSQL.Select(sql);,调用封装而成的Select(sql)执行sql语句,用于查到全表,之后用res.next()遍历,yh.setYh_ID(res.getInt("yh_ID"));等打印出搜查到的语句,res.next()表明前面“System.out.println("请输入你的用户名");String uname = s.next(); System.out.println("请输入你的密码"); String pwd =s.next();”储存的内容和用sql 查找的数据是否相同,相同就会执行if(){}中的语句, 之前(执行时先注册再登录)注册时,输入数据已经用SQL语句储存到SQL数据库中了

*/

ResultSet res = diaoyongSQL.Select(sql);

if (res.next()) {

System.out.println("登录成功");

yh.setYh_ID(res.getInt("yh_ID"));

yh.setYh_Uname(res.getString("yh_Uname"));

yh.setYh_Pwd(res.getString("yh_Pwd"));

yh.setyh_Name(res.getString("yh_Name"));

yh.setYh_Age(res.getInt("yh_Age"));

yh.setYh_Sex(res.getString("yh_Sex"));

yh.setYh_Phone(res.getString("yh_Phone"));

yh.setYh_Address(res.getString("yh_Address"));

yh.setYh_Jieshao(res.getString("yh_Jieshao"));

b = false;/*登录成功则用b = false跳出循环*/

} else {

System.out.println("用户名或密码输入错误,请重试!");

}

}

/*

* 因为main函数那里加了throws Exception, 所以本来这里会有红线,这里会没红线

*/

else if (num == 2) {

// 输入为2,则 num == 2 ,执行注册功能

System.out.println("---------执行注册功能--------");

System.out.println("请输入你的ID");

int ID = s.nextInt();

System.out.println("请输入你的用户名");

String uname = s.next();

System.out.println("请输入你的用户密码");

String pwd = s.next();

System.out.println("请输入你的真实姓名");

String name = s.next();

System.out.println("请输入你的年龄");

int age = s.nextInt();

System.out.println("请输入你的性别");

String sex = s.next();

System.out.println("请输入你的手机号");

String phone = s.next();

System.out.println("请输入你的地址");

String address = s.next();

System.out.println("请输入你的个人介绍");

String jieshao = s.next();

String sql = "insert into yonghu values(" + ID + ",'" + uname

+ "'" + ", '" + pwd + "',' " + name + "', " + age

+ " , '" + sex + "' ," + "'" + phone + "'," + "'"

+ address + "'" + "," + "'" + jieshao + "')";

if (diaoyongSQL.ZSG(sql)) {

/*

* 如果用diaoyongSQL.ZSG(sql)执行 这个sql语句可以成功,就说明注册成功了

*/

System.out.println("注册成功");

} else {


System.out.println("注册失败,请重试");

}

} else if (num == 3) {

// 输入的数字为3,则 用System.exit(0);终止系统,退出系统:

System.exit(0);

} else {


System.out.println("内容输入错误!");

}

}

System.out.println("欢迎你来到诗书画唱商店,尊敬的用户" + yh.getYh_Uname()

+ ",请关注和点赞!拜托了!这对我很重要啊!");

}

}


class yonghu {


private String yh_Address;// yh_Address代表用户地址

private int yh_Age;// 代表用户年龄

private int yh_ID;// 代表用户编号

private String yh_Jieshao;// 代表用户 个人介绍

private String yh_Name;// 代表用户 真实姓名

private String yh_Phone;// 代表用户 手机号

private String yh_Pwd;// 代表用户 登录密码

private String yh_Sex;// 代表用户 性别

private String yh_Uname;// 代表用户登录名


public String getYh_Address() {

return yh_Address;

}


public int getYh_Age() {

return yh_Age;

}


public int getYh_ID() {

return yh_ID;

}


public String getYh_Jieshao() {

return yh_Jieshao;

}


public String getYh_Name() {

return yh_Name;

}


public String getYh_Phone() {

return yh_Phone;

}


public String getYh_Pwd() {

return yh_Pwd;

}


public String getYh_Sex() {

return yh_Sex;

}


public String getYh_Uname() {

return yh_Uname;

}


public void setYh_Address(String yh_Address) {

this.yh_Address = yh_Address;

}


public void setYh_Age(int yh_Age) {

this.yh_Age = yh_Age;

}


public void setYh_ID(int yh_ID) {

this.yh_ID = yh_ID;

}


public void setYh_Jieshao(String yh_Jieshao) {

this.yh_Jieshao = yh_Jieshao;

}


public void setyh_Name(String string) {


}


public void setYh_Name(String yh_Name) {

this.yh_Name = yh_Name;

}


public void setYh_Phone(String yh_Phone) {

this.yh_Phone = yh_Phone;

}


public void setYh_Pwd(String yh_Pwd) {

this.yh_Pwd = yh_Pwd;

}


public void setYh_Sex(String yh_Sex) {

this.yh_Sex = yh_Sex;

}


public void setYh_Uname(String yh_Uname) {

this.yh_Uname = yh_Uname;

}


@Override

public String toString() {

return "yonghu [yh_ID=" + yh_ID + ", yh_Uname=" + yh_Uname

+ ", yh_Pwd=" + yh_Pwd + ", yh_Name=" + yh_Name + ", yh_Age="

+ yh_Age + ", yh_Sex=" + yh_Sex + ", yh_Phone=" + yh_Phone

+ ", yh_Address=" + yh_Address + ", yh_Jieshao=" + yh_Jieshao

+ "]";

}


}

/*想要由一个.java文件分割,转移写多个.java文件,可以进行下图的变换*/


JDBC综合项目:登陆系统和注册系统,数据储存到SQL中,验证码,一个.java文件变多个的评论 (共 条)

分享到微博请遵守国家法律