java练习小项目
题目如下:
1. 商店中,进货员进货(列出能够进货的食品,进货员选择进货的食品,确定进货的数量),进货结束后, 列出进货的食品清单
2. 商店中,售货员售货,顾客来购买食品(列出能够购买的食品,顾客选择购买的食品,确定购买食品的数量),购买结束后,列出顾客的购物清单
3. 顾客吃食品(列出能够吃的食品,顾客选择吃的食品,确定吃食品的数量),吃完后,把剩余的食品列出
要求:处理异常,程序要正常执行,分包明确
设计:
Shop类:有食品数组Food[],进货员Stocker,售货员Saler
进货员类(Stocker):进货方法
食品类(Food):食品名称、食品数量
以下食品至少有两种
梨(Pear extends Food):
…
苹果(Apple extends Food):
售货员类(Saler):售货方法
父亲(顾客Father):Food[]属性,吃的方法
儿子(Son extends Father):吃的方法
**模块及项目包图片:
**
Apple:
package no1.customer.goods;
public class Apple extends no1.goods.Foods
{
public Apple()
{
super();
}
public Apple(String name, int num)
{
super(name, num);
}
}
Foods:
package no1.goods;
public class Foods
{
String name;
int num;
public Foods() {
super();
}
public Foods(String name, int num) {
super();
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void add(int amount)
{
this.num+=amount;
}
public void min(int amount)
{
this.num-=amount;
}
}
Newshop:
package no1.customer.goods;
import java.util.Scanner;
import no1.customer.*;
public class Newshop
{
no1.goods.Foods[] food= {new no1.goods.Foods("红富士",0), new no1.goods.Foods("雪梨",0)};
public void stock()
{
while (true)
{
System.out.println("商店现存货有" + "1.Apple" + food[0].getName() + ":" + food[0].getNum() + "," + "2.Pear"+ food[1].getName() + ":" + food[1].getNum() + "退出请输入:3.Exit");
Scanner scan = new Scanner(System.in);
String name = scan.next();
try
{
if ("1".equals(name) || "Apple".equalsIgnoreCase(name)) {
System.out.println("请输入要进货的数量");
String num = scan.next();
int amount = Integer.parseInt(num);
food[0].add(amount);
} else if ("2".equals(name) || "Pear".equalsIgnoreCase(name)) {
System.out.println("请输入要进货的数量");
String num = scan.next();
int amount = Integer.parseInt(num);
food[1].add(amount);
} else if ("3".equals(name) || "Exit".equalsIgnoreCase(name)) {
break;
}
}
catch (NumberFormatException e)
{
System.out.println("输入不匹配,请重新输入");
}
}
}
public void sell(Father fa)
{
/*Foods[] f=new Foods[2];
fa.setFood(f);*/
no1.goods.Foods[] f=fa.getFood();
while (true) {
System.out.println("您好,欢迎光临小店");
System.out.println("商店现存货有" + "1.Apple" + food[0].getName() + ":" + food[0].getNum() + "," + "2.Pear"+food[1].getName() + ":" + food[1].getNum() + "退出请输入:3.Exit");
Scanner scan = new Scanner(System.in);
String name = scan.next();
try {
if ("1".equals(name) || "Apple".equalsIgnoreCase(name)) {
System.out.println("请输入要买的数量");
String num = scan.next();
int amount = Integer.parseInt(num);
if(amount>food[0].getNum())
{
System.out.println("超出我们的库存,请重新输入");
continue;
}
food[0].min(amount);
f[0].add(amount);
} else if ("2".equals(name) || "Pear".equalsIgnoreCase(name)) {
System.out.println("请输入要买的数量");
String num = scan.next();
int amount = Integer.parseInt(num);
if(amount>food[1].getNum())
{
System.out.println("超出我们的库存,请重新输入");
continue;
}
food[1].min(amount);
f[1].add(amount);
} else if ("3".equals(name) || "Exit".equalsIgnoreCase(name)) {
break;
}
} catch (NumberFormatException e) {
System.out.println("输入不匹配,请重新输入");
}
}
}
}
Pear:
package no1.customer.goods;
import java.util.Scanner;
import no1.customer.*;
import no1.goods.Foods;
public class Shop
{
private static int appleNum=0;
private static int pearNum=0;
no1.goods.Foods[] food= {new no1.goods.Foods("红富士",0), new no1.goods.Foods("雪梨",0)};
public void stock()
{
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum()+" "+"退出请输入:exit");
while(true)
{
Scanner scan=new Scanner(System.in);
String s=scan.nextLine();
switch(s)
{
case "1":
System.out.println("请输入你要进货的红富士的数量");
int num1=scan.nextInt();
food[0].setNum(appleNum+=num1);
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum());
break;
case "2":
System.out.println("请输入你要进货的雪梨的数量");
int num2=scan.nextInt();
food[1].setNum(pearNum+=num2);
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum());
break;
case "exit":
return;
}
}
}
public void sell(Father fa)
{
Foods[] e = fa.getFood();
System.out.println("您好,欢迎光临小店!");
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum()+" "+"退出请输入:exit");
int num1=0;
int num2=0;
while(true)
{
Scanner scan=new Scanner(System.in);
String s=scan.nextLine();
switch(s)
{
case"1":
System.out.println("请输入你要买的红富士的数量");
num1=scan.nextInt();
if (num1>food[0].getNum())
{
System.out.println("超出我们的库存");
break;
}
food[0].setNum(appleNum-=num1);
e[0].setNum(num1);
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum()+" "+"退出请输入:exit");
break;
case"2":
System.out.println("请输入你要买的红富士的数量");
num2=scan.nextInt();
if (num2>food[1].getNum())
{
System.out.println("超出我们的库存");
break;
}
food[0].setNum(pearNum-=num2);
e[1].setNum(num2);
System.out.println("商店现存货有"+"1"+food[0].getName()+":"+food[0].getNum()+","+"2"+food[1].getName()+":"+food[1].getNum()+" "+"退出请输入:exit");
break;
case "exit":
System.out.println("您买的商品:");
System.out.println("Apple:"+num1+",Pear:"+num2);
return;
}
}
}
}
Test:
package no1.customer.test;
import no1.customer.*;
import no1.customer.goods.Newshop;
public class Test
{
public static void main(String[] args)
{
Newshop s=new Newshop();
Father fa=new Father();
s.stock();
s.sell(fa);
fa.eat();
Son son=new Son();
son.setFood(fa.getFood());
System.out.println("儿子准备吃东西");
son.eat();
son.surplus();
}
}
Father:
package no1.customer;
import no1.goods.Foods;
import java.util.Scanner;
public class Father
{
no1.goods.Foods[] food= {new no1.goods.Foods("红富士",0), new no1.goods.Foods("雪梨",0)};
public Foods[] getFood() {
return food;
}
public void setFood(Foods[] food) {
this.food = food;
}
public void eat()
{
int num1=food[0].getNum();
int num2=food[1].getNum();
while (true) {
System.out.println("现在手上有1.Apple红富士:" + food[0].getNum() + " 2.Pear雪梨:" + food[1].getNum());
System.out.println("吃什么呢?1.apple 2.pear 不吃3.full");
Scanner scan = new Scanner(System.in);
String name = scan.next();
try
{
if ("1".equals(name) || "apple".equalsIgnoreCase(name))
{
System.out.println("要吃多少苹果呢");
String num = scan.next();
int amount = Integer.parseInt(num);
if (amount > food[0].getNum())
{
System.out.println("没有这么多苹果");
continue;
}
food[0].setNum(num1-=amount);
}
if("2".equals(name)||"pear".equals(name))
{
System.out.println("要吃多少梨子呢");
String num=scan.next();
int amount=Integer.parseInt(num);
if (amount > food[1].getNum())
{
System.out.println("没有这么多梨子");
continue;
}
food[1].setNum(num2-=amount);
}
else if("3".equals(name)||"full".equals(name))
{
break;
}
}
catch(NumberFormatException e)
{
System.out.println("输入不匹配,请重新输入");
}
}
}
}
Son:
package no1.customer;
public class Son extends Father
{
public void surplus()
{
System.out.println("爸爸手上还剩余苹果:"+food[0].getNum()+" 梨子:"+food[1].getNum());
}
}