客户信息管理软件

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();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值