2021-07-07电话本项目

电话本项目

App类
/**
 * 电话本项目入口类
 */
public class App {
    /**
     * 启动电话本项目
     * @param args
     */
    public static void main(String[] args) {

    }

    /**
     * 控制主菜单
     */
    public void start(){

    }
}
菜单类
/**
 * 生成项目中所有的菜单
 */
public class Menu {
    //主界面
    public void mainMenu(){
        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("**          6 退出系统          **");
        System.out.println("********************************");
    }

    //添加界面
    public void addMenu(){
        System.out.println("********************************");
        System.out.println("**          1 添加新记录          **");
        System.out.println("**          2 查看全记录          **");
        System.out.println("**          3 返回上一级          **");
        System.out.println("********************************");
    }

    //查找界面
    public void searchMenu(){
        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("**          6 查看全记录          **");
        System.out.println("**          7 返回上一级          **");
        System.out.println("********************************");
    }

    //修改界面
    public void modifyMenu(){
        System.out.println("********************************");
        System.out.println("**          1 查看全记录          **");
        System.out.println("**          2 修改指定记录          **");
        System.out.println("**          3 返回上一级          **");
        System.out.println("********************************");
    }

    //修改子界面
    public void subModifyMenu(){
        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("**          6 返回上一级          **");
        System.out.println("********************************");
    }

    //删除界面
    public void deleteMenu(){
        System.out.println("********************************");
        System.out.println("**          1 查看全记录          **");
        System.out.println("**          2 删除指定记录          **");
        System.out.println("**          3 删除全部记录          **");
        System.out.println("**          4 返回上一级          **");
        System.out.println("********************************");
    }

    //排序界面
    public void orderMenu(){
        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("********************************");
    }
}
创建实体类
/**
 * 实体类
 */
public class Person {
    private int id;
    private String name;
    private String age;
    private String sex;
    private String telNum;
    private String address;

    public Person() {
    }

    public Person(String name, String age, String sex, String telNum, String address) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.telNum = telNum;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

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

    public String getTelNum() {
        return telNum;
    }

    public void setTelNum(String telNum) {
        this.telNum = telNum;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("序号").append(this.id).append("#").append("\t\t");
        sb.append("姓名").append(this.name).append("\t\t");
        sb.append("年龄").append(this.age).append("\t\t");
        sb.append("性别").append(this.sex).append("\t\t");
        sb.append("电话号码").append(this.telNum).append("\t\t");
        sb.append("地址").append(this.address).append("\t\t");

        return sb.toString();
    }
}
创建核心业务类
/**
 * 核心业务类
 */
public class Operate {
    private List<Person> list;
    public Operate(){
        this.list =new ArrayList<>();
    }

    /**
     *用于添加记录业务逻辑控制
     */
    public void addLogic(){

    }

    /**
     *用于查找记录业务逻辑控制
     */
    public void searchLogic(){

    }

    /**
     *用于修改记录业务逻辑控制
     */
    public void modifyLogic(){

    }

    /**
     *用于删除记录业务逻辑控制
     */
    public void deleteLogic(){

    }

    /**
     *用于排序记录业务逻辑控制
     */
    public void orderLogic(){

    }

    /**
     * 添加新纪录
     */
    public void addOperation(){

    }

    /**
     * 查询全部记录
     */
    public void showAll(){

    }

    /**
     * 按姓名查询记录
     */
    public void searchByName(){

    }

    /**
     * 按年龄查询记录
     */
    public void searchByAge(){

    }

    /**
     * 按性别查询记录
     */
    public void searchBySex(){

    }

    /**
     * 按电话号码查询记录
     */
    public void searchByTelNum(){

    }

    /**
     * 按地址查询记录
     */
    public void searchByAdd(){

    }

    /**
     * 用于修改指定记录
     */
    public void modifyOperation(){

    }

    /**
     * 用于删除指定记录
     */
    public void deleteOperation(){

    }

    /**
     * 用于删除全部记录
     */
    public void deleteAllOperation(){

    }

    /**
     * 用于按用户姓名排序记录
     */
    public void orderName(){

    }

    /**
     * 用于按用户年龄排序记录
     */
    public void orderAge(){

    }

    /**
     * 用于按用户性别排序记录
     */
    public void orderSex(){

    }
}
创建数据校验类
/**
 * 数据校验类
 */
public class TelNoteRegex {
    /**
     * 对菜单输入选项的验证
     */
    public int menuItemValidate(int min,int max){
        return 0;
    }

    /**
     * 对用户输入姓名的验证
     */
    public String nameValidate(){
        return null;
    }

    /**
     * 对用户输入年龄的验证
     */
    public String ageValidate(){
        return null;
    }

    /**
     * 对用户输入性别的验证
     */
    public String sexValidate(){
        return null;
    }

    /**
     * 对用户输入电话号码的验证
     */
    public String telNumValidate(){
        return null;
    }

    /**
     * 对用户输入地址的验证
     */
    public String addressValidate(){
        return null;
    }
}
创建比较器类——Operate类内部
/**
     * 按姓名排序的比较器
     */
    class orderByName implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return 0;
        }
    }

    /**
     * 按年龄排序的比较器
     */
    class orderByAge implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return 0;
        }
    }

    /**
     * 按性别排序的比较器
     */
    class orderBySex implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return 0;
        }
    }
正则表达式pattern

正则表达式,又称规则表达式。(英语: Regular Expression,在代码中常简写为regex,regexp或 RE)。正则表达式通常被用来检索、替换

那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这

个“规则字符串"用来表达对字符串的一种过滤逻辑。使用特殊语法来表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字

符一起表示一个模式。

【特点】

  • 灵活性、逻辑性和功能性非常的强;
  • 可以迅速地用极简单的方式达到字符串的复杂控制

【Java中正则表达式的使用】

在Java中正则表达式为string类型,被验证的内容同样为String 类型。通过string 类中的matches方法实现内容的匹配校验。如:”被验证

内容”.matches(“正则表达式”)

【语法规则】

正则表达式语法规则:[内容限定]{长度限定}

【内容限定】

在定义限定内容规则时,如果没有指定长度限定,那么默认长度为1。

【单个字符限定】

[a]表示内容必须是"a"

【范围字符限定】

[a-z0-9]表示内容是az09范围内

【取反限定】
[^]表示内容取反

【长度限定】

在正则表达式中通过{}来限定内容长度。

【固定长度】:{固定长度值}

【范围长度】:{最小长度值,最大长度值}

【长度限定符号】通过预定义符号来完成长度限定
?号 零次或一次。等同于{0,1}
+号 一次或多次。等同于{1,}
*号 零次或多次。等同于{0,}
预定义字符
字符(转义字符\后跟)描述
\d匹配一个数字字符,等价于[0-9]
\D匹配一个非数字字符,等价于[0-9]取反
\n匹配一个换行符
\r匹配一个回车符
\s匹配任何空白字符,包括空格、制表符、换页符等等
\S匹配任何非空白字符
\t匹配一个制表符
\w匹配包括下划线的任何单词字符,等价于[A-Za-z0-9_]
\W匹配任何非单词字符,等价于[A-Za-z0-9_]取反
正则表达式的组合定义

必须是以字母开头,最少长度为4,最大长度为8

" [a-z]{1}\\w{3,7}"

校验带有区号的电话号码的正则表达式

"\\d{3,4)-\\d{7,8}"
"(\\d{3,4})-(\\d{7,8})"
常见的正则表达式

在这里插入图片描述

实现验证类中的方法
对菜单项的验证
/**
     * 对菜单输入选项的验证
     */
    public int menuItemValidate(int min,int max){
        //定义验证菜单项的正则表达式
        String regex = "[1-9]{1}";
        //创建键盘输入对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入正确的数字,最小是: "+min+"\t"+"最大是: "+max);
            String input = scanner.nextLine();
            if(input.matches(regex)){
                int inputNum = Integer.parseInt(input);
                if(inputNum >= min && inputNum <= max){
                    return inputNum;
                }else{
                    System.out.println("您输入的菜单项不符,请重新输入!");
                }
            }else{
                System.out.println("输入数字错误,请检查!");
            }
        }
    }
对姓名的验证
/**
     * 对用户输入姓名的验证
     * 字母,长度1-10之间,允许大小写
     */
    public String nameValidate(){
        //验证姓名的正则表达是
        String regex = "[a-zA-Z]{1,10}";
        //创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入姓名,格式为1-10位的大小写字母");
            String input = scanner.nextLine();
            if(input.matches(regex)){
                return input;
            }else{
                System.out.println("您当前输入的姓名有误,请重新输入!");
            }
        }
    }
对年龄的验证
/**
     * 对用户输入年龄的验证
     * 10-99之间
     */
    public String ageValidate(){
        //定义校验年龄的正则表达式
        String regex = "[1-9]{1}[0-9]{1}";
        //创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入年龄,格式为10-99!");
            String input = scanner.nextLine();
            if(input.matches(regex)){
                return input;
            }else{
                System.out.println("您输入的年龄格式有误,请重新输入");
            }
        }
    }
对性别的验证
 /**
     * 对用户输入性别的验证
     * 男人:m M
     * 女人:f F
     */
    public String sexValidate(){
        //定义校验性别的正则表达式
        String regex = "[m|M|f|F]{1}";
        //创建键盘输入对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("输入性别,格式(男:M or m)(女:F or f)");
            String input = scanner.nextLine();
            if(input.matches(regex)){
                return input;
            }else{
                System.out.println("输入性别有误,请重新输入!");
            }
        }
    }
对电话号码的验证
/**
     * 对用户输入电话号码的验证
     * 允许带有区号的座机号和手机号
     */
    public String telNumValidate(){
        //定义校验电话号码的正则表达式
        String regex = "(\\d{3,4}-\\d{7,8})|([1]{1}\\d{10})";
        //创建键盘输入对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入电话号码,座机号或手机号!");
            String input = scanner.nextLine();
            if(input.matches(regex)){
                return input;
            }else{
                System.out.println("您输入的电话号码格式有误,请重新输入");
            }
        }
    }
对地址的验证
/**
     * 对用户输入地址的验证
     * 允许字母或数字,长度1-50
     */
    public String addressValidate(){
        //定义校验地址的正则表达式
        String regex = "[a-zA-Z0-9]{1,50}";
        //创建键盘输入对象
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入地址,格式为1-50位的数字或大小写字母");
            String input = scanner.nextLine();
            if(input.matches(regex)){
                return input;
            }else{
                System.out.println("您输入的地址格式有误,请重新输入!");
            }
        }
    }
测试验证类
public static void main(String[] args) {
        TelNoteRegex   regex = new TelNoteRegex();
        /*int menuItem = regex.menuItemValidate(1,7);
        System.out.println(menuItem);*/

       /* String name = regex.nameValidate();
        System.out.println(name);*/

        /*String age = regex.ageValidate();
        System.out.println(age);*/

        /*String sex = regex.sexValidate();
        System.out.println(sex);*/

        /*String telNum = regex.telNumValidate();
        System.out.println(telNum);*/

        /*String address = regex.addressValidate();
        System.out.println(address);*/
    }
实现App类中的方法
实现start方法——控制主菜单
/**
     * 控制主菜单
     */
    public void start(){
        Menu menu = new Menu();
        TelNoteRegex regex = new TelNoteRegex();
        Operate operate = new Operate();

        while(true){
            menu.mainMenu();
            int item = regex.menuItemValidate(1,6);
            switch(item){
                case 1:operate.addLogic();
                    break;
                case 2:operate.searchLogic();
                    break;
                case 3:operate.modifyLogic();
                    break;
                case 4:operate.deleteLogic();
                    break;
                case 5:operate.orderLogic();
                    break;
                case 6:System.exit(0);//结束当前虚拟机
            }
        }
    }
实现main方法
public static void main(String[] args) {
        App app = new App();
        app.start();
    }
实现Operate类中的方法
实现添加记录业务逻辑方法
/**
     *用于添加记录业务逻辑控制
     */
    public void addLogic(){
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while(true){
            menu.addMenu();
            int item = telNoteRegex.menuItemValidate(1, 3);
            switch(item){
                case 1:this.addOperation();break;
                case 2:this.showAll();break;
                case 3:return;
            }
        }
    }
实现查询记录业务逻辑方法
/**
     *用于查找记录业务逻辑控制
     */
    public void searchLogic(){
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while(true){
            menu.searchMenu();
            int item = telNoteRegex.menuItemValidate(1, 7);
            switch(item){
                case 1:this.searchByName();break;
                case 2:this.searchByAge();break;
                case 3:this.searchBySex();break;
                case 4:this.searchByTelNum();break;
                case 5:this.searchByAdd();break;
                case 6:this.showAll();break;
                case 7:return;
            }
        }
    }
实现修改记录业务逻辑控制
/**
     *用于修改记录业务逻辑控制
     */
    public void modifyLogic(){
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while(true){
            menu.modifyMenu();
            int item = telNoteRegex.menuItemValidate(1, 3);
            switch(item){
                case 1:this.showAll();break;
                case 2:this.modifyOperation();break;
                case 3:return;
            }
        }
    }
实现删除记录业务逻辑控制
/**
     *用于删除记录业务逻辑控制
     */
    public void deleteLogic(){
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while(true){
            menu.deleteMenu();
            int item = telNoteRegex.menuItemValidate(1, 4);
            switch(item){
                case 1:this.showAll();break;
                case 2:this.deleteOperation();break;
                case 3:this.deleteAllOperation();break;
                case 4:return;
            }
        }
    }
实现排序记录业务逻辑控制
/**
     *用于排序记录业务逻辑控制
     */
    public void orderLogic(){
        Menu menu = new Menu();
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        while(true){
            menu.orderMenu();
            int item = telNoteRegex.menuItemValidate(1, 5);
            switch(item){
                case 1:this.orderName();break;
                case 2:this.orderAge();break;
                case 3:this.orderSex();break;
                case 4:this.showAll();break;
                case 5:return;
            }
        }
    }
实现添加记录业务功能
/**
     * 添加新纪录
     */
    public void addOperation(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String name = telNoteRegex.nameValidate();
        String age = telNoteRegex.ageValidate();
        String sex = telNoteRegex.sexValidate();
        String telNum = telNoteRegex.telNumValidate();
        String address = telNoteRegex.addressValidate();

        Person person = new Person(name,age,sex,telNum,address);
        this.list.add(person);
        person.setId(this.list.size());
    }
实现查看全记录业务功能
/**
     * 查询全部记录
     */
    public void showAll(){
        if(this.list.size() == 0){
            System.out.println("目前尚未有记录!");
            return;
        }
        for (int i = 0; i < this.list.size(); i++) {
            System.out.println(this.list.get(i));
        }
    }
实现按姓名查找记录业务功能
/**
     * 按姓名查询记录
     */
    public void searchByName(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String name = telNoteRegex.nameValidate();
        boolean flag = true;

        for (int i = 0; i < this.list.size(); i++) {
            if(name.equals(this.list.get(i).getName())){
                System.out.println(this.list.get(i));
                flag = false;}

        }
        if (flag){
            System.out.println("没有此人记录!");
        }
    }
实现按年龄查找记录业务功能
/**
     * 按年龄查询记录
     */
    public void searchByAge(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String age = telNoteRegex.ageValidate();
        boolean flag = true;

        for (int i = 0; i < this.list.size(); i++) {
            if(age.equals(this.list.get(i).getAge())){
                System.out.println(this.list.get(i));
                flag = false;}
        }
        if (flag){
            System.out.println("没有和此年龄相关的记录!");
        }
    }
实现按性别查找记录业务功能
/**
     * 按性别查询记录
     * 查找是否区别大小写可以预先设置好
     * 这里忽略大小写
     */
    public void searchBySex(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String sex = telNoteRegex.sexValidate();
        boolean flag = true;

        for (int i = 0; i < this.list.size(); i++) {
            if(sex.equalsIgnoreCase(this.list.get(i).getSex())){
                System.out.println(this.list.get(i));
                flag = false;}
        }
        if (flag){
            System.out.println("没有相关性别的记录!");
        }
    }
实现按电话号码查找记录业务功能
/**
     * 按电话号码查询记录
     */
    public void searchByTelNum(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String telNum = telNoteRegex.telNumValidate();
        boolean flag = true;

        for (int i = 0; i < this.list.size(); i++) {
            if(telNum.equalsIgnoreCase(this.list.get(i).getTelNum())){
                System.out.println(this.list.get(i));
                flag = false;}
        }
        if (flag){
            System.out.println("没有相关号码的记录!");
        }
    }
实现按地址查找记录业务功能
/**
     * 按地址查询记录
     */
    public void searchByAdd(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        String address = telNoteRegex.addressValidate();
        boolean flag = true;

        for (int i = 0; i < this.list.size(); i++) {
            if(address.equalsIgnoreCase(this.list.get(i).getAddress())){
                System.out.println(this.list.get(i));
                flag = false;}
        }
        if (flag){
            System.out.println("没有相关地址的记录!");
        }
    }

添加、查找的操作都有输入合法性的检测——通过正则表达式

实现修改指定记录业务功能
/**
     * 用于修改指定记录
     */
    public void modifyOperation(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        Menu menu = new Menu();
        //对被修改记录的序号进行验证,可以使用对菜单项验证的方法来完成
        System.out.println("请输入记录的序号!");
        int itemNum = telNoteRegex.menuItemValidate(1,this.list.size());
        menu.subModifyMenu();
        int menuItem = telNoteRegex.menuItemValidate(1,6);
        switch(menuItem){
            case 1:String name = telNoteRegex.nameValidate();
                    (this.list.get(itemNum-1)).setName(name);break;
            case 2:String age = telNoteRegex.ageValidate();
                    (this.list.get(itemNum-1)).setAge(age);break;
            case 3:String sex = telNoteRegex.sexValidate();
                    (this.list.get(itemNum-1)).setSex(sex);break;
            case 4:String telNum = telNoteRegex.telNumValidate();
                    (this.list.get(itemNum-1)).setTelNum(telNum);break;
            case 5:String address = telNoteRegex.addressValidate();
                    (this.list.get(itemNum-1)).setAddress(address);break;
            case 6:return;
        }
    }
实现删除指定记录业务功能
/**
     * 用于删除指定记录
     */
    public void deleteOperation(){
        TelNoteRegex telNoteRegex = new TelNoteRegex();
        System.out.println("请输入记录的序号!");
        int itemNum = telNoteRegex.menuItemValidate(1,this.list.size());
        this.list.remove(itemNum-1);
        //重新为记录设置新的序号
        for (int i = 0; i < this.list.size(); i++) {
            (this.list.get(i)).setId(i+1);
        }
        System.out.println("删除成功,请继续操作!");
    }
实现删除全部记录业务功能
/**
     * 用于删除全部记录
     */
    public void deleteAllOperation(){
        this.list.clear();
        System.out.println("电话本记录已清空,请继续操作!");
    }
实现比较器的排序规则——定义为String的优点体现出来了
/**
     * 按姓名排序的比较器
     */
    class orderByName implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return o1.getName().compareTo(o2.getName());
        }
    }

    /**
     * 按年龄排序的比较器
     */
    class orderByAge implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return o1.getAge().compareTo(o2.getAge());
        }
    }

    /**
     * 按性别排序的比较器
     */
    class orderBySex implements Comparator<Person> {

        @Override
        public int compare(Person o1, Person o2) {
            return o1.getSex().compareTo(o2.getSex());
        }
    }
实现排序记录功能
/**
 * 用于按用户姓名排序记录
 */
public void orderName(){
    Collections.sort(this.list,new orderByName());
    //重新设置序号
    for (int i = 0; i < this.list.size(); i++) {
        (this.list.get(i)).setId(i+1);
    }
}

/**
 * 用于按用户年龄排序记录
 */
public void orderAge(){
    Collections.sort(this.list,new orderByAge());
    //重新设置序号
    for (int i = 0; i < this.list.size(); i++) {
        (this.list.get(i)).setId(i+1);
    }
}

/**
     * 用于按用户性别排序记录
     * 按性别排序这里的优先级如下:
     * F M f m
     */
public void orderSex(){
    Collections.sort(this.list,new orderBySex());
    //重新设置序号
    for (int i = 0; i < this.list.size(); i++) {
        (this.list.get(i)).setId(i+1);
    }
}

缺点:一旦进入添加记录,不添加无法返回菜单

导出项目
  • 导出电话本项目的jar包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 创建启动项目的批处理文件

    bat文件内容:java -jar phonebook.jar

    jar文件和bat文件必须在同一个目录下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值