训练实例——食品库存管理系统(集合类)

2019-01-24  本文已影响0人  就这样吧嘞

运用集合类编写的食品库系统

按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出

分为主类 食品类 食品管理类

完整代码如下

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {//主类
        SPGL spgl=new SPGL();
        BufferedReader shuru =new BufferedReader (new InputStreamReader(System.in));
        //InputStreamReader输入流 通过BufferedReader导入
        
        
    while(true) {//死循环 除非按0
        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("0 退出");
        
        String xuhao=shuru.readLine();//读取一行 readLine() 必须为String类型 而且会要求异常处理为 throws
        if(xuhao.equals("1")) {//输出列表
            spgl.splb();
        }
        else if(xuhao.equals("2")) {//添加食品
            System.out.println("食品编号");
            String bianhao=shuru.readLine();
            System.out.println("食品名称");
            String mincheng=shuru.readLine();
            System.out.println("食品价格");
            float jiage=Float.parseFloat(shuru.readLine());
            SP x = new SP(bianhao,mincheng,jiage); //建立一个食品类对象x 并附上属性
            spgl.addsp(x);        //将x加入到集合类aa中
        }
        
        else if(xuhao.equals("3")) {//查找商品
            System.out.println("请输入食品编号");
            String bianhao=shuru.readLine();
            spgl.spcx(bianhao);
        }
        
        else if(xuhao.equals("4")) {//修改价格
            System.out.println("请输入食品编号");
            String bianhao=shuru.readLine();
            spgl.spcx(bianhao);
            System.out.println("请输入修改价格");
            float jiage=Float.parseFloat(shuru.readLine());
            spgl.spjgxg(bianhao, jiage);
        }
        
        else if(xuhao.equals("5")) {//删除商品
            System.out.println("请输入食品编号");
            String bianhao=shuru.readLine();
            spgl.spsc(bianhao);
        }
        
        else if(xuhao.equals("0")) {//退出系统
            System.out.println("谢谢使用,再见");
            System.exit(0);//系统关闭 此系统只有一个while循环,也可用break;
            //break;
        }
        
        else {
            System.out.println("输入有误");
        }
    }
        
        
        
        
        
    }
}

class SPGL {//食品管理类
    private ArrayList aa=null;   //建立一个集合类aa 为空
    SPGL(){
        aa=new ArrayList();//初始化    aa  
    }
    
    
    public void addsp(SP i) {//添加食品
        aa.add(i);
        System.out.println("添加成功");
    }
    
    public void splb() {//食品列表
        System.out.println(" 食品编号     "+"  "+" 食品名称     "+"  "+" 食品价格     ");
        for(int i=0;i<aa.size();i++) {
            SP sp=(SP) aa.get(i);
            shuchusp(sp);
        }
    }
    
    
    public void spcx(String bh) {//食品查询(编号)
        if(aa.size()==0) {
            System.out.println("食品列表里没有食品");
        }
        int i;
        for(i=0;i<aa.size();i++) {
            SP sp=(SP) aa.get(i);//局部变量sp=遍历某个食品
            if(sp.getbianhao().equals(bh)) {  //**此处可能不能用==**
                System.out.println(" 食品编号     "+"  "+" 食品名称     "+"  "+" 食品价格     ");
                shuchusp(sp);
                break;
            }
        }
        if(i==aa.size()&&(i!=0)) {  //当i累加到         aa.size()  时,说明遍历完还没找到,此时if在for外面,所以i要在for外定义              
            System.out.println("未查询到此食品");
        }   
    }
    
    
    public void spsc(String bh) {//食品删除(编号)
        if(aa.size()==0) {
            System.out.println("食品列表里没有食品");
        }
        int i;
        for(i=0;i<aa.size();i++) {
            SP sp=(SP) aa.get(i);//局部变量sp=遍历某个食品
            if(sp.getbianhao().equals(bh)) {  //**此处可能不能用==**
                aa.remove(i);                 //删除
                System.out.println("食品已删除成功");
                break;
            }
        }
        if(i==aa.size()&&(i!=0)) {  //
            System.out.println("未找到到此食品,删除失败");
        }
    }
    
    
    public void spjgxg(String bh,float jg) {//食品价格修改
        if(aa.size()==0) {
            System.out.println("食品列表里没有食品");
        }
        int i;
        for(i=0;i<aa.size();i++) {
            SP sp=(SP) aa.get(i);//局部变量sp=遍历某个食品
            if(sp.getbianhao().equals(bh)) { //**此处可能不能用==**
                sp.setjiage(jg);
                System.out.println("价格修改成功");
                break;
            }
        }
        if(i==aa.size()&&(i!=0)) {  //当i累加到         aa.size()  时,说明遍历完还没找到,此时if在for外面,所以i要在for外定义              
            System.out.println("未找到到此食品,价格修改失败");
        }
    }
    
    
    public void shuchusp(SP x) {//打印食品
        System.out.println(x.getbianhao()+"  "+x.getmingcheng()+"  "+x.getjiage());
    }
}



class SP{//食品类
    private String bianhao;
    private String mingcheng;
    private float jiage;

    SP(String bianhao,String mingcheng,float jiage) {
        this.bianhao=bianhao;
        this.mingcheng=mingcheng;
        this.jiage=jiage;
    }
    public String getbianhao() {
        return bianhao;
        
    }
    public String getmingcheng() {
        return mingcheng;
        
    }
    public float getjiage() {
        return jiage;
        
    }
    public void setbianhao(String i) {
        this.bianhao=i;
    }
    public void setmingcheng(String i) {
        this.mingcheng=i;
    }
    public void setjiage(float i) {
        this.jiage=i;
    }
}

测试结果:

按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
2
食品编号
001
食品名称
wertyui
食品价格
99
添加成功
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
2
食品编号
002
食品名称
cvghui
食品价格
38
添加成功
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
2
食品编号
003
食品名称
udjssxcf
食品价格
67
添加成功
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
1
 食品编号        食品名称        食品价格     
001  wertyui  99.0
002  cvghui  38.0
003  udjssxcf  67.0
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
3
请输入食品编号
002
 食品编号        食品名称        食品价格     
002  cvghui  38.0
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
4
请输入食品编号
001
 食品编号        食品名称        食品价格     
001  wertyui  99.0
请输入修改价格
98
价格修改成功
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
5
请输入食品编号
002
食品已删除成功
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
1
 食品编号        食品名称        食品价格     
001  wertyui  98.0
003  udjssxcf  67.0
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出

输入有误
按照提示输入序号
1 食品列表
2 添加食品
3 查找食品
4 修改价格
5 删除食品
0 退出
0
谢谢使用,再见

目前发现的部分缺陷如下:

  1. 食品列表未增加空判断
  2. 食品编号未限制

总结:目的主要熟练集合类的使用,目的达成。通过之后界面完善,可以更加接近真实系统。目前缺陷不影响程序运行。

上一篇下一篇

猜你喜欢

热点阅读