本作业主要是工具类思想,分装一下,主要实现功能:
主要分为这几个模块
other-Filework
package tt.tt.tt.IDcardManager.others;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
//文件的工具类
public class Filework {
public static boolean save(String path,String data){
return save(path,data,true);
}
//path保存路径 data保存数据 append是否添加
public static boolean save(String path,String data,boolean append){
FileOutputStream fos=null;
BufferedOutputStream bos=null;
try{
fos=new FileOutputStream(path,append);
bos=new BufferedOutputStream(fos);
bos.write(data.getBytes());
return true;
}catch (Exception e){
e.printStackTrace();
}finally {
if(bos!=null){
try{
bos.close();
}catch (Exception e1){
e1.printStackTrace();
}
}
if(fos!=null){
try{
fos.close();
}catch (Exception e2){
e2.printStackTrace();
}
}
}
return false;
}
//获取文件※
public static List<String> get(String path){
BufferedReader br=null;
FileReader fr=null;
try {
List<String> datalist=new ArrayList<>();
fr =new FileReader(path);
br=new BufferedReader(fr);
String line="";
while ((line=br.readLine())!=null){
if("".equals(line)){
continue;
}
datalist.add(line);
}
return datalist;
}catch (Exception e){
e.printStackTrace();
}finally {//关闭
if(br!=null){
try {
br.close();
}catch (Exception e){
e.printStackTrace();
}
}
if(fr!=null){
try {
fr.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
return null;
}
//文件复制 str为源文件路径,target为目标文件路径
public static boolean copy(String str,String target){
FileInputStream fis=null;
BufferedInputStream bis=null;
FileOutputStream fos=null;
BufferedOutputStream bos=null;
try{
fis=new FileInputStream(str);
bis=new BufferedInputStream(fis);
fos=new FileOutputStream(target);
bos=new BufferedOutputStream(fos);
byte[] b=new byte[1024];
int num=0;
while ((num=bis.read(b))!=-1){
bos.write(b,0,num);
}
return true;
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件复制异常");
}finally {
if(bos!=null){
try{
bos.close();
}catch (Exception e){
e.printStackTrace();
System.out.println("关闭失败");
}
}
if(fos!=null){
try{
fos.close();
}catch (Exception e){
e.printStackTrace();
System.out.println("关闭失败");
}
}
if(bis!=null){
try{
bis.close();
}catch (Exception e){
e.printStackTrace();
System.out.println("关闭失败");
}
}
if(fis!=null){
try{
fis.close();
}catch (Exception e){
e.printStackTrace();
System.out.println("关闭失败");
}
}
}
return false;
}
}
other-Gongju
package tt.tt.tt.IDcardManager.others;
import java.util.List;
import java.util.Scanner;
//名片管理工具类
public class Gongju {
public static String input(String title){
Scanner sc=new Scanner(System.in);
System.out.println(title);
return sc.next();
}
public static boolean yesOrno(String biao){
while (true){
String input=input(biao);
if(input.equalsIgnoreCase("yes")||input.equalsIgnoreCase("y")){
return true;
}else if(input.equalsIgnoreCase("no")||input.equalsIgnoreCase("n")){
return false;
}else {
System.out.println("请输入yes(y)/no(n)!");
}
}
}
public static String subStr(String str){
if(str==null||str.equals("")){
return null;
}
return str.substring(0,str.length()-1);
}
public static String delByName(String name, List<String> dataList){
String data="";
for(String str:dataList){
if(!str.startsWith(name+"-")){
data+=str+"\n";
}
}
return data;
}
}
run-CardMain
package tt.tt.tt.IDcardManager.run;
import tt.tt.tt.IDcardManager.service.CardManager;
import tt.tt.tt.IDcardManager.service.CardMgr;
import tt.tt.tt.IDcardManager.service.CardOpt;
import tt.tt.tt.IDcardManager.service.ZhuCe;
import tt.tt.tt.IDcardManager.ui.UI;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
public class CardMain {
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
int ch;
while (true){
UI.mainUI();
System.out.println("请输入您选择的操作:");
ch=sc.nextInt();
if(ch==1){
ZhuCe.reg();
}else if(ch==2){
boolean login=ZhuCe.denglu();
if(login){
while (loginopt()){
}
//展示操作菜单
}
}else if(ch==3){
System.out.println("已退出,欢迎下次使用");
System.exit(10);
}else {
System.out.println("输入有误,请重新输入");
}
}
}
public static boolean loginopt() throws FileNotFoundException {
Scanner sc=new Scanner(System.in);
UI.optUI();
int opt=sc.nextInt();
if(opt==1){//新增
CardManager.add();
}else if(opt==2){//修改
CardManager.change();
}else if(opt==3){//删除
CardManager.del();
}else if(opt==4){//搜索
CardOpt.find();
}else if(opt==5){//合并
CardOpt.merge();
}else if(opt==6){//备份
CardMgr.backup();
}else if(opt==7){//恢复
CardMgr.recovery();
}else if(opt==8){//退出
System.out.println("您已退出登录");
return false;
}else{
System.out.println("您的输入有误! ");
}
return true;
}
}
service-CardConfig //预存地址
package tt.tt.tt.IDcardManager.service;
public class CardConfig {
//用户文件存放位置
public final static String fileusers = "E:/TEST/users.txt";
//名片文件存放位置
public final static String filename = "E:/TEST/card.txt";
}
service-CardManager 实现增删改
package tt.tt.tt.IDcardManager.service;
import tt.tt.tt.IDcardManager.others.Filework;
import tt.tt.tt.IDcardManager.others.Gongju;
import java.io.FileNotFoundException;
import java.util.List;
public class CardManager {
public static void add() throws FileNotFoundException {
System.out.println("********新增名片界面***********");
String name= Gongju.input("请输入姓名:");
String job= Gongju.input("请输入职务:");
String tel= Gongju.input("请输入手机号:");
String com= Gongju.input("请输入公司名称:");
String addr= Gongju.input("请输入公司地址:");
boolean yn=Gongju.yesOrno("是否保存?(yes/no):");
System.out.println("*******************************");
if(!yn){
System.out.println("未保存数据");
return;
}else {
String data=name+"-"+job +"-"+tel+"-"+com+"-"+addr+"\n";
boolean save=Filework.save(CardConfig.filename,data);
if(save){
System.out.println("保存成功");
}else {
System.out.println("保存失败,请联系管理员");
}
}
}
public static void change(){
System.out.println("********修改名片界面***********");
while (true){
String name= Gongju.input("请输入要修改名片的姓名(输入exit退出):");
if(name.equalsIgnoreCase("exit")){
System.out.println("已退出");
break;
}
List<String> list=Filework.get(CardConfig.filename);
if(list==null){
System.out.println("系统异常,请联系管理员");
return;
}else {
String findData="";
for(String str:list){
String[] split=str.split("-");
String account=split[0];
if(account.equals(name)){
findData=str;
break;
}
}
if("".equals(findData)){
System.out.println("未查询到此人,请重新查找");
continue;
}else{
System.out.println("您要修改的名片是:"+findData);
String card= Gongju.input("请输入修改的名片:");
boolean yn=Gongju.yesOrno("是否修改?(yes/no):");
System.out.println("*******************************");
if(!yn){
System.out.println("未做修改");
break;
}else {
String savaData="";
boolean isChangge=false;//防止重复修改
for(String str:list){
if(str.equals(findData)&&!isChangge){
savaData+=card+"\n";//改变要改的
isChangge=true;
}else {
savaData+=str+"\n";//原来数据不动
}
}
boolean save=Filework.save(CardConfig.filename,savaData,false);
if(save){
System.out.println("修改成功");
}else {
System.out.println("修改失败,请联系管理员");
}
break;
}
}
}
}
}
public static void del(){
System.out.println("********删除名片界面***********");
while (true){
String name= Gongju.input("请输入要删除名片的姓名(输入exit退出):");
if(name.equalsIgnoreCase("exit")){
System.out.println("已退出");
break;
}
List<String> list=Filework.get(CardConfig.filename);
if(list==null){
System.out.println("系统异常,请联系管理员");
return;
}else {
String findData="";
for(String str:list){
if(str.startsWith(name+"-")){
findData+=str+"、";
}
}
findData=Gongju.subStr(findData);
if(findData==null){
System.out.println("未查询到此人,请重新查找");
continue;
}else{
//去除最后一个、
System.out.println("您要删除的名片是:"+findData);
boolean yn=Gongju.yesOrno("是否删除?(yes/no):");
System.out.println("*******************************");
if(!yn){
System.out.println("未做删除操作");
break;
}else {
String savaData=Gongju.delByName(name,list);
boolean save=Filework.save(CardConfig.filename,savaData,false);
if(save){
System.out.println("删除成功");
}else {
System.out.println("删除失败,请联系管理员");
}
break;
}
}
}
}
}
}
service-CardMgr 实现备份恢复
package tt.tt.tt.IDcardManager.service;
import tt.tt.tt.IDcardManager.others.Filework;
import tt.tt.tt.IDcardManager.others.Gongju;
public class CardMgr {
public static void backup() {
System.out.println("********备份名片界面***********");
String path = Gongju.input("请输入备份文件路径 如E:/TEST/card.txt");
boolean yn=Gongju.yesOrno("是否备份(yes/no)");
if (!yn) {
System.out.println("尚未备份");
return;
}
boolean cp=Filework.copy(CardConfig.filename,path);
if(cp){
System.out.println("恭喜您备份成功");
}else {
System.out.println("备份失败请联系管理员");
}
System.out.println("******************************");
}
public static void recovery(){
System.out.println("********恢复名片界面***********");
String path = Gongju.input("请输入寻找文件路径 如E:/TEST/card1.txt");
boolean yn=Gongju.yesOrno("是否恢复(yes/no)");
if (!yn) {
System.out.println("尚未恢复名片");
return;
}
boolean cp=Filework.copy(path,CardConfig.filename);
if(cp){
System.out.println("恭喜您恢复名片于原始路径成功");
}else {
System.out.println("恢复失败请联系管理员");
}
System.out.println("******************************");
}
}
service-CardMgr 实现查找合并
package tt.tt.tt.IDcardManager.service;
import tt.tt.tt.IDcardManager.others.Filework;
import tt.tt.tt.IDcardManager.others.Gongju;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
public class CardOpt {
//查找
public static void find() throws FileNotFoundException {
System.out.println("********查找名片界面***********");
while (true){
String name= Gongju.input("请输入要查找名片的姓名(输入exit退出):");
if(name.equalsIgnoreCase("exit")){
System.out.println("已退出");
break;
}
List<String> list= Filework.get(CardConfig.filename);
if(list==null){
System.out.println("系统异常,请联系管理员");
return;
}else {
String findData="";
for(String str:list){
if(str.startsWith(name+"-")){
findData+=str+"、";
}
}
findData=Gongju.subStr(findData);
if(findData==null){
System.out.println("未查询到此人,请重新查找");
continue;
}else{
System.out.println("您要查找的名片是:"+findData);
boolean yn=Gongju.yesOrno("是否继续查找?(yes/no):");
if(!yn){
System.out.println("退出查询系统");
System.out.println("*******************************");
break;
}else {
}
}
}
}
}
//合并
public static void merge() throws FileNotFoundException {
System.out.println("********查找名片界面***********");
while (true){
String name= Gongju.input("请输入要合并名片的姓名(输入exit退出):");
if(name.equalsIgnoreCase("exit")){
System.out.println("已退出");
break;
}
List<String> list= Filework.get(CardConfig.filename);
if(list==null){
System.out.println("系统异常,请联系管理员");
return;
}else {
List<String> fDlist=new ArrayList<>();
for(String str:list){
if(str.startsWith(name+"-")){
fDlist.add(str );
}
}
int findSize=fDlist.size();
if(findSize==0){
System.out.println("未查询到此人,请重新查找");
continue;
}else{
System.out.println("您要合并的名片是:");
for(String data:fDlist){
System.out.println(data);
}
if(findSize==1){
System.out.println("仅查到一条信息,无需合并");
}else {
boolean yn=Gongju.yesOrno("是否要合并?(yes/no):");
if(!yn){
System.out.println("退出合并系统");
System.out.println("*******************************");
break;
}else {
String job="";
String tel="";
String com="";
String addr="";
for(String data:fDlist){
String[] cardData=data.split("-");
job+=cardData[1]+",";
tel+=cardData[2]+",";
com+=cardData[3]+",";
addr+=cardData[4]+",";
}
job=Gongju.subStr(job);
tel=Gongju.subStr(tel);
com=Gongju.subStr(com);
addr=Gongju.subStr(addr);
String mergrData=name+"-"+job+"-"+tel+"-"+com+"-"+addr+"\n";
String saveData=Gongju.delByName(name,list);
saveData+=mergrData;
boolean save= Filework.save(CardConfig.filename,saveData,false);
if(save){
System.out.println("恭喜您名片合并成功");
}else {
System.out.println("合并失败,请联系管理员");
}
}
}
}
}
}
}
}
service-Zhuce 实现主界面的注册登录
package tt.tt.tt.IDcardManager.service;
import tt.tt.tt.IDcardManager.others.Filework;
import tt.tt.tt.IDcardManager.others.Gongju;
import java.io.*;
import java.util.List;
import java.util.Scanner;
public class ZhuCe {
//final代表最终,不可以再改
public static void reg() throws IOException {
Scanner sc=new Scanner(System.in);
System.out.println("********用户注册***********");
String username= Gongju.input("请输入用户名");
String password=Gongju.input("请输入密码");
String password1=Gongju.input("请再次输入密码");
if(!password.equals(password1)) {//密码一样储存用户信息
System.out.println("两次密码输入不一样");
return;
}
//保存
String data=username+"-"+password+"\n";
boolean save= Filework.save(CardConfig.fileusers,data);
if(save){
System.out.println("恭喜你注册成功!");
}else {
System.out.println("保存文件失败!");
}
}
public static boolean denglu() throws IOException {
Scanner sc=new Scanner(System.in);
System.out.println("********用户登录***********");
String username= Gongju.input("请输入用户名");
String password=Gongju.input("请输入密码");
System.out.println("***************************");
//读取文件
List<String> list= Filework.get(CardConfig.fileusers);
if(list==null){
System.out.println("登录失败!");
return false;
}else {
String data=username+"-"+password;
boolean type=false;
for(String s:list){
if(s.equals(data)){
type=true;
break;
}
}
System.out.println(type?"恭喜你登录成功!":"登录失败,请再次登录");
return type;
}
}
}
ui-UI界面布局
package tt.tt.tt.IDcardManager.ui;
public class UI {
public static void mainUI(){
System.out.println("********欢迎使用名片管理系统***********");
System.out.println("1.注册");
System.out.println("2.登录");
System.out.println("3.退出");
System.out.println("**************************************");
}
public static void optUI(){
System.out.println("*****************菜单界面*************");
System.out.println("1.新增名片");
System.out.println("2.修改名片");
System.out.println("3.删除名片");
System.out.println("4.搜索名片");
System.out.println("5.合并名片");
System.out.println("6.备份名片");
System.out.println("7.恢复名片");
System.out.println("8.退出系统");
System.out.println("请输入您的操作");
System.out.println("**************************************");
}
}