您现在的位置:首页 >> 前端 >> 内容

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

时间:2017/9/28 8:13:00 点击:

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

同时也采用熟知的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流注册登录修改系统

Tags:IO O流 流注 注册 
作者:网络 来源:ss1573的博客