App 主方法:程序入口
package Test;
public class App{
public static void main(String[] args) {
Operate operate=new Operate();
operate.mainLogic();
}
}
Menu方法:打印出菜单窗口
package Test;
public class Menu {
public static void mainMenu(){
System.out.println("**************************");
System.out.println("** 0.查看全记录 **");
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("**************************");
}
public void addMenu (){
System.out.println("***************************");
System.out.println("** 1.查看全记录 **");
System.out.println("** 2.添加新纪录 **");
System.out.println("** 3.返回上一级 **");
System.out.println("***************************");
}
public void searchMenu (){
System.out.println("***************************");
System.out.println("** 1.按姓名查找 **");
System.out.println("** 2.查看全记录 **");
System.out.println("** 3.返回上一级 **");
System.out.println("***************************");
}
public void modifyMenu (){
System.out.println("***************************");
System.out.println("** 1.修改指定记录 **");
System.out.println("** 2.返回上一级 **");
System.out.println("** 3.查看全纪录 **");
System.out.println("***************************");
}
public void subModifyMenu (){
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("*************************");
} // 修改用户信息子菜单
public void deleteMenu (){
System.out.println("***************************");
System.out.println("** 1.删除指定记录 **");
System.out.println("** 2.删除全部记录 **");
System.out.println("** 3.返回上一级 **");
System.out.println("** 4.查看全纪录 **");
System.out.println("***************************");
}
public void orderMenu (){
System.out.println("****************************");
System.out.println("** 1.按姓名排序 **");
System.out.println("** 2.返回上一级 **");
System.out.println("** 5.查看全纪录 **");
System.out.println("****************************");
}
}
Operate方法:实际执行操作方法
package Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Operate{
Scanner in=new Scanner(System.in);
Menu menu=new Menu();
ArrayList<Person> list=new ArrayList<>();
TelNoteRegex t=new TelNoteRegex();
int num=1;
int s1;
String a;
public void addFirst(){
Person per0=new Person("王新源","19","男","1234567","安阳师范学院");
Person per1=new Person("张三","19","男","123457","安阳师范学院");
Person per2=new Person("李四","19","男","234567","安阳师范学院");
list.add(per0);
list.add(per1);
list.add(per2);
System.out.println("一键添加成功!");
}
// 主程序逻辑,包含主菜单
public void mainLogic(){
Menu.mainMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>=0&&s1<=7){
switch (s1) {
case 0 :showAll();break;
case 1 : addLogic();break;
case 2 : searchLogic();break;
case 3 : modifyLogic();break;
case 4 : deleteLogic();break;
case 5 : orderLogic();break;
case 6 : addFirst();break;
case 7 : System.exit(0);
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void addLogic(){
menu.addMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>0&&s1<4){
switch (s1) {
case 1 : showAll();break;
case 2 : addOperation();break;
default : mainLogic();break;
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void addOperation (){
System.out.println("请输入您的姓名:(字母、数字或汉字)");
String name=in.next();
System.out.println("请输入您的年龄:(0~99)");
String age=in.next();
age=t.ageRegex(age);
System.out.println("请输入您的性别:(男or女)");
String sex=in.next();
sex=t.sexRegex(sex);
System.out.println("请输入您的联系方式:(6~11位数字)");
String telnum=in.next();
telnum=t.telNumRegex(telnum);
System.out.println("请输入您的住址:(字母、数字或汉字)");
String address=in.next();
num++;
Person per=new Person(name,age,sex,telnum,address);
list.add(per);//将per加入集合
System.out.println("添加成功!");
System.out.println("是否继续添加? 是:1 否:0");
String s=in.next();
if(s.equals("0")){
addLogic();
}else addOperation();
}
public void showAll() {// 查询全部用户信息
Iterator<Person> it =list.iterator();
if(list.isEmpty()){
System.out.println("当前系统没有学生信息,请先添加!");
mainLogic();
}else{
int id=1;
while (it.hasNext()){
Person person=it.next();
person.setId(id++);
System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
" 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
}
switch (s1) {
case 0 : mainLogic();break;
case 1 : addLogic();break;
case 2 : searchLogic();break;
case 3 : modifyLogic();break;
case 4 : deleteLogic();break;
case 5 : orderLogic();break;
}
}
}
public void searchLogic() {
menu.searchMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>=1&&s1<7){
switch (s1) {
case 1 : searchByName();
case 2 : showAll();
case 3 : mainLogic();
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void searchByName(){
System.out.println("请输入您要查找的联系人姓名:");
boolean b=true;
String na=in.next();
for (Person p : list) {
if (na.equals(p.getName())) {
System.out.println(p);
b = false;
}
}
if(b){
System.out.println("您所要查找的联系人不存在!");
}
searchLogic();
}
public void modifyLogic(){
menu.modifyMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>0&&s1<4){
switch (s1) {
case 1 : modify();break;
case 2 : mainLogic();break;
case 3 : showAll();break;
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void modify() {
Iterator<Person> it =list.iterator();
if(list.isEmpty()){
System.out.println("当前系统没有学生信息,请先添加!");
mainLogic();
}else {
int id=1;
while (it.hasNext()){
Person person=it.next();
person.setId(id++);
System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
" 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
}
System.out.println("请输入您要修改的联系人序号:");
String b=in.next();
b=t.aRegex(b);
int itemNum= Integer.parseInt(b);
menu.subModifyMenu();
System.out.println("请选择操作:");
while (true){
a=in.next();
a=t.aRegex(a);
int s3= Integer.parseInt(a);
if(s3>0&&s3<7){
switch (s3) {
case 1 : {
System.out.println("请输入要修改的姓名:");
String name = in.next();
(this.list.get(itemNum - 1)).setName(name);
System.out.println("修改成功!");
modifyLogic();break;
}
case 2 : {
System.out.println("请输入要修改的年龄:");
String age = in.next();
(this.list.get(itemNum - 1)).setAge(age);
System.out.println("修改成功!");
modifyLogic();break;
}
case 3 : {
System.out.println("请输入要修改的性别:");
String sex = in.next();
(this.list.get(itemNum - 1)).setSex(sex);
System.out.println("修改成功!");
modifyLogic();break;
}
case 4 : {
System.out.println("请输入要修改的号码:");
String telNum = in.next();
(this.list.get(itemNum - 1)).setTelNum(telNum);
System.out.println("修改成功!");
modifyLogic();break;
}
case 5 : {
System.out.println("请输入要修改的住址:");
String address = in.next();
(this.list.get(itemNum - 1)).setAddress(address);
System.out.println("修改成功!");
modifyLogic();break;
}
case 6 : modifyLogic();break;
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
} // 修改指定记录信息
public void deleteLogic() {
menu.deleteMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>0&&s1<5){
switch (s1) {
case 1 : delete();break;
case 2 : deleteAll();break;
case 3 : mainLogic();break;
case 4 : showAll();break;
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void delete() {
int id=1;
Iterator<Person> it1 =list.iterator();
while (it1.hasNext()){
Person person=it1.next();
person.setId(id++);
System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
" 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
}
System.out.println("请输入您要删除的联系人序号:");
boolean b=true;
Integer s2=in.nextInt();
Iterator<Person> it =list.iterator();
while(it.hasNext()){
Person p=it.next();
if(s2.equals(p.getId())){
it.remove();
System.out.println("删除成功!");
b=false;
}
}
if(b){
System.out.println("您所要删除的联系人不存在!");
}
deleteLogic();
}
public void deleteAll(){
this.list.clear();
System.out.println("删除成功!");
deleteLogic();
}
public void orderLogic(){
menu.orderMenu();
while (true){
a=in.next();
a=t.aRegex(a);
s1= Integer.parseInt(a);
if(s1>0&s1<3|s1==5){
switch (s1) {
case 1 : orderName();break;
case 2 : mainLogic();break;
case 5 : showAll();break;
}
}else{
System.out.println("输入错误!请重新输入:");
}
}
}
public void orderName() {
list.sort(new OrderByName());
for(int i=0;i<this.list.size();i++){
(this.list.get(i)).setId(i+1);
}
System.out.println("排序成功!");
showAll();
}
}
OrderByName方法:按汉字姓名首字母排序
package Test;
import java.text.Collator;
import java.util.Comparator;
public class OrderByName implements Comparator<Person> {
public int compare(Person o1,Person o2){
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
//return o2.getName().compareTo(o1.getName());
return com.compare(o1.getName(), o2.getName());
}
}
Person方法:传入参数
package Test;
public class Person{
private int id;
private String name;
private String age;
private String sex;
private String telNum;
private String address;
public Person(String name, String age, String sex, String telNum, String address){
this.name=name;
this.age = age;
this.sex = sex;
this.telNum = telNum;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTelNum() {
return telNum;
}
public void setTelNum(String telNum) {
this.telNum = telNum;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String toString(){
return "序号:"+id+" 姓名:"+name+" 年龄:"+age+" 性别:"+sex+" 电话:"+telNum+" 住址:"+address;
}
}
TelNoteRegx方法:用正则表达式对用户输入的操作选项和内容进行验证
package Test;
import java.util.Scanner;
public class TelNoteRegex{
Scanner in=new Scanner(System.in);
public String ageRegex (String age){
String regex="[0-9]{1,2}";
while (true){
if(age.matches(regex)){
break;
}else {
System.out.println("输入错误!请重新输入:");
age=in.next();
}
}
return age;
}
public String sexRegex (String sex){
String regex="[男女]";
while (true){
if(sex.matches(regex)){
break;
}else {
System.out.println("输入错误!请重新输入:");
sex=in.next();
}
}
return sex;
}
public String telNumRegex (String telnum){
String regex="[0-9]{6,11}";
while(true){
if(telnum.matches(regex)){
break;
}else{
System.out.println("输入错误!请重新输入:");
telnum=in.next();
}
}
return telnum;
}
public String aRegex(String a){
String regex="[0-9]";
while (true){
if(a.matches(regex)){
break;
}else {
System.out.println("输入错误!请重新输入:");
a=in.next();
}
}
return a;
}
}