javaIO流大作业-名片管理系统

本作业主要是工具类思想,分装一下,主要实现功能:

 主要分为这几个模块

 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("**************************************");
    }

}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛大了2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值