求用java实现简单的登录和注册功能,主要是为了了解怎样对数据库进行

2021-11-04 教育 86阅读
//User用户的基本信息,也是USERINFO表中的3个列
package登陆判断;

publicclassUser{

privateStringname;
privateStringloginname;
privateStringloginpsw;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetLoginname(){
returnloginname;
}
publicvoidsetLoginname(Stringloginname){
this.loginname=loginname;
}
publicStringgetLoginpsw(){
returnloginpsw;
}
publicvoidsetLoginpsw(Stringloginpsw){
this.loginpsw=loginpsw;
}
}
//用于注册和登陆的小小代码块
package登陆判断;

importjava.util.Scanner;

publicclassIn{

publicstaticUsergetUser(){
Useru=newUser();
Scannersc=newScanner(System.in);
System.out.println("请输入登陆名");
u.setLoginname(sc.nextLine());
System.out.println("请输入密码");
u.setLoginpsw(sc.nextLine());
returnu;
}
publicstaticUserregisterUser(){
Useru=newUser();
Scannersc=newScanner(System.in);
System.out.println("请注册用户名名");
u.setName(sc.nextLine());
System.out.println("请注册登陆名");
u.setLoginname(sc.nextLine());
System.out.println("请注册密码");
u.setLoginpsw(sc.nextLine());
returnu;
}
}

//登陆时的检查,判断登陆名和密码是否正确,正确则返回用户名
package登陆判断;

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;

publicclassCheck{

publicstaticvoidcheckUser(Useru)
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";
Stringuser="scott";
Stringpassword="tiger";
Connectionconn=null;
ResultSetrs=null;
PreparedStatementpst=null;

Stringsql="SelectnamefromUSERINFOwhereloginname=?andloginpsw=?";
try{
conn=DriverManager.getConnection(url,user,password);
pst=conn.prepareStatement(sql);
pst.setString(1,u.getLoginname());
pst.setString(2,u.getLoginpsw());
rs=pst.executeQuery();
while(rs.next()){
u.setName(rs.getString(1));
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
rs.close();
pst.close();
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(u.getName()==null||u.getName().isEmpty()){
System.out.println("登陆失败");
}else{
System.out.println("欢迎"+u.getName()+"登陆");
}

}
}

//注册界面,要判断登陆名是否有重复,有重复则注册失败。有点小疑问,已用注释标出来
package登陆判断;

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;

publicclassRegister{

publicstaticvoidregistUser(Useru){

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";
Stringuser="scott";
Stringpassword="tiger";
Connectionconn=null;
Stringsql="InsertIntoUSERINFOvalues(?,?,?)";
PreparedStatementpst=null;

//判断登陆名是否已经存在
Statements=null;
ResultSetrs=null;
Stringsql_ck="SelectLOGINNAMEFROMUSERINFO";
try{
conn=DriverManager.getConnection(url,user,password);
pst=conn.prepareStatement(sql);
pst.setString(1,u.getName());
pst.setString(2,u.getLoginname());
pst.setString(3,u.getLoginpsw());
//判断登陆名是否已经存在
s=conn.createStatement();
rs=s.executeQuery(sql_ck);
while(rs.next()){//为什么用rs.getString(2)会提示无效的索引呢
if(rs.getString("LOGINNAME").equals(u.getLoginname())){
System.out.println("登陆名已经存在,注册失败");
break;
}else{
pst.executeUpdate();
System.out.println("注册成功");
break;
}
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
rs.close();
pst.close();
s.close();
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}

}
}
//main界面//
//数据库中表的结构式这样
//name(用户名,用于显示),
//loginname(登录名,即登陆时输入的ID)
//loginpsw(登陆时输入的密码)
package登陆判断;

importjava.util.Scanner;

publicclassTest{

publicstaticvoidmain(String[]args){

intchos=0;
Scannersc=newScanner(System.in);
System.out.println("\t\t登陆请按1\t\t注册请按2");
chos=sc.nextInt();
switch(chos){
case1:Check.checkUser(In.getUser());break;
case2:Register.registUser(In.registerUser());break;
default:System.out.println("请输入正确的选择");break;
}
}

}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com