文章目录

  • 项目介绍
  • 一、项目要求
    • 1.添加客户
    • 2.修改客户
    • 3.删除客户
    • 4.显示客户列表
  • 二、软件设计结构
    • 1.软件流程
    • 2.CMUtility.java(实现键盘访问)
    • 3.Customer.java(实现Customer类)
    • 4.CustomerList.java
    • 5.CustomerView.java(主模块)
  • 三、结果展示
    • 1.初始界面
    • 2.显示学生列表
    • 3.添加学生列表
    • 4.删除学生列表
    • 5.修改学生列表
  • 总结

项目介绍

利用eclispe编译器Java编程模拟实现基于文本界面的《客户信息管理软件》。
该软件能够实现对客户对象的插入、修改和删除(用数组实现),并能够打印客户明细表。
项目采用分级菜单方式。主菜单如下:

一、项目要求

每个客户的信息被保存在Customer对象中。
以一个Customer类型的数组来记录当前所有的客户。
每次“添加客户”(菜单1)后,客户(Customer)对象被添加到数组中。
每次“修改客户”(菜单2)后,修改后的客户(Customer)对象替换数组中原对象。
每次“删除客户”(菜单3)后,客户(Customer)对象被从数组中清除。
执行“客户列表 ”(菜单4)时,将列出数组中所有客户的信息。

1.添加客户

2.修改客户

3.删除客户

4.显示客户列表

二、软件设计结构

1.软件流程

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

Customer:为实体对象,用来封装客户信息
CustomerList:为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加、修改、删除和遍历方法,供CustomerView调用
CustomerView:为主模块,负责菜单的显示和处理用户操作
CMUtility.java:Java环境自带的工具类,提供各种封装好的方法供调用,可用来方便地实现键盘访问。

2.CMUtility.java(实现键盘访问)

该类提供了以下静态方法:

public static char readMenuSelection()
用途:该方法读取键盘,如果用户键入’1’-’5’中的任意字符,则方法返回。返回值为用户键入字符。
public static char readChar() 和 public static char readChar(char defaultValue)
用途:这两个方法功能相同,均从键盘读取一个字符,并将其作为方法的返回值。
参数: defaultValue — 如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。(提示:此方法可在修改客户时调用)
public static int readInt() 和public static int readInt(int defaultValue)
用途:这两个方法功能相同,均从键盘读取一个长度不超过2位的 整数,并将其作为方法的返回值。
参数: defaultValue — 如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
public static String readString(int limit) 和
public static String readString(int limit, String defaultValue)
用途:这两个方法功能相同,均从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值。
参数:limit — 指定字符串的最大长度
defaultValue — 如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
public static char readConfirmSelection()
用途:从键盘读取‘Y’或’N’,并将其作为方法的返回值。

代码如下:

package com.atguigu.p2.util;
/**
*
*CMUtility工具类:
*将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。*/import java.util.*;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.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;}
}

3.Customer.java(实现Customer类)

package com.atguigu.p2.bean;
/***
* @Description  Customer为实体对象,用来封装客户信息
* @author SCU_zhangxiao  Email:zhangx6512@163.com
* @version
* @date 2021年4月16日上午9:59:16
**/
public class Customer {private String name;private char gender;private int age;private String phone;private String email;//get/set方法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) {this.name = name;this.gender = gender;this.age = age;this.phone = phone;this.email = email;}}

4.CustomerList.java

package com.atguigu.p2.service;import com.atguigu.p2.bean.Customer;/***
* @Description  CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,
* 并提供相应的添加、修改、删除、遍历方法,供CustomerView调用
* @author SCU_zhangxiao  Email:zhangx6512@163.com
* @version
* @date 2021年4月16日上午10:02:20
**/
public class CustomerList {private Customer[] customers;//用来保存客户对象的数组private int total = 0;//记录已保存客户对象的数量/*** 用来初始化customers数组的构造器* @param totalCustomer:指定数组的长度*/public CustomerList(int totalCustomer){customers = new Customer[totalCustomer];//动态初始化}/*** * @Description 增* @author SCU_zhangxiao* @date 2021年4月20日下午7:19:16* @param customer:要添加的客户信息* @return true:添加成功     false:添加失败*/public boolean addCustomer(Customer customer){if(total >= customers.length){return false;}customers[total++] = customer;return true;}/*** * @Description 改* @author SCU_zhangxiao* @date 2021年4月20日下午7:25:51* @param index:要修改的客户序号* @param cust:改后的客户信息* @return*/public boolean replaceCustomer(int index,Customer cust){if(index < 0|| index >= total){return false;}customers[index] = cust;return true;}/*** * @Description 删* @author SCU_zhangxiao* @date 2021年4月20日下午7:30:58* @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] = null;return true;}/*** * @Description 获取客户信息* @author SCU_zhangxiao* @date 2021年4月20日下午7:42:46* @return custs*/public Customer[] getAllCustomers(){Customer[] custs = new Customer[total];for(int i = 0;i < total;i++){custs[i] = customers[i];}return custs;}/*** * @Description 获取指定位置的客户信息* @author SCU_zhangxiao* @date 2021年4月20日下午7:45:52* @param index* @return*/public Customer getCustomer(int index){if(index < 0|| index >= total){return null;}return customers[index];}/*** * @Description 获取客户总数* @author SCU_zhangxiao* @date 2021年4月20日下午7:50:11* @return*/public int getTotal(){return total;}}

5.CustomerView.java(主模块)

package com.atguigu.p2.ui;import com.atguigu.p2.bean.Customer;
import com.atguigu.p2.service.CustomerList;
import com.atguigu.p2.util.CMUtility;/*** * @Description 主模块,负责人机交互,显示操作* @author SCU_zhangxiao Email:zhangx6512@163.com* @version* @date 2021年4月19日下午3:45:15**/
public class CustomerView {private CustomerList customerList = new CustomerList(10);public CustomerView(){Customer customer = new Customer("王涛",'男',23,"13245678945","zxa@163.com");customerList.addCustomer(customer);}/*** * @Description 显示《学生信息管理软件》* @author SCU_zhangxiao* @date 2021年4月20日下午7:59:20*/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':deleteCustomer();break;case '4':listAllCustomers();break;case '5':System.out.print("确认是否退出(Y/N): ");char isExit = CMUtility.readConfirmSelection();if (isExit == 'Y') {isFlag = false;}break;}}}/*** * @Description 添加* @author SCU_zhangxiao* @date 2021年4月20日下午8:01:57*/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("----------学生目录已满,添加失败");}}/*** * @Description 修改* @author SCU_zhangxiao* @date 2021年4月20日下午8:02:10*/public void modifyCustomer() {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(4, cust.getName());System.out.print("性别(" + cust.getGender() + "):");char gender = CMUtility.readChar(cust.getGender());System.out.print("年龄(" + cust.getAge() + "):");int age = CMUtility.readInt(cust.getAge());System.out.print("电话(" + cust.getPhone() + "):");String phone = CMUtility.readString(15, cust.getPhone());System.out.print("邮箱(" + cust.getEmail() + "):");String email = CMUtility.readString(15, cust.getEmail());Customer newCust = new Customer(name, gender, age, phone, email);boolean isReplaced = customerList.replaceCustomer(number-1, newCust);if(isReplaced){System.out.println("----------------修改成功-----------------------");}else{System.out.println("----------------修改失败-----------------------");}}/*** * @Description 删除* @author SCU_zhangxiao* @date 2021年4月20日下午8:02:21*/public void deleteCustomer() {System.out.println("删除学生信息");int number = 0;Customer customer = null;for (;;) {System.out.print("请选择待删除学生编号(-1退出):");number = CMUtility.readInt();if (number == -1) {return;}customer = customerList.getCustomer(number - 1);if (customer == null) {System.out.println("无法找到指定学生!");} elsebreak;}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("----------无法找到指定学生,删除失败--------------");}}}/*** * @Description 显示学生列表* @author SCU_zhangxiao* @date 2021年4月20日下午8:02:32*/public 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邮箱");Customer[] custs = customerList.getAllCustomers();for (int i = 0; i < custs.length; i++) {Customer cust = custs[i];System.out.println(i + 1 + "\t" + cust.getName() + "\t" + cust.getGender() + "\t" + cust.getAge() + "\t\t" + cust.getPhone() + "\t" + cust.getEmail());}}System.out.println("-------------------------学生列表完成-------------------------");}public static void main(String[] args) {CustomerView view = new CustomerView();view.enterMainMenu();}}

三、结果展示

1.初始界面

2.显示学生列表

3.添加学生列表


4.删除学生列表


5.修改学生列表


总结

本项目可以灵活更改,修改为“学生信息管理系统”,本项目主要是Java面向对象知识的运用,对学生信息进行管理:增、删、改、查,并通过文本界面形式展示。

Java项目二:客户信息管理系统(eclipse)相关推荐

  1. java毕业设计企业客户信息管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计企业客户信息管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计企业客户信息管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构 ...

  2. Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)

    源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会.当月转化情况.将要 ...

  3. java实现简易客户信息管理系统

    需求说明 注:项目已经提供了CMUtility.java类,可用来方便地实现键盘访问 模拟实现基于文本界面的<客户信息管理软件>. 该软件能够实现对客户对象的插入.修改和删除(用数组实现) ...

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

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

  5. Java项目:中小医院信息管理系统(java+Springboot+ssm+mysql+maven+jsp)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:实现了挂号收费,门诊管理,划价收 费,药房取药,体检管理,药房管理,系统维护等各个模块功能,非常不错. 二.项 ...

  6. CRM客户信息管理系统

    一.项目简介 客户信息管理系统,基于SSM实现的客户信息管理系统.演示视频请点击[演示视频] 二.技术实现 后台框架:Spring.SpringMVC.MyBatis UI界面:JSP.jQuery ...

  7. 掌财社:Java项目案例之客户信息管理系统的实现

    本篇文章将使用所学过的Java知识来实现一个简单的客户信息管理系统的小项目,下面内容是具体地实现过程,这篇文章供大家参考学习,希望能帮助到大家. 类图: Customer类: public class ...

  8. java计算机毕业设计房产客户信息管理系统源码+系统+lw文档+mysql数据库+部署

    java计算机毕业设计房产客户信息管理系统源码+系统+lw文档+mysql数据库+部署 java计算机毕业设计房产客户信息管理系统源码+系统+lw文档+mysql数据库+部署 本源码技术栈: 项目架构 ...

  9. java毕业生设计房产客户信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计房产客户信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计房产客户信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S ...

  10. 【附源码】计算机毕业设计JAVA房产客户信息管理系统

    [附源码]计算机毕业设计JAVA房产客户信息管理系统[附源码] 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

最新文章

  1. swift 函数篇章
  2. Eclipse真机测试注意事项
  3. boost::tiernan_all_cycles用法的测试程序
  4. ssh 命令行通过私钥登录其它设备
  5. html语言amp,第二amp;三讲HTML语言.ppt
  6. 在verilog中调用VHDL模块
  7. shell脚本命令行参数里的空白符
  8. 那些年的草根站长,都被时代淘汰了吗?
  9. html计算100以内偶数和,学习脚本1:计算100以内奇数和和偶数和 (笔记)
  10. bzoj 1984: 月下“毛景树”
  11. 2021年茶艺师(中级)考试内容及茶艺师(中级)考试总结
  12. office 向程序发送命令时出现问题
  13. photoshop图层混合模式之颜色模式(HSB体系)
  14. 什么叫做项目孵化_什么是创业孵化园,孵化基地的五大要素有哪些?
  15. Altium Designer PCB设计规则中英对照
  16. 微信小程序2D canvas绘制分享海报
  17. 【设计教程】在PS里面制作简单的下雨效果!
  18. android共享win10,如何与Android手机共享Win10笔记本电脑网络
  19. python使用代理ip访问网站_python使用代理ip访问网站的实例
  20. 关于显示webpack不是内部或外部命令问题的解决方法

热门文章

  1. IDEA中调整代码格式的快捷键
  2. Linux安装及管理程序 配置yum本地仓库
  3. 满满的正能量,送给你!早安,朋友
  4. CentOS7.9 DNS 设置
  5. Latex插入表格及表格设置
  6. 达观数据CTO纪达麒:小标注数据量下自然语言处理实战经验
  7. H5唤起手机打电话(拨号)和发短信功能
  8. 哈尔滨一居民家发生爆炸 造成1人死亡(图)
  9. arcgis按角度画扇形
  10. “科技猫”联合创始人古茜:懂科技的女生更性感