Java实战之客户信息管理系统

网友投稿 259 2022-10-27


Java实战之客户信息管理系统

一、软件设计结构

对于初学者来说,弄清框架显得尤为重要

首先该软件有以下三种模块组成

二、MVC设计模式

模型层:Customer处理数据

控制层:CustomerList处理业务逻辑

视图层:CustomerView显示数据

以下三点建议结合代码理解

1.Customer为实体对象,用于封装客户信息

2.CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加、修改、删除和遍历的方法,供CustomerView调用

3.CustomerView为主模块,负责菜单的显示和处理用户操作

四个类都在同一包下

三、Customer

package org.atjinzhao.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;

}

}

四、CustomerList

package org.atjinzhao.customer;

public class CustomerList {

private Customer[] customers;//客户列表

private int total = 0;//记录已保存顾客数量

//构造器

public CustomerList(int totalCustomer) {

customers = new Customer[totalCustomer];

}

//方法

/**

* 添加客户

* return:true添加成功,false:添加失败

*/

public boolean addCustomer(Customer customer){

if (total < customers.length) {

customers[total] = customer;

total++;

return true;

}else return false;

}

/**

* 修改指定索引位置上的客户信息

* @param index

* @param cust

* @return true:修改成功 false修改失败

*/

public boolean replaceCustomer(int index,Customer cust){

if (index < 0 || index >= total) {

return false;

}else{

customers[index] = cust;

return true;

}

}

/**

* 删除指定索引位置上的客户

* @param index

* @return true删除成功 false删除失败

*/

public boolean deleteCustomer(int index){

if (index >= 0 && index < total) {

for (int i = index; i < total - 1; i++) {

customers[i] = customers[i+1];

}

customers[--total] = null;

return true;

}PrsudpuZb

return false;

}

/**

* 获取所有客户信息

* @return 数组

*/

public Customer[] getAllCustomers(){

//null的部分不返回

Customer[] custs = new Customer[total];

for (int i = 0; i < total; i++) {

custs[i] = customers[i];

}

return custs;

}

/**

* 获取指定索引位置上的客户

*/

public Customer getCustomer(int index){

if (index >= 0 && index < total) {

return customers[index];

}else return null;

}

/**

* 获取存储客户的数量

*/

public int getTotal() {

return total;

}

/**

* 获取最大能储存客户的数量

*/

public int getCustomer(){

return customers.length;

}

}

五、CustomerView

package org.atjinzhao.customer;

public class CustomerView {

private CustomerList customerList = new CustomerList(10);

public CustomerView() {

Customer cust = new Customer("李明",'男',19,"12349982563","lm@gmail.com");

customerList.addCustomer(cust);

}

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.println(" 请选择(1-5): ");

char selection = CMUtility.readMenuSelection();

switch (selection) {

case '1':

addNewCustomer();

break;

case '2':

modifyCustomer();

break;

case '3':

deleteCustomer();

break;

case '4':

listAllCustomers();

break;

case '5':

System.out.print("是否确认退出(Y/N):");

char isExit = CMUtility.readConfirmSelection();

if (isExit == 'Y') {

isFlag = false;

}

}

}

}

/**

* 添加客户

*/

public 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("---------------目录已满,添加失败---------------");

}

}

/**

* 修改客户

*/

public void modifyCustomer(){

System.out.println("-----------------修改客户-----------------");

Customer cust;

int num;

for (;;) {

System.out.print("请输入要修改的客户序号(输入-1退出):");

num = CMUtility.readInt();

if (num == -1) {

return;

}

cust = customerList.getCustomer(num - 1);

if (cust == null) {

System.out.println("无法找到指定客户!");

} else {

break;

}

}

System.out.println("姓名("+cust.getName()+"):");

String name = CMUtility.readString(10, cust.getName());

System.out.println("性别("+cust.getGender()+"):");

char gender = CMUtility.readChar( cust.getGender());

System.out.println("年龄("+cust.getAge()+"):");

int age = CMUtility.readInt(cust.getAge());

System.out.println("电话("+cust.getPhone()+"):");

String tel = CMUtility.readString(11, cust.getPhone());

System.out.println("邮箱("+cust.getEmail()+"):");

String email = CMUtility.readString(15, cust.getEmail());

Customer newCust = new Customer(name,gender,age,tel,email);

boolean isReplaced = customerList.replaceCustomer(num - 1, newCust);

if (isReplaced) {

System.out.println("-----------------修 改 成 功-----------------\t");

} else {

System.out.println("-----------------修 改 失 败-----------------\t");

}

}

/**

* 删除客户

*/

public void deleteCustomer(){

System.out.println("-----------------删除客户-----------------");

Customer cust;

int index;

for (;;) {

System.out.print("请输入要删除的客户序号(输入-1退出):");

index = CMUtility.readInt();

if (index == -1) {

return;

}

cust = customerList.getCustomer(index - 1);

if (cust == null) {

System.out.println("无法找到客户!");

} else {

break;

}

}

System.out.print("是否确认删除(Y/N):");

char isDelete = CMUtility.readConfirmSelection();

if (isDelete == 'Y') {

boolean deleteSuccess = customerList.deleteCustomer(index - 1);

if (deleteSuccess) {

System.out.println("-----------------删除成功-----------------");

} else {

System.out.println("-----------------删除失败-----------------");

}

}else{

return;

}

}

/**

* 显示客户列表的操作

*/

public vPrsudpuZboid listAllCustomers(){

System.out.println("-------------------客 户 列 表------------------\n");

int total = customerList.getTotal();

if (total == 0) {

System.out.println("没有客户记录!");

}else {

System.out.println("编号\t姓名\t性别\t年龄\t电话\t\t邮箱");

Customer[] custList = customerList.getAllCustomers();

for (int i = 0; i < total; i++) {

System.out.println(i+1 + "\t" + custList[i].getName()+

"\t" + custList[i].getGender()+"\t" + custList[i].getAge()+

"\t" + custList[i].getPhone()+"\t" + custList[i].getEmail()+"\t");

}

}

System.out.println("-----------------客户列表完成-----------------\n");

}

public static void main(String[] args) {

CustomerView view = new CustomerView();

view.enterMainMenu();

}

}

六、CMUtility

package org.atjinzhao.customer;

import java.util.*;

public class CMUtility {

public static void main(String[] args) {

//System.out.println(readMenuSelection());

}

private static Scanner scanner = new Scanner(System.in);

/**

* 用于界面菜单的选择。该方法读取键盘用户键入的‘1'-‘5'的任意字符,方法返回。

*

*/

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("数字输入错误,请重新输入:");

PrsudpuZb }

}

return n;

}

/**

*从键盘读取一个字符,并将其作为方法的返回值。

*如果用户不输入字符而回车,方法将以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的字符串,并将其作为方法的返回值。

* 如果用户不输入字符而直接回车,方法将以defaultVaue作为返回值。

*/

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;

}

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.println("输入长度(不大于" + limit + ")错误,请重新输入“");

continue;

}

break;

}

return line;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:saltstack数据系统——pillar
下一篇:ICMP-互联网控制协议-第六章
相关文章

 发表评论

暂时没有评论,来抢沙发吧~