项目二:控制台实现简易客户管理系统-Java-尚硅谷-宋红康教学视频
一、来源
该项目(案例)来自是Java -Java 学习- Java 基础到高级-宋红康-零基础自学Java-尚硅谷中的项目二
下面的代码是按照视频中的思路写的,基本与视频相同
二、代码
Customer.java文件代码
package bean;
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;
}
}
CustomerList.java文件代码
package service;
import bean.Customer;
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;
total++;
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 - 1] = null;
total--;
return true;
}
public Customer[] getAllCustomers(){
Customer[] cust = new Customer[total];
for (int i = 0; i < total; i++) {
cust[i] = customers[i];
}
return cust;
}
public Customer getCustomer(int index){
if(index < 0 || index >= total){
return null;
}
return customers[index];
}
public int getTotal(){
return total;
}
}
CustomerView.java文件代码
package ui;
import bean.Customer;
import myutil.CMUtility;
import service.CustomerList;
public class CustomerView {
private CustomerList customerList = new CustomerList(10);
/*
显示用户信息管理软件界面的方法
*/
public void enterMainMenu() {
boolean isFlag = true;
while (isFlag) {
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.print(" 请选择(1~5):");
char menu = CMUtility.readMenuSelection();
System.out.println();
switch (menu) {
case '1':
addNewCustomer();
break;
case '2':
modifyCustomer();
break;
case '3':
deleteCustomer();
break;
case '4':
listAllCustomer();
break;
case '5':
System.out.print("确认是否退出(Y/N):");
char isExit = CMUtility.readConfirmSelection();
if (isExit == 'Y') {
isFlag = false;
}
break;
}
}
}
/*
添加用户的方法
*/
private void addNewCustomer(){
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(13);
System.out.print("邮箱:");
String email = CMUtility.readString(30);
//将上述数据封装到对象中
Customer customer = new Customer(name,gender, age, phone,email);
boolean isSuccess = customerList.addCustomer(customer);
if(isSuccess){
System.out.println("---------------添加成功--------------");
} else {
System.out.println("--------------客户列表已满------------");
}
}
/*
修改客户信息的方法
*/
private void modifyCustomer(){
System.out.println("---------------修改客户--------------");
System.out.print("请选择待修改客户的编号(-1退出):");
Customer cust;
int number = CMUtility.readInt();
for(; ;){
if(number == -1){
return;
}
//
cust = customerList.getCustomer(number - 1);
if(cust == null){
System.out.println("无法找到指定客户!");
}
else {
break;
}
}
//修改客户信息
System.out.print("姓名(" + cust.getName() + "):");
String name = CMUtility.readString(10,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(10,cust.getPhone());
System.out.print("邮箱(" + cust.getEmail() + "):");
String email = CMUtility.readString(30,cust.getEmail());
Customer newCustomer = new Customer(name,gender, age, phone,email);
boolean isReplaced = customerList.replaceCustomer(number - 1,newCustomer);
if(isReplaced){
System.out.println("---------------修改成功--------------");
} else {
System.out.println("---------------修改失败--------------");
}
}
/*
删除客户的方法
*/
private void deleteCustomer() {
System.out.println("---------------删除客户--------------");
System.out.print("请选择待删除客户的编号(-1退出):");
int number = CMUtility.readInt();
for (; ; ) {
if (number == -1) {
return;
}
Customer cust = customerList.getCustomer(number - 1);
if (cust == null) {
System.out.println("无法找到指定客户!");
} else {
break;
}
}
System.out.print("是否删除客户(Y/N):");
char isDelete = CMUtility.readConfirmSelection();
if (isDelete == 'Y'){
boolean isSuccess = customerList.deleteCustomer(number - 1);
if (isSuccess) {
System.out.println("---------------删除成功--------------");
} else {
System.out.println("---------------删除失败--------------");
}
}
}
/*
显示客户列表的方法
*/
private void listAllCustomer(){
System.out.println("-----------------客户列表---------------");
int total = customerList.getTotal();
if(total == 0){
System.out.println("没有用户信息!");
} else {
Customer[] cust = customerList.getAllCustomers();
System.out.println("编号\t\t" + "姓名\t\t" + "性别\t\t" + "年龄\t\t" +
"电话\t\t\t" + "邮箱");
for(int i=0;i<cust.length;i++){
System.out.println((i + 1) + "\t\t\t" + cust[i].getName() +"\t\t" +
cust[i].getGender() + "\t\t" + cust[i].getAge() + "\t\t"
+cust[i].getPhone() + "\t\t\t" + cust[i].getEmail());
}
}
System.out.println("-----------------客户列表完成------------");
}
/*
main方法
*/
public static void main(String[] args){
CustomerView customerView = new CustomerView();
customerView.enterMainMenu();
}
}
CMUtility.java文件代码
package myutil;
import java.util.Scanner;
public class CMUtility {
private static Scanner sc = new Scanner(System.in);
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.println("选择错误,请重新输入:");
} else break;
}
return c;
}
/*
从键盘读取一个字符,并将其返回
*/
public static char readChar(){
String str = readKeyBoard(1,false);
return str.charAt(0);
}
/*
从键盘读取一个字符,并将其返回
如果用户不输入字符而直接回车,方法将以defaultValue作为返回值
*/
public static char readChar(char defaultValue){
String str = readKeyBoard(1,true);
return (str.length() == 0) ? defaultValue : str.charAt(0);
}
/*
从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值
*/
public static int readInt(){
int n;
for(; ;){
String str = readKeyBoard(2,false);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("输入错误,请重新输入:");
}
}
return n;
}
/*
从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值
如果用户不输入字符而直接回车,方法将以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("输入错误,请重新输入:");
}
}
return n;
}
/**
从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
/**
从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值
*/
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.println("输入错误,请重新输入:");
}
}
return c;
}
/*
改方法用于从键盘读指定长度的取字符串,返回一个字符串
*/
private static String readKeyBoard(int limit,boolean blankRetuen) {
String line = "";
while(sc.hasNextLine()){
line = sc.nextLine();
if(line.length() == 0){
if(blankRetuen) return line;
else continue;
}
if(line.length() < 1 || line.length() > limit){
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
三、运行效果
四、思路小结
- 该项目共有3个java文件
Customer.java中是客户的模型类,其中有客户的基本信息(姓名,性别,年龄,手机,邮箱)和关于这些属性的get,set方法
CustomerList.java是用来储存客户信息的,使用数组进行储存,该文件内还有添加客户,修改客户信息,删除客户的方法
CustomerView.java用来显示界面,在这个文件中调用其他类具体实现了功能
CMUtility.java中是一些读取键盘输入的工具方法,这些方法使用了static修饰,使之可以用类名加点号直接调用 - Customer类是客户类,数据用数组进行储存,CustomerList类提供了方法将每个客户类的对象进行操作
- 该项目的设计模式值得学习,将不同模块进行分包,下面是本人在IDEA里的截图