伙伴云客服论坛»论坛 S区 S客户管理 查看内容

0 评论

0 收藏

分享

客户管理系统:

思路:1,本程序写的是客户管理,有多级选择,字符输入,数字输入,等要求,且题目要求必需是数组形式存入数据,因而需要很多构造方法,封装。数组在增添元素时候不如集合那么便利,必需要构造多个包来封装变量,方法。2,发明一个Customer类,里面寄存着着customer的各种元素,private修饰,提供set/get方法,无参,有参构造
3,发明一个customer类,本类提供custermor[]custermor和total变量,total控制数组长度,本类是以customer为对象的管理模块,内部使用一组数组管理对象。并提供相应的删除,添加,修改,遍历的方法。
详细三部分关系如下图:
客户管理系统:-1.jpg


4,由题目提供了一些根本方法,封装在CMutility类中。
  1. //本类封装了各种根本元素,供后面调用
  2. public class Customer {
  3.    private String name;//客户姓名
  4.    private char gender; //性别
  5.     private int age;   //年龄
  6.     private String phone; //电话号码
  7.     private String email; //电子邮箱
  8.     public Customer() {
  9.     }
  10.     public Customer(String name, char gender, int age, String phone, String email) {
  11.         this.name = name;
  12.         this.gender = gender;
  13.         this.age = age;
  14.         this.phone = phone;
  15.         this.email = email;
  16.     }
  17.     public String getName() {
  18.         return name;
  19.     }
  20.     public void setName(String name) {
  21.         this.name = name;
  22.     }
  23.     public char getGender() {
  24.         return gender;
  25.     }
  26.     public void setGender(char gender) {
  27.         this.gender = gender;
  28.     }
  29.     public int getAge() {
  30.         return age;
  31.     }
  32.     public void setAge(int age) {
  33.         this.age = age;
  34.     }
  35.     public String getPhone() {
  36.         return phone;
  37.     }
  38.     public void setPhone(String phone) {
  39.         this.phone = phone;
  40.     }
  41.     public String getEmail() {
  42.         return email;
  43.     }
  44.     public void setEmail(String email) {
  45.         this.email = email;
  46.     }
  47. }
复制代码
  1. /**题目提供的CMutility方法
  2. CMUtility工具类:
  3. 将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑详细的功能实现细节。
  4. */
  5. public class CMUtility {
  6.     private static Scanner scanner = new Scanner(System.in);
  7.     /**
  8.      用于界面菜单的选择。该方法读取键盘,假设用户键入’1’-’5’中的任意字符,则方法返回。返回值为用户键入字符。
  9.      */
  10.     public static char readMenuSelection() {
  11.         char c;
  12.         for (; ; ) {
  13.             String str = readKeyBoard(1, false);
  14.             c = str.charAt(0);
  15.             if (c != '1' && c != '2' &&
  16.                     c != '3' && c != '4' && c != '5') {
  17.                 System.out.print("选择错误,请重新输入:");
  18.             } else break;
  19.         }
  20.         return c;
  21.     }
  22.     /**
  23.      从键盘读取一个字符,并将其作为方法的返回值。
  24.      */
  25.     public static char readChar() {
  26.         String str = readKeyBoard(1, false);
  27.         return str.charAt(0);
  28.     }
  29.     /**
  30.      从键盘读取一个字符,并将其作为方法的返回值。
  31.      假设用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
  32.      */
  33.     public static char readChar(char defaultValue) {
  34.         String str = readKeyBoard(1, true);
  35.         return (str.length() == 0) ? defaultValue : str.charAt(0);
  36.     }
  37.     /**
  38.      从键盘读取一个长度不超越2位的整数,并将其作为方法的返回值。
  39.      */
  40.     public static int readInt() {
  41.         int n;
  42.         for (; ; ) {
  43.             String str = readKeyBoard(2, false);
  44.             try {
  45.                 n = Integer.parseInt(str);
  46.                 break;
  47.             } catch (NumberFormatException e) {
  48.                 System.out.print("数字输入错误,请重新输入:");
  49.             }
  50.         }
  51.         return n;
  52.     }
  53.     /**
  54.      从键盘读取一个长度不超越2位的整数,并将其作为方法的返回值。
  55.      假设用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
  56.      */
  57.     public static int readInt(int defaultValue) {
  58.         int n;
  59.         for (; ; ) {
  60.             String str = readKeyBoard(2, true);
  61.             if (str.equals("")) {
  62.                 return defaultValue;
  63.             }
  64.             try {
  65.                 n = Integer.parseInt(str);
  66.                 break;
  67.             } catch (NumberFormatException e) {
  68.                 System.out.print("数字输入错误,请重新输入:");
  69.             }
  70.         }
  71.         return n;
  72.     }
  73.     /**
  74.      从键盘读取一个长度不超越limit的字符串,并将其作为方法的返回值。
  75.      */
  76.     public static String readString(int limit) {
  77.         return readKeyBoard(limit, false);
  78.     }
  79.     /**
  80.      从键盘读取一个长度不超越limit的字符串,并将其作为方法的返回值。
  81.      假设用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
  82.      */
  83.     public static String readString(int limit, String defaultValue) {
  84.         String str = readKeyBoard(limit, true);
  85.         return str.equals("")? defaultValue : str;
  86.     }
  87.     /**
  88.      用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
  89.      */
  90.     public static char readConfirmSelection() {
  91.         char c;
  92.         for (; ; ) {
  93.             String str = readKeyBoard(1, false).toUpperCase();
  94.             c = str.charAt(0);
  95.             if (c == 'Y' || c == 'N') {
  96.                 break;
  97.             } else {
  98.                 System.out.print("选择错误,请重新输入:");
  99.             }
  100.         }
  101.         return c;
  102.     }
  103.     private static String readKeyBoard(int limit, boolean blankReturn) {
  104.         String line = "";
  105.         while (scanner.hasNextLine()) {
  106.             line = scanner.nextLine();
  107.             if (line.length() == 0) {
  108.                 if (blankReturn) return line;
  109.                 else continue;
  110.             }
  111.             if (line.length() < 1 || line.length() > limit) {
  112.                 System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
  113.                 continue;
  114.             }
  115.             break;
  116.         }
  117.         return line;
  118.     }
  119. }
复制代码
customerlist:
  1. /**
  2. * 内部封装一个Customer[],提供对Customer数据的增删改查操作
  3. * @author shkstart
  4. *
  5. */
  6. public class CustomerList {
  7.        
  8.         private Customer[] customers;
  9.         private int total;//记录存储的客户的个数
  10.         /**
  11.          * 构造器,用来初始化customers数组
  12.          * @param totalCustomer : 指定customers数组的最大空间
  13.          */
  14. //用处:构造器,用来初始化customers数组
  15. //参数:totalCustomer:指定customers数组的最大空间
  16.         public CustomerList(int totalCustomer) {
  17.                 customers = new Customer[totalCustomer];
  18. //                total = 0;
  19.         }
  20.         /**
  21.          * 添加指定的客户到数组中
  22.          * @param customer
  23.          * @return 添加是否胜利
  24.          */
  25. //用处:将参数customer添加到数组中最后一个客户对象记录之后
  26. //参数:customer指定要添加的客户对象
  27. //返回:添加胜利返回true;false表示数组已满,无法添加
  28.         public boolean addCustomer(Customer customer) {
  29.                 if(customer != null && total < customers.length){
  30. //                        customers[total] = customer;
  31. //                        total++;
  32.                         customers[total++] = customer;
  33.                         return true;
  34.                 }
  35.                 return false;
  36.         }
  37.         /**
  38.          * 交换指定索引位置上的数组元素
  39.          * @param index 从0开端
  40.          * @param cust
  41.          * @return
  42.          */
  43. //用处:用参数customer交换数组中由index指定的对象
  44. //参数:customer指定交换的新客户对象 ,index指定所交换对象在数组中的位置,从0开端
  45. //返回:交换胜利返回true;false表示索引无效,无法交换
  46.         public boolean replaceCustomer(int index, Customer cust){
  47.                 if(index >= 0 && index < total){
  48.                         customers[index] = cust;
  49.                         return true;
  50.                 }
  51.                 return false;
  52.         }
  53.         /**
  54.          * 删除指定索引位置上的元素
  55.          * @param index 从0开端
  56.          * @return
  57.          */
  58. //用处:从数组中删除参数index指定索引位置的客户对象记录
  59. //参数: index指定所删除对象在数组中的索引位置,从0开端
  60. //返回:删除胜利返回true;false表示索引无效,无法删除
  61.         public boolean deleteCustomer(int index){
  62.                 if(index >= 0 && index < total){
  63.                         for(int i = index;i < total - 1;i++){
  64.                                 customers[i] = customers[i + 1];
  65.                         }
  66. //                        customers[total - 1] = null;
  67. //                        total--;//存储的总人数减少1.
  68.                         customers[--total] = null;
  69.                         return true;
  70.                 }
  71.                 return false;
  72.         }
  73.         /**
  74.          * 获取所有的customers对象构成的数组
  75.          * @return
  76.          */
  77. //用处:返回数组中记录的所有客户对象
  78. //返回: Customer[] 数组中包含了当前所有客户对象,该数组长度与对象个数相同。
  79.         public Customer[] getAllCustomers() {
  80. //                return customers;//错误的
  81.                 Customer[] custs = new Customer[total];
  82.                 //给数组元素赋值
  83.                 for(int i = 0;i < custs.length;i++){
  84.                         custs[i] = customers[i];
  85.                 }
  86.                 return custs;
  87.         }
  88.         /**
  89.          * 返回指定索引位置上的Customer
  90.          * @param index
  91.          * @return 假设输入的index位置上的元素不存在,返回null
  92.          */
  93. //用处:返回参数index指定索引位置的客户对象记录
  94. //参数: index指定所要获取的客户在数组中的索引位置,从0开端
  95. //返回:封装了客户信息的Customer对象
  96.         public Customer getCustomer(int index) {
  97.                 if(index >= 0 && index < total){
  98.                         return customers[index];
  99.                 }
  100.                 return null;
  101.         }
  102.         /**
  103.          * 返回Customer对象的个数
  104.          * @return
  105.          */
  106.         public int getTotal(){
  107. //                return customers.length;//错误的
  108.                 return total;
  109.         }
  110. }
复制代码
customerview:
  1. //创建最大包含10个客户对象的CustomerList对象,供以下各成员方法使用。
  2. private CustomerList customers = new CustomerList(10);
  3.     public CustomerView() {
  4.         Customer cust = new Customer("张三", '男', 30, "010-56253825",
  5.                 "abc@email.com");
  6.         customers.addCustomer(cust);
  7.     }
  8. //用处:显示主菜单,响应用户输入,根据用户操作分别调用其他相应的成员方法(如addNewCustomer),以完成客户信息处置。
  9.     public void enterMainMenu() {
  10.         for(;;) {
  11.             System.out
  12.                     .println("-----------------客户信息管理软件-----------------");
  13.             System.out.println("                   1 添 加 客 户");
  14.             System.out.println("                   2 修 改 客 户");
  15.             System.out.println("                   3 删 除 客 户");
  16.             System.out.println("                   4 客 户 列 表");
  17.             System.out.println("                   5 退       出");
  18.             System.out.print("                   请选择(1-5):");
  19.             char key = CMUtility.readMenuSelection();
  20.             System.out.println();
  21.             switch (key) {
  22.                 case '1':
  23.                     addNewCustomer();
  24.                     break;
  25.                 case '2':
  26.                     modifyCustomer();
  27.                     break;
  28.                 case '3':
  29.                     deleteCustomer();
  30.                     break;
  31.                 case '4':
  32.                     listAllCustomers();
  33.                     break;
  34.                 case '5':
  35.                     System.out.print("确认是否退出(Y/N):");
  36.                     char yn = CMUtility.readConfirmSelection();
  37.                     if (yn == 'Y') {
  38.                         System.exit(0);
  39.                     }else {
  40.                         break;
  41.                     }
  42.             }
  43.         }
  44.     }
  45. //添加客户
  46.     private void addNewCustomer() {
  47.         System.out.println("---------------------添加客户---------------------");
  48.         System.out.print("姓名:");
  49.         String name = CMUtility.readString(4);
  50.         System.out.print("性别:");
  51.         char gender = CMUtility.readChar();
  52.         System.out.print("年龄:");
  53.         int age = CMUtility.readInt();
  54.         System.out.print("电话:");
  55.         String phone = CMUtility.readString(15);
  56.         System.out.print("邮箱:");
  57.         String email = CMUtility.readString(15);
  58.         Customer cust = new Customer(name, gender, age, phone, email);
  59.         boolean flag = customers.addCustomer(cust);
  60.         if (flag) {
  61.             System.out
  62.                     .println("---------------------添加完成---------------------");
  63.         } else {
  64.             System.out.println("----------------记录已满,无法添加-----------------");
  65.         }
  66.     }
  67. //修改客户
  68.     private void modifyCustomer() {
  69.         System.out.println("---------------------修改客户---------------------");
  70.         int index = 0;
  71.         Customer cust = null;
  72.         for (;;) {
  73.             System.out.print("请选择待修改客户编号(-1退出):");
  74.             index = CMUtility.readInt();
  75.             if (index == -1) {
  76.                 return;
  77.             }
  78.             cust = customers.getCustomer(index - 1);
  79.             if (cust == null) {
  80.                 System.out.println("无法找到指定客户!");
  81.             } else
  82.                 break;
  83.         }
  84.         System.out.print("姓名(" + cust.getName() + "):");
  85.         String name = CMUtility.readString(4, cust.getName());
  86.         System.out.print("性别(" + cust.getGender() + "):");
  87.         char gender = CMUtility.readChar(cust.getGender());
  88.         System.out.print("年龄(" + cust.getAge() + "):");
  89.         int age = CMUtility.readInt(cust.getAge());
  90.         System.out.print("电话(" + cust.getPhone() + "):");
  91.         String phone = CMUtility.readString(15, cust.getPhone());
  92.         System.out.print("邮箱(" + cust.getEmail() + "):");
  93.         String email = CMUtility.readString(15, cust.getEmail());
  94.         cust = new Customer(name, gender, age, phone, email);
  95.         boolean flag = customers.replaceCustomer(index - 1, cust);
  96.         if (flag) {
  97.             System.out
  98.                     .println("---------------------修改完成---------------------");
  99.         } else {
  100.             System.out.println("----------无法找到指定客户,修改失败--------------");
  101.         }
  102.     }
  103. //删除客户
  104.     private void deleteCustomer() {
  105.         System.out.println("---------------------删除客户---------------------");
  106.         int index = 0;
  107.         Customer cust = null;
  108.         for (;;) {
  109.             System.out.print("请选择待删除客户编号(-1退出):");
  110.             index = CMUtility.readInt();
  111.             if (index == -1) {
  112.                 return;
  113.             }
  114.             cust = customers.getCustomer(index - 1);
  115.             if (cust == null) {
  116.                 System.out.println("无法找到指定客户!");
  117.             } else
  118.                 break;
  119.         }
  120.         System.out.print("确认是否删除(Y/N):");
  121.         char yn = CMUtility.readConfirmSelection();
  122.         if (yn == 'N')
  123.             return;
  124.         boolean flag = customers.deleteCustomer(index - 1);
  125.         if (flag) {
  126.             System.out
  127.                     .println("---------------------删除完成---------------------");
  128.         } else {
  129.             System.out.println("----------无法找到指定客户,删除失败--------------");
  130.         }
  131.     }
  132.     private void listAllCustomers() {
  133.         System.out.println("---------------------------客户列表---------------------------");
  134.         Customer[] custs = customers.getAllCustomers();
  135.         if (custs.length == 0) {
  136.             System.out.println("没有客户记录!");
  137.         } else {
  138.             System.out.println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱");
  139.             for (int i = 0; i < custs.length; i++) {
  140.             System.out.println(i + 1 + "\t" + custs[i].getName() + "\t" + custs[i].getGender() + "\t" + custs[i].getAge() + "\t\t" + custs[i].getPhone() + "\t" + custs[i].getEmail());
  141.             }
  142.         }
  143.         System.out.println("-------------------------客户列表完成-------------------------");
  144.     }
  145. //用处:创建CustomerView实例,并调用 enterMainMenu()方法以执行程序。
  146.     public static void main(String[] args) {
  147.         CustomerView cView = new CustomerView();
  148.         cView.enterMainMenu();
  149.     }
  150. }
复制代码

回复

举报 使用道具

相关帖子
全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

南风向北
注册会员
主题 6
回复 16
粉丝 0
|网站地图
快速回复 返回顶部 返回列表