功能介绍:
业主管理功能
1查询所有业主信息
2添加业主信息
3修改业主信息
4删除业主信息
5查找对于入住时间业主信息
报修管理功能
1按编号顺序查询所有报修信息
2添加报修信息
3修改报修信息
4删除报修信息
5按时间顺序输出所有报修信息
6按金额顺序输出报修信息
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;
}
}
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"
;
}
}
管理系统页面显示:
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;
}
}
}
}
}
FaultRepairManage功能类:
报修界面
//报修界面
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;
}
}
}
}
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();
}
}
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();
}
查询保修单功能
//查询报修单
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);
}
}
}
添加保修单功能
//添加报修单
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("添加成功√");
}
修改保修单功能
//修改保修单
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;
}
}
}
删除保修单功能
//删除报修单
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 ;
}
}
}
}
}
退出页面功能
//退出系统
private static void exitFaultrepair() {
System.out.println("您已返回上一页面");
}
比较器
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);
}
}
冒泡排序算法
//冒泡排序算法
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);
}
}
FaultRepairManage功能类:
业主管理界面
//业主界面
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;
}
}
}
}
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();
}
}
查询业主功能
//查询业主
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);
}
}
}
添加业主功能
//添加业主
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("添加成功√");
}
修改业主功能
//修改业主
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;
}
}
}
删除业主功能
//删除业主
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;
}
}
}
}
}
退出业主管理界面
//退出系统
private static void exitProprietor() {
System.out.println("您已返回上一页面");
}
比较器
//比较器
private static void sortProprietor() {
Collections.sort(list2, new Comparator<Proprietor>() {
@Override
public int compare(Proprietor TIME1, Proprietor TIME2) {
return TIME1.getTime()- TIME2.getTime();
}
});
}
二分查找算法
//二分查找算法
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));
}
}