《客户信息管理需求》保姆级教学,句句注释

一、实现功能

能够实现对客户对象的添加、修改、删除和显示

每次功能执行完,自动进行到下次菜单选择

主菜单:

 添加功能(1):

 修改功能(2):

 删除功能(3):

 客户列表(4):

 退出功能(5):

 二、模块设计结构

  1. Customer 为实体对象,用来封装客户信息
  2. CustomerList 为 Customer 对象的管理模块,内部用数组管理一组 Customer 对象, 并提供相应的添加、修改、删除和遍历方法,供 CustomerView 调用
  3. CustomerView 为主模块,负责菜单的显示和处理用户操作

三、代码

Customer类

public  class Customer {
    String name ;//客户姓名
    String gender;//性别
    String age;//年龄
    String  phone;//电话号码
    String  email;//电子邮箱
    boolean f = true;
    public Customer() {//无参构造
    }
    public Customer(String name, String  gender, String age, String phone, String email) {
        //带参构造,在后面一个用到了,记住他
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.phone = phone;
        this.email = email;
    }
//下面是所有变量的get,set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String 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;
    }
}

Customer类中就是成员变量、方法、无参和带参构造器的搭建

CustomerList类

在CustomerList类中,大部分方法都是boolean类型的返回值,不要觉得奇怪。返回一个值不代表我们一定要用这个返回值,实现了功能就会

public class CustomerList {
    Customer customers[];//创建一个Customer类 用户信息存放的数组
    int total = 0;//已经有的客户的数量

    public CustomerList(int totalCustomer) {//构建totalCustomer长的数组
        customers = new Customer [totalCustomer];
    }
    public boolean addCustomer(Customer customer){//add方法:添加用户>形参为Customer类的对象,返回一个boolean类型
        if(total>=customers.length){
            //这里可以加个数组的自动扩展,我没加就返回false
            return false;
        }else{
            customers[total] = customer;//把这次的对象放在数组中,从索引值0开始放,total每用一次就加一,供下次使用
            total++;
            return  true;
        }
    }

    public boolean replaceCustomer(int index, Customer cust){//修改的方法>形参为客户数组的索引值,和要更新的内容
        if(index>=0&&index<=total-1){//这里要判断一下,这个索引值是不是可以用的值,依然返回boolean类型
            customers[index]=cust;
            return true;
        }else{
            return  false;
        }
    }
    public boolean deleteCustomer(int index){//删除的方法>形参为索引值(要删第几个客户的信息)
        if(index<0||index>=total){//依然判断这个索引值能不能用
            return false;
        }else {
            for(int i = index+1;i<total;i++){
                //删除原理为:不用“删”,而是把下一个数组(下一个客户的信息)直接把他替换了,前赴后继的替换
                //解释一下为什么这么写循环
                //比如我要删索引值为2(实际上是第三个客户)
                //0 1 2 3 4   ——本来有的
                //0 1 3 4     ——删完之后的
                customers[i-1]=customers[i];
            }
            total--;
            return true;
        }
    }
    public Customer[] getAllCustomers(){//显示的方法>无参,返回所有客户的大数组
        Customer[] arr = new Customer[total];
        //这里新建了一个新的数组,因为原本存数据的数组中除了存有客户信息,还有没用上的null
        //所以用于显示的,不是存数据的原来的数组,而是新数组把有用的信息接受过来,再显示。
        for(int i = 0;i<total;i++){
            arr[i] = customers[i];
        }
        return arr;//返回这个用于显示的专门建立的新数组
    }
    public Customer getCustomer(int index){//用于修改功能下的显示原有客户的信息
        if(index<0||index>=total){//检查索引值能不能用
            return null;
        }else {
            return customers[index];//能用就返回想查看的第几个客户
        }
    }
    /*public int getTotal(){
        return total;
    }*/
}

CustomerView类

import java.util.Scanner;
public class CustView {
    CustomerList customers = new CustomerList(10);
    //建立一个CustomerList类数组,使每个对象都能使用CustomerList中的那些方法
    public void enterMainMenu(){
        boolean f = true;//用于实现死循环,通过改变f的值,跳出死循环
        while (f){
            System.out.println("-----------------------客户信息管理软件-----------------------");
            System.out.println("1、添 加 客 户");
            System.out.println("2、修 改 客 户");
            System.out.println("3、删 除 客 户");
            System.out.println("4、客 户 列 表");
            System.out.println("5、退      出");
            Scanner sc = new Scanner(System.in);
            System.out.print("请选择(1-5):");
            int a = sc.nextInt();
            switch (a){//选择哪个模式
                case 1 :
                    addNewCustomer();//具体实现添加的功能
                    break;
                case 2 :
                    modifyCustomer();//具体实现修改的功能
                    break;
                case 3 :
                    deleteCustomer();//具体实现删除的功能
                    break;
                case 4 :
                    listAllCustomers();//具体实现显示的功能
                    break;
                case 5 :
                    f = false;
                    break;
            }
        }
        System.out.println("退出成功!");
    }
    private void addNewCustomer(){//具体实现添加的功能
        System.out.println("-----------------------添加客户-----------------------");
        Scanner sc = new Scanner(System.in);
        System.out.print("姓名:");
        String  name  = sc.next();
        System.out.print("性别:");
        String gender = sc.next();
        System.out.print("年龄:");
        String age = sc.next();
        System.out.print("电话:");
        String phone = sc.next();
        System.out.print("邮箱:");
        String email = sc.next();
        Customer customer = new Customer(name,gender,age,phone,email);
        //新建一个对象,能存五个信息是因为,在Customer类中写了构造方法
        customers.addCustomer(customer);
        //调用Customerlist类的添加方法,把刚刚的对象放进数组。而这个数组在这个class开头就new了
        System.out.println("-----------------------添加成功-----------------------");
    }

    private void modifyCustomer(){//具体实现修改的功能
        System.out.println("-----------------------修改客户-----------------------");
        Scanner sc = new Scanner(System.in);
        System.out.print("请选择待修改客户编号(-1 退出):");
        int a = sc.nextInt();

        if(a==-1){//判断一下是退出还是选择修改哪个客户
            return;//其实什么也没返回
        }else{
            sc.nextLine();
            Customer x = customers.getCustomer(a-1);
            //显示要修改的客户原来的信息,用getCustomer方法得到customers数组中的第几个客户信息
            System.out.print("姓名("+x.getName()+"):");
            //用到Customer中的get方法,接下来五个信息都是用get方法来获取具体是什么信息
            String  name  = sc.nextLine();
            x.setName(method(x.getName(),name));
            //method方法在下面,作用为对两个形参做一个判断,若是输出为回车就返回原值,否则返回修改值
            //然后再用set方法重写这个客户的具体哪个信息

            System.out.print("性别("+x.getGender()+"):");
            String gender = sc.nextLine();
            x.setGender(method(x.getGender(),gender));

            System.out.print("年龄("+x.getAge()+"):");
            String age = sc.nextLine();
            x.setAge(method(x.getAge(),age));

            System.out.print("电话("+x.getPhone()+"):");
            String phone = sc.nextLine();
            x.setPhone(method(x.getPhone(),phone));

            System.out.print("邮箱("+x.getEmail()+"):");
            String email = sc.nextLine();
            x.setEmail(method(x.getEmail(),email));

        }
    }

    private void deleteCustomer(){//具体实现删除功能的方法
        System.out.println("-----------------------删除客户-----------------------");
        Scanner sc = new Scanner(System.in);
        System.out.print("请选择待修改客户编号(-1 退出):");
        int a = sc.nextInt();
        int b = a-1;//把a变成索引值
        System.out.print("确认是否删除(Y/N):");
        String s = sc.next();
        if(a==-1){//判断一下是退出还是选择删除哪个客户
            return;//其实什么也没返回
        }else if (s.equals("Y")){
            customers.deleteCustomer(b);
            System.out.println("-----------------------删除完成-----------------------");
        }

    }

    public String method(String s,String t){//形参:s为原来的值,t是键盘输入的修改值
        //作用为对两个形参做一个判断,若是输出为回车就返回原值,否则返回修改值
        if(t.equals("")){
            return s;
        }else
            return t;
    }
    private void listAllCustomers(){//
        System.out.println("-----------------------客户列表-----------------------");
        System.out.println("编号\t姓名\t性别\t年龄\t电话\t邮箱");
        Customer [] arr=customers.getAllCustomers();//用一个新数组来接收用于显示的有用信息的数组
        for(int i = 0;i< arr.length;i++){
            int b = i+1;
            System.out.print(b+"\t"+arr[i].getName()+"\t");
            System.out.print(arr[i].getGender()+"\t"+arr[i].getAge()+"\t");
            System.out.println(arr[i].getPhone()+"\t"+arr[i].getEmail());
        }
        System.out.println("-----------------------客户列表完成-----------------------");
    }
//main用于测试
    public static void main(String[] args) {
        CustView custView = new  CustView();
        custView.enterMainMenu();

    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值