Day12 尚硅谷视频
一、Bean
package bean;
/*
* 用户的信息
*/
public class Customer {
private int id;
private String name;
private int age;
private char gender;
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", phone='" + phone + '\'' +
", email='" + email + '\'' +
'}';
}
private String phone;
private String email;
private static int num=0;
public Customer() {
}
public Customer(int age, String name, char gender, String phone, String email) {
this.id = ++num;
this.age = age;
this.name = name;
this.gender = gender;
this.phone = phone;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
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 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;
}
}
二、Service
package service;
import bean.Customer;
import java.util.Arrays;
/*
* 业务层
* 增删改查
* */
public class CustomerService {
private Customer[] customers=new Customer[5];
private int count=0;
public boolean deleteCustomerByIndex(int index){
for (int i = index; i < count-1; i++) {
customers[i]=customers[i+1];
}
customers[--count]=null;
return true;
}
public int getCustomerById(int id){
for (int i = 0; i < count; i++) {
if(id==customers[i].getId())
return i;
}
return -1;
}
public boolean saveCustomer(Customer customer){
if(count==customers.length){
customers= Arrays.copyOf(customers,customers.length*2);
}
customers[count++]=customer;
return true;
}
public Customer[] getAllCustomer(){
return Arrays.copyOf(customers,count);//可以避免数组里面还没有初始化的对象
}
}
三、Util
package util;
import java.util.*;
/*
输入的工具
*/
public class CMUtility {
private static Scanner scanner = new Scanner(System.in);
/*
读取菜单选项--肯定是12345字符中的一种
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
//读取长度为1,并且不接收空串!必须是1
String str = readKeyBoard(1, false);
c = str.charAt(0);//将str中第一个字符取出,赋值给c
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);
}
/*
读取一个字符,但是如果没有输入,返回默认值
*/
public static char readChar(char defaultValue) {
//读取字符串,长度最长为1,但是允许接收空串
String str = readKeyBoard(1, true);
return (str.length() == 0) ? defaultValue : str.charAt(0);
}
/*
读取一个整型数据,长度最长为2(1-99)
*/
public static int readInt() {
int n;
for (; ; ) {
//读取字符串长度为2,不允许接收空串 abc-->转不成int值
String str = readKeyBoard(2, false);
try {
n = Integer.parseInt(str);//将str转为int值
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/*
读取int值,如果没有输入,则返回默认值
*/
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;
}
/*
读取一个字符串,长度用户指定
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
/*
读取字符串,如果么有输入,返回默认值
*/
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;
}
/**
*
* 功能:手动输入一个字符串,可以设置最大长度,以及是否接收空串
* @param limit int 返回字符串的最大长度 10
* @param blankReturn boolean 是否允许返回空串 true-允许,false-不允许
* @return String
*/
public static String readKeyBoard(int limit, boolean blankReturn) {
String line = "";//line初始化为空串
while (true) {// true和 scanner.hasNextLine()是一样的 修改客户信息
line = scanner.nextLine();//读取一行 返回一个字符串,赋值给line
if (line.length() == 0) {//判断读到的这一行是否有字符
if (blankReturn)
return line;//line就是一个"" 空串
else
continue;
}
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
四、View
package view;
import bean.Customer;
import jdk.nashorn.internal.ir.Flags;
import service.CustomerService;
import util.CMUtility;
/*
* 视图层
* 所有的输出、输入
* */
public class CustomerView {
private static CustomerService customerService=new CustomerService();
public static void main(String[] args) {
do {
System.out.println("-----客户管理软件----");
System.out.println("1 添加客户");
System.out.println("2 修改客户");
System.out.println("3 删除客户");
System.out.println("4 客户列表");
System.out.println("5 退出");
char num=CMUtility.readMenuSelection();
if(num=='1'){
addCustomerView();
}else if(num=='2'){
updateCustomerView();
}else if(num=='3'){
deleteCustomerView();
}else if(num=='4'){
showCustomerView();
}else if(num=='5'){
System.out.println("确认要退出吗?Y/N");
char flag=CMUtility.readConfirmSelection();
if(flag=='Y') break;
}
}while (true);
}
private static void showCustomerView() {
System.out.println("-----客户列表------");
System.out.println("编号 姓名 性别 年龄 电话 邮箱 ");
Customer[] allcustomers=customerService.getAllCustomer();
for (int i = 0; i < allcustomers.length; i++) {
System.out.println(allcustomers[i].toString());
}
System.out.println("-----客户列表完成------");
}
private static void deleteCustomerView() {
int index=-1;
while (true) {
System.out.println("-----删除用户------");
System.out.print("请选择待删除客户编号(-1退出)");
int id = CMUtility.readInt();
if (id == -1)
return;
index = customerService.getCustomerById(id);
if (index != -1) break;
}
System.out.println("确认是否删除?Y/N");
char flag=CMUtility.readConfirmSelection();
if(flag=='Y'){
boolean b= customerService.deleteCustomerByIndex(index);
if (b==true)
System.out.println("--------删除完成----------");
}
}
private static void updateCustomerView() {
int index=-1;
while (true) {
System.out.println("-----修改用户------");
System.out.print("请选择待修改客户信息(-1退出)");
int id = CMUtility.readInt();
if (id == -1)
return;
index = customerService.getCustomerById(id);
if (index != -1) break;
}
Customer[] allCustomer=customerService.getAllCustomer();
Customer customer=allCustomer[index];
System.out.print("姓名("+customer.getName()+"):");
String name=CMUtility.readString(10,customer.getName());
System.out.print("性别("+customer.getGender()+"):");
char gender=CMUtility.readChar(customer.getGender());
System.out.print("年龄("+customer.getAge()+"):");
int age=CMUtility.readInt(customer.getAge());
System.out.print("电话("+customer.getPhone()+"):");
String phone=CMUtility.readString(11,customer.getPhone());
System.out.print("邮箱("+customer.getEmail()+"):");
String email=CMUtility.readString(20,customer.getEmail());
customer.setName(name);
customer.setAge(age);
customer.setGender(gender);
customer.setPhone(phone);
customer.setEmail(email);
System.out.println("--------修改完成----------");
}
private static void addCustomerView() {
System.out.println("-----添加用户------");
System.out.print("姓名:");
String name=CMUtility.readString(10);
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 customer=new Customer(age,name,gender,phone,email);
boolean flag=customerService.saveCustomer(customer);
if(flag)
System.out.println("-----添加完成------");
else
System.out.println("-----添加失败------");
}
}
五、运行结果