面向对象基础案例之客户管理小程序!

目录

引言

一、案例需求

 二、思路

三、代码实现。

源码再此

customer类

工具类

测试类



引言

       各位小伙伴们,今天给大家分享一个经典初学者案例,希望对你有所帮助。

创作不易,求个免费的三连支持一下呀!


一、案例需求

        

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

 二、思路

         首先我们应确定案例所使用的方法,这里我们演示集合完成

        第二步完成用户界面的编写,使用while循环加Switch语句即可,前面我们也写过一片家庭账户收支系统可以参考。

        第三步完善小程序各个功能部分,第一个,添加客户界面以及如何操作,


                   请选择(1-5):1

---------------------添加客户---------------------
姓名:佟刚
性别:男
年龄:35
电话:010-56253825
邮箱:tongtong@atguigu.com
---------------------添加完成---------------------
        界面如上,要想实现界面不难,主要是功能,那么我们首先应该创建一个customer类,去用于我们对客户信息的管理以及修改。那么这个customer类应该包括成员变量name,age,gender,phone,email。构造方法和对应的set,get,方法。代码如下:
package com.Customer;

/**
 * @author wang
 * @date 2021/8/23
 */
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.age = age;
        this.gender = gender;
        this.phone = phone;
        this.email = email;
    }

    //set,get方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public char getGender() {
        return gender;
    }

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

    public int getAge() {
        return age;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPhone() {
        return phone;
    }

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

    public String getEmail() {
        return email;
    }
}

        再来说回这个界面,添加客户我们应该创建一个集合对象,将我们需要录入的信息存入集合当中,

        第四步,我们先实现一下客户列表,便于中途进行检验。
请选择(1-5):4

---------------------------客户列表---------------------------
编号  姓名       性别    年龄   电话                   邮箱
 1    佟刚         男        45     010-56253825   tong@abc.com
 2    封捷         女        36     010-56253825   fengjie@ibm.com
 3    雷丰阳     男        32      010-56253825   leify@163.com
-------------------------客户列表完成-------------------------

        这个界面就是直接遍历集合并依次输出即可,注意调节一下格式。

        第五步,修改客户界面
请选择(1-5):2

---------------------修改客户---------------------
请选择待修改客户编号(-1退出):1
姓名(佟刚):
性别(男):
年龄(35):
电话(010-56253825):
邮箱(tongtong@atguigu.com):tongg@atguigu.com
---------------------修改完成---------------------

        这里我们可以用一个客户ID来作为依据去修改客户。
创建客户对象如第一步一样,修改属性,
调用array.set()方法去修改每一个指定的元素即可。
        第六步、删除客户界面
                   请选择(1-5):3

---------------------删除客户---------------------
请选择待删除客户编号(-1退出):1
确认是否删除(Y/N):y
---------------------删除完成---------------------

这里也是一样,通过ID去寻找客户,利用集合的array.remove()方法删除集合中的指定元素,并添加一个选择是否删除语句即可。

        第七步,退出语句。

整个小程序的退出,直接写一个退出判断语句在主方法即可。

三、代码实现。

        首先,这个代码会用到一个工具类,这个工具类我会放大末尾,供大家参考,该工具类会使我们的代码更整洁有效,减少漏洞的可能。仅供参考,也可以不使用工具类,但对于我们目前学习的知识来说,想要做到很困难,而且容易出漏洞。

        第一步,主界面编写,这个相信我们都已经很熟悉,通过while循环达到目的。

public class CustomerView {
    public static void main(String[] args) {
        ArrayList<Customer> array = new ArrayList<Customer>();
        Scanner sc = new Scanner(System.in);
        /**
         *              -----------------客户信息管理软件-----------------
         *
         *                                      1 添 加 客 户
         *                                      2 修 改 客 户
         *                                      3 删 除 客 户
         *                                      4 客 户 列 表
         *                                      5 退           出
         *
         *                                      请选择(1-5):_
         */
        while (true) {
            System.out.println("-----------------客户信息管理软件-----------------");
            System.out.println();
            System.out.println("\t\t\t\t" + "1 添 加 客 户");
            System.out.println("\t\t\t\t" + "2 修 改 客 户");
            System.out.println("\t\t\t\t" + "3 删 除 客 户");
            System.out.println("\t\t\t\t" + "4 客 户 列 表");
            System.out.println("\t\t\t\t" + "5 退           出");
            System.out.print("请选择(1-5):");
            char choice = CMUtility.readMenuSelection();
            System.out.println();
            switch (choice) {
                case '1':

                    addCustomer(array);
                    break;
                case '2':

                    updateCustomer(array);
                    break;
                case '3':

                    deleteCustomer(array);
                    break;
                case '4':

                    viewCustomer(array);
                    break;
                case '5':
                    System.out.print("5.退出(y/n):");
                    char cho = CMUtility.readConfirmSelection();
                    if (cho == 'y' || cho == 'Y') {
                        System.out.println("退出成功!欢迎下次使用");
                        System.exit(0);
                    } else if (cho == 'n' || cho == 'N') {
                        System.out.println("返回成功,欢迎继续使用!");
                        break;
                    }
            }
        }
    }

        当我们的客户选择上述代码的指定功能键会进入对应的功能区,那她要是输入错误输了个9,怎么办呢?这里我们就调用了一个方法,char choice = CMUtility.readMenuSelection();,直接使用了工具类给我们提供好的方法,从而保证他能够准确识别客户的键入,当然也可以通过写一个判断语句去完成它,也不难。

        当客户输入1就进入了添加客户页面,之前我们说过,通过将数据添加到集合当中,来完成需求,那么我们集合对象也创建好了,怎么实现呢?请看代码

public static void addCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------添加客户---------------------");
        Scanner sc = new Scanner(System.in);
        //创建客户对象
        Customer c = new Customer();
        System.out.print("姓名:");
        String name = CMUtility.readString(11);
        System.out.print("性别:");
        char gender = CMUtility.readChar();
        System.out.print("年龄:");
        int age = CMUtility.readInt();
        System.out.print("电话:");
        String phone = CMUtility.readString(11);
        System.out.print("邮箱:");
        String email = CMUtility.readString(20);
        //将数据赋值给客户对象
        c.setName(name);
        c.setAge(age);
        c.setGender(gender);
        c.setPhone(phone);
        c.setEmail(email);
        //将客户对象添加到集合中
        array.add(c);
        //添加成功提示
        System.out.println("---------------------添加完成---------------------");

    }

        接下来,录入好了客户,自然就要查看啊,不然录入了客户有什么用呢?

查看也很简单,那就是我们耳熟能详的遍历集合啦

 public static void viewCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------------客户列表---------------------------");
        System.out.println("编号\t" + "姓名\t" + "性别\t" + "年龄\t" + "电话\t\t\t\t" + "邮箱");

        for (int i = 0; i < array.size(); i++) {
            Customer c = array.get(i);
            System.out.println((i + 1) + "\t" + c.getName() + "\t" + c.getGender() + "\t" + c.getAge()
                    + "\t" + c.getPhone() + "\t\t" + c.getEmail());
        }
        System.out.println("-------------------------客户列表完成-------------------------");
    }

        当然这里大家为了美观,这个格式一定要注意哦,自己调到合适即可。这里说一下,java当中可以用\t 表示缩进,\n表示换行。

        然后,客户发现自己信息录入有误,想要修改,怎么办呢?客户选择了摁2,很显然,当前你摁2不会有任何的反应滴!那么我们先放代码

public static void updateCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------修改客户---------------------");
        System.out.print("请选择待修改客户编号(-1退出):");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        int key = -1;
        if (id == key) {
            return;
        } else {
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Customer c = array.get(i);
                if (i == (id - 1)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("你输入的编号不存在,请重新输入!");
            } else {
                System.out.print("新姓名:");
                String name = CMUtility.readString(20);
                System.out.print("新性别:");
                char gender = CMUtility.readChar();
                System.out.print("新年龄:");
                int age = CMUtility.readInt();
                System.out.print("新电话:");
                String phone = CMUtility.readString(11);
                System.out.print("新邮箱:");
                String email = CMUtility.readString(20);

                Customer c = new Customer();
                c.setName(name);
                c.setGender(gender);
                c.setAge(age);
                c.setPhone(phone);
                c.setEmail(email);

                array.set(index, c);
                System.out.println("---------------------修改完成---------------------");

            }
        }

    }

        其实思路跟第一部分的思路有些类似,但是这个就不是添加到集合中去,而是在集合中找出来,并且将它修改掉。怎么实现,当然首先我们这里使用的是一个判断语句,判断他下一步是进行修改,还是不进行修改。我们可以定义一个key值为-1,作为一个状态,如果用户输入-1,那么功能就将推出,不会进行任何修改,如果输入的不是-1,而是他想要修改的客户,我们便进入下一步。因为我们这里的编号不是我们自己输入的,而是我们在查看那个功能中我们给的,大家发现没有,这个编号其实就是我们的集合的索引位置+1,那么我们便可以直接通过索引去修改我们计划之中的元素,也就是我们所谓的编号,编号为1 ,那么我们这里要进行索引对应,就相应的给他减一,就能精准的找到我们需要修改的集合中的元素。最后,再通过index索引的位置,将我们修改好的元素添加到集合之中,就解决了问题。

如果编号是自己给的那就更简单了,直接使用String的equals 方法进行比对就可以了,或者是基本数据类型的话就采用 == 比对。

        最后一步,删除客户。

这一步跟修改几乎可一说没有区别,第一、依据编号找到你要删除的客户,第二部,从集合当中删除他。

public static void deleteCustomer(ArrayList<Customer> array) {
        System.out.print("请选择待修改客户编号(-1退出):");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        int key = -1;
        if (id == key) {
            return;
        } else {
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Customer c = array.get(i);
                if (i == (id - 1)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("你输入的编号不存在,请重新输入!");
            } else {
                System.out.println("确认是否删除(Y/N):");
                char choice = CMUtility.readConfirmSelection();
                if (choice == 'y' || choice == 'Y') {
                    array.remove(index);
                    System.out.println("删除客户成功!");
                } else if (choice == 'n' || choice == 'N') {
                    System.out.println("客户信息未删除!");
                }
            }
        }
    }
}

       


         结束语

感谢大家的阅读,欢迎大家互赞互访,互相进步,接下来还会带来更多有趣的小东西哦,点关注不迷路!

这个题目还有一个问题就是如何保存他的数据,以供下次启动小程序时使用,知道的小伙伴欢迎评论区留言讨论哦!


源码再此

customer类

package com.Customer;

/**
 * @author wang
 * @date 2021/8/23
 */
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.age = age;
        this.gender = gender;
        this.phone = phone;
        this.email = email;
    }

    //set,get方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public char getGender() {
        return gender;
    }

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

    public int getAge() {
        return age;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPhone() {
        return phone;
    }

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

    public String getEmail() {
        return email;
    }
}

工具类

package com.Customer;
import java.util.Scanner;

/**
 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.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;
    }
}

测试类

package com.Customer;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author wang
 * @date2021/8/23
 */
public class CustomerView {
    public static void main(String[] args) {
        ArrayList<Customer> array = new ArrayList<Customer>();
        Scanner sc = new Scanner(System.in);
        /**
         *              -----------------客户信息管理软件-----------------
         *
         *                                      1 添 加 客 户
         *                                      2 修 改 客 户
         *                                      3 删 除 客 户
         *                                      4 客 户 列 表
         *                                      5 退           出
         *
         *                                      请选择(1-5):_
         */
        while (true) {
            System.out.println("-----------------客户信息管理软件-----------------");
            System.out.println();
            System.out.println("\t\t\t\t" + "1 添 加 客 户");
            System.out.println("\t\t\t\t" + "2 修 改 客 户");
            System.out.println("\t\t\t\t" + "3 删 除 客 户");
            System.out.println("\t\t\t\t" + "4 客 户 列 表");
            System.out.println("\t\t\t\t" + "5 退           出");
            System.out.print("请选择(1-5):");
            char choice = CMUtility.readMenuSelection();
            System.out.println();
            switch (choice) {
                case '1':

                    addCustomer(array);
                    break;
                case '2':

                    updateCustomer(array);
                    break;
                case '3':

                    deleteCustomer(array);
                    break;
                case '4':

                    viewCustomer(array);
                    break;
                case '5':
                    System.out.print("5.退出(y/n):");
                    char cho = CMUtility.readConfirmSelection();
                    if (cho == 'y' || cho == 'Y') {
                        System.out.println("退出成功!欢迎下次使用");
                        System.exit(0);
                    } else if (cho == 'n' || cho == 'N') {
                        System.out.println("返回成功,欢迎继续使用!");
                        break;
                    }
            }
        }
    }

    /**
     * 添加客户界面
     * 请选择(1-5):1
     * <p>
     * ---------------------添加客户---------------------
     * 姓名:佟刚String
     * 性别:男Char
     * 年龄:35int
     * 电话:010-56253825
     * 邮箱:tongtong@atguigu.com
     * ---------------------添加完成---------------------
     */
    public static void addCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------添加客户---------------------");
        Scanner sc = new Scanner(System.in);
        //创建客户对象
        Customer c = new Customer();
        System.out.print("姓名:");
        String name = CMUtility.readString(11);
        System.out.print("性别:");
        char gender = CMUtility.readChar();
        System.out.print("年龄:");
        int age = CMUtility.readInt();
        System.out.print("电话:");
        String phone = CMUtility.readString(11);
        System.out.print("邮箱:");
        String email = CMUtility.readString(20);
        //将数据赋值给客户对象
        c.setName(name);
        c.setAge(age);
        c.setGender(gender);
        c.setPhone(phone);
        c.setEmail(email);
        //将客户对象添加到集合中
        array.add(c);
        //添加成功提示
        System.out.println("---------------------添加完成---------------------");

    }

    /**
     * ---------------------------客户列表---------------------------
     * 编号  姓名       性别    年龄   电话                   邮箱
     * 1    佟刚         男        45     010-56253825   tong@abc.com
     * 2    封捷         女        36     010-56253825   fengjie@ibm.com
     * 3    雷丰阳     男        32      010-56253825   leify@163.com
     * -------------------------客户列表完成-------------------------
     */
    public static void viewCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------------客户列表---------------------------");
        System.out.println("编号\t" + "姓名\t" + "性别\t" + "年龄\t" + "电话\t\t\t\t" + "邮箱");

        for (int i = 0; i < array.size(); i++) {
            Customer c = array.get(i);
            System.out.println((i + 1) + "\t" + c.getName() + "\t" + c.getGender() + "\t" + c.getAge()
                    + "\t" + c.getPhone() + "\t\t" + c.getEmail());
        }
        System.out.println("-------------------------客户列表完成-------------------------");
    }

    /**
     * ---------------------修改客户---------------------
     * 请选择待修改客户编号(-1退出):1
     * 姓名(佟刚):
     * 性别(男):
     * 年龄(35):
     * 电话(010-56253825):
     * 邮箱(tongtong@atguigu.com):tongg@atguigu.com
     * ---------------------修改完成---------------------
     */
    public static void updateCustomer(ArrayList<Customer> array) {
        System.out.println("---------------------修改客户---------------------");
        System.out.print("请选择待修改客户编号(-1退出):");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        int key = -1;
        if (id == key) {
            return;
        } else {
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Customer c = array.get(i);
                if (i == (id - 1)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("你输入的编号不存在,请重新输入!");
            } else {
                System.out.print("新姓名:");
                String name = CMUtility.readString(20);
                System.out.print("新性别:");
                char gender = CMUtility.readChar();
                System.out.print("新年龄:");
                int age = CMUtility.readInt();
                System.out.print("新电话:");
                String phone = CMUtility.readString(11);
                System.out.print("新邮箱:");
                String email = CMUtility.readString(20);

                Customer c = new Customer();
                c.setName(name);
                c.setGender(gender);
                c.setAge(age);
                c.setPhone(phone);
                c.setEmail(email);

                array.set(index, c);
                System.out.println("---------------------修改完成---------------------");

            }
        }

    }

    /**
     * 请选择(1-5):3
     * <p>
     * ---------------------删除客户---------------------
     * 请选择待删除客户编号(-1退出):1
     * 确认是否删除(Y/N):y
     * ---------------------删除完成---------------------
     */
    public static void deleteCustomer(ArrayList<Customer> array) {
        System.out.print("请选择待修改客户编号(-1退出):");
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        int key = -1;
        if (id == key) {
            return;
        } else {
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Customer c = array.get(i);
                if (i == (id - 1)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("你输入的编号不存在,请重新输入!");
            } else {
                System.out.println("确认是否删除(Y/N):");
                char choice = CMUtility.readConfirmSelection();
                if (choice == 'y' || choice == 'Y') {
                    array.remove(index);
                    System.out.println("删除客户成功!");
                } else if (choice == 'n' || choice == 'N') {
                    System.out.println("客户信息未删除!");
                }
            }
        }
    }
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
好的,我可以给您提供一个简单的面向对象程序设计案例,帮助您理解面向对象编程的基本概念。 假设我们要设计一个小型的图书馆管理系统,其中包含以下几个类: 1. 书籍类(Book):记录书籍的名称、作者、ISBN、出版社、出版日期等信息,以及书籍的借阅和归还状态。 2. 读者类(Reader):记录读者的姓名、性别、年龄、联系方式等信息,以及读者借阅的书籍列表。 3. 借阅记录类(BorrowRecord):记录借阅记录的相关信息,包括借阅日期、归还日期、借阅者、书籍等。 4. 图书馆类(Library):管理图书馆中的书籍和读者信息,提供借阅和归还书籍的方法。 下面是一个简单的实现: ```python class Book: def __init__(self, name, author, isbn, publisher, date): self.name = name self.author = author self.isbn = isbn self.publisher = publisher self.date = date self.borrowed = False def borrow(self): if not self.borrowed: self.borrowed = True return True return False def return_book(self): if self.borrowed: self.borrowed = False return True return False class Reader: def __init__(self, name, gender, age, contact): self.name = name self.gender = gender self.age = age self.contact = contact self.books = [] def borrow_book(self, book): if book.borrow(): self.books.append(book) return True return False def return_book(self, book): if book in self.books: book.return_book() self.books.remove(book) return True return False class BorrowRecord: def __init__(self, reader, book, borrow_date, return_date=None): self.reader = reader self.book = book self.borrow_date = borrow_date self.return_date = return_date def return_book(self, return_date): self.return_date = return_date class Library: def __init__(self): self.books = [] self.readers = [] self.borrow_records = [] def add_book(self, book): self.books.append(book) def remove_book(self, book): if book in self.books: self.books.remove(book) return True return False def add_reader(self, reader): self.readers.append(reader) def remove_reader(self, reader): if reader in self.readers: self.readers.remove(reader) return True return False def borrow_book(self, reader_name, book_isbn, borrow_date): reader = next((r for r in self.readers if r.name == reader_name), None) book = next((b for b in self.books if b.isbn == book_isbn), None) if reader and book: if reader.borrow_book(book): record = BorrowRecord(reader, book, borrow_date) self.borrow_records.append(record) return True return False def return_book(self, reader_name, book_isbn, return_date): reader = next((r for r in self.readers if r.name == reader_name), None) book = next((b for b in self.books if b.isbn == book_isbn), None) if reader and book: if reader.return_book(book): record = next((r for r in self.borrow_records if r.reader == reader and r.book == book and not r.return_date), None) if record: record.return_book(return_date) return True return False ``` 以上是一个简单的面向对象程序设计案例,可以通过创建对象并调用相关方法来实现借阅和归还书籍等功能。当然,这只是一个简单的示例,实际场景中可能需要更复杂的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空山新雨后~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值