目录

前言

本项目目标

一、需求及软件设计结构说明

1.需求说明

1)主菜单

2)添加客户

3)修改客户

4)删除客户

5)客户列表

2.软件设计结构

1)Customer类的设计

2)CustomerList类的设计

3)CustomerView类的设计

二、重难点代码讲解

1.CustomerList类

2.CustomerView类

三、程序部分运行结果展示及源代码

1.运行结果展示

2.源代码

总结


前言

本文主要介绍基于Java的一个基础项目——客户信息管理软件(附完整源代码)。本项目是为了让初学者进一步掌握编程技巧和调试技巧,并初步掌握面向对象编程的思想及应用,体会面向对象编程的好处,同时对前面所学的数组、类和对象等等基础知识进行巩固。


本项目目标

  • 模拟实现一个基于文本界面(程序控制台)的《客户信息管理软件》
  • 进一步掌握编程技巧和调试技巧,熟悉面向对象编程
  • 主要涉及以下知识点:
  1. 类结构的使用:属性、方法及构造器
  2. 对象的创建与使用
  3. 类的封装性
  4. 声明和使用数组
  5. 数组的插入、删除和替换
  6. 关键字的使用:this

一、需求及软件设计结构说明

1.需求说明

模拟实现基于文本界面的《客户信息管理软件》。 该软件能够实现对客户对象的插入、修改和删除(用数组实现),并能够打印客户明细表。

1)主菜单

项目采用分级菜单方式。主菜单如下:

1.每个客户的信息被保存在Customer对象中。

2.以一个Customer类型的数组来记录当前所有的客户。

3.每次“添加客户”(菜单1)后,客户(Customer)对象被添加到数组中。

4.每次“修改客户”(菜单2)后,修改后的客户(Customer)对象替换数组中原对象。

5.每次“删除客户”(菜单3)后,客户(Customer)对象被从数组中清除。

6.执行“客户列表 ”(菜单4)时,将列出数组中所有客户的信息。

2)添加客户

“添加客户”的界面及操作过程如下所示:

3)修改客户

“修改客户”的界面及操作过程如下所示:

4)删除客户

“删除客户”的界面及操作过程如下所示:

5)客户列表

“客户列表”的界面及操作过程如下所示:

2.软件设计结构

该软件由以下三个模块组成:

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

1)Customer类的设计

>  Customer为实体类,用来封装客户信息

>  该类封装客户的以下信息:

1. String name :客户姓名

2. char gender :性别

3. int age         :年龄

4. String phone:电话号码

5. String email :电子邮箱

>  提供各属性的get/set方法

>  提供所需的构造器(一个空参和一个全参,也可自行确定)

2)CustomerList类的设计

>  CustomerList为Customer对象的管理模块,内部使用数组管理一组Customer对象

>  本类封装以下信息(成员变量):

1. Customer[] customers:用来保存客户对象的数组

2. int total = 0                 :记录已保存客户对象的数量

>  该类至少提供以下构造器和方法:

1. public CustomerList(int totalCustomer)

用途:构造器,用来初始化customers数组

参数:totalCustomer指定customers数组的最大空间

2. public int getTotal()

用途:获取已保存客户对象的数量,是成员变量total的get方法

返回:成员变量total的值

3. public boolean addCustomer(Customer customer)

用途:将参数customer添加到数组中最后一个客户对象记录之后

参数:customer指定要添加的客户对象

返回:添加成功返回true;false表示数组已满,无法添加

4. public boolean replaceCustomer(int index, Customer cust)

用途:用参数customer替换数组中由index指定的对象

参数:customer指定替换的新客户对象

index指定所替换对象在数组中的位置,从0开始

返回:替换成功返回true;false表示索引无效,无法替换

5. public boolean deleteCustomer(int index)

用途:从数组中删除参数index指定索引位置的客户对象记录

参数: index指定所删除对象在数组中的索引位置,从0开始

返回:删除成功返回true;false表示索引无效,无法删除

6. public Customer[] getAllCustomers()

用途:返回数组中记录的所有客户对象

返回:Customer[] 数组中包含了当前所有客户对象,该数组长度与对象个数相同

7. public Customer getCustomer(int index)

用途:返回参数index指定索引位置的客户对象记录

参数: index指定所要获取的客户在数组中的索引位置,从0开始

返回:封装了客户信息的Customer对象

3)CustomerView类的设计

>  CustomerView为主模块,负责菜单的显示和处理用户操作

>  本类封装以下信息:

1. CustomerList customerList = new CustomerList(10);

创建最大包含10个客户对象的CustomerList 对象,供以下各成员方法使用。

>  该类至少提供以下方法:

1. public void enterMainMenu()

用途:显示主菜单,响应用户输入,根据用户操作分别调用其他相应的成员方法(如

addNewCustomer),以完成客户信息处理。

2. private void addNewCustomer()

private void modifyCustomer()

private void deleteCustomer()

private void listAllCustomers()

用途:这四个方法分别完成“添加客户”、“修改客户”、“删除客户”和“客户列表”等各菜单功

能。这四个方法仅供enterMainMenu()方法调用。

3. public static void main(String[] args)

用途:创建CustomerView实例,并调用 enterMainMenu()方法以执行程序。


除了以上三个类,本项目中还提供了CMUtility类(工具类),可用来方便地实现键盘访问并对用户的错误输入进行判断。该类提供的方法如下:

二、重难点代码讲解

Customer类是客户实体类,用来封装客户信息。这个类非常简单,我就不具体讲解了,大家注意一下 private 和 this 关键字的使用就行。CMUtility类是一个工具类,可用来方便地实现键盘访问并对用户的错误输入进行判断。对于初学者来说,工具类直接拿来使用,不必了解具体的实现细节,所以CMUtility类我也不细讲了。

想了解以上两个类的具体实现的读者,我在文章末尾放上了完整源代码链接,大家可自行去查看。

1.CustomerList类

/*** CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,* 并提供相应的添加、修改、删除和遍历方法,供CustomerView调用。*/

这个类的重难点是添加客户对象和删除客户对象这两个方法。

//添加客户对象
public boolean addCustomer(Customer customer) {if (total != customers.length) {customers[total] = customer;total++;return true;}return false;
}

添加和删除客户对象都需要注意成员变量 total(记录已保存客户对象的数量)的变化,添加需要 total+1(total++),删除需要 total-1(total--)。

//删除客户对象
public boolean deleteCustomer(int index) {if (index >= 0 && index < total) {for (int i = index; i < total; i++) {if (i == total - 1)customers[i] = null;  //如果删除的是最后一个客户,直接置为空elsecustomers[i] = customers[i + 1];  //否则就用后面一位客户覆盖当前客户}total--;return true;}return false;
}

删除客户对象的方法是直接用被删除客户的后面一位客户覆盖掉被删除客户,如果是数组里最后一位客户则直接赋值为null。

2.CustomerView类

/*** CustomerView为主模块,负责菜单的显示和处理用户操作*/

这个类首先需要注意的是用户操作各个功能时,给用户的提示是否明确合理。比如修改客户,需要考虑当用户输入的需要修改的客户编号不存在时应该怎么办,给出怎样的提示?以下是我写的修改客户的代码,大家可以参考下。其他操作的用户提示是同样的道理,大家可以举一反三思考下。

//修改客户
private void modifyCustomer() {System.out.println("------------修改客户------------");Scanner sc = new Scanner(System.in);Customer c;int num;while (true) {System.out.print("请选择待修改客户编号(-1退出):");num = sc.nextInt();if (num == -1)return;c = customerList.getCustomer(num - 1);if (c == null)System.out.println("您输入的编号有误,请重新输入!");else break;}System.out.print("姓名(" + c.getName() + "):");String name = CMUtility.readString(4, c.getName());System.out.print("性别(" + c.getGender() + "):");char gender = CMUtility.readChar(c.getGender());System.out.print("年龄(" + c.getAge() + "):");int age = CMUtility.readInt(c.getAge());System.out.print("电话(" + c.getPhone() + "):");String phone = CMUtility.readString(11, c.getPhone());System.out.print("邮箱(" + c.getEmail() + "):");String email = CMUtility.readString(18, c.getEmail());Customer cu = new Customer(name, gender, age, phone, email);customerList.replaceCustomer(num - 1, cu);System.out.println("------------修改完成------------");
}

第二个需要注意的地方是 enterMainMenu() 方法,大家要清楚它的整体流程图:

最后需要注意的地方是 main() 方法中调用 enterMainMenu() 方法需要先创建CustomerView实例。因为 main() 方法是static(静态的),而 enterMainMenu() 方法没有static,所以不能直接调用,需要通过本类的实例对象来间接调用。至于static和没有static的区别这里就不细讲了,感兴趣的读者可以自己下去了解。

//创建CustomerView实例,并调用 enterMainMenu()方法
public static void main(String[] args) {CustomerView customerView = new CustomerView();customerView.enterMainMenu();
}

三、程序部分运行结果展示及源代码

1.运行结果展示

添加客户 :

修改客户:

客户列表:

2.源代码

这是完整源代码链接,有需要的读者可以自行前往查看:

链接:https://pan.baidu.com/s/1h58vOHv0O2gLlToFcNDmFg
提取码:an4s


总结

以上就是Java基础项目——客户信息管理软件的所有内容,如果觉得这篇博客写得还不错或是对你有所启发和帮助的话就点个赞吧,有任何问题欢迎在评论区指正和询问哦,感谢您的阅读!

Java基础项目——客户信息管理软件相关推荐

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

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

  2. 基于JAVA实现的客户信息管理软件(简易)

    文章目录 1.前期介绍 2.1 Customer类的设计 2.2 CustomerList类的设计 2.3 CustomerView类的设计 3.1 映入的CMUtitllity类 4. 结果显示 1 ...

  3. Java课程设计项目 客户信息管理软件 客户信息管理系统的实现

    public class CustomerView {                 //主函数                 public static void main(String[] a ...

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

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

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

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

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

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

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

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

  8. Java学习路线:day11 客户信息管理软件

    文章目录 转载自atguigu.com视频 客户信息管理软件 需求说明书 软件设计结构 第1步:封装CMUtility工具类 第2步:Customer类的设计 第3步:CustomerList类的设计 ...

  9. Java实现客户信息管理软件

    资源分享: 尚硅谷 链接:https://pan.baidu.com/s/1B_liAbYxos9voDuFLx-Ldg  提取码:1if5  --来自百度网盘超级会员V6的分享 「Project2( ...

最新文章

  1. VS2017项目打包为exe和setup
  2. 不会连PPPoE协议都不会配吧?
  3. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约
  4. JVM内存堆布局图解分析
  5. 警告:‘xxxx’ 将随后被初始化
  6. python as_Python with as的用法
  7. Chrome DevTools — Network
  8. C语言库函数大全及应用实例六
  9. java数组有跨类建立对象_50个性能优化的细节:Java高级开发必会,来学习下吧...
  10. 济南学习 Day 5 T1 晚
  11. android NDK 详解
  12. 机器学习库sklearn之怎么划分训练集和测试集
  13. BZOJ 3669 luogu 2387 魔法森林
  14. SQL语句插入日期类型
  15. GAN实验错误记录——tensorflow.python.framework.errors_impl.InvalidArgumentError
  16. 华为eNSP路由器报错误代码:40,41的问题解决办法。路由器启动无限###。eNSP安装。
  17. CSDN如何公开私密博客
  18. php老掉牙的技术,老掉牙技术——HOOK 封包
  19. vulnstack7 writeup
  20. 百度网盘 下载工具整理

热门文章

  1. 缅怀我的第一台平板——Surface RT
  2. 提效80倍!优维CMDB好样的
  3. f2fs系列文章fill_super(三)
  4. 苹果ipad怎么刷机_苹果手机:iOS 13.7 测试版_iOS 13.7 测试版一键刷机教程
  5. defer script
  6. 如何支持微软邮箱OAuth2.0认证
  7. FTP文件夹打开错误,Windows无法访问此文件夹
  8. ftp 操作,支持断点续传或者继续下载。
  9. 【未解决】HP打印机如何单独安装扫描仪驱动
  10. 通过PowerShell获取域名whois信息