CMUtility.java
package com.atguigu.p2;
import java.util.*;
public class CMUtility {
private static Scanner scanner=new Scanner(System.in);
/**
* 用于界面菜单的选择。该方法读取键盘,如果用户键入'1'-'5'中的任意字符,则方法返回。返回值为用户的键入值
*/
public static char readMenuSelection(){
char c;
for(;;){
String str=readKeyBoard(1,false);
c=str.charAt(0);
if(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'){
System.out.println("选择错误,请重新输入");
}
else break;
}
return c;
}
/**
* 从键盘读取一个字符,并将其作为方法的返回值
*/
public static char readChar(){
String str=readKeyBoard(1,false);
return str.charAt(0);
}
/**
* 从键盘读取一个字符,并将其作为方法的返回值。
* 如果用户不输入字符而直接回车,方法将以defaultValue作为返回值。
*/
public static char readChar(char defaultValue){
String str=readKeyBoard(1,true);
return(str.length()==0)?defaultValue:str.charAt(0);
}
/**
* 从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
*/
public static int redInt(){
int n;
for(;;){
String str=readKeyBoard(2,false);
try{
n=Integer.parseInt(str);
break;
}
catch(NumberFormatException e){
System.out.print("数字输入错误,请重新输入");
}
}
return n;
}
/**
* 从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值
* 如果用户不输入字符而直接回车,方法将以defaultValue作为返回值
*/
public static int readInt(int defaultValue){
int n;
for(;;){
String str=readKeyBoard(2,true);
if(str.equals("")){
return defaultValue;
}
try{
n=Integer.parseInt(str);
break;
}
catch(NumberFormatException e){
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
* 从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值
*/
public static String readString(int limit){
return readKeyBoard(limit,false);
}
/**
* 从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值
* 如果用户不输入字符而直接回车,方法将以defaultValue作为返回值
*/
public static String readString(int limit,String defaultValue){
String str=readKeyBoard(limit,true);
return str.equals("")?defaultValue:str;
}
/**
* 用于确认选择的输入。该方法从键盘读取'Y'或'N',并将其作为方法的返回值
*/
public static char readConfirmSelection(){
char c;
for(;;){
String str=readKeyBoard(1,false).toUpperCase();
c=str.charAt(0);
if(c=='Y'||c=='N'){
break;
}
else{
System.out.println("选择错误,请重新输入:");
}
}
return c;
}
private static String readKeyBoard(int limit,boolean blankReturn){
String line="";
while(scanner.hasNextLine()){
line=scanner.nextLine();
if(line.length()==0){
if(blankReturn) return line;
else continue;
}
if(line.length()<1||line.length()>limit){
System.out.print("输入长度(不大于"+limit+")错误,请重新输入");
continue;
}
break;
}
return line;
}
}
Customer.java
package com.atguigu.p2;
//Customer为实体对象,用来封装客户信息
public class Customer {
private String name;
private char gender;
private int age;
private String number;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Customer() {
}
public Customer(String name, char gender, int age, String number, String email) {
this.name = name;
this.gender = gender;
this.age = age;
this.number = number;
this.email = email;
}
}
CustomerList.java
package com.atguigu.p2;
/*CustomerList为Customer对象的管理模块,
* 内部用数组管理一组Customer对象,并提供相应的添加,修改,删除,遍历方法,
* 供Customer调用
*/
public class CustomerList {
private Customer[] customers;//用来保存客户对象的数组
private int total;//记录已保存客户对象的数量
//用来初始化customer数组的构造器
//totalCustomer:指定数组的长度
public CustomerList(int totalCustomer) {
customers=new Customer[totalCustomer];
}
//将指定的客户添加到数组中
//true:添加成功 false:添加失败
public boolean addCustomer(Customer customer){
if(total>=customers.length){
return false;
}
customers[total]=customer;
total++;
return true;
}
//修改指定索引位置的客户信息
//true:修改成功 false:修改失败
public boolean replaceCustomer(int index,Customer cust){
if(index<0&&index>=total){
return false;
}
customers[index]=cust;
return true;
}
//删除指定索引位置上的客户
//true:删除成功 false:删除失败
public boolean deleteCustomer(int index){
if(index<0&&index>=total){
return false;
}
for(int i=index;i<total-1;i++){
customers[i]=customers[i+1];
}
customers[total-1]=null;
total--;
return true;
}
//获取所有的客户信息
public Customer[] getAllCustomers(){
Customer[] custs=new Customer[total];
for(int i=0;i<total;i++){
custs[i]=customers[i];
}
return custs;
}
//寻找指定索引位置上的客户
//如果找到了元素,则返回;如果没有找到,则返回null
public Customer getCustomer(int index){
if(index<0&&index>=total){
return null;
}
return customers[index];
}
//获取存储客户的数量
public int getTotal(){
return total;
}
}
CustomerView
package com.atguigu.p2;
//CustomerView为主模块,负责菜单的 显示和处理用户操作
public class CustomerView {
private CustomerList customerList=new CustomerList(10);
public CustomerView(){
Customer customer=new Customer("王涛",'男',23,"13002963637","1363874156@qq.com");
customerList.addCustomer(customer);
}
//显示《客户信息管理软件》界面的方法
public void enterMainMenu(){
boolean isFlag=true;
while(isFlag){
System.out.println("\n------------------客户信息管理软件---------------------");
System.out.println(" 1 添加客户");
System.out.println(" 2 修改客户");
System.out.println(" 3 删除客户");
System.out.println(" 4 客户列表");
System.out.println(" 5 退 出\n");
System.out.print(" 请选择(1-5):");
char menu=CMUtility.readMenuSelection();
switch(menu){
case '1':
addNewCustomer();
break;
case '2':
modifyCustomer();
break;
case '3':
deleteCustomer();
break;
case '4':
listAllCustomers();
break;
case '5':
System.out.print("确认是否退出(Y/N):");
char isExit=CMUtility.readConfirmSelection();
if(isExit=='Y'){
isFlag=false;
}
//System.out.println("退出");
}
// isFlag=false;
}
}
//添加客户的操作
private void addNewCustomer(){
//System.out.println("添加客户的操作");
System.out.println("-----------------------添加客户-------------------------");
System.out.print("姓名:");
String name = CMUtility.readString(10);
System.out.print("性别:");
char gender = CMUtility.readChar();
System.out.print("年龄:");
int age=CMUtility.redInt();
System.out.print("电话");
String number = CMUtility.readString(13);
System.out.print("邮件");
String email = CMUtility.readString(30);
//将上述数据封装到对象中
Customer customer=new Customer(name,gender,age,number,email);
boolean isSuccess = customerList.addCustomer(customer);
if(isSuccess){
System.out.println("-----------------------添加成功-------------------------");
}
else{
System.out.println("-----------------------添加失败-------------------------");
}
}
//修改客户的操作
private void modifyCustomer(){
//System.out.println("修改客户的操作");
System.out.println("-----------------------修改客户-------------------------");
Customer cust;
int number;
for(;;){
System.out.println("请选择待修改客户编号(-1)退出");
number = CMUtility.redInt();
if(number==-1){
return;
}
cust = customerList.getCustomer(number-1);
if(cust==null){
System.out.println("无法找到指定客户!");
}
else{
//找到相应编号的客户
break;
}
}
//修改客户信息
System.out.print("姓名("+cust.getName()+"):");
String name = CMUtility.readString(10, cust.getName());
System.out.print("性别("+cust.getGender()+"):");
char gender = CMUtility.readChar(cust.getGender());
System.out.print("年龄("+cust.getAge()+"):");
int age = CMUtility.readInt(cust.getAge());
System.out.print("电话("+cust.getName()+"):");
String tele = CMUtility.readString(13, cust.getNumber());
System.out.print("邮箱("+cust.getEmail()+"):");
String email = CMUtility.readString(30, cust.getEmail());
Customer newCust=new Customer(name,gender,age,tele,email);
boolean isReplaced = customerList.replaceCustomer(number-1, newCust);
if(isReplaced){
System.out.println("-----------------------修改完成-------------------------");
}
else{
System.out.println("-----------------------修改失败-------------------------");
}
}
//删除客户的操作
private void deleteCustomer(){
//System.out.println("删除客户的操作");
int number;
System.out.println("-----------------------删除用户-------------------------");
System.out.println("请选择待删除的客户编号(-1退出)");
number=CMUtility.redInt();
for(;;){
if(number==-1){
return;
}
Customer customer=customerList.getCustomer(number-1);
if(customer==null){
System.out.println("无法找到该用户");
}
else{
break;
}
}
System.out.println("确认是否删除(Y/N)");
char isDelete=CMUtility.readConfirmSelection();
if(isDelete=='Y'){
boolean deleteSuccess=customerList.deleteCustomer(number-1);
if(deleteSuccess){
System.out.println("-----------------------删除成功-------------------------");
}
else{
System.out.println("-----------------------删除失败-------------------------");
}
}
else{
return;
}
}
//显示客户列表的操作
private void listAllCustomers(){
//System.out.println("显示客户列表的操作");
int total=customerList.getTotal();
if(total==0){
System.out.println("没有客户记录!");
}
else{
System.out.println("编号\t姓名\t性别\t年龄\t电话\t\t邮箱");
Customer[] custs=customerList.getAllCustomers();
for(int i=0;i<custs.length;i++){
Customer cust=custs[i];
System.out.println((i+1)+"\t"+cust.getName()+"\t"
+cust.getGender()+"\t"+cust.getAge()+"\t"
+cust.getNumber()+"\t"+cust.getEmail());
}
}
System.out.println("----------------------客户列表完成-------------------------");
}
public static void main(String[] args) {
CustomerView view=new CustomerView();
view.enterMainMenu();
}
}