欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

客户信息管理软件项目

程序员文章站 2022-05-08 14:32:35
...

java学习了两周,试着自己写了第一个自己的项目《客户信息管理软件》,该项目主要功能包含了客户信息的添加客户、删除客户、修改客户信息、查询客户信息四个功能,以及规范了用户的非法输入,对面向对象初学者来说非常适合练手,废话不多说,直接上代码。

项目列表

客户信息管理软件项目

实现代码

Customer类
package com.luokai.myproject.bean;

/*
 * Customer为实体对象,用来封装客户信息
 */
public class Customer {
	//属性
	private String name;//姓名
	private int age;//年龄
	private char gender;//性别
	private String phone;//电话
	private String email;//邮箱
	
	//构造器
	public Customer() {
	}
	
	public Customer(String name,int age,char gender,String phone,String email) {
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.phone = phone;
		this.email = email;
	}
	
	//set方法和get方法
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void setGender(char gender) {
		this.gender = gender;
	}
	public char getGender() {
		return gender;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getPhone() {
		return phone;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEmail() {
		return email;
	}
	

}

思路:Customer类很简单,就是私有化了姓名、年龄、性别、电话、邮箱五个属性,然后创建了两个构造器以及他们的set方法和get方法。

CustomerList类
package com.luokai.myproject.service;

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

public class CustomerList {
	private Customer[] customers;//用来保存customer数组对象
	private int total;//用来统计customer对象的数量
	
	//构造器
	public CustomerList(int totalCustomer) {
		customers = new Customer[totalCustomer];
	}
	
	/**
	 * 
	 * @Description	增加Customer对象到数组中
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午9:01:05
	 * @param cust
	 * @return	true:添加成功	false:添加失败
	 */
	public boolean addCustomer(Customer cust) {
		if(total >= customers.length) {//判断数组是否存满
			return false;
		}
		else {
			customers[total++] = cust;
			return true;
		}
	}
	
	/**
	 * 
	 * @Description	修改指定位置上的Customer对象
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午9:13:54
	 * @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;
		}
	}
	
	/**
	 * 
	 * @Description	从数组中删除指定位置上的Customer对象
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午9:05:14
	 * @param index
	 * @return	true:删除成功	false:删除失败
	 */
	public boolean deleteCustomer(int index) {
		if(index < 0 || index >= total) {
			return false;
		}
		else {
			for(int i = index;index < total - 1;i++) {
				customers[i] = customers[i + 1];
			}
			customers[total-1] = null;
			total--;
			return true;
		}
	}
	
	/**
	 * 
	 * @Description	获取所有的Customer对象
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午8:58:20
	 * @param
	 * @return	Customer对象
	 */
	public Customer[] getAllCustomer() {
		Customer[] custs = new Customer[total];
		for(int i = 0;i < custs.length;i++) {
			custs[i] = customers[i];
		}
		return custs;
	}
	
	/**
	 * 
	 * @Description	获取指定index位置上的对象
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午8:54:48
	 * @param index (从0开始)
	 * @return	Customer对象
	 */
	public Customer getCustomer(int index) {
		if(index < 0 || index >= total) {
			return null;
		}
		else {
			return customers[index];
		}
	}
	
	/**
	 * 
	 * @Description	获取Customer的数量
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午8:53:17
	 * @return	Customer的数量
	 */
	public int getTotal() {
		return total;
	}

}

思路:CustomerList类,先声明了一个customers的对象数组和一个用来统计数组储存的对象数量total,然后编写一个可以指定数组长度的构造器,后面则是包含了添加客户,修改客户信息,删除客户,查询所有客户和查询指定客户的方法,同时也get了一个获取total属性的方法。

CustomerView类

package com.luokai.myproject.ui;

import com.luokai.myproject.bean.Customer;
import com.luokai.myproject.service.CustomerList;
import com.luokai.myproject.util.CMUtility;

/*
 * CustomerView为主模块,负责菜单的显示和处理用户操作
 */
public class CustomerView {
	private CustomerList customerList = new CustomerList(10);
	
	//构造器
	public CustomerView() {
		//定义一个初始对象
		Customer customer = new Customer("小琳", 22, '男', "15236522323", "aaa@qq.com");
		boolean isSuccee = customerList.addCustomer(customer);
	}
	
	/**
	 * 
	 * @Description	菜单界面
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午10:31:58
	 */
	public void enterMainMenu() {
		boolean isFlag = true;
		while(isFlag) {
			System.out.println("\n-----------------客户信息管理软件-----------------\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):");
			
			//获取输入的值
			char menu = CMUtility.readMenuSelection();
			
			switch(menu) {
			case '1':
				addNewCustomer();
				break;
			case '2':
				modifyCustomer();
				break;
			case '3':
				deleteCustomer();
				break;
			case '4':
				lisAllCustomer();
				break;
			case '5':
				System.out.print("确定是否退出(Y/N)?");
				char isExit = CMUtility.readConfirmSelection();
				if(isExit == 'N') {
					break;
				}
				else {
					isFlag = false;
					break;
				}
			}
		}
		
	}
	
	public void addNewCustomer() {
		System.out.println("----------------------------添加客户---------------------------\t");
		System.out.print("姓名:");
		String name = CMUtility.readString(10);
		System.out.print("年龄:");
		int age = CMUtility.readInt();
		System.out.print("性别:");
		char gender = CMUtility.readChar();
		System.out.print("电话:");
		String phone = CMUtility.readString(13);
		System.out.print("邮箱:");
		String email = CMUtility.readString(30);
		Customer cust = new Customer(name, age, gender, phone, email);
		//安全保护
		System.out.print("确定是否添加(Y/N)?:");
		char isReplace = CMUtility.readConfirmSelection();
		if(isReplace == 'Y') {
			customerList.addCustomer(cust);
			System.out.println("---------------------------添加成功---------------------------\t");
		}
		else {
			System.out.println("---------------------------添加失败---------------------------\t");
		}
	}
	
	/**
	 * 
	 * @Description	修改客户
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日下午1:40:53
	 */
	public void modifyCustomer() {
//		System.out.println("修改客户操作");
		int number;
		Customer cust;
		System.out.println("----------------------------修改客户---------------------------\t");
		System.out.print("请选择需要修改的客户编号(-1退出):");
		number = CMUtility.readInt();
		if(number == -1) {
			return;
		}
		cust = customerList.getCustomer(number - 1);
		for(;;) {
			if(cust == null) {
				System.out.println("没有找到该客户!");
				return;
			}else {
				break;
			}
		}
		
		//找到该客户
		System.out.print("姓名(" + cust.getName() + "):");
		String name = CMUtility.readString(10, cust.getName());
		System.out.print("年龄(" + cust.getAge() + "):");
		int age = CMUtility.readInt(cust.getAge());
		System.out.print("性别(" + cust.getGender() + "):");
		char gender = CMUtility.readChar(cust.getGender());
		System.out.print("电话(" + cust.getPhone() + "):");
		String phone = CMUtility.readString(13, cust.getPhone());
		System.out.print("邮箱(" + cust.getEmail() + "):");
		String email = CMUtility.readString(30, cust.getEmail());
		Customer newcust = new Customer(name, age, gender, phone, email);
		//安全保护
		System.out.print("确定是否删除(Y/N)?:");
		char isReplace = CMUtility.readConfirmSelection();
		if(isReplace == 'Y') {
			customerList.replaceCustomer(number - 1, newcust);
			System.out.println("---------------------------修改成功---------------------------\t");
		}
		else {
			System.out.println("---------------------------修改失败---------------------------\t");
		}
	}
	
	/**
	 * 
	 * @Description	删除客户
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日下午1:40:15
	 */
	public void deleteCustomer() {
		int number;
		Customer cust;
		System.out.println("----------------------------删除客户---------------------------\t");
		System.out.print("请选择需要删除的客户编号(-1退出):");
		number = CMUtility.readInt();
		if(number == -1) {
			return;
		}
		cust = customerList.getCustomer(number - 1);
		for(;;) {
			if(cust == null) {
				System.out.println("没有找到该客户!");
				return;
			}else {
				break;
			}
		}
		
		//找到该客户
		System.out.print("确定是否删除(Y/N)?:");
		char isDelete = CMUtility.readConfirmSelection();
		if(isDelete == 'Y') {
			customerList.deleteCustomer(number -1);
			System.out.println("---------------------------删除成功---------------------------\t");
		}
		else {
			System.out.println("---------------------------删除失败---------------------------\t");
		}
	}
	
	/**
	 * 
	 * @Description	列出所有客户的操作
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午11:05:17
	 */
	public void lisAllCustomer() {
		System.out.println("----------------------------客户列表---------------------------\t");
		int total= customerList.getTotal();
		if(total == 0) {
			System.out.println("没有客户记录!");
		}else {
			System.out.println("编号\t姓名\t年龄\t性别\t电话\t\t邮箱");
			Customer[] custs= customerList.getAllCustomer();
			for(int i = 0;i < custs.length;i++) {
				Customer cust = custs[i];
				System.out.println((i + 1) + "\t" + cust.getName() + "\t" + cust.getAge() + 
						"\t" + cust.getGender() + "\t" + cust.getPhone() + "\t" + cust.getEmail());
			}
		}
	}
	
	/**
	 * 
	 * @Description	主函数调用enterMainMenu方法
	 * @author luokai Email:aaa@qq.com
	 * @date 2020年6月11日上午10:37:29
	 * @param args
	 */
	public static void main(String[] args) {
		CustomerView customerView = new CustomerView(); 
		customerView.enterMainMenu();
	}

}

思路:CustomerView类中我先声明了一个长度为10的customerList数组,为了方便操作功能我在构造器中初始化了一个对象,为了方便与用户交互,编写了初始的菜单界面和添加客户、修改客户信息、删除客户、查询客户列表的五个方法,最后在main函数中调用enterMainMenu()方法。