详解Java如何使用集合来实现一个客户信息管理系统

目录
  • 1 客户类
  • 2 主界面
  • 3 方法
    • (1)添加客户
    • (2)判断编号是否被占用
    • (3)修改客户信息
    • (4)删除客户
    • (5)客户列表
    • (6)退出
  • 4 问题总结
    • (1)字符串比较问题
    • (2)修改客户不成功
    • (3)get和set方法使用时的疑惑 (为什么这里用set那里用get?)

1 客户类

public class Customers {
    private String cid;
    private String name;
    private String sex;
    private String age;
    private String call;
    private String email;

    public Customers() {
    }

    public Customers(String cid,String name, String sex, String age, String call, String email) {
        this.cid=cid;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.call = call;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getCall() {
        return call;
    }

    public void setCall(String call) {
        this.call = call;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email){
        this.email = email;
    }

    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }
}

2 主界面

public class Customermanager {
    public static void main(String[] args)   {
        ArrayList<Customers> array = new ArrayList<Customers>();

        while (true) {
            System.out.println( "-----客户信息管理软件-----" );
            System.out.println( "1 添加客户" );
            System.out.println( "2 修改客户" );
            System.out.println( "3 删除客户" );
            System.out.println( "4 客户列表" );
            System.out.println( "5 退出" );
            System.out.println( "请选择1-5" );

            Scanner sc = new Scanner( System.in );
            String line = sc.nextLine();

            switch (line) {
                case "1":
                    //System.out.println( "1 添加客户" );
                    addCustomer( array );
                    break;
                case "2":
                    //System.out.println( "2 修改客户" );
                    modifyCustomer( array );
                    break;
                case "3":
                    //System.out.println( "3 删除客户" );
                    deleteCustomer( array );
                    break;
                case "4":
                    //System.out.println( "4 查看所有客户" );
                    findCustomer( array );
                    break;
                case "5":
                    System.out.print("确认是否退出(Y/N):");
                    String y = sc.nextLine();
                    if (y.equals( "Y" ))
                    {
                        System.exit( 0 );
                    }

            }
        }

    }

3 方法

(1)添加客户

public static void addCustomer(ArrayList<Customers> array ){
        Scanner sc = new Scanner( System.in );
        String cid;

        while (true){
            System.out.println("请输入客户编号");
            cid = sc.nextLine();
            boolean flag =isUsed( array,cid );
            if (flag){
                System.out.println("编号被占用,请重新输入");

            }else {
                break;
            }
        }

        System.out.println("请输入客户姓名");
        String name = sc.nextLine();
        System.out.println("请输入客户性别");
        String sex = sc.nextLine();
        System.out.println("请输入客户年龄");
        String age = sc.nextLine();
        System.out.println("请输入客户电话");
        String call = sc.nextLine();
        System.out.println("请输入客户邮箱");
        String email = sc.nextLine();

        Customers c = new Customers();
        c.setCid( cid );
        c.setName( name );
        c.setSex( sex );
        c.setAge( age );
        c.setCall( call );
        c.setEmail( email );
        array.add( c);

        System.out.println("添加成功");

    }

(2)判断编号是否被占用

 public static boolean isUsed(ArrayList<Customers>array ,String cid){
        boolean flag = false;
        for (int i = 0; i <array.size() ; i++) {
            Customers s = array.get( i );
            if (s.getCid().equals( cid )){
                flag = true;
                break;
            }

        }
        return flag;
    }

(3)修改客户信息

public static void modifyCustomer(ArrayList<Customers> array ){
        Scanner sc= new Scanner( System.in );
        System.out.println("请输入要修改的客户编号");
        String cid = sc.nextLine();
        System.out.println("请输入客户姓名");
        String name = sc.nextLine();
        System.out.println("请输入客户性别");
        String sex = sc.nextLine();
        System.out.println("请输入客户年龄");
        String age = sc.nextLine();
        System.out.println("请输入客户电话");
        String call = sc.nextLine();
        System.out.println("请输入客户邮箱");
        String adress = sc.nextLine();
        String email = sc.nextLine();
        Customers c = new Customers();
        c.setCid( cid );
        c.setName( name );
        c.setSex( sex );
        c.setAge( age );
        c.setCall( call );
        c.setEmail( email );

        for (int i = 0; i <array.size() ; i++) {
            Customers customers = array.get( i );
            if (customers.getCid().equals( cid )){
                array.set( i,c );
                break;
            }

        }
        System.out.println("修改客户信息成功");

    }

(4)删除客户

 public static void deleteCustomer(ArrayList<Customers> array ){
        Scanner sc = new Scanner( System.in );
        System.out.println("请输入要删除的客户编号(-1退出)");
        String cid = sc.nextLine();
        if (cid.equals( "-1" )){
            return;
        }
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Customers s = array.get( i );
                if (s.getCid().equals( cid )) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println( "该信息不存在,请重新输入" );
            } else {
                System.out.println("确认是否删除(Y/N):");
                String s = sc.nextLine();
                if (s.equals( "Y" )|s.equals( "y" )){
                    array.remove( index );
                    System.out.println( "删除成功" );
                }
        }
    }

(5)客户列表

 public static void findCustomer(ArrayList<Customers> array ){
        if (array.size()==0){
            System.out.println("无信息,请添加信息在再查询");
            return;//为了程序不再往下执行
        }
        System.out.println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱");
        for (int i = 0; i <array.size() ; i++) {
            Customers s = array.get( i );

            System.out.println(s.getCid()+"\t\t"+s.getName()+"\t"+s.getSex()+"\t"+s.getAge()+"\t\t"+s.getCall()+"\t\t"+s.getEmail());

        }
    }

(6)退出

 System.out.print("确认是否退出(Y/N):");
                    String y = sc.nextLine();
                    if (y.equals( "Y" ))
                    {
                        System.exit( 0 );
                    }

4 问题总结

(1)字符串比较问题

在遇到输入“-1”退出时碰到了问题,当时想着怎么比较String类型和int类型的数据,后面知道直接用equals方法直接比较String类型数据就行。

(2)修改客户不成功

这是错误代码片

for (int i = 0; i <array.size() ; i++) {
            Customers customers = array.get( i );
            if (customers.getCid().equals( i )){
                array.set( i,customers );
                break;
            }

错误如下:
首先 if (customers.getCid().equals( ))这一步比较的是遍历后的集合与输入的cid是否相同,所以应该是与cid比较而不是i;其次, array.set( );这一步是修改指定索引处的元素,返回被修改的元素;这里是用上面存储新的客户信息的c来修改索引处元素,所以修改后的代码为

for (int i = 0; i <array.size() ; i++) {
            Customers customers = array.get( i );
            if (customers.getCid().equals( cid )){
                array.set( i,c );
                break;
            }

(3)get和set方法使用时的疑惑 (为什么这里用set那里用get?)

本题中录入数据时候多用set方法,输出数据时用get方法。那么具体的应用场景在什么地方?
set是写入数据,get是得到数据
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

成员变量private,提供对应的getXxx()/setXxx()方法
总结:明确试用场景需求,封装之后,写入数据用(输入)set方法,得到数据(输出)用get方法。

到此这篇关于详解Java如何使用集合来实现一个客户信息管理系统的文章就介绍到这了,更多相关Java 客户信息管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 实战项目之疫情人员流动管理系统详解

    一.项目简述 本系统主要实现的功能有: 社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等 系统用户后台管理代

  • Java 实现完整功能的学生管理系统实例

    目录 一.前言 二.学生管理系统主要功能 在学生类下 在学生总部类下: main方法: 登录密码验证: 打印菜单: 增加学生信息: 查看学生信息: 删除学生信息: 修改学生信息: 查找学生信息: 代码效果演示图: 一.前言 我们前面写了通讯录管理系统,现在我们来写个学生管理系统, 其实主干代码都一 不过,在学生管理系统中我添加和优化了许多功能, 如[登录密码验证,异常处理,非空判断,,防止重复添加]等. 二.学生管理系统主要功能 增加学生信息 删除学生信息 修改学生信息 查找学生信息 查看所有学

  • java基于jdbc实现简单学生管理系统

    目录 工具类 工程目录: 运行截图: 这个是java连接mysql数据库的一个简单学生系统,通过jdbc连接数据库. 工具类 JDBCuntils. package Student; import java.io.IOException; import java.sql.*; import java.util.Properties; //数据库的工具类 public class JDBCuntils { private static String driver = ""; privat

  • java实现客户信息管理系统

    本文实例为大家分享了java实现客户信息管理系统的具体代码,供大家参考,具体内容如下 一.CMUtility工具类 讲不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节. 代码如下: package com.p2.util; import java.util.*; /** * 工具类 * 讲不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功 * 能实现细节. * **/ public class CMUtility { priva

  • Java实现通讯录管理系统项目

    本文实例为大家分享了Java实现通讯录管理系统的具体代码,供大家参考,具体内容如下 一.前言 我们学了这么久的知识了,光学知识不会用是一件很悲伤的事情,所以我们应学完 部分练一些项目或题,来巩固我们学习的知识,激发我们持续学习的动力. 二.创建通讯的功能 增加联系人信息 删除联系人信息 修改联系人信息 查看所有联系人信息 退出通信录管理系统 首先定义一个People类,提供相应的get.set方法 (在idea中有快捷键Alt+insert生成get.set方法,和构造方法) public cl

  • Java实战之客户信息管理系统

    一.软件设计结构 对于初学者来说,弄清框架显得尤为重要 首先该软件有以下三种模块组成 二.MVC设计模式 模型层:Customer处理数据 控制层:CustomerList处理业务逻辑 视图层:CustomerView显示数据 以下三点建议结合代码理解 1.Customer为实体对象,用于封装客户信息 2.CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加.修改.删除和遍历的方法,供CustomerView调用 3.Customer

  • JAVA实现图书管理系统项目

    目录 前言 项目需求 设计前提 设计目标 设计结构图 功能解读 项目实现 基本对象的设置 通过IO流的写入写出 总结 前言 相信再每一个学生在学习编程的时候,应该都会写的一个小项目--图书管理系统.为什么这么说呢?因为我认为一个学校的氛围很大一部分可以从图书馆的氛围看出来,而图书管理系统这个不大不小的项目,学生接触的多,也算是比较熟悉,就不会有陌生感,能够练手,有有些难度,所以,今天,我的小小项目也来了. 项目需求 设计前提 掌握java基本语法 熟悉使用流程控制 理解面向对象思想 熟练封装,继

  • 利用java实现一个客户信息管理系统

    用博客记录我自学的点点滴滴 类图: Customer类: public class Customer { /** * @name 客户姓名 * @sex 性别 * @age 年龄 * @phone 电话号码 * @email 邮箱 */ private String name; private String sex; private int age; private String phone; private String email; public Customer(){}; public C

  • Java 实战项目之疫情防控管理系统详解

    目录 ☣基于java疫情防控管理系统 1.登录模块(注册) 2.今日疫情模块 3.防疫管理模块 4.系统管理模块 5.用户模块 ☣基于java疫情防控管理系统 ☣项目介绍:通过对依社区为单位进行人群的管理,以及疫苗的情况,包括小区状况,通过RBAC进行角色与用户之间的权限管理. ☣项目:环境-IDEA.Mysql数据库,Tomcat服务器,SpringMVC,SpringBoot,AOP,拦截器,过滤器,全局异常,RBAC权限控制等. 1.登录模块(注册) 核心代码:service层 @Serv

  • 详解Java如何使用集合来实现一个客户信息管理系统

    目录 1 客户类 2 主界面 3 方法 (1)添加客户 (2)判断编号是否被占用 (3)修改客户信息 (4)删除客户 (5)客户列表 (6)退出 4 问题总结 (1)字符串比较问题 (2)修改客户不成功 (3)get和set方法使用时的疑惑 (为什么这里用set那里用get?) 1 客户类 public class Customers { private String cid; private String name; private String sex; private String age

  • 详解Java中Collection集合的常用方法

    目录 1.boolean add(E e) 2.boolean addAll(Collection<? extends E> c) 3.void clear() 4.boolean contains(Object o) 5.boolean containsAll(Collection<?> c) 6.boolean equals(Object o) 7.int hashCode() 8.boolean isEmpty() 9.Iterator<E> iterator()

  • 详解java各种集合的线程安全

    线程安全 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory.多个线程同时操作同一个variable,就可能会出现不可预知的结果.根据上面的解释,很容易想出相应的scenario. 而用synchronized的关键是建立一个monitor,这个monitor可以是要修改的variable也可以其

  • 详解Java集合中的基本数据结构

    集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表) 灵活的空间要求,存储空间不要求连续 不支持下标访问,支持顺序遍历搜索 针对增删操作找到对应的节点改变链表的头尾指针指向即可,无需移动元数据存储位置 树(Java中二叉树特性) 某节点的左子树节点仅包含小于该节点的值 某节点的右子树节点仅包含大于该节点的值 节点必须是二叉树 顺序排列 存在问题:树可以认为是介于数组和链表二者之间的一种数据结构,拥有较快的查询

  • 详解Java线程池和Executor原理的分析

    详解Java线程池和Executor原理的分析 线程池作用与基本知识 在开始之前,我们先来讨论下"线程池"这个概念."线程池",顾名思义就是一个线程缓存.它是一个或者多个线程的集合,用户可以把需要执行的任务简单地扔给线程池,而不用过多的纠结与执行的细节.那么线程池有哪些作用?或者说与直接用Thread相比,有什么优势?我简单总结了以下几点: 减小线程创建和销毁带来的消耗 对于Java Thread的实现,我在前面的一篇blog中进行了分析.Java Thread与内

  • 详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家, 实例代码: public List<Map<String , Object>> doCallProcedure(String procedureString,String[] parameters) throws PersistentDataOperationException { if (!isReady ()) { throw new PersistentDataOperatio

  • 详解Java中HashSet和TreeSet的区别

    详解Java中HashSet和TreeSet的区别 1. HashSet HashSet有以下特点: 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元素可以是null,但只能放入一个null 当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置. 简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个

  • 详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法.如果只做简单遍历读取,增强for循环确实减轻不少的代码量. 集合概念: 1.作用:用于存放对象 2.相当于一个容器,里面包含着一组对象,其中的每个对象作为集合的一个元素出现 3.jav

  • 详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(

随机推荐