Java實(shí)現(xiàn)簡(jiǎn)單客戶(hù)信息管理系統(tǒng)
本文實(shí)例為大家分享了Java實(shí)現(xiàn)客戶(hù)信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、目標(biāo)
模擬實(shí)現(xiàn)一個(gè)基于文本界面的《客戶(hù)信息管理軟件》
進(jìn)一步掌握編程技巧和調(diào)試技巧,熟悉面向?qū)ο缶幊?/p>
主要涉及以下知識(shí)點(diǎn):
- 類(lèi)結(jié)構(gòu)的使用:屬性、方法及構(gòu)造器
- 對(duì)象的創(chuàng)建與使用
- 類(lèi)的封裝性
- 聲明和使用數(shù)組
- 數(shù)組的插入、刪除和替換
- 關(guān)鍵字的使用:this
二、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

- CustomerView為主模塊,負(fù)責(zé)菜單的顯示和處理用戶(hù)操作
- CustomerList為Customer對(duì)象的管理模塊,內(nèi)部用數(shù)組管理一組Customer對(duì)象,并提供相應(yīng)的添加、修改、刪除和遍歷方法,供CustomerView調(diào)用
- Customer為實(shí)體對(duì)象,用來(lái)封裝客戶(hù)信息
三、鍵盤(pán)訪問(wèn)的實(shí)現(xiàn)
項(xiàng)目中提供了CMUtility.java類(lèi),可用來(lái)方便地實(shí)現(xiàn)鍵盤(pán)訪問(wèn)。
四、Customer類(lèi)
Customer為實(shí)體類(lèi),用來(lái)封裝客戶(hù)信息
該類(lèi)封裝客戶(hù)的以下信息:
- String name :客戶(hù)姓名
- char gender :性別
- int age :年齡
- String phone:電話號(hào)碼
- String email :電子郵箱
提供各屬性的get/set方法
提供所需的構(gòu)造器(可自行確定)
五、CustomerList類(lèi)
CustomerList為Customer對(duì)象的管理模塊,內(nèi)部使用數(shù)組管理一組Customer對(duì)象
本類(lèi)封裝以下信息:
Customer[] customers:用來(lái)保存客戶(hù)對(duì)象的數(shù)組int total = 0:記錄已保存客戶(hù)對(duì)象的數(shù)量
該類(lèi)至少提供以下構(gòu)造器和方法:
public CustomerList(int totalCustomer)public boolean addCustomer(Customer customer)public boolean replaceCustomer(int index, Customer cust)public boolean deleteCustomer(int index)public Customer[] getAllCustomers()public Customer getCustomer(int index)public int getTotal()
六、CustomerView類(lèi)
CustomerView為主模塊,負(fù)責(zé)菜單的顯示和處理用戶(hù)操作
本類(lèi)封裝以下信息:
CustomerList customerList = new CustomerList(10);
創(chuàng)建最大包含10個(gè)客戶(hù)對(duì)象的CustomerList 對(duì)象,供以下各成員方法使用。
該類(lèi)至少提供以下方法:
public void enterMainMenu()private void addNewCustomer()private void modifyCustomer()private void deleteCustomer()private void listAllCustomers()public static void main(String[] args)
七、代碼
CMUtility類(lèi)
package com.hsy.pack.project;
import java.util.Scanner;
/**
?* CMUtility工具類(lèi):
?* 將不同的功能封裝為方法,就是可以直接通過(guò)調(diào)用方法使用它的功能,而無(wú)需考慮具體的功能實(shí)現(xiàn)細(xì)節(jié)。
?*/
public class CMUtility {
? ? private static Scanner scanner = new Scanner(System.in);
? ? /**
? ? ?* 用于界面菜單的選擇。該方法讀取鍵盤(pán),如果用戶(hù)鍵入'1'-'5'中的任意字符,則方法返回。返回值為用戶(hù)鍵入字符。
? ? ?*/
? ? 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("選擇錯(cuò)誤,請(qǐng)重新輸入:");
? ? ? ? ? ? } else break;
? ? ? ? }
? ? ? ? return c;
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)字符,并將其作為方法的返回值。
? ? ?*/
? ? public static char readChar() {
? ? ? ? String str = readKeyBoard(1, false);
? ? ? ? return str.charAt(0);
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)字符,并將其作為方法的返回值。
? ? ?* 如果用戶(hù)不輸入字符而直接回車(chē),方法將以defaultValue 作為返回值。
? ? ?*/
? ? public static char readChar(char defaultValue) {
? ? ? ? String str = readKeyBoard(1, true);
? ? ? ? return (str.length() == 0) ? defaultValue : str.charAt(0);
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)長(zhǎng)度不超過(guò)2位的整數(shù),并將其作為方法的返回值。
? ? ?*/
? ? public static int readInt() {
? ? ? ? int n;
? ? ? ? for (; ; ) {
? ? ? ? ? ? String str = readKeyBoard(2, false);
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? n = Integer.parseInt(str);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? } catch (NumberFormatException e) {
? ? ? ? ? ? ? ? System.out.print("數(shù)字輸入錯(cuò)誤,請(qǐng)重新輸入:");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return n;
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)長(zhǎng)度不超過(guò)2位的整數(shù),并將其作為方法的返回值。
? ? ?* 如果用戶(hù)不輸入字符而直接回車(chē),方法將以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("數(shù)字輸入錯(cuò)誤,請(qǐng)重新輸入:");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return n;
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)長(zhǎng)度不超過(guò)limit的字符串,并將其作為方法的返回值。
? ? ?*/
? ? public static String readString(int limit) {
? ? ? ? return readKeyBoard(limit, false);
? ? }
? ? /**
? ? ?* 從鍵盤(pán)讀取一個(gè)長(zhǎng)度不超過(guò)limit的字符串,并將其作為方法的返回值。
? ? ?* 如果用戶(hù)不輸入字符而直接回車(chē),方法將以defaultValue 作為返回值。
? ? ?*/
? ? public static String readString(int limit, String defaultValue) {
? ? ? ? String str = readKeyBoard(limit, true);
? ? ? ? return str.equals("") ? defaultValue : str;
? ? }
? ? /**
? ? ?* 用于確認(rèn)選擇的輸入。該方法從鍵盤(pán)讀取‘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("選擇錯(cuò)誤,請(qǐng)重新輸入:");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? 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("輸入長(zhǎng)度(不大于" + limit + ")錯(cuò)誤,請(qǐng)重新輸入:");
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? return line;
? ? }
}Customer類(lèi)
package com.hsy.pack.project;
public class Customer {
? ? private String name;
? ? private char gender;
? ? private int age;
? ? private String phone;
? ? private String email;
? ? public Customer(String name, char gender, int age) {
? ? ? ? this(name, gender, age, "", "");
? ? }
? ? 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;
? ? }
? ? 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 String getDetails() {
? ? ? ? return name + "\t" + gender + "\t" + age + "\t\t" + phone + "\t" + email;
? ? }
}CustomerList類(lèi)
package com.hsy.pack.project;
public class CustomerList {
? ? private Customer[] customers;
? ? private int total = 0;
? ? public CustomerList(int totalCustomer) {
? ? ? ? customers = new Customer[totalCustomer];
? ? }
? ? public boolean addCustomer(Customer customer) {
? ? ? ? if (total >= customers.length) return false;
? ? ? ? customers[total++] = customer;
? ? ? ? return true;
? ? }
? ? public boolean replaceCustomer(int index, Customer cust) {
? ? ? ? if (index < 0 || index >= total) return false;
? ? ? ? customers[index] = cust;
? ? ? ? return true;
? ? }
? ? 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;
? ? }
? ? public Customer[] getAllCustomers() {
? ? ? ? Customer[] custs = new Customer[total];
? ? ? ? for (int i = 0; i < total; i++) {
? ? ? ? ? ? custs[i] = customers[i];
? ? ? ? }
? ? ? ? return custs;
? ? }
? ? public int getTotal() {
? ? ? ? return total;
? ? }
? ? public Customer getCustomer(int index) {
? ? ? ? if (index < 0 || index >= total) return null;
? ? ? ? return customers[index];
? ? }
}CustomerView類(lèi)
package com.hsy.pack.project;
public class CustomerView {
? ? private CustomerList customers = new CustomerList(10);
? ? public CustomerView() {
? ? ? ? Customer cust = new Customer("張三", '男', 30, "010-56253825",
? ? ? ? ? ? ? ? "abc@email.com");
? ? ? ? customers.addCustomer(cust);
? ? }
? ? public void enterMainMenu() {
? ? ? ? boolean loopFlag = true;
? ? ? ? do {
? ? ? ? ? ? System.out
? ? ? ? ? ? ? ? ? ? .println("\n-----------------客戶(hù)信息管理軟件-----------------\n");
? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ? ? ? 1 添 加 客 戶(hù)");
? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ? ? ? 2 修 改 客 戶(hù)");
? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ? ? ? 3 刪 除 客 戶(hù)");
? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ? ? ? 4 客 戶(hù) 列 表");
? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ? ? ? 5 退 ? ? ? 出\n");
? ? ? ? ? ? System.out.print(" ? ? ? ? ? ? ? ? ? 請(qǐng)選擇(1-5):");
? ? ? ? ? ? char key = CMUtility.readMenuSelection();
? ? ? ? ? ? System.out.println();
? ? ? ? ? ? switch (key) {
? ? ? ? ? ? ? ? case '1':
? ? ? ? ? ? ? ? ? ? addNewCustomer();
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '2':
? ? ? ? ? ? ? ? ? ? modifyCustomer();
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '3':
? ? ? ? ? ? ? ? ? ? deleteCustomer();
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '4':
? ? ? ? ? ? ? ? ? ? listAllCustomers();
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '5':
? ? ? ? ? ? ? ? ? ? System.out.print("確認(rèn)是否退出(Y/N):");
? ? ? ? ? ? ? ? ? ? char yn = CMUtility.readConfirmSelection();
? ? ? ? ? ? ? ? ? ? if (yn == 'Y')
? ? ? ? ? ? ? ? ? ? ? ? loopFlag = false;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? } while (loopFlag);
? ? }
? ? private void addNewCustomer() {
? ? ? ? System.out.println("---------------------添加客戶(hù)---------------------");
? ? ? ? System.out.print("姓名:");
? ? ? ? String name = CMUtility.readString(4);
? ? ? ? System.out.print("性別:");
? ? ? ? char gender = CMUtility.readChar();
? ? ? ? System.out.print("年齡:");
? ? ? ? int age = CMUtility.readInt();
? ? ? ? System.out.print("電話:");
? ? ? ? String phone = CMUtility.readString(15);
? ? ? ? System.out.print("郵箱:");
? ? ? ? String email = CMUtility.readString(15);
? ? ? ? Customer cust = new Customer(name, gender, age, phone, email);
? ? ? ? boolean flag = customers.addCustomer(cust);
? ? ? ? if (flag) {
? ? ? ? ? ? System.out
? ? ? ? ? ? ? ? ? ? .println("---------------------添加完成---------------------");
? ? ? ? } else {
? ? ? ? ? ? System.out.println("----------------記錄已滿(mǎn),無(wú)法添加-----------------");
? ? ? ? }
? ? }
? ? private void modifyCustomer() {
? ? ? ? System.out.println("---------------------修改客戶(hù)---------------------");
? ? ? ? int index = 0;
? ? ? ? Customer cust = null;
? ? ? ? for (; ; ) {
? ? ? ? ? ? System.out.print("請(qǐng)選擇待修改客戶(hù)編號(hào)(-1退出):");
? ? ? ? ? ? index = CMUtility.readInt();
? ? ? ? ? ? if (index == -1) {
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? cust = customers.getCustomer(index - 1);
? ? ? ? ? ? if (cust == null) {
? ? ? ? ? ? ? ? System.out.println("無(wú)法找到指定客戶(hù)!");
? ? ? ? ? ? } 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());
? ? ? ? cust = new Customer(name, gender, age, phone, email);
? ? ? ? boolean flag = customers.replaceCustomer(index - 1, cust);
? ? ? ? if (flag) {
? ? ? ? ? ? System.out
? ? ? ? ? ? ? ? ? ? .println("---------------------修改完成---------------------");
? ? ? ? } else {
? ? ? ? ? ? System.out.println("----------無(wú)法找到指定客戶(hù),修改失敗--------------");
? ? ? ? }
? ? }
? ? private void deleteCustomer() {
? ? ? ? System.out.println("---------------------刪除客戶(hù)---------------------");
? ? ? ? int index = 0;
? ? ? ? Customer cust = null;
? ? ? ? for (; ; ) {
? ? ? ? ? ? System.out.print("請(qǐng)選擇待刪除客戶(hù)編號(hào)(-1退出):");
? ? ? ? ? ? index = CMUtility.readInt();
? ? ? ? ? ? if (index == -1) {
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? cust = customers.getCustomer(index - 1);
? ? ? ? ? ? if (cust == null) {
? ? ? ? ? ? ? ? System.out.println("無(wú)法找到指定客戶(hù)!");
? ? ? ? ? ? } else
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? System.out.print("確認(rèn)是否刪除(Y/N):");
? ? ? ? char yn = CMUtility.readConfirmSelection();
? ? ? ? if (yn == 'N')
? ? ? ? ? ? return;
? ? ? ? boolean flag = customers.deleteCustomer(index - 1);
? ? ? ? if (flag) {
? ? ? ? ? ? System.out.println("---------------------刪除完成---------------------");
? ? ? ? } else {
? ? ? ? ? ? System.out.println("----------無(wú)法找到指定客戶(hù),刪除失敗--------------");
? ? ? ? }
? ? }
? ? private void listAllCustomers() {
? ? ? ? System.out.println("---------------------------客戶(hù)列表---------------------------");
? ? ? ? Customer[] custs = customers.getAllCustomers();
? ? ? ? if (custs.length == 0) {
? ? ? ? ? ? System.out.println("沒(méi)有客戶(hù)記錄!");
? ? ? ? } else {
? ? ? ? ? ? System.out.println("編號(hào)\t姓名\t性別\t年齡\t電話\t\t\t郵箱");
? ? ? ? ? ? for (int i = 0; i < custs.length; i++) {
? ? ? ? ? ? ? ? System.out.println(i + 1 + "\t\t" + custs[i].getName() + "\t" + custs[i].getGender() + "\t\t" + custs[i].getAge() + "\t\t" + custs[i].getPhone() + "\t" + custs[i].getEmail());
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? System.out.println("-------------------------客戶(hù)列表完成-------------------------");
? ? }
? ? public static void main(String[] args) {
? ? ? ? CustomerView cView = new CustomerView();
? ? ? ? cView.enterMainMenu();
? ? }
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)客戶(hù)管理系統(tǒng)
- Java 實(shí)戰(zhàn)項(xiàng)目之CRM客戶(hù)管理系統(tǒng)的實(shí)現(xiàn)流程
- 詳解Java如何使用集合來(lái)實(shí)現(xiàn)一個(gè)客戶(hù)信息管理系統(tǒng)
- Java實(shí)戰(zhàn)之客戶(hù)信息管理系統(tǒng)
- 利用java實(shí)現(xiàn)一個(gè)客戶(hù)信息管理系統(tǒng)
- java實(shí)現(xiàn)客戶(hù)信息管理系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單的客戶(hù)信息管理系統(tǒng)
相關(guān)文章
關(guān)于JSqlparser使用攻略(高效的SQL解析工具)
這篇文章主要介紹了關(guān)于JSqlparser使用攻略(高效的SQL解析工具),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
18個(gè)Java8日期處理的實(shí)踐(太有用了)
這篇文章主要介紹了18個(gè)Java8日期處理的實(shí)踐(太有用了),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Spring的嵌套事務(wù)(Propagation.NESTED)到底是個(gè)啥案例代碼講解
SavePoint是數(shù)據(jù)庫(kù)事務(wù)中的一個(gè)概念,?可以將整個(gè)事務(wù)切割為不同的小事務(wù),可以選擇將狀態(tài)回滾到某個(gè)小事務(wù)發(fā)生時(shí)的樣子,本文通過(guò)案例代碼講解Spring的嵌套事務(wù)(Propagation.NESTED)到底是個(gè)啥,感興趣的朋友跟隨小編一起看看吧2023-01-01
SpringBoot配置Ollama實(shí)現(xiàn)本地部署DeepSeek
本文主要介紹了在本地環(huán)境中使用?Ollama?配置?DeepSeek?模型,并在?IntelliJ?IDEA?中創(chuàng)建一個(gè)?Spring?Boot?項(xiàng)目來(lái)調(diào)用該模型,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
使用SpringBoot設(shè)置虛擬路徑映射絕對(duì)路徑
這篇文章主要介紹了使用SpringBoot設(shè)置虛擬路徑映射絕對(duì)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問(wèn)題
javaagent是在JDK5之后提供的新特性,也可以叫java代理,這篇文章主要介紹了基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問(wèn)題,需要的朋友可以參考下2022-10-10
StringUtils里的isEmpty方法和isBlank方法的區(qū)別詳解
這篇文章主要介紹了StringUtils里的isEmpty方法和isBlank方法的區(qū)別詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

