1、创建CMUtility工具类

package com.aiguigu.p2.util;import java.util.*;
/***CMUtility工具类*将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,*而无需考虑具体的功能实现细节*/
public class CMUtility {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.println("选择错误,请重新输入:");}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.println("数字输入错误,请重新输入");}}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.println("数字输入错误,请重新输入:");}}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.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;}
}

2、创建Customer类

package com.aiguigu.p2.bean;
/** 实体对象,用来封装客户信息*/
public class Customer {private String name;  //姓名private char gender;  //性别private int age;  //年龄private String phone;  //电话号码private String 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;}public Customer() {}public Customer(String name, char gender, int age, String phone, String email) {super();this.name = name;this.gender = gender;this.age = age;this.phone = phone;this.email = email;}
}

3、创建CustomerList 类

package com.aiguigu.p2.service;import com.aiguigu.p2.bean.Customer;/** 此为Customer对象的管理模块*/
public class CustomerList {private Customer[] customers;   //用来保存客户对象的数组private int total;              //记录以保存客户对象的数量/*** 用来初始化customers数组的构造器* @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;//total++;//第二种方式customers[total++] = customer;return true;}/*** 修改指定索引位置的客户信息* @param index* @param cust* @return true:添加成功  false:添加失败*/public boolean replaceCustomer(int index,Customer cust) {if (index < 0 || index >= total) {return false;}customers[index] = cust;return true;}/*** 删除指定索引位置的客户* @param index* @return true:添加成功  false:添加失败*/public boolean deleteCustomer(int index) {if (index < 0 || index >= total) {return false;}for (int i = index; i < total-1; i++) {customers[i] = customers[i + 1];}//最后有数据的元素需要置空//第一种方式//customers[total - 1] = null;//total--;//第二种方式customers[--total] = null;return true;}/*** 获取所有的客户信息* @return*/public Customer[] getAllCustomer() {Customer[] custs = new Customer[total];for (int i = 0; i < total; i++) {custs[i] = customers[i];}return custs;}/*** 获取指定索引位置的客户信息** @return 如果找到元素,则返回;如果没有找到,则返回null* @paam index*/public Customer getCustomer(int index) {if (index < 0 || index >= total) {return null;}return customers[index];}/*** 获取存储的客户的数量* @return*/public int getTotal(){return total;}
}

4、创建CustomerView 类

package com.aiguigu.p2.ui;import com.aiguigu.p2.bean.Customer;
import com.aiguigu.p2.service.CustomerList;
import com.aiguigu.p2.util.CMUtility;/** 主模块 负责菜单的显示和处理用户操作*/
public class CustomerView {//最大包含10个客户对象private static CustomerList customerList = new CustomerList(10);public CustomerView() {Customer customer = new Customer("张三", '男', 29, "13212344321", "123@gmail");customerList.addCustomer(customer);}public static void main(String[] args) {CustomerView view = new CustomerView();view.enterMainMenu();}/*** 显示客户管理软件主菜单的方法*/public void enterMainMenu() {boolean isFlag = true;while(isFlag){System.out.println("\n-----------------客户信息管理软件-----------------\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 menu = CMUtility.readMenuSelection();switch (menu) {case '1':addNewCustomer();break;case '2':modifyCustomer();break;case '3':removeCustomer();break;case '4':listAllCustomers();break;case '5'://System.out.println("退出");System.out.print("确认是否退出(Y/N):");char isExit = CMUtility.readConfirmSelection();if(isExit == 'Y'){isFlag = false;}}}}/*** 添加客户的操作*/public void addNewCustomer() {//System.out.println("添加客户的操作");System.out.println("---------------添加客户---------------");System.out.print("姓名:");String name = CMUtility.readString(10);System.out.print("性别:");char gendel = 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, gendel, age, phone, email);boolean isSuccess = customerList.addCustomer(customer);if (isSuccess) {System.out.println("---------------添加客户成功---------------");}else {System.out.println("----------客户目录已满,添加失败----------");}}/*** 修改客户的操作*/public void modifyCustomer() {//System.out.println("修改客户的操作");System.out.println("-------------修改客户-------------");Customer cust;int number;for(;;){System.out.print("请选择待修改客户编号(-1退出):");number = CMUtility.readInt();if (number == -1) {return;}cust = customerList.getCustomer(number-1);if (cust == null) {System.out.println("无法找到指定客户!");} else {//找到了相应编号的客户break;}}//程序走到这里,意味着找到了指定的客户,,修改用户信息System.out.print("姓名(" + cust.getName() + "):");String name = CMUtility.readString(10,cust.getName());System.out.print("性别(" + cust.getGender() + "):");char gendel = CMUtility.readChar(cust.getGender());System.out.print("年龄(" + cust.getAge() + "):");int age = CMUtility.readInt(cust.getAge());System.out.print("电话号码(" + cust.getPhone() + "):");String phone = CMUtility.readString(13,cust.getPhone());System.out.print("电子邮箱(" + cust.getEmail() + "):");String email = CMUtility.readString(30,cust.getEmail());//把新的封装起来Customer newCust = new Customer(name, gendel, age, phone, email);boolean isReplaced = customerList.replaceCustomer(number - 1, newCust);if (isReplaced) {System.out.println("-----------修改完成-----------");} else {System.out.println("-----------修改失败-----------");}}/*** 删除客户的操作*/public void removeCustomer() {//System.out.println("删除客户的操作");System.out.println("-------------删除客户-------------");int number;for(;;) {System.out.print("请选择待删除客户编号(-1退出):");number = CMUtility.readInt();if (number == -1) {return;}Customer customer = customerList.getCustomer(number-1);if (customer == null) {System.out.println("无法找到指定的客户");} else {break;}}System.out.print("确认是否删除(Y/N):");char isDelete = CMUtility.readConfirmSelection();if (isDelete == 'Y') {boolean deleteSuccess = customerList.deleteCustomer(number-1);if (deleteSuccess) {System.out.println("------------删除完成------------");} else {System.out.println("------------删除失败------------");}}else{return;}}/*** 显示客户列表的操作*/public void listAllCustomers() {//System.out.println("显示客户列表的操作");System.out.println("---------------客户列表---------------");int total = customerList.getTotal();if (total == 0) {System.out.println("没有客户记录!");}else{System.out.println("编号\t姓名\t性别\t年龄\t电话号码\t电子邮箱");Customer[] custs = customerList.getAllCustomer();for (int i = 0; i < custs.length; i++) {Customer customer = custs[i];System.out.println((i + 1) + "\t" + customer.getName() +"\t" + customer.getGender() +"\t" + customer.getAge() +"\t" + customer.getPhone() + "\t" + customer.getEmail());}}System.out.println("---------------客户列表完成---------------");}}

最终界面:


在这里插入图片描述

21/4/25 项目二:客户信息管理软件相关推荐

  1. Java项目二——客户信息管理软件

    目录 1.CMUtility工具类 2.客户类:Customer 3.客户信息管理类:CustomerList 4.CustomerView为主模块 二.程序的运行结果展示 1.添加客户 2.修改客户 ...

  2. Java 简单控制台项目之客户信息管理软件 --- 凌宸1642

    项目二:客户信息管理软件 模拟实现一个基于文本界面的<客户信息管理软件> 进一步掌握编程技巧和调试技巧,熟悉面向对象编程 主要涉及以下知识点: 类结构的使用:属性.方法及构造器 对象的创建 ...

  3. java se 学习之项目二:客户信息管理软件

    一.需求说明 模拟实现基于文本界面的<客户信息管理软件>. 该软件能够实现对客户对象的插入.修改和删除(用数组实现),并能够打印客户明细表. 项目采用分级菜单方式.主菜单如下: ----- ...

  4. Java小项目—客户信息管理软件(二)

    CustomerView类的设计 CustomerView为主模块,负责菜单的显示和处理用户操作. 本类封装以下信息: 创建最大包含10个客户对象的CustomerList对象,供以下各成员方法使用. ...

  5. Java基础项目——客户信息管理软件

    目录 前言 本项目目标 一.需求及软件设计结构说明 1.需求说明 1)主菜单 2)添加客户 3)修改客户 4)删除客户 5)客户列表 2.软件设计结构 1)Customer类的设计 2)Custome ...

  6. 零基础Java学习之初级项目实践(客户信息管理软件-附源码)

    项目涉及知识点 基础的面向对象编程项目. 类和对象(属性.方法及构造器) 类的封装 引用数组 数组的插入.删除和替换 对象的聚集处理 多对象协同工作 需求说明 总体说明 模拟实现基于文本界面的< ...

  7. P001【项目一】客户信息管理软件_Customer类(2)

    客户信息管理软件_问题描述汇总 Customer 类的详细代码 CustomerList 类的详细代码 CustomerView 类的详细代码 CMutility 类的详细代码 实体对象Custome ...

  8. Golang入门项目(家庭收支软件和客户信息管理软件)

    家庭收支软件 package utilsimport "fmt"type FamilyAccount struct {//声明一个变量,保存接收用户输入的选项key string/ ...

  9. 【Java7】练习:选角色,挑苹果,员工类,换心脏,斗地主,发工资,客户信息管理软件,开发团队调度系统

    文章目录 1.玩家选择角色:return new 2.人工挑苹果:只一个接口CompareAble 3.员工类接口:implements Comparator 4. 医生帮换心脏:Organ类doWo ...

最新文章

  1. 每天一个 Linux 命令(13):less 命令
  2. 3d地球旋转html,echarts 3D地球实现自动旋转
  3. php载入内存的是本地代码吗,常量和静态变量会先载入内存后在进行执行php代码...
  4. 基于盐+Sha算法的安全密码保护机制
  5. macOS和iOS间的隔空接力功能
  6. jeDate 日期控件
  7. zabbix如何网站监控web
  8. ES查询-空字段和非空字段结果
  9. 基于Nonebot2搭建QQ机器人实战篇(一)
  10. Tomcat运行成功但是报500错误
  11. STM32F303+LAN9252的EtherCAT实现IO、AD、DA
  12. mac安装虚拟机VMware fusion12 和ubantu系统
  13. 制作Unity的二维时间轴编辑器界面
  14. [ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的
  15. Java学生学籍管理系统
  16. leetcode-838:推多米诺
  17. NoSQL在腾讯的应用实践
  18. GitHub超6.8万星,最全Python入门算法来了
  19. python 数学符号读法大全_机器学习常用数学符号及读法大全
  20. 软考高级-系统架构师-案例分析-案例题2

热门文章

  1. 优雅的绕过校园网认证实现免费上网
  2. Intent初级学习
  3. Linux各个版本介绍
  4. 微信开发者工具 设置一个tab为4个空格
  5. [nlp] 小傻学数据预处理
  6. 微信小程序3(WXSS模板样式和全局局部配置)
  7. html5霓虹效果代码,纯CSS实现酷炫的霓虹灯效果(附demo)
  8. Android:使用帧布局实现霓虹灯效果
  9. 如何通过技术手段批量删除公众号文章?
  10. 关于AE渲染高清GIF图片的解决方案