项目二:客户管理系统

项目二:客户管理系统

Utility类——(工具类)

用来从键盘上获取信息的类

package project2;

import java.util.Scanner;

public class Utility {
    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.print("选择错误,请重新输入:");
            } 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 readInt() {
        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.print("选择错误,请重新输入:");
            }
        }
        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类

用来定义客户的基本信息(姓名、性别等),并获取他们的基本方法

package project2;

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

    @Override
    public String toString() {
        return "Customer{" + "name='" + name + '\'' + ", gender=" + gender + ", age=" + age + ", phone='" + phone + '\'' + ", email='" + email + '\'' + '}';
    }
}

CustomerList类

定义与客户有关的 具体方法

  1. 用来初始化Customer数组的构造器
  2. 添加客户
  3. 修改客户
  4. 删除客户
  5. 获取所有客户信息
  6. 获取某个客户信息
  7. 获取总个数等等
package project2;

public class CustomerList {
    //定义客户数组
    private  Customer[] customers;
    //定义客户个数
    private  int total;


    //用来初始化Customer数组的构造器
    public  CustomerList(int totalCustomer ){
       customers=new Customer[totalCustomer];
    }

    //添加客户
    public  boolean addCustomer(Customer customer){
        if(total>=customers.length){
            return  false;
        }else{
        customers[total]=customer;
        total++;
        System.out.println ("添加成功");
        return  true;
        }
    }
    //修改客户
    public  boolean replaceCustomer(int index,Customer cust){
        if(index<0||index>=total){
            return  false;
        }else{
            customers[index]=cust;
        return  true;
        }
    }

    //删除客户
    public  boolean deleteCustomer(int index){
        if(index<0||index>=total){
            return  false;
        }else{
            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;
    }

    //获取某个客户的信息
    public Customer getCustomers(int index){
        if (index<0||index>=total){
            return  null;
        }
        return  customers[index];
    }

    //获取总个数
    public  int getTotal(){
        return total;
    }

}

CustomerView类

  • 编写运行时的菜单视图界面

    • 菜单栏
  • 编写具体方法的显示界面

  • 写主方法,来调用上面的类

  • ***学会信息的封装

package project2;


public class CustomerView {
    
    CustomerList customerList=new CustomerList (9);

    public  void enterMainMenu(){
        boolean isFlag=true;
        while(isFlag){
        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 ("请选择:");
            char c = Utility.readMenuSelection ();
            switch (c){
                case '1':
                    addNewCustomer ();
                    break;
                case'2':
                    modifyCustomer ();
                    break;
                case'3':
                    deleteCustomer ();
                    break;
                case '4':
                    listAllCustomers ();
                    break;
                case'5':
                    System.out.println ("是否确认退出(Y/N):");
                    char c1 = Utility.readConfirmSelection ();
                    if(c1=='Y'){
                        isFlag=false;
                    }
            }
        }

    }
    private  void addNewCustomer(){
        System.out.println ("——————添加客户——————");
        System.out.println ("姓名:");
        String name = Utility.readString (4);
        System.out.println ("性别:");
        char gender = Utility.readChar ();
        System.out.println ("年龄:");
        int age = Utility.readInt ();
        System.out.println ("电话:");
        String phone = Utility.readString (9);
        System.out.println ("邮箱:");
        String email = Utility.readString (9);
        
        //将上述数据封装到对象中
        Customer customer=new Customer (name,gender,age,phone,email);
        boolean issuccess = customerList.addCustomer (customer);
        
        
        if(issuccess){
        System.out.println ("——————添加完成——————");
        }else {
         System.out.println ("—————客户目录已满,添加失败——————");
        }



    }
    private void modifyCustomer(){
        Customer cust;
        int i;
        System.out.println ("—————修改客户——————");
        for (;;) {
        System.out.println ("请选择修改客户编号:(-1)");
         i = Utility.readInt ();
             cust = customerList.getCustomers (i-1);
            if(i==-1){
                return;
            }
            if(cust==null){
            System.out.println ("无法找到指定客户");
        } else{
            break;
            }
        }
        //修改客户信息
        System.out.print ("姓名("+cust.getName ()+"):");
        String name1 = Utility.readString (4, cust.getName ());
        System.out.print ("性别("+cust.getGender ()+"):");
        char gender1 = Utility.readChar (cust.getGender ());
        System.out.print ("年龄("+cust.getAge ()+"):");
        int age1 = Utility.readInt (cust.getAge ());
        System.out.print ("电话("+cust.getPhone ()+"):");
        String phone1 = Utility.readString (8, cust.getPhone ());
        System.out.print ("邮箱("+cust.getEmail ()+"):");
        String email1 = Utility.readString (8, cust.getEmail ());

        //把数据封装到对象中
        Customer newcust=new Customer (name1,gender1,age1,phone1,email1);
        boolean b = customerList.replaceCustomer (i - 1, newcust);
        if(b==true){
        System.out.println ("—————修改成功——————");
        }else {
        System.out.println ("—————修改失败——————");
        }


    }
    private  void deleteCustomer(){
        System.out.println ("—————删除操作——————");
        int deletenum;
        for (;;){
        System.out.println ("请输入你要选择删除的客户编号:(-1)");
         deletenum = Utility.readInt ();
         if(deletenum==-1){
             return;
         }

         if(deletenum<0||deletenum>customerList.getTotal ()){
            System.out.println ("无法找到指定客户");
        }else{
            System.out.println ("是否确认删除(Y/N):");
            char c = Utility.readConfirmSelection ();
            if(c=='Y'){
            boolean isdelete = customerList.deleteCustomer (deletenum-1);
            if(isdelete==true){
                System.out.println ("—————删除成功——————");
            }else{
                System.out.println ("—————删除失败——————");
            }
        }
        break;
            }

        }

    }
    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"+"邮箱");
            Customer[] allCustomers = customerList.getAllCustomers ();
            Customer[] list=new Customer[total];
            for (int i = 0; i < total; i++) {
                list[i]=allCustomers[i];
                System.out.println ((i+1)+"\t\t"+list[i].getName ()+"\t\t"+list[i].getGender ()+"\t\t"+list[i].getAge ()+"\t\t"+list[i].getPhone ()+"\t\t\t"+list[i].getEmail ());
            }
        }
        System.out.println ("——————————客户列表完成——————————");



    }

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




    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值