在这个版本中我把管理员方法,购买者方法和用户方法提取出来,并用不同的角色去操作,比如管理员只能调用管理员方法。
package version1_2;
public class ShangPin{
private final int[] num=new int[10000];
private final String[] name=new String[10000];
private final double[] jiage=new double[10000];
private final int[] kucun=new int[10000];
private int shangpin_num=0; //商品总数
int getShangPin_num(){
return shangpin_num;
}
int getNum(int x){
return num[x];
}
String getName(int x){
return name[x];
}
double getJiaGe(int x){
return jiage[x];
}
int getKunCun(int x){
return kucun[x];
}
void setNum(int x){
this.num[x]=x;
}
void setName(int x,String y){
this.name[x]=y;
}
void setJiaGe(int x,double y){
this.jiage[x]=y;
}
void setKuCun(int x,int y){
this.kucun[x]=y;
}
void shangPinNumAdd(){
this.shangpin_num++;
}
void shangPinNumReduce(){
this.shangpin_num--;
}
}
package version1_2;
import java.util.Scanner;
public class BasicFunction {
private final String[] zhanghao_s=new String[100]; //验证用账号
private final String[] mima_s=new String [100]; //验证用密码
private int nums_s=0; //账号数
//ShangPin sp=new ShangPin();
void show(ShangPin sp){
System.out.println("序号\t\t商品名称\t\t价格\t\t库存");
//System.out.printf("%-18d%-20s%-18d%-18d\n",sp.num[0],sp.name[0],sp.jiage[0],sp.kucun[0]); //测试
//System.out.println(sp.getShangPin_num());
for(int i = 0;i<sp.getShangPin_num();i++){
System.out.printf("%-8d\t%-16s\t%-8.2f\t%-8d\n",sp.getNum(i),sp.getName(i),sp.getJiaGe(i),sp.getKunCun(i));
}
}
int register(){
zhanghao_s[0]="admin";
mima_s[0]="123"; //管理员账号密码
int yesno=0;
while(true){
//System.out.println(zhanghao_s[0]); //测试
System.out.println("0-登录\t1-注册\t2-退出");
int cout=new Scanner(System.in).nextInt();
if(cout==0){
//while(true){
System.out.print("用户名:");
String zhanghao=new Scanner(System.in).next();
System.out.print("密码:");
String mima=new Scanner(System.in).next(); //账号密码输入
int ct=0; //是否验证成功
for(int i=0;i<=this.nums_s;i++){
if(zhanghao.equals(zhanghao_s[i]) && mima.equals(mima_s[i])){
if(i==0) yesno=1;
ct=1;
break;
}
} //密码验证
if(ct==1){
cout=3;
//break;
}else{
System.out.println("账号密码错误,请重试!");
} //验证结果和接下来的操作
//}
}
if(cout==1){
this.nums_s++;
System.out.print("输入新用户名:");
zhanghao_s[nums_s]=new Scanner(System.in).next();
System.out.print("输入新密码:");
mima_s[nums_s]=new Scanner(System.in).next();
} //注册
if(cout==2){
yesno=cout;
break;
}
if(cout==3) break;
}
return yesno;//是否为管理员
}
void buy(){
}
void exit(){
System.out.println("感谢你的使用!");
}
}
package version1_2;
import java.util.Scanner;
public class AdminFunction extends BasicFunction {
//ShangPin sp=new ShangPin();
void add(ShangPin sp,String name,double jiage,int kucun){
int x= sp.getShangPin_num();
//System.out.println("上架前商品数"+x);
sp.setNum(x);
sp.setName(x,name);
sp.setJiaGe(x,jiage);
sp.setKuCun(x,kucun);
sp.shangPinNumAdd();
//System.out.println(sp.getShangPin_num());
}
void delete(ShangPin sp,int index_d){
for(int i=index_d;i<sp.getShangPin_num();i++){
sp.setName(i,sp.getName(i+1));
sp.setJiaGe(i,sp.getJiaGe(i+1));
sp.setKuCun(i,sp.getKunCun(i+1));
}
sp.shangPinNumReduce();
}
void edit(ShangPin sp,int index_e,String name_t){
sp.setName(index_e,name_t);
}
void edit(ShangPin sp,int index_e,double jiage_t){
sp.setJiaGe(index_e,jiage_t);
}
void edit(ShangPin sp,int index_e,int kucun_t){
sp.setKuCun(index_e,kucun_t);
}
void find(ShangPin sp){ //目前只添加了根据商品名称查找,后续可能会添加根据价格,库存筛选的功能
System.out.print("输入你要查找的商品名称:");
String name_f=new Scanner(System.in).next();
int ft=0;
for(int i=0;i<sp.getShangPin_num();i++){
if(name_f.equals(sp.getName(i))){
ft=1;
System.out.println("序号:"+sp.getNum(i));
System.out.println("商品名称:"+sp.getName(i));
System.out.println("价格:"+sp.getJiaGe(i));
System.out.println("库存:"+sp.getKunCun(i));
break;
}
}
if(ft==0){
System.out.println("查无此商品!");
}
}
void buy(ShangPin sp){
}
}
其实这个购买者方法还没有写完,当时我写的时候脑子里就有了更好的想法,所以就搁置了
package version1_2;
import java.util.Scanner;
public class BuyerFunction extends BasicFunction{
void find(ShangPin sp){ //目前只添加了根据商品名称查找,后续可能会添加根据价格,库存筛选的功能
System.out.print("输入你要查找的商品名称:");
String name_f=new Scanner(System.in).next();
int ft=0;
for(int i=0;i<sp.getShangPin_num();i++){
if(name_f.equals(sp.getName(i))){
ft=1;
System.out.println("序号:"+sp.getNum(i));
System.out.println("商品名称:"+sp.getName(i));
System.out.println("价格:"+sp.getJiaGe(i));
System.out.println("库存:"+sp.getKunCun(i));
break;
}
}
if(ft==0){
System.out.println("查无此商品!");
}
}
void exit(){
System.out.println("欢迎下次光临");
}
}
package version1_2;
import java.util.Scanner;
//import static demo.Main.sp;
public class Admin {
AdminFunction adminFunction =new AdminFunction();
ShangPin sp;
public Admin(ShangPin sp) {
this.sp=sp;
}
//ShangPin sp=new ShangPin();
void control(){
while(true) {
adminFunction.show(sp); //商品展示
System.out.println("\n0-上架\t1-下架\t2-编辑\t3-查询\t4-退出");
int _control = new Scanner(System.in).nextInt();
//if (_control == 0) {
switch(_control) {
case 0:
System.out.print("商品名:");
String name = new Scanner(System.in).next();
System.out.print("价格:");
double jiage = new Scanner(System.in).nextDouble();
System.out.print("库存:");
int kucun = new Scanner(System.in).nextInt();
adminFunction.add(sp, name, jiage, kucun);
break;
//}
//else if(_control == 1) {
case 1:
System.out.print("选择你要删除的商品的序号:");
int index_d = new Scanner(System.in).nextInt();
adminFunction.delete(sp, index_d);
break;
//}
//else if(_control == 2) {
case 2:
System.out.print("选择你要编辑的商品的序号:");
int index_e = new Scanner(System.in).nextInt();
System.out.println("选择你要编辑的内容:1-商品名称 2-价格 3-库存");
int cont = new Scanner(System.in).nextInt();
switch (cont) {
case 1:
System.out.print("输入新的商品名称:");
String name_t = new Scanner(System.in).next();
adminFunction.edit(sp, index_e, name_t);
break;
case 2:
System.out.print("输入新的商品价格:");
double jiage_t = new Scanner(System.in).nextDouble();
adminFunction.edit(sp, index_e, jiage_t);
case 3:
System.out.print("输入新的商品库存:");
int kucun_t = new Scanner(System.in).nextInt();
adminFunction.edit(sp, index_e, kucun_t);
}
break;
//}
//else if (_control == 3) {
case 3:
adminFunction.find(sp);
break;
//}
//else if (_control == 4) {
case 4:
adminFunction.exit();
break;
//}
//else {
default:
System.out.println("请输入正确的命令!");
break;
//}
}
if(_control==4) break;
}
}
}
package version1_2;
import java.util.Scanner;
//import static demo.Main.sp;
public class Buyer {
ShangPin sp;
public Buyer(ShangPin sp) {
this.sp=sp;
}
void control(){
while(true){
new BuyerFunction().show(sp);
System.out.println("\n1-购买\t2-查询\t3-退出");
int cont = new Scanner(System.in).nextInt();
switch (cont) {
case 1:
break;
case 2:
new BuyerFunction().find(sp);
break;
case 3:
new BuyerFunction().exit();
break;
}
if(cont==3) break;
}
}
}
package version1_2;
public class Main {
public static ShangPin sp=new ShangPin();
public static void main(String[] args){
while(true){
int cont = new AdminFunction().register();
//int cont=1;
if (cont == 0) {
System.out.println("尊敬的顾客,欢迎您的光临");
new Buyer(sp).control();
} else if (cont == 1) {
System.out.println("您好,勤劳的管理员");
new Admin(sp).control();
} else if (cont == 2) {
System.out.println("再见");
break;
}
}
}
}
到这里就结束了,这次我已经尽量的去调整结构,让这个程序结构更加美观,但当时并没有讲接口、多态等,我就无从下手。