5 练手小项目:客户信息管理软件
1、介绍
- CustomerView:主模块,负责菜单的显示和处理用户操作。
- CustomerList:Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加、修改、删除和遍历方法,供CustomerView调用。
- Customer:实体对象,用来封装客户信息。
- CMUtility:工具集。
2、代码
Customer
package com.xianhuii.p2.bean; /** * Customer为实体对象,用来封装客户信息 */ 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
package com.xianhuii.p2.service; import com.xianhuii.p2.bean.Customer; /** * CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象, * 并提供相应的添加、修改、删除和遍历方法,供CustomerView调用。 */ public class CustomerList { private Customer[] customers; // 存放多个客户的数组 private int total; // 记录以保存的客户的个数 /** * 用来初始化customer数组的构造器 * * @param totalCustomer:指定数组的长度 */ public CustomerList(int totalCustomer) { customers = new Customer[totalCustomer]; } /** * 将指定的客户添加到数组中 * * @param customer * @return true:添加成功;false:添加失败 */ public boolean addCustomer(Customer customer) { if (total >= customers.length) { return false; } customers[total++] = customer; return true; } /** * 修改指定索引位置的客户信息 * * @param index * @param customer * @return true:修改成功;false:修改失败 */ public boolean replaceCustomer(int index, Customer customer) { if (index >= total || index < 0) { return false; } customers[index] = customer; return true; } /** * 删除指定索引位置上的客户 * @param index * @return true:删除成功;false:删除失败 */ public boolean deleteCustomer(int index) { if (index >= total || index < 0) { return false; } for (int i = index; i < total - 1; i++) { customers[i] = customers[i + 1]; } customers[--total] = null; return true; } /** * 获取所有的客户信息 * @return */ public Customer[] getAllCustomers() { Customer[] custs = new Customer[total]; for (int i = 0; i < total; i++) { custs[i] = customers[i]; } return custs; } /** * 获取指定索引位置上的客户 * @param index * @return 如果找到了元素,则返回;如果没有找到,则返回null */ public Customer getCustomer(int index) { if (index >= total || index < 0) { return null; } return customers[index]; } /** * 获取存储的客户的数量 * @return */ public int getTotal() { return total; } }
CustomerView
package com.xianhuii.p2.ui; import com.xianhuii.p2.bean.Customer; import com.xianhuii.p2.service.CustomerList; import com.xianhuii.p2.util.CMUtility; /** * CustomerView为主模块,负责菜单的显示和处理用户操作。 */ public class CustomerView { private CustomerList customerList = new CustomerList(10); public CustomerView() { Customer customer = new Customer("张三", '男', 18, "18888888888", "zs@qq.com"); customerList.addCustomer(customer); } /** * 显示客“客户信息管理软件”界面的方法 */ public void enterMainMenu() { boolean loopFlag = true; do { 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 key = CMUtility.readMenuSelection(); System.out.println(); switch (key) { case '1': addNewCustomer(); break; case '2': modifyCustomer(); break; case '3': deleteCustomer(); break; case '4': listAllCustomers(); break; case '5': System.out.println("确认是否退出(Y/N):"); char isExit = CMUtility.readConfirmSelection(); if (isExit == 'Y') { loopFlag = false; } } } while (loopFlag); } /** * 添加用户的操作 */ public void addNewCustomer() { System.out.println("----------------------添加客户----------------------"); System.out.print("姓名:"); String name = CMUtility.readString(10); System.out.print("性别:"); char gender = CMUtility.readChar(); System.out.print("年龄:"); int age = CMUtility.readInt(); System.out.print("电话:"); String phone = CMUtility.readString(13); System.out.print("邮箱:"); String email = CMUtility.readString(30); 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() { System.out.println("----------------------修改客户----------------------"); int id; Customer customer; for (;;) { System.out.print("请选择修改客户编号(-1退出):"); int number = CMUtility.readInt(); if (number == -1) { return; } customer = customerList.getCustomer(number - 1); if (customer != null) { id = number-1; break; } System.out.println("无法找到指定客户!"); } System.out.print("姓名(" + customer.getName()+"):"); String name = CMUtility.readString(10,customer.getName()); System.out.print("性别("+customer.getGender()+"):"); char gender = CMUtility.readChar(customer.getGender()); System.out.print("年龄("+customer.getAge()+"):"); int age = CMUtility.readInt(); System.out.print("电话("+customer.getPhone()+"):"); String phone = CMUtility.readString(13,customer.getPhone()); System.out.print("邮箱("+customer.getEmail()+"):"); String email = CMUtility.readString(30,customer.getEmail()); Customer newCustomer = new Customer(name, gender, age, phone, email); boolean isSuccess = customerList.replaceCustomer(id, newCustomer); if (isSuccess) { System.out.println("----------------------修改成功!----------------------"); } else { System.out.println("----------------------修改失败!----------------------"); } } /** * 删除用户的操作 */ private void deleteCustomer() { System.out.println("----------------------删除客户----------------------"); int id; Customer customer; for (;;) { System.out.print("请选择删除客户编号(-1退出):"); int number = CMUtility.readInt(); if (number == -1) { return; } customer = customerList.getCustomer(number - 1); if (customer != null) { id = number-1; break; } System.out.println("无法找到指定客户!"); } String name = customer.getName(); char gender = customer.getGender(); int age = customer.getAge(); String phone = customer.getPhone(); String email = customer.getEmail(); System.out.println("编号\t\t姓名\t\t性别\t\t年龄\t\t电话\t\t\t\t邮箱"); System.out.println(id+1 + "\t\t" + name + "\t\t" + gender + "\t\t" + age + "\t\t" + phone + "\t\t" + email); System.out.println("确认是否删除(Y/N):"); char isDelete = CMUtility.readConfirmSelection(); boolean isSuccess = false; if (isDelete == 'Y') { isSuccess = customerList.deleteCustomer(id); } if (isSuccess) { System.out.println("----------------------删除成功!----------------------"); } else { System.out.println("----------------------删除失败!----------------------"); } } /** * 显示用户的操作 */ 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年龄\t\t电话\t\t\t\t邮箱"); Customer[] customers = customerList.getAllCustomers(); for (int i = 0; i < total; i++) { String name = customers[i].getName(); char gender = customers[i].getGender(); int age = customers[i].getAge(); String phone = customers[i].getPhone(); String email = customers[i].getEmail(); System.out.println(i+1 + "\t\t" + name + "\t\t" + gender + "\t\t" + age + "\t\t" + phone + "\t\t" + email); } } System.out.println("--------------------客户列表完成--------------------"); } public static void main(String[] args) { CustomerView customerView = new CustomerView(); customerView.enterMainMenu(); } }
CMUtility
package com.xianhuii.p2.util; import java.util.Scanner; public class CMUtility { private static Scanner scanner = new Scanner(System.in); 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); } public static char readChar(char defaultValue) { String str = readKeyBoard(1, true); return (str.length() == 0) ? defaultValue : str.charAt(0); } public static int readInt() { int n; for (; ; ) { String str = readKeyBoard(2, false); try { n = Integer.parseInt(str); break; } catch (NumberFormatException e) { System.out.println("数字输入错误,请重新输入:"); } } return n; } 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.println("数字输入错误,请重新输入:"); } } return n; } public static String readString(int limit) { return readKeyBoard(limit, false); } public static String readString(int limit, String defaultValue) { String str = readKeyBoard(limit, true); return str.equals("") ? defaultValue : str; } 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; } }
3、运行主界面