可以做问卷的网站,网站建设需什么,阿里oss wordpress,免费数据分析网站内容来自#xff1a;尚硅谷 难度#xff1a;easy 目 标 l 模拟实现一个基于文本界面的 《 拼电商客户管理系统 》 l 进一步掌握编程技巧和调试技巧#xff0c;熟悉面向对象编程 l 主要涉及以下知识点#xff1a; 类结构的使用#xff1a;属性、方法及构造器 对象的创建与… 内容来自尚硅谷 难度easy 目 标 l 模拟实现一个基于文本界面的 《 拼电商客户管理系统 》 l 进一步掌握编程技巧和调试技巧熟悉面向对象编程 l 主要涉及以下知识点 Ø 类结构的使用属性、方法及构造器 Ø 对象的创建与使用 Ø 类的封装性 Ø 声明和使用数组 Ø 数组的插入、删除和替换 关键字的使用this 需求说明 模拟实现基于文本界面的《拼电商客户管理系统》。 该软件能够实现对客户对象的插入、修改和删除用数组实现并能够打印客户明细表。 项目采用分级菜单方式。主菜单如下 -----------------拼电商客户管理系统----------------- 1 添 加 客 户 2 修 改 客 户 3 删 除 客 户 4 客 户 列 表 5 退 出 请选择(1-5)_ • 每个客户的信息被保存在 Customer 对象中。 • 以一个 Customer 类型的数组来记录当前所有的客户。 • 每次“添加客户”菜单 1 后客户 Customer 对象被添加到数组中。 • 每次“修改客户”菜单 2 后修改后的客户 Customer 对象替换数组中原对象。 • 每次“删除客户”菜单 3 后客户 Customer 对象被从数组中清除。 • 执行“客户列表 ”菜单 4 时将列出数组中所有客户的信息。 “添加客户”的界面及操作过程如下所示 …… 请选择(1-5)1 ---------------------添加客户--------------------- 姓名佟刚 性别男 年龄35 电话010-56253825 邮箱tongtongatguigu.com ---------------------添加完成--------------------- “修改客户”的界面及操作过程如下所示 …… 请选择(1-5)2 ---------------------修改客户--------------------- 请选择待修改客户编号(-1退出)1 姓名(佟刚)直接回车表示不修改 性别(男) 年龄(35) 电话(010-56253825) 邮箱(tongtongatguigu.com)tonggatguigu.com ---------------------修改完成--------------------- “删除客户”的界面及操作过程如下所示 …… 请选择(1-5)3 ---------------------删除客户--------------------- 请选择待删除客户编号(-1退出)1 确认是否删除(Y/N)y ---------------------删除完成--------------------- “客户列表”的界面及操作过程如下所示 …… 请选择(1-5)4 ---------------------------客户列表--------------------------- 编号 姓名 性别 年龄 电话 邮箱 1 佟刚 男 45 010-56253825 tongabc.com 2 封捷 女 36 010-56253825 fengjieibm.com 3 雷丰阳 男 32 010-56253825 leify163.com -------------------------客户列表完成------------------------- 第1步 — 实现Customer类 1. 按照设计要求编写 Customer 类并编译 2. 在 Customer 类中临时添加一个 main 方法中作为单元测试方法。 在方法中创建Customer对象并调用对象的各个方法以测试该类是否编写正确。 //package com.atguigu.p2;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) {
// 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\t age \t\t phone \t email;}
} 第2步 — CustomerList类的设计 l CustomerList 为 Customer 对象的管理模块内部使用数组管理一组 Customer 对象 l 本类封装以下信息 Ø Customer[] customers 用来保存客户对象的数组 Ø int total 0 记录已保存客户对象的数量 l 该类至少提供以下构造器和方法 Ø 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 () l public CustomerList ( int totalCustomer ) Ø 用途构造器用来初始化 customers 数组 Ø 参数 totalCustomer 指定 customers 数组的最大空间 l public boolean addCustomer (Customer customer ) Ø 用途将参数 customer 添加组中最后一个客户对象记录之后 Ø 参数 customer 指定要添加的客户对象 Ø 返回添加成功返回 true false 表示数组已满无法添加 l public boolean replaceCustomer ( int index, Customer cust ) Ø 用途用参数 customer 替换数组中由 index 指定的对象 Ø 参数 customer 指定替换的新客户对象 index指定所替换对象在数组中的位置从0开始 Ø 返回替换成功返回 true false 表示索引无效无法替换 l public boolean deleteCustomer ( int index) Ø 用途从数组中删除参数 index 指定索引位置的客户对象记录 Ø 参数 index 指定所删除对象在数组中的索引位置从 0 开始 Ø 返回删除成功返回 true false 表示索引无效无法删除 l public Customer[] getAllCustomers () Ø 用途返回数组中记录的所有客户对象 Ø 返回 Customer[] 数组中包含了当前所有客户对象该数组长度与对象个数相同。 l public Customer getCustomer ( int index) Ø 用途返回参数 index 指定索引位置的客户对象记录 Ø 参数 index 指定所要获取的客户在数组中的索引位置从 0 开始 Ø 返回封装了客户信息的 Customer 对象 1. 按照设计要求编写 CustomerList 类并编译 2. 在 CustomerList 类中临时添加一个 main 方法中作为单元测试方法。 3. 在方法中创建 CustomerList 对象最多存放 5 个客户对象然后分别用模拟数据调用以下各个方法以测试各方法是否编写正确 • addCustomer () • replaceCustomer () • deleteCustomer () • getAllCustomers () • getCustomer () • getTotal () 4. 进一步测试以下情况以验证该类是否编写正确 • 调用 addCustomer 方法添加至少 5 个以上客户对象时 • 当数组中客户对象数量为 0 时仍然调用 replaceCustomer 方法替换对象 • 当数组中客户对象数量为 0 时仍然调用 deleteCustomer 方法删除对象 • 对于 replaceCustomer 、 deleteCustomer 和 getCustomer 的调用当参数 index 的值无效时例如 -1 或 6 • getAllCustomers 方法返回的数组长度是否与实际的客户对象数量一致 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 Customer getCustomer(int index) {if (index 0 || index total) {return null;}return customers[index];}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;}} 第3步 — CustomerView类的设计 l CustomerView 为主模块负责菜单的显示和处理用户操作 l 本类封装以下信息 Ø CustomerList customerList new CustomerList (10); 创建最大包含10个客户对象的CustomerList 对象供以下各成员方法使用。 l 该类至少提供以下方法 Ø public void enterMainMenu () Ø private void addNewCustomer () Ø private void modifyCustomer () Ø private void deleteCustomer () Ø private void listAllCustomers () public static void main(String[] args) l public void enterMainMenu () Ø 用途显示主菜单响应用户输入根据用户操作分别调用其他相应的成员方法如 addNewCustomer 以完成客户信息处理。 l private void addNewCustomer () private void modifyCustomer() private void deleteCustomer() private void listAllCustomers() Ø 用途这四个方法分别完成“添加客户”、“修改客户”、“删除客户”和“客户列表”等各菜单功能。 这四个方法仅供enterMainMenu()方法调用。 l public static void main(String[] args ) Ø 用途创建 CustomerView 实例并调用 enterMainMenu () 方法以执行程序。 1. 按照设计要求编写 CustomerView 类逐一实现各个方法并编译 2. 执行 main 方法中测试以下功能 • 主菜单显示及操作是否正确 • “添加客户”操作是否正确给用户的提示是否明确合理测试当添加的客户总数超过 10 时运行是否正确 • “修改客户”操作是否正确给用户的提示是否明确合理 • “删除客户”操作是否正确给用户的提示是否明确合理 • “客户列表”操作是否正确表格是否规整 3. 思考以下问题 • 当软件退出时所有客户信息便丢失了运用什么手段可以将这些信息长久保存以便在下一次运行软件时继续使用 import java.util.Scanner;
//package com.atguigu02.project;
public class CustomerView {private CustomerList customersnew CustomerList(10);public CustomerView() {Customer cust new Customer(张三, 男, 30, 13843255423,abc126.com);customers.addCustomer(cust);}public void jianmie(){boolean flag true;do {System.out.println(----------拼电商客户管理系统----------\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_);Scanner sc new Scanner(System.in);int choice sc.nextInt();switch (choice) {case 1:addcustomer();break;case 2:xiugaiCustomer();break;case 3:shanchuCustomer();break;case 4:customerlist();break;case 5:flagfalse;}}while (flag);}private void addcustomer(){System.out.println(------------添加客户------------);System.out.print(姓名);Scanner sc new Scanner(System.in);String name sc.nextLine();System.out.print(性别);char gender sc.next().charAt(0);System.out.print(年龄);int age sc.nextInt();sc.nextLine();System.out.print(电话);String phone sc.nextLine();System.out.print(邮箱);String email sc.nextLine();Customer cust new Customer(name,gender,age,phone,email);boolean flag customers.addCustomer(cust);;if(flag){System.out.println(----------添加完成-----------);}else{System.out.println(-----------记录已满无法添加-------);}}public void xiugaiCustomer(){int index 0;Customer cust null;for(;;){System.out.println(---------修改客户----------);System.out.println(请选择待修改客户编号-1退出);Scanner sc new Scanner(System.in);index sc.nextInt();if (index -1) {return;}cust customers.getCustomer(index - 1);if (cust null) {System.out.println(无法找到指定客户);} elsebreak;}System.out.print(姓名( cust.getName() ));Scanner sc new Scanner(System.in);String name sc.nextLine();String oldnamecust.getName();if(name!oldname){oldnamename;}System.out.print(性别( cust.getGender() ));char gender sc.next().charAt(0);char oldgendercust.getGender();if(gender!oldgender){oldgendergender;}System.out.print(年龄( cust.getAge() ));int age sc.nextInt();int oldagecust.getAge();if(age!oldage){oldageage;}sc.nextLine();System.out.print(电话( cust.getPhone() ));String phonesc.nextLine();String oldphone cust.getPhone();if(phone!oldphone) {oldphone phone;}System.out.print(邮箱( cust.getEmail() ));String emailsc.nextLine();String oldemail cust.getEmail();if(email!oldemail){oldemailemail;}cust new Customer(oldname, oldgender, oldage, oldphone, oldemail);boolean flag customers.replaceCustomer(index-1, cust);if (flag) {System.out.println(---------------------修改完成---------------------);} else {System.out.println(----------无法找到指定客户,修改失败--------------);}}public void shanchuCustomer() {Customer cust null;int num 0;for (; ; ) {System.out.println(-------------删除客户-------------);System.out.println(请选择待删除客户编号-1退出);Scanner sc new Scanner(System.in);num sc.nextInt();if (num -1) {return;}cust customers.getCustomer(num - 1);if (cust null) {System.out.println(未找到目标用户);} elsebreak;}System.out.println(确认是否删除Y/N);Scanner sc new Scanner(System.in);String choice sc.nextLine();if(choiceN){return;}boolean flag customers.deleteCustomer(num - 1);if (flag) {System.out.println(-----------删除完成------------);}else {System.out.println(-------无法找到指定客户,删除失败------);}}public void customerlist(){System.out.println(---------------客户列表-----------------);Customer[] custs customers.getAllCustomers();if(custs.length0){System.out.println(目前列表中暂无客户);}else{System.out.println(编号\t姓名\t性别\t年龄\t电话\t\t\t邮箱);for (int i 0; i custs.length; i) {System.out.println((i1) \t custs[i].getDetails());
// System.out.println(System.out.println(i 1 \t custs[i].getName() \t custs[i].getGender() \t custs[i].getAge() \t\t custs[i].getPhone() \t custs[i].getEmail());}System.out.println(-----------客户列表完成------------);}}public static void main(String[] args) {CustomerView cView new CustomerView();cView.jianmie();}
}