package cn.edu.neusoft.example.purchase; |
import cn.edu.neusoft.example.goods.Good; |
import cn.edu.neusoft.example.goods.bed; |
import cn.edu.neusoft.example.goods.sofa; |
import cn.edu.neusoft.example.goods.table; |
/** |
* 采购方法:提供完整的采购流程。 |
* 如果指定采购的商品类,会随机出商品进行模拟使用。 |
*/ |
public class Purchase { |
public Good[][] good; |
Purchase() { |
Suppliers[] supplier = new Suppliers[ 5 ]; |
// 创建二维数据g,方便下面使用 |
good = new Good[ 3 ][]; |
good[ 0 ] = new bed[ 5 ]; |
good[ 1 ] = new table[ 4 ]; |
good[ 2 ] = new sofa[ 4 ]; |
// 随机初始化各个类的数据 |
readS(supplier); |
readK(good[ 0 ], supplier); |
readC(good[ 1 ], supplier); |
readG(good[ 2 ], supplier); |
show( "欢迎使用采购系统\n请按提示操作" ); |
} |
Purchase(Good[][] good) { |
this .good = good; |
show( "欢迎使用采购系统\n请按提示操作" ); |
} |
public void select() { |
System.out.println( "请输入需要购买的商品:" ); |
for ( int i = 0 ; i < good.length; i++) |
System.out.println((i + 1 ) + "、" + good[i][ 0 ].name); |
try { |
int s = CInput.readInt() - 1 ; |
System.out.println( "最便宜的:" ); |
int r = select(compare(good[s])); |
if (r != 0 ) { |
System.out.println(); |
rank(good[s], r); |
select(good[s]); |
} |
} catch (Exception e) { |
System.out.println( "\n请输入正确的序号!!\n" ); |
select(); |
} |
} |
public void select(Good[] g) { |
System.out.println( "请输入需要购买的商品:" ); |
for ( int i = 0 ; i < g.length; i++) |
System.out.println((i + 1 ) + "、" + g[i].describe()); |
try { |
int s = CInput.readInt() - 1 ; |
System.out.println( "当前选择的是:" ); |
int r = select(g[s]); |
if (r != 0 ) { |
System.out.println(); |
rank(g, r); |
select(g); |
} |
} catch (Exception e) { |
System.out.println( "\n请输入正确的序号!!\n" ); |
select(g); |
} |
} |
public int select(Good g) { |
System.out.println(g.describe()); |
System.out.println( "1、购买" ); |
System.out.println( "2、查看详细信息" ); |
System.out.println( "3、查看全部商品(按价格升序)" ); |
System.out.println( "4、查看全部商品(按价格降序)" ); |
int s = CInput.readInt( "请输入您要进行的操作:" ); |
switch (s) { |
case 1 : |
buy(g); |
break ; |
case 2 : |
show(g.toString()); |
return select(g); |
case 3 : |
return 1 ; |
case 4 : |
return 2 ; |
default : |
System.out.println( "\n请输入正确的序号!\n" ); |
return select(g); |
} |
return 1 ; |
} |
public void buy(Good g) { |
int n = CInput.readInt( "请输入购买数量:" ); |
while (n <= 0 ) { |
System.out.println( "\n请输入大于0的整数!\n" ); |
n = CInput.readInt( "请输入购买数量:" ); |
} |
String s = "" ; |
s += g.describe() + "\n单价:" + g.price + "\t购买数量:" + n + "\n总计:" + g.price * n + "元!" ; |
show(s); |
System.out.println( "采购成功,是否继续采购(Y/N)?" ); |
if (CInput.readString().equalsIgnoreCase( "y" )) |
select(); |
else { |
show( "谢谢使用!再见~" ); |
System.exit( 0 ); |
} |
} |
// 价格比较。返回最便宜的商品 |
public static Good compare(Good[] a) { |
int n = 0 ; |
for ( int i = 0 ; i < a.length; i++) { |
if (a[i].price < a[n].price) |
n = i; |
} |
return a[n]; |
} |
// 价格排序。参数1代表从低到高,2代表从高到低 |
public void rank(Good[] a, int order) { |
Good b; |
if (order == 1 ) { |
for ( int i = 0 ; i < a.length; i++) { |
for ( int o = i; o < a.length; o++) { |
if (a[i].price > a[o].price) { |
b = a[i]; |
a[i] = a[o]; |
a[o] = b; |
} |
} |
} |
} else if (order == 2 ) { |
for ( int i = 0 ; i < a.length; i++) { |
for ( int o = i; o < a.length; o++) { |
if (a[i].price < a[o].price) { |
b = a[i]; |
a[i] = a[o]; |
a[o] = b; |
} |
} |
} |
} |
} |
// 随机初始化供应商数据 |
static void readS(Suppliers[] Supplier) { |
Supplier[ 0 ] = new Suppliers( "城阳区建材" , "大连" , "84830000" ); |
Supplier[ 1 ] = new Suppliers( "李沧区" , "美国" , "84830001" ); |
Supplier[ 2 ] = new Suppliers( "安装集团" , "北京" , "84830002" ); |
Supplier[ 3 ] = new Suppliers( "中项建材集团" , "北京" , "84830003" ); |
Supplier[ 4 ] = new Suppliers( "洁石实业集团" , "台北" , "84830004" ); |
} |
// 随机初始化键盘数据 |
static void readK(Good[] Kbd, Suppliers[] suppliers) { |
|
String[] material = { "红木" , "硬木" , "弹簧床" , "棉花" , "羽毛" }; |
for ( int i = 0 ; i < Kbd.length; i++) { |
double price = dRandom( 100 ) + 80 ; |
int number = iRandom( 1000 ); |
|
String type = material[iRandom( 5 )]; |
Suppliers supplier = suppliers[iRandom( 5 )]; |
Kbd[i] = new bed( null , null , price, number, null ) ; |
} |
} |
// 随机初始化电脑数据 |
static void readC(Good[] Com, Suppliers[] suppliers) { |
|
|
|
for ( int i = 0 ; i < Com.length; i++) { |
|
|
double price = dRandom( 5000 ) + 5000 ; |
int number = iRandom( 1000 ); |
|
|
Suppliers supplier = suppliers[iRandom( 5 )]; |
Com[i] = new table(i, i, null , null , supplier ); |
} |
} |
// 随机初始化显卡数据 |
static void readG(Good[] Grp, Suppliers[] suppliers) { |
for ( int i = 0 ; i < Grp.length; i++) { |
|
double price = dRandom( 500 ) + 499 ; |
int number = iRandom( 1000 ); |
Suppliers supplier = suppliers[iRandom( 5 )]; |
Grp[i] = new sofa(i, i, i, supplier ); |
} |
} |
// 生成double类型的随机数,保留两位小数 |
static double dRandom( int a) { |
double b = Math.random() * a; |
b = (( int ) (b * 10 )) / 10.0 ; |
return b; |
} |
// 生成int类型的随机数 |
static int iRandom( int a) { |
return ( int ) (Math.random() * a); |
} |
// 显示带星号分割的文字 |
void show(String s) { |
int l = s.length(); |
if (l > 30 ) |
l = 30 ; |
s = "\n" + s + "\n" ; |
for ( int i = 0 ; i < l * 2 - 1 ; i++) { |
s = "*" + s + "*" ; |
} |
System.out.println(s); |
} |
} |