IO流+List实现物业管理系统

1 篇文章 0 订阅
1 篇文章 0 订阅
  1. 源码:IO流+List实现物业管理系统代码

  1. 功能介绍:

  1. 业主管理功能

1查询所有业主信息

2添加业主信息

3修改业主信息

4删除业主信息

5查找对于入住时间业主信息

  1. 报修管理功能

1按编号顺序查询所有报修信息

2添加报修信息

3修改报修信息

4删除报修信息

5按时间顺序输出所有报修信息

6按金额顺序输出报修信息

  1. FaultRepair 实体类:

import java.io.Serializable;

class FaultRepair implements Serializable {
    //报修单编号
    private int Number;
    //报修物品名称

    private String repairitems;
    //维修状态
    private String repairstatic;
    //报修房号
    private String roomnumber;
    //报修时间
    private String reportingtime;
    //维修费用
    private String costs;
    //报修人姓名
    private String repairname;

    public String getRepairitems() {
        return repairitems;
    }
    //报修年份数字
    private int year;
    //月份+日数字
private int time;

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getNumber() {
        return Number;
    }

    public void setNumber(int number) {
        Number = number;
    }

    public int getTime() {
        return year;
    }

    public void setTime(int time) {
        this.year = year;
    }

    public String getRepairstatic() {
        return repairstatic;
    }

    public void setRepairitems(String repairitems) {
        this.repairitems = repairitems;
    }



    public void setRepairstatic(String repairstatic) {
        this.repairstatic = repairstatic;
    }

    public String getRoomnumber() {
        return roomnumber;
    }

    public void setRoomnumber(String roomnumber) {
        this.roomnumber = roomnumber;
    }

    public String getReportingtime() {
        return reportingtime;
    }

    public void setReportingtime(String reportingtime) {
        this.reportingtime = reportingtime;
    }



    public String getCosts() {
        return costs;
    }

    public void setCosts(String costs) {
        this.costs = costs;
    }

    public String getRepairname() {
        return repairname;
    }

    public void setRepairname(String repairname) {
        this.repairname = repairname;
    }
//重写toString
    @Override
    public String toString() {
        return "\n"+" "+Number+ "     "+ repairitems + "     " +
                repairstatic + "     " +
                roomnumber + "  " +
                reportingtime + "   " +
                costs +"     " +
                repairname  ;
    }
//报修单构造器
    public FaultRepair(int Number, String repairitems, String repairstatic, String roomnumber,
                       String reportingtime, String costs, String repairname, int year, int time) {
        this.Number=Number;
        this.repairitems = repairitems;
        this.repairstatic = repairstatic;
        this.roomnumber = roomnumber;
        this.reportingtime = reportingtime;

        this.costs = costs;
        this.repairname = repairname;
this.year=year;
this.time=time;

    }
}
  1. Proprietor实体类:

import java.io.Serializable;


class Proprietor implements Serializable {

    //业主姓名
    private int time;
    private String name;
    //业主房号
    private String roomnumber;
    //业主联系方式
    private String phonenumber;
    //业主身份证号码
    private String id;
    //业主入住时间文字模式
    private String checkindate;

    public Proprietor() {
    }
    //业主构造器
    public Proprietor(String name, String roomnumber, String phonenumber, String id, String checkindate, int time) {

        this.name = name;
        this.roomnumber = roomnumber;
        this.phonenumber = phonenumber;
        this.id = id;
        this.checkindate = checkindate;

        this.time=time;
    }



    public int getTime() {
        return time;
    }

    public void setTime(int time) {
        this.time = time;
    }

    public String getName() {
        return name;
    }



    public void setName(String name) {
        this.name = name;
    }

    public String getRoomnumber() {
        return roomnumber;
    }

    public void setRoomnumber(String roomnumber) {
        this.roomnumber = roomnumber;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCheckindate() {
        return checkindate;
    }

    public void setCheckindate(String checkindate) {
        this.checkindate = checkindate;
    }
    //重写toString
    @Override
    public String toString() {
        return "\n"  +
                name + "\t" +
                  roomnumber + "\t" +
                  phonenumber +"\t"+
                  id +"\t"+
                 checkindate + "\t"
                ;
    }
}
  1. 管理系统页面显示:

import java.util.Scanner;


class Main {
    public static void main(String[] args) throws Exception {
        //work1控制双重循环的退出
        boolean work1 =true;
        while(work1){
            //物业管理系统主页面
            System.out.println("欢迎来到物业管理系统,请选择您需要进入的管理界面:");
            System.out.println("1业主管理界面");
            System.out.println("2报修管理界面");

            System.out.println("0退出");

            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            //work2控制输入指令的循环结束
            boolean work2 =true;
            while(work2){
                      String choice = sc.nextLine();

                     //指令选择
                      switch (choice) {
                          case "1":
                              ProprietorManage.managerProietor();
                              work2=false;
                              break;

                          case "2":

                              FaultRepairManage.managerFaultrepair();
                              work2=false;
                              break;

                          case "0":
                              System.out.println("您已退出系统");
                              work1=false;
                              work2=false;
                              break;

                          default:
                              System.out.println("输入非法,请重试");
                                 break;

                      }
                  }


            }
        }
    }

  1. FaultRepairManage功能类:

  1. 报修界面

 //报修界面
    public static void managerFaultrepair() throws Exception{
        boolean work = true;
        while (work) {
            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("0返回上一页面");

            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);

            boolean work0 = true;
            while (work0) {
                String choice= sc.nextLine();
                switch (choice) {
                    case "1":

                            showFaultRepair();
                        work0=false;
                        break;
                    case "2":

                            addFaultRepair();
                        work0=false;
                        break;
                    case "3":

                            updateFaultRepair();
                        work0=false;
                        break;
                    case "4":

                            deleteFaultrepair();
                        work0=false;
                        break;
                    case "5":
                        sortFaultrepair();
                        work0=false;
                        break;
                    case "6":
                        sortcost();
                        work0=false;
                        break;
                    case "0":
                        exitFaultrepair();
                        work=false;
                        work0=false;
                        break;

                    default:
                        System.out.println("输入非法,请重试");
                        break;
                }
            }
        }
    }
  1. io流代码块

 public static List<FaultRepair> list1 = new ArrayList<FaultRepair>();

    //类加载完毕时,就执行一次静态代码块,读取文件中保存的集合

    static {
        try {
            FileInputStream fis = new FileInputStream("D:\\物业管理系统\\报修管理\\Faultrepair.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            list1 = (List<FaultRepair>) ois.readObject();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  1. io流写入指定文件

 //可写入指定文件
    private static void writeFile() throws Exception{


        File file = new File("D:\\物业管理系统\\报修管理\\Faultrepair.txt");
        FileOutputStream fos = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(list1);
        oos.close();
        fos.close();

    }
  1. 查询保修单功能

//查询报修单
    public static void showFaultRepair() throws Exception {
        Collections.sort(list1, new Comparator<FaultRepair>() {
            @Override
            public int compare(FaultRepair num1, FaultRepair num2) {
                return num1.getNumber()- num2.getNumber();
            }
        });

        if(list1.isEmpty()){
            System.out.println("当前文件无报修单信息");
        }else {
            System.out.println("保修单信息表");
            System.out.println("编号" + "    " + "物品名称" + "   " + "维修状态" + "   "
                    + "房号" + "     " + "报修时间" + "     " + "维修金额" + "    " + "报修人");
            for (FaultRepair s : list1) {
                System.out.println(s);
            }
        }

    }
  1. 添加保修单功能



    //添加报修单
    private static void addFaultRepair() throws Exception {
        //创建文件对象

        File file = new File("D:\\物业管理系统\\报修管理\\Faultrepair.txt");
        if (!file.isFile()) {
            file.createNewFile();
        }

        Scanner sc = new Scanner(System.in);
        //自动输入编号
        int number= list1.size()+1;
        //输入物品名称
        System.out.println("请输入报修物品名称:如输入0可中途退出");
        String name=null;
      boolean work =true;
        while(work) {
            name = sc.nextLine();
            //输0退出
            if (name.equals("0")){
                System.out.println("已退出");
                   return;
            }


            //String转char数组
            char arr[] = name.toCharArray();
            //判断是否为中英文
            for (int i = 0; i < arr.length; i++) {
                int x=(int)arr[i];

                if (((48 <= x && x <= 57)||(arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) ||(x>=65&&x<=90)||(x>=97&&x<=122))&& i < arr.length - 1) {
                    continue;
                } else if (((48 <= x && x <= 57)||(arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) ||(x>=65&&x<=90)||(x>=97&&x<=122))&& i == arr.length - 1) {
                    work=false;

                } else System.out.println("请输入中文或英文或数字");
                break;
            }

        }
        //选择维修状态
        System.out.println("请输入维修状态:1.未维修2.已维修,如输入0可中途退出");
        String repairstatic;
        for (; ; ) {
            String n = sc.nextLine();
            //输入0退出
          if(n.equals("0")){
              System.out.println("已退出");
              return;
          }//判断输入指令
            else if (n.equals("1")) {


                repairstatic = "未维修";
                break;
            } else if (n.equals("2")) {
                repairstatic = "已维修";
                break;
            } else System.out.println("请输入正确指令");
            continue;
        }
        //输入房号
        System.out.println("请输入房号:格式为楼栋大写字母+房号,如输入0可中途退出");
        String roomnumber=null;
        boolean work2 =true;
        while(work2){
            roomnumber = sc.nextLine();

            if(roomnumber.equals("0")){
                System.out.println("已退出");
                return;
            }

            //转字符串
            char arr[] = roomnumber.toCharArray();
            //判断输入格式是否正确
            for (int i = 0; i < arr.length; i++) {
                int x = (int) arr[i];
                if (i == 0 && arr.length > 1) {
                    //首字母大写判断
                    if ((x >= 65 && x <= 90)) {
                        continue;
                    } else System.out.println("请输入正确格式");

                    //数字判断
                } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                    continue;
                } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                    work2=false;
                } else System.out.println("请输入正确格式");
                break;
            }
        }

        //输入报修时间
        System.out.println("请分别输入报修时间:如输入0可中途退出");

            //使用StringBuilder便于修改字符
            StringBuilder builder = new StringBuilder();
            //输入年份
        System.out.println("请输入年份");
        String year=null;
        boolean work3 =true;
        while(work3) {
            year = sc.nextLine();
            if(year.equals("0")){
                System.out.println("已退出");
                return;
            }



            char arr1[] = year.toCharArray();

            for (int i = 0; i < arr1.length; i++) {
                int x = (int) arr1[i];
                //年份格式判断
                if (arr1.length != 4) {
                    System.out.println("请输入4位数年份");
                    break;//数字判断
                } else if (arr1[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                    continue;
                } else if (i > 0 && 48 <= x && x <= 57 && i == arr1.length - 1) {
                    work3=false;
                } else System.out.println("请输入正确格式");
                break;
            }
        }
        //增加年份进入builder
        builder.append(year+"年");
        //输入月份
        System.out.println("请输入月份,如输入0可中途退出");

            String moon=null;

        boolean work4 =true;
        while(work4) {
            moon = sc.nextLine();
            if(moon.equals("0")){
                System.out.println("已退出");
                return;
            }
            char arr1[] = moon.toCharArray();
            //月份格式判断
            for (int i = 0; i < arr1.length; i++) {
                int x = (int) arr1[i];
                if (arr1.length > 2) {
                    System.out.println("请输入2位数月份");
                    break;
                    //数字判断
                } else  if (arr1[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                    continue;
                } else if (48 <= x && x <= 57 && i == arr1.length - 1) {
                    //将String类型转为int类型,判断大小
                    int m = Integer.valueOf(moon);
                    if (m <= 12 && m > 0) {
                        work4=false;
                    } else System.out.println("请输入小于或等于12且大于0的月份");
                } else System.out.println("请输入正确格式");
                break;
            }

        }

        //将月份加入builder
            builder.append(moon+"月");
        //输入日
        System.out.println("请输入日,如输入0可中途退出");

        String day=null;

        boolean work5 =true;
        while(work5) {
            day = sc.nextLine();
            if(day.equals(0)) {
                System.out.println("已退出");
                return;
            }

            char arr3[] = day.toCharArray();
            //日格式判断
            for (int i = 0; i < arr3.length; i++) {
                int x = (int) arr3[i];
                if (arr3.length > 2 || arr3.length < 0) {
                    System.out.println("请输入2或1位数日");
                    break;
                } else  if (arr3[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else if (48 <= x && x <= 57 && i < arr3.length - 1) {
                    continue;
                } else if (48 <= x && x <= 57 && i == arr3.length - 1) {
                    //将String类型转为int类型
                    int d = Integer.valueOf(day);
                    int y = Integer.valueOf(year);
                    //判断闰年2月的日格式是否正确
                    if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && moon.equals("2") && d > 29) {
                        System.out.println("闰年2月请输入小于或等于29的日");
                        break;
                        //判断非闰年2月日格式是否正确
                    } else if ((y%4!=0||(y%100==0&&y%400!=0))&&moon.equals("2") && d > 28) {
                        System.out.println("非闰年2月请输入小于或等于28的日");
                        break;
                        //判断普通月份日格式
                    } else if (d <= 31 && d > 0) {
                        work5=false;


                    }else if(d>=32){
                        System.out.println("请输入小于32的日");

                    }
                }else System.out.println("请输入正确格式");
                break;

            }
        }
        //将日加入builder
        builder.append(day+"日");
        //StringBuilder类型转为String类型
        String reportingtime= builder.toString();

        //月+日数字,已便对日期排序
        int time = Integer.valueOf(moon+day);
        //年份数字
        int year1=Integer.valueOf(year);


        String cost;
        String sumcost=null;
        //判断是否维修,未维修则为0元
        if(repairstatic.equals("未维修")){
            sumcost="0元";
        }else {
            //如已维修,输入维修金额
            System.out.println("请输入维修金额,小数可省:如输入0可中途退出");
            boolean work6 =true;
            while(work6){


                cost = sc.nextLine();
                if(cost.equals("0")){
                      System.out.println("已退出");
                    return;
                }
                char arr[] = cost.toCharArray();

                for (int i = 0; i < arr.length; i++) {
                    if (arr.length > 6) {
                        //金额大小判定
                        System.out.println("金额过大请正确输入");
                        break;
                    }
                    int x = (int) arr[i];
                    //数字判断
                    if (48 <= x && x <= 57 && i < arr.length - 1) {
                        continue;
                    } else if ( 48 <= x && x <= 57 && i == arr.length - 1) {
                        String a = "元";

                        sumcost = cost + a;
                        work6=false;
                    } else System.out.println("请输入正确格式");
                    break;
                }
            }
        }
            //输入报修者姓名
            System.out.println("请输入报修者姓名:如输入0可中途退出");

        String repairname=null;
        boolean work7 =true;
        while(work7) {
            repairname= sc.nextLine();
            if(repairname.equals(0)){
                System.out.println("已退出");
                return;
            }



            char arr[] = repairname.toCharArray();

            for (int i = 0; i < arr.length; i++) {
                int x=arr[i];
                //中英文判断
                if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) ||(x>=65&&x<=90)||(x>=97&&x<=122)) && i < arr.length - 1) {
                    continue;
                } else if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) ||(x>=65&&x<=90)||(x>=97&&x<=122)) && i == arr.length - 1) {
                    work7=false;
                } else System.out.println("请输入中文或英文");
                break;
            }
        }



            //将对象保存到集合中
            FaultRepair stu = new FaultRepair(number,name, repairstatic, roomnumber, reportingtime,  sumcost, repairname,year1,time);
            list1.add(stu);

            //再将集合保存到文件中
            FileOutputStream fos = new FileOutputStream(file);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(list1);
            oos.close();
            fos.close();
            System.out.println("添加成功√");



    }
  1. 修改保修单功能

//修改保修单
    private static void updateFaultRepair() throws Exception {

        //输出报修单信息以便修改
        showFaultRepair();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的报修单的编号:");

             for (;;){
            String num;
            int Num = 0;
            boolean work9=true;
            while (work9) {
                num = sc.nextLine();
                char arr[] = num.toCharArray();
                for (int i = 0; i < arr.length; i++) {

                    int x = (int) arr[i];
                    //判断是否为数字
                    if (48 <= x && x <= 57 && i < arr.length - 1) {
                        continue;
                    } else if (48 <= x && x <= 57 && i == arr.length - 1) {
                        //String类型转为int类型
                        Num = Integer.valueOf(num);
                        work9 = false;
                    } else System.out.println("请输入正确格式");
                    break;
                }
            }


                int index = -1;
                for (int i = 0; i < list1.size(); i++) {
                    //编号判定集合下标
                    if (list1.get(i).getNumber() == Num) {
                        index = i;
                        break;
                    }

                }
                if (index == -1) {
                    System.out.println("没有找到该报修单信息,请重新输入");
                    continue;
                }

                if (index != -1) {
                    //创建指定下标集合对象
                    FaultRepair s = list1.get(index);
                    //work控制循环退出
                    boolean work = true;
                    while (work) {
                        //选择修改对象
                        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("0.结束修改");

                        boolean work0 = true;
                        while (work0) {
                            String choice = sc.nextLine();
                            switch (choice) {

                                case "1":
                                    //输入修改名称
                                    System.out.println("请输入报修物品名称:输入0可取消修改");
                                    String newname = null;
                                    boolean work1 = true;
                                    while (work1) {
                                        newname = sc.nextLine();
                                        if (newname.equals("0")) {
                                            System.out.println("已取消");
                                            work1 = false;
                                            work0 = false;

                                        } else {
                                            char arr[] = newname.toCharArray();

                                            for (int i = 0; i < arr.length; i++) {
                                                int x = (int) arr[i];
                                                //判定中英文或数字
                                                if (((48 <= x && x <= 57) || (arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i < arr.length - 1) {
                                                    continue;
                                                } else if (((48 <= x && x <= 57) || (arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i == arr.length - 1) {
                                                    work1 = false;
                                                    work0 = false;

                                                } else System.out.println("请输入中文或英文");
                                                break;
                                            }

                                            //set方法替换原属性
                                            s.setRepairitems(newname);
                                            System.out.println("修改完成,可继续选择修改对象");
                                        }
                                    }
                                    break;
                                case "2":
                                    //指令判定

                                    String newrepairstatic;
                                    System.out.println("请确定是否修改,输入Y确定/否");
                                    boolean works=true;
                                    while(works) {
                                        String sure = sc.nextLine();
                                        switch (sure) {

                                            case "Y":


                                                for (; ; ) {

                                                    if (s.getRepairstatic().equals("已维修")) {
                                                        System.out.println("已您改为未维修,且维修金额改为0元");


                                                        s.setRepairstatic("未维修");
                                                        s.setCosts("0元");
                                                        System.out.println("修改完成,可继续选择修改对象");
                                                        break;
                                                    } else if (s.getRepairstatic().equals("未维修")) {
                                                        s.setRepairstatic("已维修");
                                                        System.out.println("已为您改为已维修,并请输入维修金额");
                                                        String newCost;
                                                        String sumnewCost = null;
                                                        boolean work11 = true;
                                                        while (work11) {


                                                            newCost = sc.nextLine();
                                                            char arr[] = newCost.toCharArray();

                                                            for (int i = 0; i < arr.length; i++) {
                                                                if (arr.length > 6) {
                                                                    System.out.println("输入金额过大请重新输入");
                                                                    break;
                                                                }
                                                                int x = (int) arr[i];
                                                                if (48 <= x && x <= 57 && i < arr.length - 1) {
                                                                    continue;
                                                                } else if (48 <= x && x <= 57 && i == arr.length - 1) {
                                                                    String a = "元";
                                                                    sumnewCost = newCost + a;
                                                                    work11 = false;

                                                                } else System.out.println("请输入正确格式");
                                                                break;
                                                            }
                                                        }
                                                        s.setCosts(sumnewCost);
                                                        System.out.println("修改完成,可继续选择修改对象");
                                                        break;

                                                    }
                                                }

                                                works = false;
                                                break;
                                            case "N":
                                                System.out.println("已取消");
                                                works = false;
                                                break;
                                            default:
                                                System.out.println("输入有误,请重新输入");
                                                break;
                                        }
                                    }

                                    work0 = false;
                                    break;
                                case "3":
                                    System.out.println("请输入房号:格式为楼栋字母大写+房号,输入0可退出修改");

                                    String newroomnumber = null;
                                    boolean work2 = true;
                                    while (work2) {
                                        newroomnumber = sc.nextLine();
                                        if (newroomnumber.equals("0")) {
                                            System.out.println("已退出");
                                            work2 = false;
                                        } else {


                                            char arr[] = newroomnumber.toCharArray();

                                            for (int i = 0; i < arr.length; i++) {
                                                int x = (int) arr[i];
                                                if (i == 0 && arr.length > 1) {

                                                    if ((x >= 65 && x <= 90)) {
                                                        continue;
                                                    } else System.out.println("请输入正确格式");


                                                } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                                                    continue;
                                                } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                                                    s.setRoomnumber(newroomnumber);
                                                    System.out.println("修改完成,可继续选择修改对象");
                                                    work2 = false;
                                                    work0 = false;
                                                } else System.out.println("请输入正确格式");
                                                break;
                                            }
                                        }


                                    }
                                    break;
                                case "4":
                                    System.out.println("请分别输入报修年份月份日");


                                    StringBuilder builder2 = new StringBuilder();
                                    System.out.println("请输入年份,输入0可退出修改");
                                    String year2 = null;
                                    boolean work3 = true;
                                    while (work3) {
                                        year2 = sc.nextLine();
                                        if (year2.equals("0")) {
                                            System.out.println("已退出");
                                            work3 = false;
                                        } else {


                                            char arr1[] = year2.toCharArray();

                                            for (int i = 0; i < arr1.length; i++) {
                                                int x = (int) arr1[i];
                                                if (arr1.length != 4) {
                                                    System.out.println("请输入4位数年份");
                                                    break;
                                                } else  if (arr1[0] == '0') {
                                                    System.out.println("首位不可为0");
                                                    break;
                                                } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                                                    continue;
                                                } else if (i > 0 && 48 <= x && x <= 57 && i == arr1.length - 1) {
                                                    builder2.append(year2 + "年");
                                                    work3 = false;


                                                } else System.out.println("请输入正确格式");
                                                break;
                                            }
                                        }

                                    }


                                    String moon2 = null;

                                    boolean work4 = true;
                                    if(year2.equals("0")){
                                        work4=false;
                                    }
                                    while (work4) {
                                        System.out.println("请输入月份,输入0可退出");
                                        moon2 = sc.nextLine();
                                        if (moon2.equals("0")) {
                                            System.out.println("已退出");
                                            work4 = false;
                                        } else {
                                            char arr1[] = moon2.toCharArray();
                                            for (int i = 0; i < arr1.length; i++) {
                                                int x = (int) arr1[i];
                                                if (arr1.length > 2) {
                                                    System.out.println("请输入2位数月份");
                                                    break;
                                                } else  if (arr1[0] == '0') {
                                                    System.out.println("首位不可为0");
                                                    break;
                                                } if (48 <= x && x <= 57 && i < arr1.length - 1) {
                                                    continue;
                                                } else if (48 <= x && x <= 57 && i == arr1.length - 1) {
                                                    int m = Integer.valueOf(moon2);
                                                    if (m <= 12 && m > 0) {
                                                        builder2.append(moon2 + "月");
                                                        work4 = false;

                                                    } else System.out.println("请输入小于或等于12且大于0的月份");
                                                } else System.out.println("请输入正确格式");
                                                break;
                                            }

                                        }



                                    }


                                    String day2 = null;

                                    boolean work5 = true;
                                    if(year2.equals("0")||moon2.equals("0")){
                                        work5=false;
                                    }
                                    while (work5) {
                                        System.out.println("请输入日,输入0可退出");
                                        day2 = sc.nextLine();
                                        if (day2.equals("0")) {
                                            System.out.println("已退出");
                                            work5 = false;
                                        } else {

                                            char arr3[] = day2.toCharArray();

                                            for (int i = 0; i < arr3.length; i++) {
                                                int x = (int) arr3[i];
                                                if (arr3.length > 2 || arr3.length < 0) {
                                                    System.out.println("请输入2或1位数日");
                                                    break;
                                                } else  if (arr3[0] == '0') {
                                                    System.out.println("首位不可为0");
                                                    break;
                                                } else if (48 <= x && x <= 57 && i < arr3.length - 1) {
                                                    continue;
                                                } else if (48 <= x && x <= 57 && i == arr3.length - 1) {
                                                    int d = Integer.valueOf(day2);
                                                    int y = Integer.valueOf(year2);
                                                    if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && moon2.equals("2") && d > 29) {
                                                        System.out.println("闰年2月请输入小于或等于29的日");
                                                        break;
                                                    } else if ((y % 4 != 0 || (y % 100 == 0 && y % 400 != 0)) && moon2.equals("2") && d > 28) {
                                                        System.out.println("非闰年2月请输入小于或等于28的日");
                                                        break;
                                                    } else if (d <= 31 && d > 0) {
                                                        System.out.println("修改完成,可继续选择修改对象");
                                                        builder2.append(day2 + "日");
                                                        work5 = false;


                                                    } else if (d >= 32) {
                                                        System.out.println("请输入小于32的日");

                                                    }
                                                } else System.out.println("请输入正确格式");
                                                break;

                                            }


                                            int newyear = Integer.valueOf(year2 + moon2 + day2);
                                            int newtime = Integer.valueOf(moon2 + day2);

                                            String newreportingtime = builder2.toString();
                                            s.setReportingtime(newreportingtime);
                                            s.setTime(newtime);
                                            s.setYear(newyear);

                                        }
                                    }

                                    work0 = false;
                                    break;


                                case "5":
                                    if(s.getRepairstatic().equals("未维修")){
                                        System.out.println("此报修单未维修,无维修金额如已维修请优先修改维修状态");
                                        work0 = false;
                                    }else if(s.getRepairstatic().equals("已维修")) {
                                        System.out.println("请输入维修金额:");

                                        String newcost;
                                        String sumnewcost = null;
                                        boolean work6 = true;
                                        while (work6) {


                                            newcost = sc.nextLine();
                                            char arr[] = newcost.toCharArray();

                                            for (int i = 0; i < arr.length; i++) {
                                                if (arr.length > 6) {
                                                    System.out.println("输入金额过大请重新输入");
                                                    break;
                                                }
                                                int x = (int) arr[i];
                                                if (48 <= x && x <= 57 && i < arr.length - 1) {
                                                    continue;
                                                } else if (48 <= x && x <= 57 && i == arr.length - 1) {
                                                    String a = "元";
                                                    sumnewcost = newcost + a;
                                                    s.setCosts(sumnewcost);
                                                    System.out.println("修改完成,可继续选择修改对象");
                                                    work6 = false;
                                                    work0 = false;
                                                } else System.out.println("请输入正确格式");
                                                break;
                                            }
                                        }


                                    }
                                    break;
                                case "6":
                                    System.out.println("请输入报修者名字,输入0可退出修改");
                                    String newrepairname = null;


                                    boolean work7 = true;
                                    while (work7) {
                                        newrepairname = sc.nextLine();
                                        if (newrepairname.equals("0")) {
                                            System.out.println("已退出");
                                            work7 = false;
                                            work0 = false;
                                        } else {


                                            char arr[] = newrepairname.toCharArray();

                                            for (int i = 0; i < arr.length; i++) {
                                                int x = (int) arr[i];
                                                if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i < arr.length - 1) {
                                                    continue;
                                                } else if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i == arr.length - 1) {
                                                    s.setRepairname(newrepairname);
                                                    System.out.println("修改完成,可继续选择修改对象");
                                                    work7 = false;
                                                    work0 = false;
                                                } else System.out.println("请输入中文或英文");

                                                break;
                                            }
                                        }


                                    }
                                    break;
                                case "0":
                                    System.out.println("已退出修改");
                                    work = false;
                                    work0 = false;
                                    break;
                                default:
                                    System.out.println("输入非法,请重试");
                                    break;


                                //给业主对象重新赋值


                            }
                        }
                    }

                        list1.set(index, s);


                        //将集合重新保存到文件中
                        FileOutputStream fos = new FileOutputStream("D:\\物业管理系统\\报修管理\\Faultrepair.txt");
                        ObjectOutputStream oos = new ObjectOutputStream(fos);
                        oos.writeObject(list1);
                        oos.flush();
                        oos.close();
                        fos.close();

                        break;
                    }
                }
            }
  1. 删除保修单功能

//删除报修单
    private static void deleteFaultrepair() throws Exception {
        //提示用户输入名字删除,如果存在删除,如果不存在退出
        Scanner sc = new Scanner(System.in);
        showFaultRepair();
        System.out.println("请输入要删除的报修单编号:");

        boolean work1 =true;
        while(work1){

            String num ;
            int Num=0;

            boolean work9=true;
            while(work9) {
                num = sc.nextLine();
                char arr[] = num.toCharArray();
                for (int i = 0; i < arr.length; i++) {

                    int x = (int) arr[i];
                    if (48 <= x && x <= 57 && i < arr.length - 1) {
                        continue;
                    } else if ( 48 <= x && x <= 57 && i == arr.length - 1) {
                        Num = Integer.valueOf(num);
                        work9 = false;
                    } else System.out.println("请输入正确格式");
                    break;
                }
            }





            int index = -1;
            for (int i = 0; i < list1.size(); i++) {
                if (list1.get(i).getNumber()==Num) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("没有找到该报修单信息,请重新输入");
                continue;
            } else {
                System.out.println("确定是否删除:输入Y确定/N否");


                boolean work2 =true;
                while(work2) {

                    String x= sc.nextLine();
                    switch (x) {

                        case "Y":
                            //删除该业主
                            list1.remove(index);
                            if(list1.size()==1){
                                FaultRepair s = list1.get(0);
                                s.setNumber(1);

                            }
                            else if (list1.size()!=1) {


                                for (int i = index; i <= list1.size()-1; i++) {
                                    FaultRepair s = list1.get(i);
                                    s.setNumber(index + 1);
                                }
                            }
                            //将该集合重新保存到文件中
                            FileOutputStream fos = new FileOutputStream("D:\\物业管理系统\\报修管理\\Faultrepair.txt");
                            ObjectOutputStream oos = new ObjectOutputStream(fos);
                            oos.writeObject(list1);
                            oos.flush();
                            oos.close();
                            fos.close();
                            System.out.println("删除成功√");
                            work1=false;
                            work2=false;
                            break;
                        case "N":
                            System.out.println("已取消删除");
                            work1=false;
                            work2=false;
                            break;
                        default:
                            System.out.println("输入非法,请重试");
                            break ;
                    }
                }
            }

        }
    }
  1. 退出页面功能

  //退出系统
    private static void exitFaultrepair() {
        System.out.println("您已返回上一页面");
    }
  1. 比较器

   private static void sortFaultrepair(){
        Collections.sort(list1, new Comparator<FaultRepair>() {
            @Override
            public int compare(FaultRepair TIME1, FaultRepair TIME2) {
                if (TIME1.getYear()== TIME2.getYear()){
                    return TIME1.getTime()- TIME2.getTime();
                }else return TIME1.getYear()- TIME2.getYear();

            }
        });
        if(list1.isEmpty()){
            System.out.println("当前文件无报修单信息");
        }
        System.out.println("编号" + "    " + "物品名称" + "   " + "维修状态" + "   "
                + "房号" + "     " + "报修时间" + "     " + "维修金额" + "    " + "报修人");
        for ( FaultRepair s : list1) {
            System.out.println(s);
        }

    }
  1. 冒泡排序算法

 //冒泡排序算法
    public static void sortcost(){
        for(int i = 0;i< list1.size()-1;i++){
            for(int j = 0;j< list1.size()-i-1;j++){

                StringBuilder cost1=new StringBuilder(list1.get(j).getCosts());
               cost1.deleteCharAt(cost1.length()-1);
               String  COST=cost1.toString();
               int costs1=Integer.valueOf(COST);
                StringBuilder cost2=new StringBuilder(list1.get(j+1).getCosts());
                cost2.deleteCharAt(cost2.length()-1);
                String  COST2=cost2.toString();
                int costs2=Integer.valueOf(COST2);
                if(costs1>costs2){
                    FaultRepair e=list1.get(j);
                    //交换值
                    list1.set(j, list1.get(j+1));
                    list1.set(j+1, e);

                }

                }



            }
        System.out.println("编号" + "    " + "物品名称" + "   " + "维修状态" + "   "
                + "房号" + "     " + "报修时间" + "     " + "维修金额" + "    " + "报修人");
        for ( FaultRepair s : list1) {
            System.out.println(s);
    }
    }
  1. FaultRepairManage功能类:

  1. 业主管理界面

 //业主界面
    public static void managerProietor() {
        boolean work = true;
        while (work) {
            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("0返回上一页面");

            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            boolean work0 = true;
            while (work0) {
                String choice = sc.nextLine();
                switch (choice) {
                    case "1":
                        try {
                            showProprietor();
                        } catch (Exception e) {
                            System.out.println(e.getMessage());
                        }
                        work0 = false;
                        break;
                    case "2":
                        try {
                            ProprietorManage.addProprietor();
                        } catch (Exception e) {
                            System.out.println(e.getMessage());
                        }

                        work0 = false;
                        break;
                    case "3":
                        try {
                            ProprietorManage.updateProprietor();
                        } catch (Exception e) {
                            System.out.println(e.getMessage());
                        }
                        work0 = false;
                        break;
                    case "4":
                        try {
                            ProprietorManage.deleteProprietor();
                        } catch (Exception e) {
                            System.out.println(e.getMessage());
                        }
                        work0 = false;
                        break;
                    case "5":
                        try {
                            ProprietorManage.showbsearchFirstValue();
                        } catch (Exception e) {
                            System.out.println(e.getMessage());
                        }
                        work0 = false;
                        break;
                        case "0":
                        ProprietorManage.exitProprietor();
                        work = false;
                        work0 = false;
                        break;

                    default:
                        System.out.println("输入非法,请重试");
                        break;
                }
            }
        }
    }
  1. io流代码块

private static List<Proprietor> list2 = new ArrayList<Proprietor>();

    //类加载完毕时,就执行一次静态代码块,读取文件中保存的集合
    static {
        try {
            FileInputStream fis = new FileInputStream("D:\\物业管理系统\\业主管理\\proprietor.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            list2 = (List<Proprietor>) ois.readObject();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  1. 查询业主功能

 //查询业主
    public static void showProprietor() throws Exception {

        if (list2.size() == 0) {
            System.out.println("当前文件无业主信息");
        } else {
            sortProprietor();
            System.out.println("业主信息表");
            System.out.println("姓名"+"      "+"房号"+"       "+"联系号码"+"        "+"身份证号码"+"         "+"入住时间");
            for (Proprietor s : list2) {
                System.out.println(s);
            }

        }
    }
  1. 添加业主功能

//添加业主
    private static void addProprietor() throws Exception {
        //创建文件对象

        File file = new File("D:\\物业管理系统\\业主管理\\proprietor.txt");
        if (!file.isFile()) {
            file.createNewFile();
        }

        //提示用户输入信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入姓名:输入0可退出");

        String name = null;
        boolean work1 = true;
        while (work1) {

            name = sc.nextLine();
            if (name.equals("0")) {
                System.out.println("已退出");
                return;
            }
            int index = -1;
            for (int i = 0; i < list2.size(); i++) {

                if (list2.get(i).getName().equals(name)) {
                    //说明找到了
                    index = 1;
                    break;
                }
            }
            if (index == 1) {
                System.out.println("名字重复,请重新输入");
                continue;
            }

            char arr[] = name.toCharArray();

            for (int i = 0; i < arr.length; i++) {
                int x = (int) arr[i];
                if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i < arr.length - 1) {
                    continue;
                } else if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i == arr.length - 1) {
                    work1 = false;
                } else System.out.println("请输入中文或英文");
                break;
            }
        }
        System.out.println("请输入房号:格式为楼栋大写字母+房号,输入0可退出");
        String roomnumber = null;
        boolean work2 = true;
        while (work2) {
            roomnumber = sc.nextLine();
            if (roomnumber.equals("0")) {
                System.out.println("已退出");
                return;
            }


            char arr[] = roomnumber.toCharArray();

            for (int i = 0; i < arr.length; i++) {
                int x = (int) arr[i];
                if (i == 0 && arr.length > 1) {

                    if ((x >= 65 && x <= 90)) {
                        continue;
                    } else System.out.println("请输入正确格式");


                } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                    continue;
                } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                    work2 = false;
                } else System.out.println("请输入正确格式");
                break;
            }
        }
        System.out.println("请输入联系号码:输入0可退出");
        String phonenumber = null;
        boolean work3 = true;
        while (work3) {


            phonenumber = sc.nextLine();
            if (phonenumber.equals("0")) {
                System.out.println("已退出");
                return;
            }
            int index2 = -1;
            for (int i = 0; i < list2.size(); i++) {

                if (list2.get(i).getPhonenumber().equals(phonenumber)) {
                    //说明找到了
                    index2 = 1;
                    break;
                }
            }
            if (index2 == 1) {
                System.out.println("手机号码重复,请重新输入");
                continue;
            }
            char arr[] = phonenumber.toCharArray();

            for (int i = 0; i < arr.length; i++) {
                int x = (int) arr[i];
                if (arr.length != 11) {
                    System.out.println("请输入11位数字号码,");
                    break;
                } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                    continue;
                } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                    work3 = false;
                } else System.out.println("请输入11位数字号码");
                break;
            }
        }
        System.out.println("请输入身份证号码:如有字母X输入大写,输入0可退出");
        String id = null;
        boolean work4 = true;
        while (work4) {


            id = sc.nextLine();
            if (id.equals("0")) {
                System.out.println("已退出");
                return;
            }

            int index = -1;
            for (int i = 0; i < list2.size(); i++) {

                if (list2.get(i).getId().equals(id)) {
                    //说明找到了
                    index = 1;
                    break;
                }
            }
            if (index == 1) {
                System.out.println("身份证重复,请重新输入");
                continue;
            }
            char arr[] = id.toCharArray();

            for (int i = 0; i < arr.length; i++) {
                int x = (int) arr[i];
                if (arr.length != 18) {
                    System.out.println("请输入18位身份证号码");
                    break;
                } else if ((x == 88 || (48 <= x && x <= 57)) && i < arr.length - 1) {
                    continue;
                } else if ((x == 88 || (48 <= x && x <= 57)) && i == arr.length - 1) {
                    work4 = false;
                } else System.out.println("请输入18位身份证号码,且X为大写");
                break;
            }
        }


        System.out.println("请分别输入入住时间:");


        StringBuilder builder = new StringBuilder();
        System.out.println("请输入年份输入0可退出");

        String year = null;
        boolean work5 = true;
        while (work5) {
            year = sc.nextLine();
            if (year.equals("0")) {
                System.out.println("已退出");
                return;
            }


            char arr1[] = year.toCharArray();

            for (int i = 0; i < arr1.length; i++) {
                if (arr1[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else {
                    int x = (int) arr1[i];
                    if (arr1.length != 4) {
                        System.out.println("请输入4位数年份");
                        break;
                    } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                        continue;
                    } else if (i > 0 && 48 <= x && x <= 57 && i == arr1.length - 1) {
                        work5 = false;
                    } else System.out.println("请输入正确格式");
                    break;
                }
            }
        }
        builder.append(year + "年");
        System.out.println("请输入月份,输入0可退出");

        String moon = null;

        boolean work6 = true;
        while (work6) {
            moon = sc.nextLine();
            if (moon.equals("0")) {
                System.out.println("已退出");
                return;
            }
            char arr1[] = moon.toCharArray();
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else {
                    int x = (int) arr1[i];
                    if (arr1.length > 2) {
                        System.out.println("请输入2位数月份");
                        break;
                    } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                        continue;
                    } else if (48 <= x && x <= 57 && i == arr1.length - 1) {
                        int m = Integer.valueOf(moon);
                        if (m <= 12 && m > 0) {
                            work6 = false;
                        } else System.out.println("请输入小于或等于12且大于0的月份");
                    } else System.out.println("请输入正确格式");
                    break;
                }
            }

        }


        builder.append(moon + "月");
        System.out.println("请输入日输入0可退出");

        String day = null;

        boolean work7 = true;
        while (work7) {
            day = sc.nextLine();
            if (day.equals("0")) {
                System.out.println("已退出");
                return;
            }

            char arr3[] = day.toCharArray();

            for (int i = 0; i < arr3.length; i++) {
                if (arr3[0] == '0') {
                    System.out.println("首位不可为0");
                    break;
                } else {
                    int x = (int) arr3[i];
                    if (arr3.length > 2 || arr3.length < 0) {
                        System.out.println("请输入2或1位数日");
                        break;
                    } else if (48 <= x && x <= 57 && i < arr3.length - 1) {
                        continue;
                    } else if (48 <= x && x <= 57 && i == arr3.length - 1) {
                        int d = Integer.valueOf(day);
                        int y = Integer.valueOf(year);
                        if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && moon.equals("2") && d > 29) {
                            System.out.println("闰年2月请输入小于或等于29的日");
                            break;
                        } else if ((y % 4 != 0 || (y % 100 == 0 && y % 400 != 0)) && moon.equals("2") && d > 28) {
                            System.out.println("非闰年2月请输入小于或等于28的日");
                            break;
                        } else if (d <= 31 && d > 0) {
                            work7 = false;


                        } else if (d >= 32) {
                            System.out.println("请输入小于32的日");

                        }
                    } else System.out.println("请输入正确格式");
                    break;

                }
            }
        }



        int Time=Integer.valueOf(year+moon+day);
        builder.append(day + "日");
        String time = builder.toString();


        //将对象保存到集合中
        Proprietor stu = new Proprietor(name, roomnumber, phonenumber, id, time,Time);
        list2.add(stu);
        sortProprietor();
        //再将集合保存到文件中
        FileOutputStream fos = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(list2);
        oos.close();
        fos.close();
        System.out.println("添加成功√");


    }
  1. 修改业主功能

 //修改业主
    private static void updateProprietor() throws Exception {
        //提示用户输入学号修改,如果存在修改,如果不存在退出
        showProprietor();
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入要修改的业主名字:");

        for (; ; ) {
            String name = sc.nextLine();

            int index = -1;  //-1 表示该不存在
            for (int i = 0; i < list2.size(); i++) {
                //
                if (list2.get(i).getName().equals(name)) {
                    //说明找到了
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("没有找到该业主信息,请重新输入");
                continue;
            } else {
                Proprietor s = list2.get(index);
                boolean work = true;
                while (work) {
                    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("0.结束修改");
                    String choice = sc.nextLine();
                    switch (choice) {

                        case "1":


                            String newname = null;
                            boolean work2 = true;
                            while (work2) {
                                System.out.println("请输入姓名,输入0可退出修改");
                                newname = sc.nextLine();
                                if (newname.equals("0")) {
                                    System.out.println("已退出");
                                    work2 = false;
                                } else {
                                    int index2 = -1;
                                    for (int i = 0; i < list2.size(); i++) {

                                        if (list2.get(i).getName().equals(newname)) {
                                            //说明找到了
                                            index2 = 1;
                                            break;
                                        }
                                    }
                                    if (index2 == 1) {
                                        System.out.println("名字重复,请重新输入");
                                        continue;
                                    }

                                    char arr[] = newname.toCharArray();

                                    for (int i = 0; i < arr.length; i++) {
                                        int x = (int) arr[i];
                                        if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i < arr.length - 1) {
                                            continue;
                                        } else if (((arr[i] >= 0x4e00) && (arr[i] <= 0x9fbb) || (x >= 65 && x <= 90) || (x >= 97 && x <= 122)) && i == arr.length - 1) {

                                            work2 = false;
                                        } else System.out.println("请输入中文或英文");
                                        break;
                                    }
                                }
                                s.setName(newname);
                                System.out.println("修改完成,可继续修改");
                            }
                            break;
                        case "2":
                            System.out.println("请输入房号:格式为楼栋大写字母+房号,输入0可退出修改");
                            String newroomnumber = null;
                            boolean work3 = true;
                            while (work3) {
                                newroomnumber = sc.nextLine();
                                if (newroomnumber.equals("0")) {
                                    System.out.println("已退出");
                                    work3 = false;
                                } else {


                                    char arr[] = newroomnumber.toCharArray();

                                    for (int i = 0; i < arr.length; i++) {
                                        int x = (int) arr[i];
                                        if (i == 0 && arr.length > 1) {

                                            if ((x >= 65 && x <= 90)) {
                                                continue;
                                            } else System.out.println("请输入正确格式");


                                        } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                                            continue;
                                        } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                                            work3 = false;
                                        } else System.out.println("请输入正确格式");
                                        break;
                                    }
                                }

                                s.setRoomnumber(newroomnumber);
                                System.out.println("修改完成,可继续修改");
                            }
                            break;

                        case "3":
                            System.out.println("请输入联系号码,输入0可退出修改");
                            String newphonenumber = null;
                            boolean work4 = true;
                            while (work4) {


                                newphonenumber = sc.nextLine();
                                if (newphonenumber.equals("0")) {
                                    System.out.println("已退出");
                                    work4 = false;
                                } else {

                                    int index2 = -1;
                                    for (int i = 0; i < list2.size(); i++) {

                                        if (list2.get(i).getPhonenumber().equals(newphonenumber)) {
                                            //说明找到了
                                            index = 1;
                                            break;
                                        }
                                    }
                                    if (index == 1) {
                                        System.out.println("手机号码重复,请重新输入");
                                        continue;
                                    }
                                    char arr[] = newphonenumber.toCharArray();

                                    for (int i = 0; i < arr.length; i++) {
                                        int x = (int) arr[i];
                                        if (arr.length != 11) {
                                            System.out.println("请输入11位数字号码");
                                            break;
                                        } else if (48 <= x && x <= 57 && i < arr.length - 1) {
                                            continue;
                                        } else if (i > 0 && 48 <= x && x <= 57 && i == arr.length - 1) {
                                            work4 = false;
                                        } else System.out.println("请输入11位数字号码");
                                        break;
                                    }
                                }
                                s.setPhonenumber(newphonenumber);
                                System.out.println("修改完成,可继续修改");
                            }
                            break;
                        case "4":
                            System.out.println("请输入身份证号码:如有字母X为大写,输入0可退出修改");
                            String newid = null;
                            boolean work5 = true;
                            while (work5) {


                                newid = sc.nextLine();
                                if (newid.equals("0")) {
                                    System.out.println("已退出");
                                    work5 = false;
                                } else {
                                    int index2 = -1;
                                    for (int i = 0; i < list2.size(); i++) {

                                        if (list2.get(i).getId().equals(newid)) {
                                            //说明找到了
                                            index2 = 1;
                                            break;
                                        }
                                    }
                                    if (index2 == 1) {
                                        System.out.println("身份证号码重复,请重新输入");
                                        continue;
                                    }
                                    char arr[] = newid.toCharArray();

                                    for (int i = 0; i < arr.length; i++) {
                                        int x = (int) arr[i];
                                        if (arr.length != 18) {
                                            System.out.println("请输入18位身份证号码");
                                            break;
                                        } else if ((x == 88 || (48 <= x && x <= 57)) && i < arr.length - 1) {
                                            continue;
                                        } else if ((x == 88 || (48 <= x && x <= 57)) && i == arr.length - 1) {
                                            work5 = false;
                                        } else System.out.println("请输入18位身份证号码且X为大写");
                                        break;
                                    }
                                }
                                s.setId(newid);
                                System.out.println("修改完成,可继续修改");
                            }
                            break;

                        case "5":
                            System.out.println("请分别输入入住时间");


                            StringBuilder builder2 = new StringBuilder();
                            System.out.println("请输入年份,输入0可退出修改");
                            String year2 = null;
                            boolean work6 = true;
                            while (work6) {
                                year2 = sc.nextLine();
                                if (year2.equals("0")) {
                                    System.out.println("已退出");

                                    work6=false;
                                } else {


                                    char arr1[] = year2.toCharArray();


                                    for (int i = 0; i < arr1.length; i++) {
                                        int x = (int) arr1[i];
                                        if (arr1.length != 4) {
                                            System.out.println("请输入4位数年份");
                                            break;
                                        } else  if (arr1[0] == '0') {
                                            System.out.println("首位不可为0");
                                            break;
                                        } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                                            continue;
                                        } else if (i > 0 && 48 <= x && x <= 57 && i == arr1.length - 1) {
                                            builder2.append(year2 + "年");
                                            work6 = false;
                                        } else System.out.println("请输入正确格式");
                                        break;
                                    }


                                }
                            }


                            String moon2 = null;

                            boolean work7 = true;
                            if(year2.equals("0")){
                                work7=false;
                            }else {
                                System.out.println("请输入月份,输入0可退出修改");
                                while (work7) {
                                    moon2 = sc.nextLine();
                                    if (moon2.equals("0")) {
                                        System.out.println("已退出");
                                        work7 = false;
                                    } else {
                                        char arr1[] = moon2.toCharArray();
                                        for (int i = 0; i < arr1.length; i++) {
                                            int x = (int) arr1[i];
                                            if (arr1.length > 2) {
                                                System.out.println("请输入2位数月份");
                                                break;
                                            } else if (arr1[0] == '0') {
                                                System.out.println("首位不可为0");
                                                break;
                                            } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                                                continue;
                                            } else if (48 <= x && x <= 57 && i == arr1.length - 1) {
                                                int m = Integer.valueOf(moon2);
                                                if (m <= 12 && m > 0) {
                                                    builder2.append(moon2 + "月");
                                                    work7 = false;
                                                } else System.out.println("请输入小于或等于12且大于0的月份");
                                            } else System.out.println("请输入正确格式");
                                            break;
                                        }



                                    }
                                }
                            }


                            String day2 = null;

                            boolean work8 = true;
                            if(year2.equals("0")||moon2.equals("0")){
                                work8=false;
                            }else {
                                System.out.println("请输入日,输入0可退出修改");
                                while (work8) {
                                    day2 = sc.nextLine();
                                    if(day2.equals("0")){
                                        System.out.println("已退出");
                                        work8=false;

                                    }else{

                                    char arr3[] = day2.toCharArray();

                                    for (int i = 0; i < arr3.length; i++) {
                                        int x = (int) arr3[i];
                                        if (arr3.length > 2 || arr3.length < 0) {
                                            System.out.println("请输入2或1位数日");
                                            break;
                                        } else if (arr3[0] == '0') {
                                            System.out.println("首位不可为0");
                                            break;
                                        } else if (48 <= x && x <= 57 && i < arr3.length - 1) {
                                            continue;
                                        } else if (48 <= x && x <= 57 && i == arr3.length - 1) {
                                            int d = Integer.valueOf(day2);
                                            int y = Integer.valueOf(year2);
                                            if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && moon2.equals("2") && d > 29) {
                                                System.out.println("闰年2月请输入小于或等于29的日");
                                                break;
                                            } else if ((y % 4 != 0 || (y % 100 == 0 && y % 400 != 0)) && moon2.equals("2") && d > 28) {
                                                System.out.println("非闰年2月请输入小于或等于28的日");
                                                break;
                                            } else if (d <= 31 && d > 0) {
                                                builder2.append(day2 + "日");
                                                System.out.println("修改完成,可继续修改");
                                                work8 = false;


                                            } else if (d >= 32) {
                                                System.out.println("请输入小于32的日");

                                            }
                                        } else System.out.println("请输入正确格式");
                                        break;

                                    }



                                        int m = Integer.valueOf(year2 + moon2 + day2);
                                        String newtime = builder2.toString();
                                        s.setCheckindate(newtime);
                                        s.setTime(m);

                                    }
                                }
                            }
                            break;
                        case "0":
                            System.out.println("已退出修改");
                            work = false;
                            break;
                        default:
                            System.out.println("输入非法,请重试");
                            break;
                        //给业主对象重新赋值


                    }
                }
                list2.set(index, s);
                sortProprietor();

                //将集合重新保存到文件中
                FileOutputStream fos = new FileOutputStream("D:\\物业管理系统\\业主管理\\proprietor.txt");
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(list2);
                oos.flush();
                oos.close();
                fos.close();

                break;
            }
        }
    }
  1. 删除业主功能

 //删除业主
    private static void deleteProprietor() throws Exception {
        //提示用户输入名字删除,如果存在删除,如果不存在退出
        showProprietor();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的业主名字:");
        boolean work = true;
        while (work) {
            String name = sc.nextLine();

            int index = -1;
            for (int i = 0; i < list2.size(); i++) {
                if (list2.get(i).getName().equals(name)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("没有找到该业主信息,请重新输入");
                continue;
            } else {
                System.out.println("确定是否删除:输入Y确定/N否");

                boolean work2 = true;
                while (work2) {
                    String x = sc.nextLine();
                    switch (x) {

                        case "Y":
                            //删除该业主
                            list2.remove(index);
                            //将该集合重新保存到文件中
                            FileOutputStream fos = new FileOutputStream("D:\\物业管理系统\\业主管理\\proprietor.txt");
                            ObjectOutputStream oos = new ObjectOutputStream(fos);
                            oos.writeObject(list2);
                            oos.flush();
                            oos.close();
                            fos.close();
                            System.out.println("删除成功√");
                            work = false;
                            work2 = false;
                            break;
                        case "N":
                            System.out.println("已取消删除");

                            work2 = false;
                            work = false;
                            break;
                        default:
                            System.out.println("输入非法,请重试");
                            break;

                    }
                }
            }
        }
    }
  1. 退出业主管理界面

 //退出系统
    private static void exitProprietor() {
        System.out.println("您已返回上一页面");
    }
  1. 比较器

 //比较器

    private static void sortProprietor() {
        Collections.sort(list2, new Comparator<Proprietor>() {
            @Override
            public int compare(Proprietor TIME1, Proprietor TIME2) {

                 return TIME1.getTime()- TIME2.getTime();

            }
        });


    }
  1. 二分查找算法

//二分查找算法
    public static ArrayList<Integer> binarySearch2( int low, int high, int findVal){
        //当low>high时,说明递归整个数组,但是没有找到
        if(low>high){
            return new ArrayList<Integer>();
        }
        int mid=(low+high)/2;
        int midVal=list2.get(mid).getTime();
        if(findVal>midVal){//向右递归
            return binarySearch2(mid+1,high,findVal);
        }else if(findVal<midVal){//向左递归
            return binarySearch2(low,mid-1,findVal);
        }else {
            ArrayList<Integer> resIndexlist = new ArrayList<>();
            //向mid索引值得左边扫描,将所有满足1000,的元素的下标,加入到集合中ArrayList
            int temp=mid-1;
            while(true){
                if(temp<0||list2.get(temp).getTime()!=findVal){//退出
                    break;
                }
                //否则,就把temp放入到集合中
                resIndexlist.add(temp);
                temp--;//temp左移
            }
            resIndexlist.add(mid);
            //向mid索引值得右边扫描,将所有满足1000,的元素的下标,加入到集合中ArrayList
            temp=mid+1;
            while(true){
                if(temp>list2.size()-1||list2.get(temp).getTime()!=findVal){//退出
                    break;
                }
                //否则,就把temp放入到集合中
                resIndexlist.add(temp);
                temp++;//temp左移
            }
            return resIndexlist;

        }

    }
 //输出查找信息
    public static void showbsearchFirstValue(){
        System.out.println("请输入入住时间格式为年份+月份+日");
        Scanner sc= new Scanner(System.in);
        String Time=null;
        boolean work6 = true;
        while (work6) {
            Time = sc.nextLine();


            char arr1[] = Time.toCharArray();

            for (int i = 0; i < arr1.length; i++) {
                int x = (int) arr1[i];
                if (arr1.length>8||arr1.length<6) {
                    System.out.println("请输入不大于8位数,且不小于6位数日期");
                    break;
                } else if (48 <= x && x <= 57 && i < arr1.length - 1) {
                    continue;
                } else if (i > 0 && 48 <= x && x <= 57 && i == arr1.length - 1) {
                    work6 = false;
                } else System.out.println("请输入正确格式");
                break;
            }
        }
        int TIME=Integer.valueOf(Time);
       if (ProprietorManage.binarySearch2(0, list2.size(), TIME).size()==0){
            System.out.println("未找到该入住时间业主信息");

        }else for (Integer s : ProprietorManage.binarySearch2(0, list2.size(), TIME)) {
           System.out.println(list2.get(s));
       }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值