同时也采用熟知的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 hs=new HashSet();
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)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 obj=(HashSet)inp.readObject();
//进行迭代,取出里面所有的用户
Iterator 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 obj=(HashSet)inp.readObject();
Iterator 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)inp.readObject();
Iterator 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流注册登录修改系统