IO流作业——7月3日
文章目录
一、作业要求
1.利用Java基础IO流的知识,完成对文档的操作。
2.利用IO流完成用户注册、用户登录、修改密码和注销账户的操作
3.创建两个包,一个dao包,一个servlet包。dao包下面创建UserDao类实现基本功能,sevlet包下面创建UserServlet类调用UserDao的方法
二、代码展示
1、UserDao类
①、用户注册
//用户的注册
public static boolean userRegister(String username,String psw){
//创建字符输入流对象
FileReader fr = null;
//创建字符输出流对象
FileWriter fw = null;
//创建字符缓冲输入流对象
BufferedReader br = null;
//创建字符缓冲流输出流对象
BufferedWriter bw = null;
//判断username和密码是否已经存在
boolean isNameExits = false;
boolean isPswExits = false;
//判断是否已经有一个账户被注册
boolean isUserRegister = false;
//判断是否注册成功
boolean isRegisterExcessful = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
fr = new FileReader(path);
fw = new FileWriter(path,true);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);
//临时变量,存储文档的每行内容
String temp = "";
//获取第一行用户名
while((temp = br.readLine()) != null){
if(temp!=null){
isUserRegister = true;
}
//判断用户名和密码是否已经存在
if(temp.equals("username="+username)){
isNameExits = true;
}
}
//如果文档为空且用户名不存在,则注册用户名和密码
if(isNameExits == false && isUserRegister == false){
//注册用户名和密码
bw.write("username="+username);
bw.newLine();
bw.write("password="+psw);
bw.flush();
isRegisterExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(br != null){
br.close();
}
if(fw != null){
fw.close();
}
if(fr != null){
fr.close();
}
if(bw != null){
bw.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
//如果用户名已经存在,返回false
if(isNameExits){
return false;
}
return isRegisterExcessful;
}
②、用户登陆
//用户登录
public static boolean userLogin(String username,String psw){
//创建一个随机访问流对象
RandomAccessFile raf = null;
//判断用户名和密码是否与文档内容一致
boolean isNameTrue = false;
boolean isPswtrue = false;
//判断是否登录成功
boolean rst = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
raf = new RandomAccessFile(path,"r");
String temp = "";
while((temp = raf.readLine())!=null){
if(temp.equals("username="+username)){
isNameTrue = true;
}
if(temp.equals("password="+psw)){
isPswtrue = true;
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(raf!=null){
raf.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
//如果用户名和密码都正确,则登录成功
if(isNameTrue && isPswtrue){
rst = true;
}
return rst;
}
③、修改密码
//修改密码
public static boolean changePsw(String oldPsw,String newPsw){
//创建一个随机访问流对象
RandomAccessFile raf = null;
//创建一个字符输出流
FileWriter fw = null;
//判断传入的原密码和文档的原密码是否一致
boolean isOldPswTrue = false;
//判断密码是否修改成功
Boolean isChangePswExcessful = false;
try{
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
raf = new RandomAccessFile(path,"r");
//获取文档中的第一行内容
String firstRow = raf.readLine();
String temp = "";
while((temp = raf.readLine())!=null){
if(temp.equals("password="+oldPsw)){
isOldPswTrue = true;
}
}
//如果传入的原密码和文档的原密码一致,则修改新密码
if(isOldPswTrue){
fw = new FileWriter(path);
fw.write(firstRow);
fw.write("\r\n");
fw.write("password="+newPsw);
fw.flush();
isChangePswExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(raf != null){
raf.close();
}
if(fw != null){
fw.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
return isChangePswExcessful;
}
④、注销用户
//注销用户
public static boolean withdraw(){
FileReader fr = null;
FileWriter fw = null;
boolean isWithdrawExcessful = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
fr = new FileReader(path);
int temp = 0;
if((temp = fr.read())!=-1){
//清空文件内容,因为FileWrite默认是覆盖内容的
fw = new FileWriter(path);
isWithdrawExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(fr != null){
fr.close();
}
if(fw != null){
fw.close();
}
}catch (Exception e){
}
}
return isWithdrawExcessful;
}
整体代码
package dao;
import com.sun.xml.internal.ws.runtime.config.TubelineFeatureReader;
import javafx.concurrent.Worker;
import java.io.*;
import java.security.cert.TrustAnchor;
import java.util.HashMap;
import java.util.Scanner;
/**
* @author liJin
* @create 2022-07-04 10:03
*/
//UserDao:定义操作持久性数据的类,用于读写数据库或文档
//对文档操作获取和修改用户名、密码等操作
public class UserDao {
//用户的注册
public static boolean userRegister(String username,String psw){
//创建字符输入流对象
FileReader fr = null;
//创建字符输出流对象
FileWriter fw = null;
//创建字符缓冲输入流对象
BufferedReader br = null;
//创建字符缓冲流输出流对象
BufferedWriter bw = null;
//判断username和密码是否已经存在
boolean isNameExits = false;
boolean isPswExits = false;
//判断是否已经有一个账户被注册
boolean isUserRegister = false;
//判断是否注册成功
boolean isRegisterExcessful = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
fr = new FileReader(path);
fw = new FileWriter(path,true);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);
//临时变量,存储文档的每行内容
String temp = "";
//获取第一行用户名
while((temp = br.readLine()) != null){
if(temp!=null){
isUserRegister = true;
}
//判断用户名和密码是否已经存在
if(temp.equals("username="+username)){
isNameExits = true;
}
}
//如果文档为空且用户名不存在,则注册用户名和密码
if(isNameExits == false && isUserRegister == false){
//注册用户名和密码
bw.write("username="+username);
bw.newLine();
bw.write("password="+psw);
bw.flush();
isRegisterExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(br != null){
br.close();
}
if(fw != null){
fw.close();
}
if(fr != null){
fr.close();
}
if(bw != null){
bw.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
//如果用户名已经存在,返回false
if(isNameExits){
return false;
}
return isRegisterExcessful;
}
//用户登录
public static boolean userLogin(String username,String psw){
//创建一个随机访问流对象
RandomAccessFile raf = null;
//判断用户名和密码是否与文档内容一致
boolean isNameTrue = false;
boolean isPswtrue = false;
//判断是否登录成功
boolean rst = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
raf = new RandomAccessFile(path,"r");
String temp = "";
while((temp = raf.readLine())!=null){
if(temp.equals("username="+username)){
isNameTrue = true;
}
if(temp.equals("password="+psw)){
isPswtrue = true;
}
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(raf!=null){
raf.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
//如果用户名和密码都正确,则登录成功
if(isNameTrue && isPswtrue){
rst = true;
}
return rst;
}
//修改密码
public static boolean changePsw(String oldPsw,String newPsw){
//创建一个随机访问流对象
RandomAccessFile raf = null;
//创建一个字符输出流
FileWriter fw = null;
//判断传入的原密码和文档的原密码是否一致
boolean isOldPswTrue = false;
//判断密码是否修改成功
Boolean isChangePswExcessful = false;
try{
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
raf = new RandomAccessFile(path,"r");
//获取文档中的第一行内容
String firstRow = raf.readLine();
String temp = "";
while((temp = raf.readLine())!=null){
if(temp.equals("password="+oldPsw)){
isOldPswTrue = true;
}
}
//如果传入的原密码和文档的原密码一致,则修改新密码
if(isOldPswTrue){
fw = new FileWriter(path);
fw.write(firstRow);
fw.write("\r\n");
fw.write("password="+newPsw);
fw.flush();
isChangePswExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(raf != null){
raf.close();
}
if(fw != null){
fw.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
return isChangePswExcessful;
}
//注销用户
public static boolean withdraw(){
FileReader fr = null;
FileWriter fw = null;
boolean isWithdrawExcessful = false;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
fr = new FileReader(path);
int temp = 0;
if((temp = fr.read())!=-1){
//清空文件内容,因为FileWrite默认是覆盖内容的
fw = new FileWriter(path);
isWithdrawExcessful = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(fr != null){
fr.close();
}
if(fw != null){
fw.close();
}
}catch (Exception e){
}
}
return isWithdrawExcessful;
}
//输出文件内容
public static void printInformation(){
//创建一个随机访问流对象
RandomAccessFile raf = null;
try {
String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
raf = new RandomAccessFile(path,"r");
String temp = "";
while ((temp = raf.readLine())!=null){
System.out.println(temp);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(raf!=null){
raf.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
2、UserServlet类
①、主函数
public static void main(String[] args) {
UserServlet test = new UserServlet();
test.enterMainMenu();
}
②、菜单功能
//菜单功能
public void enterMainMenu() {
boolean loopFlag = true;
char key = 0;
do {
if (key != '1') {
}
System.out.print("1-用户注册 2-用户登录 3-修改密码 4-注销 5-退出 请选择(1-5):");
key = readMenuSelection();
System.out.println();
switch (key) {
case '1':
register();
break;
case '2':
login();
break;
case '3':
changePsw();
break;
case '4':
withdraw();
break;
case '5':
System.out.print("确认是否退出(Y/N):");
char yn = readConfirmSelection();
if (yn == 'Y')
loopFlag = false;
break;
}
} while (loopFlag);
}
③、用户注册
//用户注册
public void register(){
System.out.println("****************************************************************");
String username = "";
String password = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入注册用户名:");
username = scanner.nextLine();
System.out.println("请输入注册的密码");
password = scanner.nextLine();
if(UserDao.userRegister(username,password)){
System.out.println("注册成功");
}else{
System.out.println("注册失败");
}
System.out.println("****************************************************************");
System.out.println();
}
④、用户登录
//用户登录
public void login(){
System.out.println("****************************************************************");
String username = "";
String password = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
username = scanner.nextLine();
System.out.println("请输入的密码");
password = scanner.nextLine();
if(UserDao.userLogin(username,password)){
System.out.println("登陆成功");
}else{
System.out.println("登陆失败");
}
System.out.println("****************************************************************");
System.out.println();
}
⑤、修改密码
//修改密码
public void changePsw(){
System.out.println("****************************************************************");
String oldPsw = "";
String newPsw1 = "";
String newPsw2 = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入旧密码:");
oldPsw = scanner.nextLine();
System.out.println("请输入的新密码");
newPsw1 = scanner.nextLine();
System.out.println("请再次输入的新密码");
newPsw2 = scanner.nextLine();
if(newPsw1.equals(newPsw2)){
if(UserDao.changePsw(oldPsw,newPsw2)){
System.out.println("修改密码成功");
}else{
System.out.println("修改密码失败");
}
}else{
System.out.println("两次新密码不相同!修改密码失败");
}
System.out.println("****************************************************************");
System.out.println();
}
⑥、注销用户
//注销用户
public void withdraw(){
System.out.println("****************************************************************");
if(UserDao.withdraw()){
System.out.println("注销成功");
}else{
System.out.println("注销失败");
}
System.out.println("****************************************************************");
System.out.println();
}
⑦、获取键盘输入内容
//获取键盘输入的内容
private static String readKeyBoard(int limit, boolean blankReturn) {
Scanner scanner = new Scanner(System.in);
String line = "";
while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.length() == 0) {
if (blankReturn) return line;
else continue;
}
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
⑧、主菜单数字1-5选择
//主菜单数字1-5选择
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);
c = str.charAt(0);
if (c != '1' && c != '2' &&
c != '3' && c != '4' && c != '5') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
⑨、退出程序的确认,是否退出程序
//退出程序的确认,是否退出程序
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
整体代码
package servlet;
import dao.UserDao;
import java.util.Scanner;
/**
* @author liJin
* @create 2022-07-04 10:03
*/
public class UserServlet {
public static void main(String[] args) {
UserServlet test = new UserServlet();
test.enterMainMenu();
}
//主菜单
public void enterMainMenu() {
boolean loopFlag = true;
char key = 0;
do {
if (key != '1') {
}
System.out.print("1-用户注册 2-用户登录 3-修改密码 4-注销 5-退出 请选择(1-5):");
key = readMenuSelection();
System.out.println();
switch (key) {
case '1':
register();
break;
case '2':
login();
break;
case '3':
changePsw();
break;
case '4':
withdraw();
break;
case '5':
System.out.print("确认是否退出(Y/N):");
char yn = readConfirmSelection();
if (yn == 'Y')
loopFlag = false;
break;
}
} while (loopFlag);
}
//用户注册
public void register(){
System.out.println("****************************************************************");
String username = "";
String password = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入注册用户名:");
username = scanner.nextLine();
System.out.println("请输入注册的密码");
password = scanner.nextLine();
if(UserDao.userRegister(username,password)){
System.out.println("注册成功");
}else{
System.out.println("注册失败");
}
System.out.println("****************************************************************");
System.out.println();
}
//用户登录
public void login(){
System.out.println("****************************************************************");
String username = "";
String password = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
username = scanner.nextLine();
System.out.println("请输入的密码");
password = scanner.nextLine();
if(UserDao.userLogin(username,password)){
System.out.println("登陆成功");
}else{
System.out.println("登陆失败");
}
System.out.println("****************************************************************");
System.out.println();
}
//修改密码
public void changePsw(){
System.out.println("****************************************************************");
String oldPsw = "";
String newPsw1 = "";
String newPsw2 = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入旧密码:");
oldPsw = scanner.nextLine();
System.out.println("请输入的新密码");
newPsw1 = scanner.nextLine();
System.out.println("请再次输入的新密码");
newPsw2 = scanner.nextLine();
if(newPsw1.equals(newPsw2)){
if(UserDao.changePsw(oldPsw,newPsw2)){
System.out.println("修改密码成功");
}else{
System.out.println("修改密码失败");
}
}else{
System.out.println("两次新密码不相同!修改密码失败");
}
System.out.println("****************************************************************");
System.out.println();
}
//注销用户
public void withdraw(){
System.out.println("****************************************************************");
if(UserDao.withdraw()){
System.out.println("注销成功");
}else{
System.out.println("注销失败");
}
System.out.println("****************************************************************");
System.out.println();
}
//获取键盘输入的内容
private static String readKeyBoard(int limit, boolean blankReturn) {
Scanner scanner = new Scanner(System.in);
String line = "";
while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.length() == 0) {
if (blankReturn) return line;
else continue;
}
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
//主菜单数字1-5选择
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);
c = str.charAt(0);
if (c != '1' && c != '2' &&
c != '3' && c != '4' && c != '5') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
//退出程序的确认,是否退出程序
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
}
三、结果展示
1、截图
①、用户注册
②、用户登陆
③、修改密码
④、注销用户
2、视频
请点击:视频链接
Java基础IO流7月3日作业