需要实现的功能:
注册、登录、改密、注销。
下面直接展示代码:
注册功能:
先判断项目文件下的txt文件(用户的信息)是否存在,若不存在,则创建txt文件,写入用户信息完成注册。若存在,对其内容进行读取,若文件内无内容,就将用户信息写入,完成注册,若文件内有内容,则提示已有账号。
public boolean userRegister(String name,String psd) {
boolean reg=false;
BufferedReader br=null;
FileWriter fw=null;
File f=null;
try {
f=new File("C:/Users/87549/eclipse-workspace/worh/user.txt");
if(!f.exists()) {
f.createNewFile();
fw=new FileWriter("C:/Users/87549/eclipse-workspace/worh/user.txt");
fw.write("username="+name+"\n");
fw.write("password="+psd);
fw.flush();
reg=true;
System.out.println("注册成功");
}else {
br=new BufferedReader(new FileReader("C:/Users/87549/eclipse-workspace/worh/user.txt"));
String temp="";
if((temp=br.readLine())==null) {
fw=new FileWriter("C:/Users/87549/eclipse-workspace/worh/user.txt");
fw.write("username="+name+"\n");
fw.write("password="+psd);
fw.flush();
reg=true;
System.out.println("注册成功");
}else {
System.out.println("您已有账户,请登录");
}
}
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
if(br!=null) {
br.close();
}
if(fw!=null)
fw.close();
} catch (Exception e) {
// TODO: handle exception
}
}
return reg;
}
登录功能:
用户从键盘输入用户名和密码,将其与文件内的用户信息比较,若相同则返回true 登陆成功
否则返回false登陆失败。(如果存放用户信息的文件不存在,则提示还未注册)
public boolean userLogin(String username,String psd) {
boolean rs = false;
boolean us = false;
boolean ps = false;
File f=null;
BufferedReader br=null;
try {
f=new File("C:/Users/87549/eclipse-workspace/worh/user.txt");
if(!f.exists()) {
System.out.println("还未注册,请注册");
return rs;
}
br=new BufferedReader(new FileReader("C:/Users/87549/eclipse-workspace/worh/user.txt"));
String temp="";
while((temp=br.readLine())!=null) {
if(temp.equals("username="+username)) {
us=true;
}
if(temp.equals("password="+psd)) {
ps=true;
}
}
if(us&&ps) {
rs=true;
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(br!=null) {
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return rs;
}
修改密码:
RandomAccessFile可实现对文件的修改等多种操作。
具体看 http://t.csdn.cn/2REFD
public boolean changePsd(String oldpsd,String newpsd){
boolean rs=false;
RandomAccessFile raf=null;
try {
raf=new RandomAccessFile("C:/Users/87549/eclipse-workspace/worh/user.txt","rw");
String lin=null;
long lastpoint=0;
while((lin=raf.readLine())!=null) {
final long point=raf.getFilePointer();
if(lin.contains(oldpsd)) {
String str=lin.replace(oldpsd, newpsd);
raf.seek(lastpoint);
raf.writeBytes(str);
rs=true;
System.out.println("修改成功!");
}lastpoint=point;
}
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
if(raf!=null) {
raf.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
return rs;
}
注销功能:
public boolean withdraw() {
boolean rs=false;
File f=new File("C:/Users/87549/eclipse-workspace/worh/user.txt");
rs=f.delete();
return rs;
}
主函数和其他代码:
public static void main(String[] args) {
select();
}
public boolean Register() {
boolean rs=false;
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String str=sc.next();
System.out.println("请输入密码:");
String psd=sc.next();
UserDao ud=new UserDao();
rs=ud.userRegister(str, psd);
return rs;
}
public boolean Login() {
boolean T=false;
UserDao ud=new UserDao();
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String name=sc.nextLine();
System.out.println("请输入密码");
String pasd=sc.nextLine();
T=ud.userLogin(name, pasd);
return T;
}
public boolean Change() {
boolean T=false;
UserDao ud=new UserDao();
Scanner sc=new Scanner(System.in);
System.out.println("请输入旧密码");
String old=sc.next();
System.out.println("请输入新密码");
String new1=sc.next();
T=ud.changePsd(old, new1);
return T;
}
public boolean delete() {
boolean rs=false;
UserDao ud=new UserDao();
rs=ud.withdraw();
return rs;
}
public static void select() {
UserServlet us=new UserServlet();
while(true) {
System.out.println("请选择操作:");
System.out.println(" 注册账号");
System.out.println(" 登陆账号");
System.out.println(" 退出程序");
Scanner sc=new Scanner(System.in);
String select=sc.next();
switch(select) {
case "注册账号":
us.Register();
break;
case "登陆账号":
if(!us.Login()) {
System.out.println("登陆失败");
break;
}
System.out.println("登陆成功,请继续操作:");
System.out.println("修改密码");
System.out.println("注销账户");
String s=sc.next();
switch(s) {
case "修改密码":
us.Change();
System.out.println("请重新登录:");
break;
case "注销账户":
System.out.println("成功注销");
us.delete();
break;
}
break;
case "退出程序":
return;
}
}
}
}
操作演示:
QQ录屏20220705135429