电商系统的商品模块功能

简介

该系统包含五个类,一个商品类、商品方法实现类、管理员类、管理员管理类、主界面类。

  • 商品类(商品ID,商品名,类别名,单价,库存量,产地)
  • 管理员类(账户、密码)

实现功能

  1. 管理员登录(账号密码固定admin/admin)
  2. 修改管理员密码
  3. 商品添加
  4. 商品列表
  5. 查询指定id的商品
  6. 根据商品id删除商品
  7. 根据id修改指定商品的价格
  8. 根据id修改指定商品的库存
  9. 根据商品类别查询所有商品
  10. 查询指定价格区间的商品信息

实现方法

管理员类包括:
  • 管理员类属性: 账号、密码
  • 一个默认构造器、一个自定义构造器
  • 属性的set/get方法

public class Admin {

private String name;//账号
private String pw;//密码

public Admin() {

}
public Admin(String name, String pw) {
	super();
	this.name = name;
	this.pw = pw;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public String getPw() {
	return pw;
}

public void setPw(String pw) {
	this.pw = pw;
}

}

管理员管理类包括
  • 一个叫alist的集合来存储管理员数据
  • 一个用来初始化管理员的构造器
  • 判断管理员是否登入成功方法
  • 管理员修改密码的方法

public class AdminManage {

private ArrayList<Admin> alist = new ArrayList<>();
private Admin admin =null;
public  AdminManage() {
		alist.add(new Admin("admin","admin"));
}



public Admin foreach()
{
	
	for(Admin a:alist)
	{
		if(a != null)
			admin = a;
		
	}
	return admin;
}

/**
 *是否登入成功 
 */
public boolean sign(String name,String pw)
{
	
	foreach();
	//比较账号与密码是否相等
	if(name.equals(admin.getName()) && pw.equals(admin.getPw()) )
	{
		return true;
	}
	return false;
}

/**
 *修改密码 
 */
public void changePw(){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入旧的密码");
	//判断字符串是否相等
	if(admin.getPw().equals(sc.next()) )
	{
		System.out.println("请输入新的密码");
		admin.setPw(sc.next());
		return;
	}
	else{
		System.out.println("密码错误,请重新操作");
		changePw();
	}
}

}

商品类包括
  • 属性(商品ID,商品名,类别名,单价,库存量,产地)
  • 一个默认构造器和一个自定义构造器
  • 属性set/get/方法
  • toString的重写方法

public class Shopping {

private int id;
private String sname;//商品名
private String cname;//类别名
private int sal;//单价
private int count;//库存量
private String address;//产地

public Shopping() {
	
}

public Shopping(int id, String sname, String cname, int sal, int count, String address) {
	super();
	this.id = id;
	this.sname = sname;
	this.cname = cname;
	this.sal = sal;
	this.count = count;
	this.address = address;
}

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getSname() {
	return sname;
}

public void setSname(String sname) {
	this.sname = sname;
}

public String getCname() {
	return cname;
}

public void setCname(String cname) {
	this.cname = cname;
}

public int getSal() {
	return sal;
}

public void setSal(int sal) {
	this.sal = sal;
}

public int getCount() {
	return count;
}

public void setCount(int count) {
	this.count = count;
}

public String getAddress() {
	return address;
}

public void setAddress(String address) {
	this.address = address;
}

@Override
public String toString() {
	return "商品id:" + id + "\t商品名:" + sname + "\t类别名:" + cname + "\t单价:" + sal + "\t库存量:" + count
			+ "\t产地:" + address +"\n";
}

}

商品管理类包括
  • 一个存放商品类的集合
  • 商品的增、删、改、查等功能的实现

public class ShoppingManager {

/**
 * 定义一个集合存放商品信息
 * */
static ArrayList<Shopping> list = new ArrayList<>();

/**
 * 添加商品
 */
public boolean add(Shopping s)
{
	//判断是否已存在商品id,存在则添加失败
	if(select(s.getId()) == null)
	{
		list.add(s);
		return true;
	}
	return false;
	
}


/**
 * 根据id查找商品
 * */ 
public Shopping select(int id) {
	//给一个空的Shopping对象
	Shopping sg = null;
	
	//遍历集合
	for(Shopping s : list)
	{
		//是否存在该商品的id
		if(s.getId() == id)
		{
			sg = s;
			break;
		}
	}
	
	return sg;
}

/**
 * 商品列表
 */
public ArrayList<Shopping> selectAllShopping()
{
	return list;
}

/**
 * 根据商品id删除商品
 * */
public boolean del(int id)
{
	//查询该id的商品信息
	Shopping s = select(id);
	//如果不为空
	if(s != null)
	{
		//删除该信息
		list.remove(s);
		return true;
	}
	else
		//删除失败
		return false;
}

/**
 * 根据商品id修改价格
 * */
public boolean changeSal(int id,int sal)
{
	//查询该id的商品信息
	Shopping s = select(id);
	if(s != null)
	{
		s.setSal(sal);
		return true;
	}
	return false;
}



/**
 * 根据商品id修改库存
 * */
public boolean changeCount(int id,int count)
{
	//查询该id的商品信息
	Shopping s = select(id);
	if(s != null)
	{
		s.setCount(count);
		return true;
	}
	return false;
}



/**
 * 根据商品类别查询所有商品
 * */
public ArrayList<Shopping> selectByCname(String cname)
{
	
	//给一个新的集合来存放数据
	ArrayList<Shopping> sg = new ArrayList<>();
	//遍历集合
	for(Shopping s:list )
	{
		if(s != null && s.getCname().equals(cname))
		{
			sg.add(s);
		}
	}
	return sg;
}

/**
 *查询指定价格区间的商品信息 
 */
public ArrayList<Shopping> selectBySal(int lSal,int hSal)
{
	//给一个新的集合来存放数据
	ArrayList<Shopping> sg = new ArrayList<>();
	//判断2个值大小排序
	if(lSal > hSal)
	{
		int i =lSal;
		lSal =hSal;
		hSal = i;
	}
	for(Shopping s :list)
	{
		if(s.getSal() > lSal && s.getSal() < hSal)
		{
			sg.add(s);
		}
	}
	return sg;
	
}

}

public class ShoppingClient {

private ShoppingManager sm = new ShoppingManager();
private AdminManage am  =new AdminManage();
Scanner sc;

/**菜单*/
public void menu(){
	p("1请登入");
	p("0退出");
	start();
}

/**
 *开始
 */
private void start() {
	sc = new Scanner(System.in);
	int i = sc.nextInt();
	switch(i){
	case 1:
		if(dengru())
		{
			shoppingMune();
		}
		else
		{
			p("登入失败,请重新登入");
			menu();
		}
		break;
	case 0:
		exit();
		break;
	case 2:
		add();
		break;
		default:
			p("请输入正确指令");
			break;
	}
	//menu();
	
}
主界面
  • 商品类以及管理员类功能的实现
  • 定义了一个p(Object obj)的输出方法
  • 大量使用了方法的调用、switch选择、p()实现
//商品菜单
private void shoppingMune() {
	p("1修改密码");
	p("2添加商品");
	p("3商品列表");
	p("4查询指定id的商品");
	p("5删除商品");
	p("6修改商品价格");
	p("7修改商品库存");
	p("8查询商品类所有商品信息");
	p("9查询区间类所有商品");
	p("0返回");
	sc = new Scanner(System.in);
	int j = sc.nextInt();
	switch(j)
	{
	case 1:
		//修改密码
		am.changePw();
		break;
	case 2:
		//添加商品
		add();
		break;
	case 3:
		//商品列表
		showAll();
		break;
	case 4:
		//根据id查询商品信息
		showById();
		break;
	case 5:
		//删除商品
		delete();
		break;
	case 6:
		//修改商品价格
		changeSalById();
		break;
	case 7:
		//修改商品库存
		changeCountById();
		break;
	case 8:
		//查询商品类所有信息
		selectAllByCname();
		break;
	case 9:
		//查询区间内的商品
		selectAreaOfSal();
	case 0:
		menu();
		break;
	default:
		p("输入错误");
		break;
	}
	shoppingMune();
	
}

/***/
private void selectAreaOfSal() {
	sc = new Scanner(System.in);
	p("请输入要查询的商品的区间[1-100]");
	String[] s = sc.nextLine().split("-");
	p("-----------------------------------------");
	p(sm.selectBySal(Integer.parseInt(s[0]), Integer.parseInt(s[1])));
	p("-----------------------------------------");
	
}

/**查询商品类所有信息*/
private void selectAllByCname() {
	sc = new Scanner(System.in);
	p("请输入要查询的商品类[电子]");
	p("-----------------------------------------");
	p(sm.selectByCname(sc.next()));
	p("-----------------------------------------");
}

/**通过id修改商品库存*/
private void changeCountById() {
	sc = new Scanner(System.in);
	p("请输入要指定修改的商品id以及要修改库存【1-1900】");
	String[] arr=sc.nextLine().split("-");
	if(sm.changeCount(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])))
	{
		p("-----------------------------------------");
		p("修改成功,信息如下");
		p("-----------------------------------------");
		p(sm.select(Integer.parseInt(arr[0])));
		p("-----------------------------------------");
	}
	else
	{
		p("-----------------------------------------");
		p("没有改商品的id信息,修改失败");
		p("-----------------------------------------");
	}
	
}

/**通过id修改商品价格*/
private void changeSalById() {
	sc = new Scanner(System.in);
	p("请输入要指定修改的商品id以及修改的价格[1-1900]");
	String[] arr=sc.nextLine().split("-");
	if(sm.changeSal(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])))
	{
		p("-----------------------------------------");
		p("修改成功,信息如下");
		p("-----------------------------------------");
		p(sm.select(Integer.parseInt(arr[0])));
		p("-----------------------------------------");
	}
	else
	{
		p("-----------------------------------------");
		p("没有改商品的id信息,修改失败");
		p("-----------------------------------------");
	}
}

/**根据id删除商品*/
private void delete() {
	sc = new Scanner(System.in);
	p("请输入要删除的商品id");
	if(sm.del(sc.nextInt()))
	{
		p("-----------------------------------------");
		p("商品删除成功");
		p("-----------------------------------------");
	}
	else
	{
		p("-----------------------------------------");
		p("没有该商品信息,删除失败");
		p("-----------------------------------------");
	}
}

/**查询所有商品信息*/
private void showAll() {
	p("-----------------------------------------");
	p(sm.selectAllShopping());
	p("------------------------------------------");
}

/**根据id查询信息*/
private void showById() {
	sc = new Scanner(System.in);
	p("请输入要查询的商品id");
	int id = sc.nextInt();
	p("信息如下:");
	p("----------------------");
	p(sm.select(id));
	p("----------------------");
	
}

/**添加商品*/
private void add() {
	p("请输入商品信息[1-手机-电子-5000-10000-中国]");
	sc = new Scanner(System.in);
	String s = sc.nextLine();
	/**根据“-”截取商品信息*/
	String[] info = s.split("-");
	
	if(sm.select(Integer.parseInt(info[0])) != null)
	{
		p("该编号的商品已经存在,请重新输入");
		add();
		return;
	}
	else
	{
		Shopping sp = new Shopping(Integer.parseInt(info[0]), info[1], info[2],
				Integer.parseInt(info[3]), Integer.parseInt(info[4]),
				info[5]);
		sm.add(sp);
		p("添加成功");
	}
}

/**退出*/
private void exit() {

	sc = new Scanner(System.in);
	p("是否退出");
	String op = sc.next();
	if(op.equalsIgnoreCase("y"))
	{
		p("谢谢使用");
		System.exit(1);
	}
}

/*
*登入判断
*/
public boolean dengru(){

ArrayList<Admin> admin = new ArrayList();
	p("请输入账号与密码[admin/admin]");
	sc = new Scanner(System.in);
	// 以空格为分隔
	String[] arr=sc.nextLine().split("/");
	
	Admin a = new Admin(arr[0], arr[1]);
	admin.add(a);
	
	for(Admin e : admin)
	{
		
		if(e != null)
		{
			
			return	am.sign(e.getName(),e.getPw());
		}
	}
	
	return false;
}


/**打印方法*/
public void p(Object obj){
	System.out.println(obj);
}

/**主函数*/
public static void main(String[] args) {
	new ShoppingClient().menu();
}

}