目标:
模拟实现一个基于文本界面的《客户信息管理软件》 进一步掌握编程技巧和调试技巧,熟悉面向对象编程 主要涉及以下知识点: 类结构的使用:属性、方法及构造器 对象的创建与使用 类的封装性 声明和使用数组 数组的插入、删除和替换 关键字的使用:this
模拟实现基于文本界面的《客户信息管理软件》。 该软件能够实现对客户对象的插入、修改和删除(用数组实现),并能够打印客户明细表。项目采用分级菜单方式。主菜单如下:
具体实现:
CustomerList类:
public class CustomerList {
private Customer[] customers;
private int total; //记录存储的客户的个数
public CustomerList(int totalCustomer){ //构造器,用来初始化customers数组
customers = new Customer[totalCustomer];
total = 0;
}
}
Customer类:
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.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 void method(){
name = "方钒";
System.out.println(name);
}
}
主界面:
public static void main(String[] args) {
ArrayList<Customer> array = new ArrayList<>();
CMUtility u = new CMUtility();
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();
System.out.println(" 请选择(1-5):");
char ch = u.readMenuSelection();
switch (ch){
case '1':
addNewCustomer(array);
break;
case '2':
modifyCustomer(array);
break;
case '3':
deleteCustomer(array);
break;
case '4':
listAllCustomers(array);
break;
case '5':
System.out.println("确定要退出吗(Y/N)");
char c = u.readConfirmSelection();
if(c == 'Y'){
System.out.println("退出成功");
System.out.println("谢谢使用");
System.exit(0);
}
}
}
}
添加客户实现:
private static void addNewCustomer(ArrayList<Customer> array){ //添加客户
CMUtility u = new CMUtility();
Scanner sc = new Scanner(System.in);
System.out.println("需要添加几条客户信息:");
int num;
while (true){
num = u.readInt();//键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
if( num>0 ){
break;
}else {
System.out.println("您输入的信息有误,请重新输入:");
}
}
for (int i =0 ; i < num ; i++ ){
System.out.println("请输入第"+(i+1)+"条信息");
System.out.println("---------------------添加客户---------------------");
System.out.println("姓名:");
String name = u.readString();// 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
System.out.println("性别:");
char gender = u.readChar();//从键盘读取一个字符,并将其作为方法的返回值。
System.out.println("年龄:");
// int age = sc.nextInt();
int age =u.readInt();//键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
System.out.println("电话:");
String phone = u.readString2();// 该方法从键盘读取一个不超过15位长度的字符串
boolean b =repeat(array,phone);
if(b){
System.out.println("该条信息已经存在,请勿重复输入");
continue;
}
System.out.println("邮箱:");
String email = u.readString3();// 不超过30
Customer c = new Customer(name,gender,age,phone,email);
array.add(c);
}
System.out.println("添加成功");
}
修改客户信息实现:
private static void modifyCustomer(ArrayList<Customer> array){ // 修改客户信息
CMUtility u = new CMUtility();
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要修改客户的编号:");
int num;
while (true){
num = u.readInt();//键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
if( num > 0 && num <=array.size()){
break;
}else {
System.out.println("您输入的信息有误,请重新输入:");
}
}
System.out.println("新姓名为;");
String name = u.readString();// 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串
System.out.println("新性别为;");
char gender =u.readChar();//从键盘读取一个字符,并将其作为方法的返回值。
System.out.println("新年龄为;");
int age = u.readInt();//键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
System.out.println("新电话为;");
String phone = u.readString2();// 该方法从键盘读取一个不超过15位长度的字符串
System.out.println("新邮箱为;");
String email = u.readString3();// 不超过30
Customer c = new Customer();
c.setName(name);
c.setGender(gender);
c.setAge(age);
c.setPhone(phone);
c.setEmail(email);
array.set(num-1,c);
System.out.println("修改成功");
}
删除客户信息实现:
private static void deleteCustomer(ArrayList<Customer> array){ //删除客户
CMUtility u = new CMUtility();
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要删除第几条信息:");
int num;
while (true){
num = u.readInt();//键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
if( num >0 && num <= array.size()){
break;
}else {
System.out.println("您输入的信息有误,请重新输入:");
}
}
System.out.println("确定要删除吗(Y/N)");
char ch =u.readConfirmSelection();
if(ch =='Y'){
array.remove(num-1);
System.out.println("删除成功");
}else{
return;
}
}
查询信息实现:
private static void listAllCustomers(ArrayList<Customer> array){//查询客户列表
if(array.size() == 0){
System.out.println("列表为空,请先添加信息");
return;
}
System.out.println("---------------------------客户列表---------------------------");
System.out.println("编号\t姓名\t性别\t年龄\t电话\t\t\t邮箱");
for (int i =0 ; i <array.size() ; i++){
Customer c = new Customer();
c = array.get(i);
System.out.println((i+1)+"\t\t"+c.getName()+"\t"+c.getGender()+"\t\t"+c.getAge()+"\t\t"+c.getPhone()+"\t\t\t"+c.getEmail());
}
System.out.println("-------------------------客户列表完成-------------------------");
}
添加时判断时候已经有了该条信息实现:
public static boolean repeat(ArrayList<Customer> array , String phone){//添加时判断时候已经有了该条信息
boolean b = false;
for (int i =0 ; i < array.size(); i++){
Customer c = new Customer();
c = array.get(i);
if( c.getPhone().equals(phone)){
b = true;
break;
}
}
return b; //如果输出true 表示重复
}