客户信息管理系统——Java

客户信息管理系统——Java

该系统没有涉及文件及数据库,适合刚接触java的新手进行练习。模拟实现基于文本界面的客户软件管理系统。能够实现基本增删改查操作以及类的使用
  • 文件排布如下图:
    在这里插入图片描述

源代码

  • CustomerUtility.java
package CustomerInfomationManagement;

import java.util.Scanner;

/**
 * @Description: 作为工具类使用,将功能封装为方法,直接通过方法调用。无需重复实现细节
 * @ProjectNmae: Project2
 * @PackageName: CustomerInfomationManagement
 * @ClassName: CustomerUtility
 * @Author: Y-peak
 * @Date: 2021.08.23 09:38   星期一
 */

public class CustomerUtility {
    private static Scanner scanner = new Scanner(System.in);

     /**
      * @Description: 读取1-5任意字符
      * @Param: 无
      * @return: 第一个字符
      * @Author: Y-peak
      * @Date: 2021.08.23 09:55
      **/
     
    public static char readMenuSelection(){
        char c;
        while (true){
            String str = readKeyBoard(1,false);
            c = str.charAt(0);
            if(c > '5' || c < '1'){
                System.out.print("           输入错误,请重新输入:");
            }else break;
        }
        return c;
    }

    /**
    * @Description: 读取一个字符
    * @Param: 无
    * @return: 返回读取的字符
    * @Author: Y-peak
    * @Date: 2021.08.23 09:56
    **/

    public static char readChar(){
     String str = readKeyBoard(1,false);
     return str.charAt(0);
    }

    /**
    * @Description: 从键盘读取一个字符,如果未输入则,默认defaultSelection
    * @Param: defaultValue 作为默认值
    * @return: 返回选择的字符
    * @Author: Y-peak
    * @Date: 2021.08.23 09:59
    **/
    public static char readChar(char defaultValue){
      String str = readKeyBoard(1,true);
      return (str.length()==0)?defaultValue:str.charAt(0);
    }

    /**
    * @Description: 读取一个2位的整数
    * @Param: 无
    * @return: 一个整数
    * @Author: Y-peak
    * @Date: 2021.08.23 11:04
    **/
       
    public static int readInt(){
      int n;
      while (true){
          String str = readKeyBoard(2,false);
          try {
              n = Integer.parseInt(str);
              if (n>=0)
                  break;
              else
                  System.out.print("           输入错误,请重新输入:");
          }catch (NumberFormatException e)
          {
              System.out.print("           输入错误,请重新输入:");

          }
      }
      return n;
    }

     /**
      * @Description: 读取一个2位的整数,为空则,返回传入的参数
      * @Param: 默认值
      * @return: 一个整数
      * @Author: Y-peak
      * @Date: 2021.08.23 11:18
      **/

    public static int readInt(int defaultValue){
        int n;
        while (true)
        {
            String str = readKeyBoard(2, true);
            if(str.length() == 0)
                return defaultValue;
            try {
                n = Integer.parseInt(str);
                if (n>=0)
                    break;
                else
                    System.out.print("           输入错误,请重新输入:");
            }catch (NumberFormatException e)
            {
                System.out.print("           输入错误,请重新输入:");
            }
        }
        return n;
    }



     /**
      * @Description: 读取一个长度不超过limit的字符串
      * @Param: limit
      * @return: 字符串
      * @Author: Y-peak
      * @Date: 2021.08.23 11:44
      **/

    public static String readString(int limit){
        return readKeyBoard(limit,false);
    }

    /**
     * @Description: 读取一个长度不超过limit的字符串,如果为空则返回默认值
     * @Param: limit 限制长度 defaultValue 默认值
     * @return: 字符串
     * @Author: Y-peak
     * @Date: 2021.08.23 11:44
     **/

    public static String readString(int limit,String defaultValue){
        String str = readKeyBoard(limit,true);
        return str.length() == 0 ? defaultValue:str;
    }


     /**
      * @Description: 用于确认是否退出或者删除
      * @Param:
      * @return: Y or N
      * @Author: Y-peak
      * @Date: 2021.08.23 11:54
      **/
    public static char readConfirmSelection(){
        char c;
        while (true){
            String str = readKeyBoard(1,false).toUpperCase();
            c = str.charAt(0);
            if(c == 'Y' || c == 'N')
                break;
            System.out.print("           输入错误,请重新输入:");
        }
        return c;
    }


     /**
      * @Description:  读取至多长度的字符,同时判断是否允许空字符
      * @Param: n 长度 b是否允许
      * @return: 
      * @Author: Y-peak
      * @Date: 2021.08.23 12:32
      **/
     
    public static String readKeyBoard(int n, boolean b){
        String str="";
        while (scanner.hasNextLine()){
            str = scanner.nextLine();
            int len = str.length();
            if (len == 0){
                if (b)
                    return str;
                continue;
            }else if(len>n){
                System.out.print("           输入错误,请重新输入:");
                continue;
            }
            break;
        }
        return str;
    }

}

  • Customer.java
package CustomerInfomationManagement;


/**
 * @Description: 实例化Customer对象,封装客户信息
 * @ProjectNmae: Project2
 * @PackageName: CustomerInfomationManagement
 * @ClassName: Customer
 * @Author: Y-peak
 * @Date: 2021.08.23 09:38   星期一
 */

public class Customer {
    private String name;    //名字
    private char gender;    //性别
    private int age;        //年龄
    private String phone;   //电话号码
    private String email;   //邮箱

    public Customer() {
    }

    public Customer(String name, char gender, int age, String phone, String email) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.phone = phone;
        this.email = 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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

  • CustomerList.java
package CustomerInfomationManagement;

/**
 * @Description: 管理实例化的客户对象,提供增删改查操作
 * @ProjectNmae: Project2
 * @PackageName: CustomerInfomationManagement
 * @ClassName: CustomerList
 * @Author: Y-peak
 * @Date: 2021.08.23 09:39   星期一
 */

public class CustomerList {
    private Customer[] customers;   //保存客户信息的数组
    private int total;              //已保存客户信息的数量
    private int maxTotal;           //最多保存的客户信息
     /**
      * @Description: 初始化数组
      * @Param: totalCustomer 客户的总数
      * @return:
      * @Author: Y-peak
      * @Date: 2021.08.23 12:51
      **/
    public CustomerList(int totalCustomer) {
        this.customers = new Customer[totalCustomer];
        this.maxTotal = totalCustomer;
        this.total = 0;
    }

     /**
      * @Description: 添加一个客户对象
      * @Param: customer指定要添加的客户对象
      * @return: 添加成功返回true,false表示已满。
      * @Author: Y-peak
      * @Date: 2021.08.23 16:07
      **/
    public boolean addCustomer(Customer customer){
        if(total>=maxTotal)
            return false;
        customers[total++] = customer;
        return true;
    }

     /**
      * @Description: 将指定位置的客户对象进行替换
      * @Param: customer指定要替换的新客户对象,index表示所要替换的下标(从0开始)
      * @return: 替换成功返回true,索引无效返回false
      * @Author: Y-peak
      * @Date: 2021.08.23 16:11
      **/

    public boolean replaceCustomer(int index,Customer cust){
        if(index>= maxTotal)
            return false;
        customers[index] = cust;
        return true;
    }

     /**
      * @Description: 
      * @Param: index 索引
      * @return: true删除成功, falses删除失败
      * @Author: Y-peak
      * @Date: 2021.08.23 19:09
      **/
     
    public boolean deleteCustomer(int index){
        if (index<0 || index>=total)
            return false;
        for (int i = 0; i < total - 1; i++) {
            customers[i] = customers[i+1];
        }
        customers[total - 1] = null;
        total--;
        return true;
    }

     /**
      * @Description: 获取所有客户信息
      * @Param:
      * @return: 所有客户信息
      * @Author: Y-peak
      * @Date: 2021.08.23 19:13
      **/

    public Customer[] gerAllCustomer(){
        Customer[] customers1 = new  Customer[total];
        for (int i = 0; i < total; i++) {
            customers1[i] = customers[i];
        }
        return customers1;
    }

     /**
      * @Description: 返回指定索引的客户对象
      * @Param: index索引
      * @return: 一个客户对象
      * @Author: Y-peak
      * @Date: 2021.08.23 19:56
      **/
    public Customer getCustomer(int index){
        if(index < 0 || index >= total)
            return null;
        return customers[index];
    }

     /**
      * @Description: 获取客户数量
      * @Param: 无
      * @return: 返回客户数量
      * @Author: Y-peak
      * @Date: 2021.08.23 19:57
      **/

    public int getTotal(){
        return total;
    }

}

  • CustomerView.java
package CustomerInfomationManagement;

/**
 * @Description: 进行菜单显示和调用用户选择的操作
 * @ProjectNmae: Project2
 * @PackageName: CustomerInfomationManagement
 * @ClassName: CustomerView
 * @Author: Y-peak
 * @Date: 2021.08.23 09:39   星期一
 */

public class CustomerView {
    private CustomerList customerList = new CustomerList(10);

     /**
      * @Description: 显示界面
      * @Param:
      * @return:
      * @Author: Y-peak
      * @Date: 2021.08.23 20:03
      **/

    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 choice = CustomerUtility.readMenuSelection();

            switch (choice){
                case '1':
                    addCustomer();
                    break;
                case '2':
                    modifyCustomer();
                    break;
                case '3':
                    deleteCustomer();
                    break;
                case '4':
                    showAllCustomer();
                    break;
                case '5':
                    System.out.print("           确认是否退出(Y/N):");
                    if(CustomerUtility.readConfirmSelection() == 'Y')
                        isFlag = false;
                    break;
                default:
                    System.out.println("怎么1-5都能输入错误");
            }
        }
    }

     /**
      * @Description: 添加客户
      * @Param:
      * @return:
      * @Author: Y-peak
      * @Date: 2021.08.23 19:59
      **/
     private void addCustomer(){
         System.out.println("------------- 添加客户信息 ------------");
         System.out.printf("姓名:");
         String name = CustomerUtility.readString(10);
         System.out.printf("性别:");
         char gender = CustomerUtility.readChar();
         System.out.printf("年龄:");
         int age = CustomerUtility.readInt();
         System.out.printf("电话:");
         String phone = CustomerUtility.readString(13);
         System.out.printf("Email:");
         String email = CustomerUtility.readString(20);
         Customer customer = new Customer(name,gender, age, phone, email);
         boolean isSuccess = customerList.addCustomer(customer);
         if(isSuccess)
         {
             System.out.println("-------------添加成功-----------------");

         }else {
             System.out.println("-----------空间已满,添加失败-----------");
         }
         System.out.println("-------------------------------------");


     }

      /**
       * @Description: 修改客户信息
       * @Param:
       * @return:
       * @Author: Y-peak
       * @Date: 2021.08.23 20:00
       **/
      private void modifyCustomer(){
          int number;
          Customer temp;
          System.out.println("-------------修改客户信息----------------");
          while (true){
              System.out.printf("请选择待修改的客户编号(0退出):");
              number = CustomerUtility.readInt();
              if(number == 0)
              {
                  System.out.println("------------已退出修改客户信息------------");
                  System.out.println("--------------------------------------");
                  return;
              }
              temp = customerList.getCustomer(number-1);
              if (temp == null)
              {
                  System.out.println("无法找到指定客户");
              }else
                  break;

          }
          System.out.printf("姓名:");
          String name = CustomerUtility.readString(10,temp.getName());
          System.out.printf("性别:");
          char gender = CustomerUtility.readChar(temp.getGender());
          System.out.printf("年龄:");
          int age = CustomerUtility.readInt(temp.getAge());
          System.out.printf("电话:");
          String phone = CustomerUtility.readString(13,temp.getPhone());
          System.out.printf("Email:");
          String email = CustomerUtility.readString(20,temp.getEmail());
          Customer customer = new Customer(name,gender, age, phone, email);

          customerList.replaceCustomer(number-1,customer);
          System.out.println("--------------------------------------");

      }

       /**
        * @Description: 删除客户信息
        * @Param:
        * @return:
        * @Author: Y-peak
        * @Date: 2021.08.23 20:01
        **/
       private void deleteCustomer(){
           System.out.println("-------------删除客户信息----------------");
           System.out.printf("请选择需要删除的客户编号(0退出):");
           int number = CustomerUtility.readInt();
           if(number == 0)
               System.out.println("-----------------已退出----------------");
           else{
               if(customerList.getCustomer(number-1) != null)
               {
                   System.out.print("确认是否删除(Y/N):");
                   char choice = CustomerUtility.readConfirmSelection();
                   if (choice=='Y') {
                       customerList.deleteCustomer(number - 1);
                       System.out.println("----------------删除成功----------------");
                   }
               }
               else
                   System.out.println("----------未找到指定编号,删除失败---------");
           }
           System.out.println("--------------------------------------");

       }

        /**
         * @Description: 显示全部客户
         * @Param:
         * @return:
         * @Author: Y-peak
         * @Date: 2021.08.23 20:02
         **/
        private void showAllCustomer(){
            System.out.println("------------- 客户信息显示 ------------");
            int total = customerList.getTotal();
            if(total == 0){
                System.out.println("未找到客户记录");
            }else {
                System.out.println("编号\t\t姓名\t\t性别\t\t年龄\t\t电话\t\t\t邮箱");
                Customer[] custNew = customerList.gerAllCustomer();
                for (int i = 0; i < custNew.length; i++) {
                    Customer temp = custNew[i];
                    System.out.println((i+1) + "\t\t" + temp.getName() + "\t\t" + temp.getGender() + "\t\t" +temp.getAge() + "\t\t" + temp.getPhone() + "\t\t\t" + temp.getEmail());

                }
            }
            System.out.println("-------------------------------------");
        }


    public static void main(String[] args) {
        CustomerView view = new CustomerView();
        view.enterMainMenu();
    }

}

使用截图

在这里插入图片描述


  • 在这里插入图片描述

  • 在这里插入图片描述

在这里插入图片描述

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值