标Java电话薄期末大作业
//主类
package phone;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Phone {
public static ArrayList<Person> list = new ArrayList<Person>();//创建静态ArrayList类对象方便其他类的调用
public static void main(String[] args) throws Exception {
Person p1 = new Person(3, "houzi", "18", "m", "17530530178", "beijing");//在list中添加duixiang
Person p2 = new Person(2, "jing", "20", "f", "18530530178", "anyang");
Person p3 = new Person(1, "rose", "19", "m", "13530530178", "zhengzhou");
Person p4 = new Person(6, "annie", "21", "m", "15530530178", "zhumadian");
Person p5 = new Person(4, "honey", "17", "f", "18830530178", "zhoukou");
Person p6 = new Person(5, "tom", "31", "f", "15130530178", "sanmenxia");
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
list.add(p6);
Menu m = new Menu();//创建Menu对象
m.show();//显示菜单
}
}
package phone;
public class Person {
private int user_id;// 用户ID 属性
private String user_name;// 用户姓名属性
private String user_age;// 用户年龄属性
private String user_sex;// 用户性别属性
private String user_telNum;// 用户电话号码属性
private String user_address;// 用户地址属性
public Person() {
}
public Person(int user_id, String user_name, String user_age, String user_sex, String user_telNum,
String user_address) {
super();
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.user_sex = user_sex;
this.user_telNum = user_telNum;
this.user_address = user_address;
}
public int getuser_Id() {
return user_id;
}
public void setuser_Id(int id) {
this.user_id = id;
}
public String getuser_Age() {
return user_age;
}
public void setuser_Age(String age) {
this.user_age = age;
}
public String getuser_Sex() {
return user_sex;
}
public void setuser_Sex(String sex) {
this.user_sex = sex;
}
public String getuser_TelNum() {
return user_telNum;
}
public void setuser_TelNum(String telNum) {
this.user_telNum = telNum;
}
public String getuser_Address() {
return user_address;
}
public void setuser_Address(String address) {
this.user_address = address;
}
public String getuser_Name() {
return user_name;
}
public void setuser_Name(String name) {
this.user_name = name;
}
public String toString() {
return "id=" + this.user_id + " name=" + this.user_name + " age=" + this.user_age + " sex=" + this.user_sex
+ " telNum=" + this.user_telNum + " address=" + this.user_address + "\r\n";
}
}
package phone;
import java.util.*;
public class Operate {
TelNoteRegex tn = new TelNoteRegex();
static Menu m = new Menu();// 注意这里 必须加静态
ArrayList<Person> list = Phone.list;//通过不同类之间调用同一个List
Scanner sc = new Scanner(System.in);
// 一添加记录------------------------------------------------------------------------
public void addlogic() throws Exception {
String num = sc.nextLine();
if (num.equals("1") || num.equals("2") || num.equals("3")) {
switch (num) {
case "1":
addTel();// 添加新记录
break;
case "2":
display();// 查看全记录
m.addMenu();
break;
case "3":
m.show();
break;
}
} else {
System.out.println("你输入有误,请重新输入!");
addlogic();
}
}
// 具体添加********************************
public void addTel() throws Exception {
System.out.println("请输入姓名(小于15个字符)");
String name = sc.next();
name = tn.nameRegex(name);// 正则表达式判断
System.out.println("请输入年龄1-100");
String age = sc.next();
age = tn.age(age);
System.out.println("请输入性别 M/m F/f");
String sex = sc.next();
sex = tn.sexRegex(sex);
System.out.println("请输入11位手机号码");
String telNum = sc.next();
telNum = tn.telRegex(telNum);
System.out.println("请输入住址(小于15个英文字符)");
String address = sc.next();
address = tn.addressRegex(address);
int count = 6;
count++;
Person p = new Person(count, name, age, sex, telNum, address);
list.add(p);
System.out.println("添加成功");
m.addMenu();
}
// 打印电话记录*******************************
public void display() throws Exception {
Iterator<Person> it = list.iterator();
while(it.hasNext()) {
Person p = it.next();
System.out.println("id=" + p.getuser_Id() + " name=" + p.getuser_Name() + " age=" + p.getuser_Age() + " sex=" + p.getuser_Sex()
+ " telNum=" + p.getuser_TelNum() + " address=" + p.getuser_Address() + "\r\n"
);
}
// for (Object obj : list) {
// System.out.println(obj);
// }
System.out.println("以上是有人员记录!");
}
// 二查找操作的具体方法----------------------------
public void searchlogic() throws Exception {
String num = sc.nextLine();
// 判断用户输入的操作是否正确
if (num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4") || num.equals("5")
|| num.equals("6") || num.equals("7")) {
switch (num) {
case "1":
nameSearch();
m.seeMenu();
break;// 1按姓名查找
case "2":
ageSearch();
m.seeMenu();
break;// 2按年龄查找
case "3":
sexSearch();
m.seeMenu();
break;// 3 按性别查找
case "4":
numberSearch();
m.seeMenu();
break;// 4 按号码查找
case "5":
addressSearch();
m.seeMenu();
break;// 5 按住址查找
case "6":
display();
m.seeMenu();
break;// 6 查看全记录
case "7":
m.show();
break;// 7 返回上一级
}
} else {
System.out.println("你的输入有误!请重新输入:");
searchlogic();
}
}
// 1按姓名查找
private void nameSearch() {
System.out.println("请输入姓名:");
String user_Name = sc.nextLine();
user_Name = tn.nameRegex(user_Name);// 正则表达式判断
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (user_Name.equals(per.getuser_Name())) {
System.out.println("id: " + per.getuser_Id() + " 姓名:" + per.getuser_Name() + " 性别:"
+ per.getuser_Sex() + " 年龄:" + per.getuser_Age() + " 手机号:" + per.getuser_TelNum() + " 住址:"
+ per.getuser_Address());
flag = 0;
}
}
if (flag == 1) {
System.out.println("还某有添加这个嘞!");
}
}
// 2按年龄查找
private void ageSearch() {
System.out.println("请输入年龄:");
String user_age = sc.nextLine();
user_age = tn.age(user_age);
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (user_age.equals(per.getuser_Age())) {
System.out.println("id: " + per.getuser_Id() + " 年龄:" + per.getuser_Age() + " 性别:" + per.getuser_Sex()
+ " 姓名:" + per.getuser_Name() + " 手机号:" + per.getuser_TelNum() + " 住址:"
+ per.getuser_Address());
flag = 0;
}
}
if (flag == 1) {
System.out.println("还某有添加这个嘞!");
}
}
// 3按性别查找
private void sexSearch() {
System.out.println("请输入性别:");
String user_sex = sc.nextLine();
user_sex = tn.sexRegex(user_sex);
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (user_sex.equals(per.getuser_Sex())) {
System.out.println("id: " + per.getuser_Id() + " 性别:" + per.getuser_Sex() + " 姓名:"
+ per.getuser_Name() + " 年龄:" + per.getuser_Age() + " 手机号:" + per.getuser_TelNum() + " 住址:"
+ per.getuser_Address());
flag = 0;
}
}
if (flag == 1) {
System.out.println("还某有添加这个嘞!");
}
}
// 4按号码查找
private void numberSearch() {
System.out.println("请输入号码:");
String user_TelNum = sc.nextLine();
user_TelNum = tn.telRegex(user_TelNum);// 判断
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (user_TelNum.equals(per.getuser_TelNum())) {
System.out.println("id: " + per.getuser_Id() + " 手机号:" + per.getuser_TelNum() + " 性别:"
+ per.getuser_Sex() + " 年龄:" + per.getuser_Age() + " 姓名:" + per.getuser_Name() + " 住址:"
+ per.getuser_Address());
flag = 0;
}
}
if (flag == 1) {
System.out.println("还某有添加这个嘞!");
}
}
// 5按住址查找
private void addressSearch() {
System.out.println("请输入住址:");
String user_Address = sc.nextLine();
user_Address = tn.addressRegex(user_Address);// 判断
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (user_Address.equals(per.getuser_Address())) {
System.out.println("id: " + per.getuser_Id() + " 手机号:" + per.getuser_TelNum() + " 性别:"
+ per.getuser_Sex() + " 年龄:" + per.getuser_Age() + " 姓名:" + per.getuser_Name() + " 住址:"
+ per.getuser_Address());
flag = 0;
}
}
if (flag == 1) {
System.out.println("还某有添加这个嘞!");
}
}
// 三修改记录------------------------------------------------------------------------
public void modlogic() throws Exception {
String num = sc.nextLine();
// 判断用户输入的操作是否正确
if (num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4") || num.equals("5")
|| num.equals("6") || num.equals("7")) {
switch (num) {
case "1":
nameMod();
m.modMenu();
break;// 1修改姓名
case "2":
ageMod();
m.modMenu();
break;// 2修改年齡
case "3":
sexMod();
m.modMenu();
break;// 3 修改性別
case "4":
numberMod();
m.modMenu();
break;// 4 修改电话
case "5":
addressMod();
m.modMenu();
break;// 5 修改地址
case "6":
display();
m.modMenu();
break;// 6 查看修改记录
case "7":
m.show();
break;// 7 返回上一级
}
} else {
System.out.println("操作有问题呀!:");
modlogic();
}
}
private void addressMod() {
System.out.println("你想修改谁的地址:");
String modname1 = sc.nextLine();
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (modname1.equals(per.getuser_Name())) {
System.out.println("想改到那:");
String modaddress = sc.nextLine();
modaddress = tn.addressRegex(modaddress);
per.setuser_Address(modaddress);
flag = 0;
}
}
if (flag == 1) {
System.out.println("某有这个人!");
} else {
System.out.println("修改完毕!");
}
}
private void numberMod() {
System.out.println("你想修改谁的电话:");
String modname1 = sc.nextLine();
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (modname1.equals(per.getuser_Name())) {
System.out.println("想改成啥:");
String modtel = sc.nextLine();
modtel = tn.telRegex(modtel);
per.setuser_TelNum(modtel);
flag = 0;
}
}
if (flag == 1) {
System.out.println("某有这个人!");
} else {
System.out.println("修改完毕!");
}
}
private void sexMod() {
System.out.println("谁要变性??:");
String modname1 = sc.nextLine();
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (modname1.equals(per.getuser_Name())) {
System.out.println("请输入m/M f/F:");
String modsex = sc.nextLine();
modsex = tn.sexRegex(modsex);
per.setuser_Sex(modsex);
flag = 0;
}
}
if (flag == 1) {
System.out.println("某有这个人!");
} else {
System.out.println("修改完毕!");
}
}
private void ageMod() {
System.out.println("你想修改谁的年龄");
String modname1 = sc.nextLine();
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (modname1.equals(per.getuser_Name())) {
System.out.println("想改到几岁");
String modage = sc.nextLine();
modage = tn.age(modage);
per.setuser_Age(modage);
flag = 0;
}
}
if (flag == 1) {
System.out.println("某有这个人!");
} else {
System.out.println("修改完毕!");
}
}
private void nameMod() {
System.out.println("你想修改谁的姓名");
String modname1 = sc.nextLine();
int flag = 1;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (modname1.equals(per.getuser_Name())) {
System.out.println("想改成啥:");
String modname2 = sc.nextLine();
modname2 = tn.nameRegex(modname2);// 对用户名再次判断
per.setuser_Name(modname2);
flag = 0;
}
}
if (flag == 1) {
System.out.println("某有这个人!");
} else {
System.out.println("修改完毕!");
}
}
// 删除----------------------------------------------------------
public void deleteLogic() throws Exception {
String num = sc.nextLine();
// 判断用户输入的操作是否正确
if (num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4")) {
switch (num) {
case "1":
removeAll();// 1删除所有
m.deleteMenu();
break;
case "2":
removeName();// 2指定姓名删除
m.deleteMenu();
break;
case "3"://3查看记录
display();
m.deleteMenu();
break;
case "4": // 4 返回上一级
m.show();
break;
}
} else {
System.out.println("操作有问题呀!:");
deleteLogic();
}
}
// 1删除所有
private void removeAll() {
list.removeAll(list);
System.out.println("已删除所有记录");
}
// 2指定姓名删除
private void removeName() {
System.out.println("请输入要删除的人姓名:");
String name = sc.nextLine();
int flog = 0;
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person per = it.next();
if (name.equals(per.getuser_Name())) {
it.remove();
System.out.println("删除成功!");
flog = 1;
}
}
if (flog == 0) {
System.out.println("删除失败 没有该人员!");
}
}
//排序-------------------------------------------------------------
public void orderLogic() throws Exception {
String num = sc.nextLine();
// 判断用户输入的操作是否正确
if (num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4") || num.equals("5")
|| num.equals("6")|| num.equals("7")) {
switch (num) {
case "1":
nameOrder();
m.orderMenu();
break;// 1排序姓名
case "2":
ageOrder();
m.orderMenu();
break;// 2排序年齡
case "3":
idOrder();
m.orderMenu();
break;// 3 排序ID
case "4":
numberOrder();
m.orderMenu();
break;// 4 排序电话
case "5":
addressOrder();
m.orderMenu();
break;// 5 排序地址
case "6":
display();
m.orderMenu();
break;// 6 查看记录
case "7":
m.show();
break;// 7 返回上一级
}
} else {
System.out.println("操作有问题呀!:");
orderLogic();
}
}
//1排序姓名
private void nameOrder() {
Collections.sort(list,new NameComparator());
System.out.println("排序完成");
}
//2排序年齡
private void numberOrder() {
Collections.sort(list,new TelComparator());
System.out.println("排序完成");
}
// 3 排序ID
private void idOrder() {
Collections.sort(list,new idComparator());
System.out.println("排序完成");
}
// 4 排序电话
private void ageOrder() {
Collections.sort(list,new AgeComparator());
System.out.println("排序完成");
}
// 5 排序地址
private void addressOrder() {
Collections.sort(list,new AddressComparator());
System.out.println("排序完成");
}
//自定义姓名排序类
class NameComparator implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return o1.getuser_Name().compareTo(o2.getuser_Name());
}
}
//自定义id排序类
class idComparator implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return Integer.valueOf(o1.getuser_Id()).compareTo(Integer.valueOf(o2.getuser_Id()));
}
}
//自定义年齡排序类
class AgeComparator implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return Integer.valueOf(o1.getuser_Age()).compareTo(Integer.valueOf(o2.getuser_Age()));
}
}
//自定义手机号排序类
class TelComparator implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return o1.getuser_TelNum().compareTo(o2.getuser_TelNum());
}
}
//自定义地址排序类
class AddressComparator implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return o1.getuser_Address().compareTo(o2.getuser_Address());
}
}
}
package phone;
import java.util.Scanner;
public class Menu {
Operate o = new Operate();
//一级窗口
public void show() throws Exception {
System.out.println("------------------------\r\n" + " 1 添加纪录\r\n" + " 2 查找记录\r\n" + " 3 修改记录\r\n"
+ " 4 删除记录\r\n" + " 5 排序记录\r\n" + " 6 退出系统\r\n" + "------------------------\r\n" + "请输入1-6的正确操作!");
Scanner sc = new Scanner(System.in);
while (true) {
String num = sc.nextLine();
// 输入一个String类型的数判断是否为正确的操作
if (num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4") || num.equals("5")
|| num.equals("6")) {
switch (num) {
case "1":
addMenu();// 添加记录
break;
case "2":
seeMenu();// 查找记录
break;
case "3":
modMenu();// 修改记录
break;
case "4":
deleteMenu();// 删除
break;
case "5":
orderMenu();// 排序记录
break;
case "6":
System.out.println("Bye!");
System.exit(0);
break;
}
break;
} else {
System.out.println("你的输入有误,请重新输入!");
num = sc.nextLine();
}
}
}
// 添加纪录2级窗口
public void addMenu() throws Exception {
System.out.println("------1:添加新记录------");
System.out.println("------2:查看全记录------");
System.out.println("------3:返回上一级------");
System.out.println("请输入要进行的操作:");
o.addlogic();//添加控制
}
// 查找联系人二级窗口
public void seeMenu() throws Exception {
System.out.println("-------2查找记录--------");
System.out.println("----------------------");
System.out.println(" 1 按姓名查找");
System.out.println(" 2 按年龄查找");
System.out.println(" 3 按性别查找");
System.out.println(" 4 按号码查找");
System.out.println(" 5 按住址查找");
System.out.println(" 6 查看全记录");
System.out.println(" 7 返回上一级");
System.out.println("----------------------");
System.out.println("请输入正确的数字,最小是:1 最大是:7");
o.searchlogic();
}
// 修改联系人信息二级窗口
public void modMenu() throws Exception {
System.out.println("-------3修改记录----------");
System.out.println("------------------------");
System.out.println(" 1修改姓名");
System.out.println(" 2修改性别");
System.out.println(" 3修改年龄");
System.out.println(" 4修改号码");
System.out.println(" 5修改住址");
System.out.println(" 6查看修改记录");
System.out.println(" 7返回上一级");
System.out.println("------------------------");
o.modlogic();
}
// 删除联系人
public void deleteMenu() throws Exception{
System.out.println("-------4删除记录----------");
System.out.println("-------------------------");
System.out.println(" 1删除所有记录");
System.out.println(" 2删除指定人记录");
System.out.println(" 3查看记录");
System.out.println(" 4返回上一级");
System.out.println("-------------------------");
o.deleteLogic();
}
// 排序联系人信息
public void orderMenu() throws Exception{
System.out.println("-------5排序记录----------");
System.out.println("-------------------------");
System.out.println(" 1按姓名排序");
System.out.println(" 2按年龄排序");
System.out.println(" 3按ID排序");
System.out.println(" 4按手机号排序");
System.out.println(" 5按地址排序");
System.out.println(" 6查看记录");
System.out.println(" 7返回上一级");
System.out.println("-------------------------");
o.orderLogic();
}
}
package phone;
import java.util.Scanner;
public // 操作验证类
class TelNoteRegex {
Scanner sc = new Scanner(System.in);
// 验证名字
public String nameRegex(String Name) {
while (!checkName(Name)) {
System.out.println("用户名不合法,请重新输入:");
Name = sc.nextLine();
}
return Name;
}
//
public static boolean checkName(String Name) {
if (Name.length() <= 15 && Name.length() >= 1) {
// char c = Name.charAt(0);
//^(([\u4e00-\u9fa5]{2,8})|([a-zA-Z]{2,16}))$
if (Name.matches("^(([\\u4e00-\\u9fa5]{2,8})|([a-zA-Z]{1,16}))$")) {
return true;
} else {
return false;
}
} else {
return false;
}
}
// 对年龄验证
public String age(String age) {
// System.out.println("请输入年龄,1-100");
Scanner scan = new Scanner(System.in);
// String age1 = "";
while (!age.matches("[0-9]{1,2}")) {
System.out.println("你的输入有误,请重新输入年龄,1-100");
age = scan.nextLine();
}
return age;
}
// 验证性别
public String sexRegex(String sex) {
while (true) {
if (!(sex.equals("m") || sex.equals("f") || sex.equals("M") || sex.equals("F"))) {
System.out.println("输入有误,请重新输入");
sex = sc.nextLine();
} else {
break;
}
}
return sex;
}
// 验证手机号
public String telRegex(String telNum) {
while (true) {
if (isMobile(telNum)) {
System.out.println(telNum + "是符合的手机号码");
break;
} else {
System.out.println(telNum + "不符合,请重新输入!");
telNum = sc.next();
}
}
return telNum;
}
public static boolean isMobile(String str) {
if (str.length() <= 11 && str.length() >= 6) {
// char c = str.charAt(0);
if (str.matches("^(1[3-9])\\d{9}$")) {
return true;
} else {
return false;
}
} else {
return false;
}
}
// 验证地址
public String addressRegex(String address) {
while (true) {
int len = address.length();
if (len > 15 || len < 1) {
System.out.println("您的输入操作不正确!请重新输入");
address = sc.next();
address = addressRegex(address);
} else {
break;
}
}
return address;
}
}