做一个库存管理系统,其中入库和出库要注意什么?Sqltest s=new Sqltest();(文本中加粗部分)报错怎么处理Sqltest这个函数?
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("谢谢您使用本系统,再见!");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没看你代码,如果出入库非要说需要注意什么,那就是库存数量的并发问题,简单处理来讲,不能直接set=具体的值 而是要在现有的数量上+1 或者 -1