Io流注册登录项目,注册的用户可以在电脑上保存下来,方便下次登录

同时也采用熟知的mvc三层构建设计模式,通过io流的形式将输入的对象存储在Hashset集合中在序列化输出在硬盘上指定的文件夹上,登录时,在反序列化输入进行匹配,这样就可以做到登录。下面请看代码。

首先建一个model包,里面创建Usel的类,包括具体的属性由于对象要进行序列化,所以要进行实现Serializable接口,包括对象的属性有name,password,score,还有一个

不进行对象序列化的日期date,用修饰符 transient。

package model;


import java.io.Serializable;


public class Usel implements Serializable {
private String name;
private String password;
private int score;
private transient String date;

public Usel() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Usel [name=" + name + ", password=" + password + ", score=" + score + ", date=" + date + "]";
}
public Usel(String name, String password, int score, String date) {
super();
this.name = name;
this.password = password;
this.score = score;
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}



}

下面是model包的modeluse类,是主要的操作类

package model;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;


public class UselModel {






          //定义一个集合来装对象
private HashSet<Usel>  hs=new HashSet<Usel>();

Scanner sc=new Scanner(System.in); 

//注册功能
public void regist() throws Exception
{

                  //这里是首先进行一个将"C:/Users/Administrator/Desktop/regist.txt"封装在File中,目的是将之前已经注册有的取出来放在集合中
File f=new File("C:/Users/Administrator/Desktop/regist.txt");

 
FileInputStream in=new FileInputStream(f);
ObjectInputStream inp=new ObjectInputStream(in);

                    //将记事本中对象读出来存在集合中
hs=(HashSet<Usel>)inp.readObject();




System.out.print("请输入姓名:");
String name=sc.next();

System.out.print("请输入密码:");
String password=sc.next();
System.out.print("请输入分数:");
int score=sc.nextInt();
String Date="";
Usel us=new Usel(name,password,score,Date);

FileOutputStream out=new FileOutputStream(f);


ObjectOutputStream put=new ObjectOutputStream(out);

将对像添加到集合中
hs.add(us);

             将集合系列化到外部存储中
put.writeObject(hs);

              // 清空集合
hs.clear();
System.out.print("注册成功");
put.close();
inp.close();

}
//登录功能
public boolean login() throws IOException, ClassNotFoundException
{
System.out.print("请输入姓名:");
String name=sc.next();
System.out.print("请输入密码:");
String password=sc.next();

                 //将输入的字符串与txt文件中注册的进行匹配
File ff=new File("C:/Users/Administrator/Desktop/regist.txt");
FileInputStream in=new FileInputStream(ff);
ObjectInputStream  inp=new  ObjectInputStream(in);

@SuppressWarnings("unchecked")

                      //这是取出的集合
HashSet<Usel> obj=(HashSet<Usel>)inp.readObject();

                   //进行迭代,取出里面所有的用户
Iterator<Usel> it=obj.iterator();
while(it.hasNext()){
Usel d=it.next();
if(name.equals(d.getName())&&password.equals(d.getPassword()))
{
System.out.println("登录成功");

                          //登录成功,记录下登录的时间
Date date=new Date();
SimpleDateFormat ss=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");

System.out.print(ss.format(date));
return true;

}
}
inp.close();

return false;

}


public void show() throws IOException, ClassNotFoundException
{
File ff=new File("C:/Users/Administrator/Desktop/regist.txt");
FileInputStream in=new FileInputStream(ff);
ObjectInputStream  inp=new  ObjectInputStream(in);
HashSet<Usel> obj=(HashSet<Usel>)inp.readObject();

Iterator<Usel> it=obj.iterator();
while(it.hasNext())
{
Usel d=it.next();
System.out.println("姓名:"+d.getName()+"分数"+d.getScore()+"密码"+d.getPassword());

}

inp.close();


}

          // 修改用户
public void xiugai() throws IOException, ClassNotFoundException
{
System.out.print("请输入修改的名字");
String name=sc.next();
File ff=new File("C:/Users/Administrator/Desktop/regist.txt");
FileInputStream in=new FileInputStream(ff);
ObjectInputStream  inp=new  ObjectInputStream(in);
hs=(HashSet<Usel>)inp.readObject();

Iterator<Usel> it=hs.iterator();
while(it.hasNext())
{
Usel d=it.next();
if(d.getName().equals(name))
{
System.out.print("请输入修改的密码");
String password=sc.next();
d.setPassword(password);
System.out.print("修改成功");
break;
}



}

               // 修改完了之后,还要记得将信息放到txt文件中
FileOutputStream out=new FileOutputStream(ff);
ObjectOutputStream put=new ObjectOutputStream(out);
put.writeObject(hs);
inp.close();
put.close();

}



}

上面就是model层,下面是controller层

package Controller;


import java.io.IOException;


import model.UselModel;


public class Manager {
private UselModel uselm=new UselModel();

public void Rigist() throws Exception
{
uselm.regist();
}
public boolean Login() throws ClassNotFoundException, IOException
{
return uselm.login();
}
public void Show() throws ClassNotFoundException, IOException
{
uselm.show();
}
public void xiugai() throws ClassNotFoundException, IOException
{
uselm.xiugai();
}


}

package View;


import java.io.IOException;
import java.util.Scanner;


import Controller.Manager;


public class menu {
private Scanner sc=new Scanner(System.in);
private Manager mana=new Manager();
public void onemenu() throws Exception
{
while(true)
{
System.out.println("欢迎进入登录注册系统");
System.out.println("1.注册2.登录3.退出");
switch (sc.nextInt()) {
case 1:
mana.Rigist();
break;
case 2:

boolean tu=mana.Login();
if(tu)
{
twomenu();
}
break;
case 3:

break;
default:
break;
}
}
}
public void twomenu() throws ClassNotFoundException, IOException
{
while(true)
{
System.out.println("1.查看2.修改密码3.返回上级");
switch (sc.nextInt()) {
case 1:
mana.Show();
break;
case 2:
mana.xiugai();
break;
case 3:
return;

default:
break;
}
}


}

}

以上就是io流注册登录修改系统

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java登陆注册功能一般需要用到IO流来读写用户数据。以下是一个简单的示例代码: ``` import java.io.File; import java.io.FileWriter; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class User { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public String getPassword() { return password; } } public class Login { private static final String FILENAME = "user.txt"; public static void register(String username, String password) { User user = new User(username, password); try { FileWriter writer = new FileWriter(FILENAME, true); writer.write(user.getUsername() + "," + user.getPassword() + "\n"); writer.close(); System.out.println("注册成功!"); } catch (IOException e) { e.printStackTrace(); } } public static boolean login(String username, String password) { try { FileReader reader = new FileReader(FILENAME); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { String[] parts = line.split(","); if (parts[0].equals(username) && parts[1].equals(password)) { return true; } } reader.close(); System.out.println("用户名或密码错误!"); return false; } catch (IOException e) { e.printStackTrace(); return false; } } } ``` 这个示例代码中,我们使用了FileReader和FileWriter来读写用户数据。在注册时,我们将用户数据写入文件中,并在登录时读取文件中的数据进行验证。需要注意的是,在实际应用中,我们应该使用加密算法来保护用户密码的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值