public class Operate implements Serializable {
public Operate(){
this.list = new ArrayList<>();
}
private List<Person> list ;
/**-
* 用户添加记录业务逻辑控制
*/
public void addLogic(){
Menu menu =new Menu();
TelNoteRegex telNoteRegex =new TelNoteRegex();
while (true){
menu.addMenu();
int item = telNoteRegex.menuItemValidate(1,3);
switch (item){
case 1:
this.addOperation();
break;
case 2:
this.showAll();
break;
case 3:
return;//主菜单未关闭,return可以关闭当前菜单
}
}
}
/**
* 用户查询记录业务逻辑控制
*/
public void searchLogic() {
Menu menu = new Menu();
TelNoteRegex telNoteRegexk = new TelNoteRegex();
while (true){
menu.searchMenu();
int item = telNoteRegexk.menuItemValidate(1,7);
switch (item){
case 1: this.searchByName();break;
case 2:this.searchByAge();break;
case 3:this.searchBySex();break;
case 4:this.searchByTelNum();break;
case 5:this.searchByAdd();break;
case 6:this.showAll();break;
case 7:return;
}
}
}
/**
* 修改记录业务逻辑控制
*/
public void modifyLogic(){
Menu menu =new Menu();
TelNoteRegex telNoteRegex = new TelNoteRegex();
while (true){
menu.modifyMenu();
int item = telNoteRegex.menuItemValidate(1,3);
switch (item){
case 1: this.showAll();break;
case 2: this.modifyOperation();break;
case 3: return;
}
}
}
/**
* 删除记录业务逻辑控制
*/
public void deleteLogic(){
Menu menu =new Menu();
TelNoteRegex telNoteRegex = new TelNoteRegex();
while (true) {
menu.deleteMenu();
int item = telNoteRegex.menuItemValidate(1,4);
switch (item){
case 1:this.showAll();break;
case 2:this.deleteOperation();break;
case 3:this.deleteAllOperation();break;
case 4:return;
}
}
}
/**
* 排序记录业务逻辑控制
*/
public void orderLogic(){
Menu menu =new Menu();
TelNoteRegex telNoteRegex = new TelNoteRegex();
menu.deleteMenu();
int item = telNoteRegex.menuItemValidate(1,4);
switch (item){
case 1:this.orderName();break;
case 2:this.orderAge();break;
case 3:this.orderSex();break;
case 4:this.showAll();break;
case 5:return;
}
}
/**
* 添加新记录信息
*/
public void addOperation () {
TelNoteRegex telNoteRegex =new TelNoteRegex();
String name = telNoteRegex.nameValidate();
String age = telNoteRegex.ageValidate();
String address = telNoteRegex.addressValidate();
String sex = telNoteRegex.sexValidate();
String telnum = telNoteRegex.telNumValidate();
Person person =new Person(name,age,sex,telnum,address);
this.list.add(person);
person.setId(this.list.size());
this.OutStream();
}
/**
* 查询全部记录
*/
public void showAll() {
this.InStream();
if (this.list.size()==0){
System.out.println("没有任何记录");
}
for (int i =0;i<this.list.size();i++){
System.out.println(this.list.get(i));
}
}
/**
* 按姓名查询记录
* 姓名必须完全匹配
*/
public void searchByName() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入姓名");
String searchingName = telNoteRegex.nameValidate();
for (int i = 0;i<this.list.size();i++){
if (searchingName.equals(list.get(i).getName())){
System.out.println(this.list.get(i));
}else {
System.out.println("没有此人");
}
}
}
/**
* 按年龄查询记录
*/
public void searchByAge() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入年龄");
String age = telNoteRegex.ageValidate();
for (int i =0;i<this.list.size();i++){
if (age.equals(list.get(i).getAge())){
System.out.println(this.list.get(i));
}else{
System.out.println("没有此年龄记录");
}
}
}
/**
* 按性别查询记录
*/
public void searchBySex() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入性别");
String sex = telNoteRegex.sexValidate();
boolean flag = true;
for (int i = 0; i<this.list.size();i++){
if (sex.equals(list.get(i).getSex())){
System.out.println(this.list.get(i));
flag = false;
}
if (flag){
System.out.println("没有此性别记录");
}
}
}
/**
* 按电话号码查询记录
*/
public void searchByTelNum() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入电话号码");
String telnum = telNoteRegex.telNumValidate();
boolean flag = true;
for (int i = 0; i<this.list.size();i++){
if (telnum.equals(list.get(i).getTelNum())){
System.out.println(this.list.get(i));
flag = false;
}
if (flag){
System.out.println("没有此电话记录");
}
}
}
/**
* 按地址查询记录
*/
public void searchByAdd() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入地址");
String add = telNoteRegex.addressValidate();
boolean flag = true;
for (int i = 0; i<this.list.size();i++){
if (add.equals(list.get(i).getAddress())){
System.out.println(this.list.get(i));
flag = false;
}
if (flag){
System.out.println("没有此地址记录");
}
}
}
/**
* 修改指定记录
*/
public void modifyOperation() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
Menu menu = new Menu();
//对序号验证,在有效范围内
System.out.println("请输入记录的序号");
int itemNum = telNoteRegex.menuItemValidate(1,this.list.size());
switch (itemNum){
case 1:
String name = telNoteRegex.nameValidate();
this.list.get(itemNum-1).setName(name);
this.OutStream();
break;
case 2:
String age = telNoteRegex.ageValidate();
this.list.get(itemNum-1).setAge(age);
this.OutStream();
break;
case 3:
String sex = telNoteRegex.sexValidate();
this.list.get(itemNum-1).setSex(sex);
this.OutStream();
break;
case 4:
String telnum = telNoteRegex.telNumValidate();
this.list.get(itemNum-1).setTelNum(telnum);
this.OutStream();
break;
case 5:
String address = telNoteRegex.addressValidate();
this.list.get(itemNum-1).setAddress(address);
this.OutStream();
break;
case 6:return;
}
}
/**
* 删除指定记录
*/
public void deleteOperation() {
TelNoteRegex telNoteRegex =new TelNoteRegex();
System.out.println("请输入记录的序号");
int itemnub = telNoteRegex.menuItemValidate(1,this.list.size());
this.list.remove(itemnub-1);
//重新
for (int i = 0;i<this.list.size();i++){
this.list.get(i).setId(i+1);
}
this.OutStream();
System.out.println("删除成功");
}
/**
* 删除全部记录
*/
public void deleteAllOperation() {
this.list.clear();
this.OutStream();
System.out.println("您的电话本已清除");
}
/**
* 按用户姓名排序记录
*/
public void orderName() {
Collections.sort(this.list,new OrderByName());
for (int i =0; i<this.list.size();i++){
this.list.get(i).setId(i+1);
}
}
/**
* 按用户年龄排序记录
*/
public void orderAge() {
Collections.sort(this.list,new OrderByAge());
for (int i =0; i<this.list.size();i++) {
this.list.get(i).setId(i + 1);
}
}
/**
* 按用户性别排序记录
*/
public void orderSex() {
Collections.sort(this.list, new OrderBySex());
for (int i = 0; i < this.list.size(); i++) {
this.list.get(i).setId(i + 1);
}
}
/**
* 排序器只能对在电话本中所存储的记录进行排序,不具备通用性,所以定义成Operatr的内部类
* 按姓名排序的比较器
*/
class OrderByName implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
}
class OrderByAge implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return o1.getAge().compareTo(o2.getAge());
}
}
class OrderBySex implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return o1.getSex().compareTo(o2.getSex());
}
}
public void OutStream(){
ObjectOutputStream oos = null;
try{
oos = new ObjectOutputStream( new FileOutputStream("e:/My/存.txt"));
for (int i =0;i<this.list.size();i++){
oos.writeObject(this.list.get(i));
oos.flush();
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(oos != null){
oos.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
public void InStream(){
ObjectInputStream ois = null;
try{
ois = new ObjectInputStream( new FileInputStream("e:/My/存.txt"));
Person person = (Person) ois.readObject();
System.out.println(person);
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if(ois != null){
ois.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
老师这里我实现了课堂作业电话本项目实现了存取,但是在使用时会读取了TXT文件后还会判断为没有记录
