java实现简单控制台通讯录

网友投稿 291 2023-02-16


java实现简单控制台通讯录

通过主菜单对各级子菜单进行控制,并实现添加记录,查找记录,删除记录,修改记录,排序记录,以及退出系统功能的实现。一共六部分的功能模块。

上面的图就是每个模块具有的功能,而且还用到了正则表达式判断输入的是否符合规则,这个系统体现了MVC的设计模式,分工调用很清晰。

主要包含了下面几个类:

APP类:程序的主函数类,程序开始的入口

Menu类:里面都是简单页面显示的效果,没有功能的实现。

TelNoteRegex类:正则表达式,判断是否输入合格,都在这个方法中。

Operate类:业务逻辑类,全部功能的实现基本都集中在这个类中。

Person类:封装数据。

具体的实现代码:

App类的实现代码:

package com.bjsxt.iphone;

public class App {

public static void main(String[] args) {

new App().start();

}

public void start(){

Menu m=new Menu();

Operate o=new Operate();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.mainMenu();

int key=reg.menuRegex(1, 6);

switch(key){

case 1:

o.addLogic();

break;

case 2:

o.searchLogic();

break;

case 3:

o.modifyLogicLogic();

break;

case 4:

o.deleteLogic();

break;

case 5:

o.orderLogic();

break;

case 6:

System.exit(0);

break;

}

}

}

}

Person类具体的实现代码:

package com.bjsxt.iphone;

public class Person {

private int id;//用户ID属性

private String name;//用户姓名属性

private String age;//用户年龄属性

private String sex;//用户性别属性

private String telNum;//用户电话号码属性

private String address;//用户地址属性

public Person(){}

public Person(int id,String name,String age,String sex,String telNum,String address){

this.id=id;

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;

}

}

TelNoteRegex类具体代码:

package com.bjsxt.iphone;

import java.util.Scanner;

public class TelNoteRegex {

//对菜单项校验

@SuppressWarnings("resource")

public int menuRegex(int min,int max){

String regex="[0-9]{1}";

Scanner sc=new Scanner(System.in);

while(true){

String input=sc.nextLine();

//根据合法性的校验

if(input.matches(regex)){

int key=Integer.parseInt(input);

if(key>=min && key<=max){

return key;

}else{

System.out.println("输入的菜单项不符合要求!");

}

}else{

System.out.println("输入内容不正确!");

}

}

}

//用户输入姓名的验证

@SuppressWarnings("resource")

public String nameRegex(String name){

String pattern ="[\\u4e00-\\u9fa5]+";

String str=name;

Scanner sc=new Scanner(System.in);

while(true){

if(str.matches(pattern)){

return str;

}else{

System.out.println("输入不合法字符,请重新输入中文汉字");

str=sc.nextLine();

continue;

}

}

}

//用户输入年龄的验证

@SuppressWarnings("resource")

public String ageRegex(String age){

String pattern ="^([0-9]|[0-9]{2}|100)$";

String str=age;

Scanner sc=new Scanner(System.in);

while(true){

if(str.matches(pattern)){

return str;

}else{

System.out.println("输入不合法字符,请重新输入数字");

str=sc.nextLine();

continue;

}

}

}

//用户性别的验证

@SuppressWarnings("resource")

public String sexRegex(String sex){

String pattern ="[男女MmFf]";

String str=sex;

Scanner sc=new Scanner(System.in);

while(true){

if(str.matches(pattern)){

return str;

}else{

System.out.println("输入不合法字符,请重新输入男女MmFf");

str=sc.nextLine();

continue;

}

}

}

//用户输入电话号码的验证

@SuppressWarnings("resource")

public String telNumRegex(String telNum){

String pattern ="[0-9]{11}";

String str=telNum;

Scanner sc=new Scanner(System.in);

while(true){

if(str.matches(pattern)){

return str;

}else{

System.out.println("输入不合法字符,请重新输入11位的手机号码");

str=sc.nextLine();

continue;

}

}

}

//用户输入地址的验证

@SuppressWarnings("resource")

public String addressRegex(String address){

String pattern ="[a-zA-Z[0-9]]{1,15}";

String str=address;

Scanner sc=new Scanner(System.in);

while(true){

if(str.matches(pattern)){

return str;

}else{

System.out.println("输入不合法字符,请重新输入1到15个英文大小写或是数字");

str=sc.nextLine();

continue;

}

}

}

}

Menu类代码的具体实现:

package com.bjsxt.iphone;

public class Menu {

//主界面

public void mainMenu() {

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("*************************");

}

//添加界面

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("** 4 按号码查找 **");

System.out.println("** 5 按住址查找 **");

System.out.println("** 6 查看全记录 **");

System.out.println("** 7 返回上一级 **");

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("** 6 返回上一级 **");

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("** 3 按性别排序 **");

System.out.println("** 4 查看全部记录 **");

System.out.println("** 5 返回上一级 **");

System.out.println("*************************");

}

}

Operate类的具体实现:

package com.bjsxt.iphone;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Iterator;

import java.util.List;

import java.util.Scanner;

public class Operate{

private List list=new ArrayList();

//用户添加信息业务逻辑控制

public void addLogic(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.addMenu();

int key=reg.menuRegex(1, 3);

switch(key){

case 1:

addOperation ();

break;

case 2:

showAll();

break;

case 3:

return;

}

}

}

//用户查询信息业务逻辑控

public void searchLogic(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.searchMenu();

int key=reg.menuRegex(1, 7);

switch(key){

case 1:

searchByName();

break;

case 2:

searchByAge();

break;

case 3:

searchBySex();

break;

case 4:

searchByTelNum();

break;

case 5:

searchByAdd();

break;

case 6:

showAll();

break;

case 7:

return;

}

}

}

//修改信息业务逻辑控制

public void modifyLogicLogic(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.modifyMenu();

int key=reg.menuRegex(1, 3);

switch(key){

case 1:

showAll();

break;

case 2:

modifyLogicLogic1();

break;

case 3:

return;

}

}

}

//修改有三层跳转

public void modifyLogicLogic1(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.subModifyMenu();

int key=reg.menuRegex(1, 6);

switch(key){

case 1:

nameModify();

break;

case 2:

ageModify();

break;

case 3:

sexModify();

break;

case 4:

telNumModify();

break;

case 5:

addressModify();

break;

case 6:

return;

}

}

}

//删除信息业务逻辑控制

public void deleteLogic(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.deleteMenu();

int key=reg.menuRegex(1, 4);

switch(key){

case 1:

showAll();

break;

case 2:

delete();

break;

case 3:

deleteAll();

break;

case 4:

return;

}

}

}

//排序信息业务逻辑控制

public void orderLogic(){

Menu m=new Menu();

TelNoteRegex reg=new TelNoteRegex();

while(true){

m.orderMenu();

int key=reg.menuRegex(1, 5);

switch(key){

case 1:

orderName();

break;

case 2:

orderAge();

break;

case 3:

orderSex();

break;

case 4:

showAll();

break;

case 5:

return;

}

}

}

//添加新用户信息

@SuppressWarnings("resource"ikklGD)

public void addOperation (){

TelNoteRegex reg=new TelNoteRegex();

Scanner sc=new Scanner(System.in);

System.out.println("请输入联系人id:");

String id=sc.nextLine();

System.out.println("请输入要添加的姓名:");

String name=sc.nextLine();

name=reg.nameRegex(name);

System.out.println("请输入要添加的年龄:");

String age=sc.nextLine();

age=reg.ageRegex(age);

System.out.println("请输入要添加的性别:");

String sex=sc.nextLine();

sex=reg.sexRegex(sex);

System.out.println("请输入要添加的手机号码:");

String telNum=sc.nextLine();

telNum=reg.telNumRegex(telNum);

System.out.println("请输入要添加的地址:");

String address=sc.nextLine();

address=reg.addressRegex(address);

int personId=Integer.parseInt(id);

Person p=new Person(personId,name,age,sex,telNum,address);

list.add(p);

}

// //判断序号是否已经存在插入成功失败

// @SuppressWarnings("resource")

// public String judgeId(String id){

// Scanner sc=new Scanner(System.in);

// Iterator it=list.iterator();

// String newId=id;

// while(it.hasNext()){

// Person p=(Person)it.next();

// if(newId.equals(p.getId())){

// System.out.println("此序号已经存在,请重新输入序号");

// newId=sc.nextLine();

// continue;

// }else{

// return newId;

// }

// }

// return id;

// }

//查询全部用户信息

public void showAll(){

System.out.println("序号\t\t"+"姓名\t\t"+"年龄\t\t"+"性别\t\t"+"手机号\t\t"+"地址");

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

//按姓名查询用户信息

@SuppressWarnings("resource")

public void searchByName(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("输入你要查询的姓名:");

Scanner sc=new Scanner(System.in);

String name=sc.nextLine();

name=reg.nameRegex(name);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(name.equals(p.getName())){

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

}

//按年龄查询用户信息

@SuppressWarnings("resource")

public void searchByAge(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("输入你要查询的年龄:");

Scanner sc=new Scanner(System.in);

String age=sc.nextLine();

age=reg.ageRegex(age);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(age.equals(p.getAge())){

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

}

//按性别查询用户信息

@SuppressWarnings("resource")

public void searchBySex(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("输入你要查询的性别:");

Scanner sc=new Scanner(System.in);

String sex=sc.nextLine();

sex=reg.sexRegex(sex);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(sex.equals(p.getSex())){

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

}

//按电话号码查询用户信息

@SuppressWarnings("resource")

public void searchByTelNum(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("输入你要查询的电话号码:");

Scanner sc=new Scanner(System.in);

String telNum=sc.nextLine();

telNum=reg.telNumRegex(telNum);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(telNum.equals(p.getTelNum())){

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

}

//按地址查询用户信息

@SuppressWarnings("resource")

public void searchByAdd(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("输入你要查询的地址:");

Scanner sc=new Scanner(System.in);

String address=sc.nextLine();

address=reg.addressRegex(address);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(address.equals(p.getAddress())){

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}

}

}

// //修改指定记录信息

// public void modify(){

// System.out.println("请输入你要修改的信息:");

//

// }

//修改姓名信息

@SuppressWarnings("resource")

public void nameModify(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("请输入你要修改的序号:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

System.out.println("请输入你要修改的姓名:");

String name=sc.nextLine();

name=reg.nameRegex(name);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

p.setName(name);

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}else{

System.out.println("修改失败,请重试!");

}

}

}

//修改年龄信息

@SuppressWarnings("resource")

public void ageModify(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("请输入你要修改的序号:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

System.out.println("请输入你要修改的年龄:");

String age=sc.nextLine();

age=reg.ageRegex(age);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

p.setAge(age);

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}else{

System.out.println("修改失败,请重试!");

}

}

}

//修改性别信息

@SuppressWarnings("resource")

public void sexModify(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("请输入你要修改的序号:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

System.out.println("请输入你要修改的性别:");

String sex=sc.nextLine();

sex=reg.sexRegex(sex);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

p.setSex(sex);

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}else{

System.out.println("修改失败,请重试!");

}

}

}

//修改号码信息

@SuppressWarnings("resource")

public void telNumModify(){

System.out.println("请输入你要修改的序号:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

System.out.println("请输入你要修改的电话号码:");

String telNum=sc.nextLine();

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

p.setTelNum(telNum);

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}else{

System.out.println("修改失败,请重试!");

}

}

}

//修改地址信息

@SuppressWarnings("resource")

public void addressModify(){

TelNoteRegex reg=new TelNoteRegex();

System.out.println("请输入你要修改的序号:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

System.out.println("请输入你要修改的地址:");

String address=sc.nextLine();

address=reg.addressRegex(address);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

p.setAddress(address);

System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());

}else{

System.out.println("修改失败,请重试!");

}

}

}

//删除指定用户信息

@SuppressWarnings("resource")

public void delete(){

System.out.println("请输入你要删除的id:");

Scanner sc=new Scanner(System.in);

String num=sc.nextLine();

int id=Integer.parseInt(num);

Iterator it=list.iterator();

while(it.hasNext()){

Person p=(Person)it.next();

if(id==p.getId()){

list.remove(id);

System.out.println("删除成功");

}else{

System.out.println("删除失败");

}

}

}

//删除全部用户信息

public void deleteAll(){

list.clear();

System.out.println("删除成功");

}

//按用户姓名排序信息

public void orderName(){

Comparator comparator=new Comparator(){

@Override

public int compare(Person o1, Person o2) {

return o1.getName().compareTo(o2.getName());

}

};

Collections.sort(list,comparator);

showAll();

}

//按用户年龄排序信息

public void orderAge(){

Comparator comparator=new Comparator(){

@Override

public int compare(Person o1, Person o2) {

return o1.getAge().compareTo(o2.getAge());

}

};

Collections.sort(list,comparator);

showAll();

}

//按用户性别排序信息

public void orderSex(){

Comparator comparator=new Comparator(){

@Override

public int compare(Person o1, Person o2) {

return o1.getSex().compareTo(o2.getSex());

}

};

Collections.sort(list,comparator);

showAll();

}

}

总结:这个项目让我很清晰可以明白什么是面向对象,为什么说是java是面向对象的编程语言,程序的代码都是对象在调用,也明白一个项目应该如何分工明确进行书写,功能和视图要分开,每个类都有自己特定的功能,各个类的功能不要相互卸载一起,这样的代码基本是复用不高的,如果分开明确,以后再添加功能模块的时候,只需要增加功能,无需修改之前的代码,很好的体现了开闭原则,对功能开发,对修改内容关闭,这个项目也体现了MVC的设计模式,对我而言,这个项目让我受益匪浅。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现科研信息管理系统
下一篇:浅谈Spring Cloud Ribbon的原理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~