做一个库存管理系统,其中入库和出库要注意什么?Sqltest s=new Sqltest();(文本中加粗部分)报错怎么处理Sqltest这个函数?

淡抹琴尘亦释酒 发布于 2019/11/24 10:07
阅读 257
收藏 0

public class Goods {

public int amount; //数量

    public float price; //单价

    public Goods(){

    }

public Goods(int amount,float price){

    this.amount=amount;

    this.price=price;

}

public String toString(){

return("物品单价   "+price+"   数量为     "+amount);

}

}

 

public void query(LinkList lst)throws Exception{//查询某单价的物品是否存在仓库

Goods x=new Goods();

int len;

float pri;

System.out.println("本仓库以物品单价为标识,每种单价对应一种物品,请输入要查询的物品单价:");

Scanner sc = new Scanner(System.in);

pri=sc.nextFloat();

len=lst.length();

for (int n=0; n<=len-1; n++) {

x=(Goods)(lst.get(n)); //按序读出每个结点

if (x.price==pri) break; //从每个结点的数据中,查找单价是否相符

}

if (x.price==pri) //查找成功,输出

System.out.println(x);

else

System.out.println("本库存没有该单价物品。");

 

}

 

 

 

 

void build(LinkList  lst)throws Exception{//建立仓库库存表

int m, len,n;

Goods w, x=new Goods();

System.out.println("本仓库以物品单价为标识,每种单价对应一种物品,请输入物品种类数:");

Scanner sc = new Scanner(System.in);

len=sc.nextInt();

if (len>0) {

System.out.println("请输入第一个物品的数量和种类");

w=new Goods(sc.nextInt(),sc.nextFloat());

lst.insert(0,w); //建立第一个结点,不需要查找插入位置

for (m=1; m<=len-1; ++m) { //建立其它结点,要先查找插入位置

System.out.println("请输入第"+(m+1)+"一个物品的数量和种类");

w=new Goods(sc.nextInt(),sc.nextFloat());

for (n=0; n<=lst.length()-1; n++) { //查找插入位置

x=(Goods)(lst.get(n)); //取出一个结点值

if (w.price<=x.price) break; //查找完成:新结点应该插入在第n个结点位置

}

if (w.price==x.price){ //该价格的物品已经存在

System.out.println("该品种本库已有,是否增加数量?(y表示增加数量)");

char yorn;

yorn=sc.next().charAt(0);

if (yorn=='y'||yorn=='Y') {

x=(Goods)(lst.get(n)); //准备更新物品链结点数据,先读出当前库存数据

lst.remove(n); //准备更新物品链结点数据,先删除旧结点

w.amount+=x.amount; // 增加数量

lst.insert(n,w);  // 在原位置把结点插入回去

}

else

System.out.println("不增加物品数量,继续!");

}

else //新价格的物品结点插入在第1个位置

lst.insert(n,w);

}

}

System.out.println("最新库存记录:");

lst.display(); //输出存在记录

}

 

 

 

 

void input_w(LinkList  lst)throws Exception{//进货

Goods w, x;

float pri;

int m,n;

char yorn;

System.out.println("本仓库现有货品:");

lst.display();

 

/*请补充完整

 

*/

 

}

 

 

 

 

void output_w(LinkList  lst)throws Exception{//出货

Goods x;

int m, n;

float pri;

char yorn;

System.out.println("本店现有存货:");

lst.display();

/*请补充完整

 

*/

}

 

 

 

 

 

public static void main(String[] args) throws Exception{

// TODO Auto-generated method stub

Scanner sc = new Scanner(System.in);

Goods a=new Goods();

LinkList lst=new LinkList();

int choice,flag=1;

System.out.println("*库存信息管理系统*");

System.out.println("现在初始化库存:");

Sqltest s=new Sqltest();

s.build(lst);

do {

System.out.println("*库存信息管理系统*");

System.out.println("请选择操作:");

System.out.println("0 --------- 退出本系统");

System.out.println("1 --------- 进货");

System.out.println("2 --------- 出货");

System.out.println("3 --------- 查询");

System.out.println("请输入您的选择:");

choice=sc.nextInt();

switch (choice) {

case 0 : flag=0; break;

case 1 : s.input_w(lst); break;

case 2 : s.output_w(lst); break;

case 3 : s.query(lst); break;

default: System.out.println("对不起,没有对应操作,请重新选择!");}

 

}while(flag!=0);

System.out.println("谢谢您使用本系统,再见!");

}

以下是问题补充:

@淡抹琴尘亦释酒:可以给一下入库的代码吗,参考一下。node和linklist的方法都有了。 (2019/11/24 10:59)
加载中
0
小红树
小红树

没看你代码,如果出入库非要说需要注意什么,那就是库存数量的并发问题,简单处理来讲,不能直接set=具体的值  而是要在现有的数量上+1 或者 -1

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部