这个版本我根据所学的知识把商品作为一个类封装起来,外部无法直接访问商品属性而是通过get和set方法进行访问和修改。
package version1_1;
public class ShangPin{
private int[] num=new int[10000];
private String[] name=new String[10000];
private int[] jiage=new int[10000];
private 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];
}
int getJiaGe(int x){
return jiage[x];
}
int getKunCun(int x){
return kucun[x];
}
int getShangPinNum(){
return this.shangpin_num;
}
void setNum(int x){
this.num[x]=x;
}
void setName(int x,String y){
this.name[x]=y;
}
void setJiaGe(int x,int 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_1;
import java.util.Scanner;
public class CaoZuo {
static ShangPin sp=new ShangPin();
private String[] zhanghao_s=new String[10000]; //账号
private String[] mima_s=new String [10000]; //密码
private int nums_s=0;
void register(){
//System.out.println(zhanghao_s[0]); //测试
zhanghao_s[0]="admin";
mima_s[0]="123"; //管理员账号密码
while(true){
System.out.println("0-登录\t1-注册");
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])){
ct=1;
break;
}
} //密码验证
if(ct==1){
cout=3;
System.out.println("登录成功");
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==3) break;
}
}
void show(){
System.out.println("0-序号\t\t2-商品名\t\t3-价格\t\t库存");
//System.out.printf("%-18d%-20s%-18d%-18d\n",sp.num[0],sp.name[0],sp.jiage[0],sp.kucun[0]); //测试
for(int i = 0;i<sp.getShangpin_num();i++){
System.out.printf("%-8d\t%-16s\t%-8d\t%-8d\n",sp.getNum(i),sp.getName(i),sp.getJiaGe(i),sp.getKunCun(i));//格式化输出
}
}
int control(){
//while(true){
//show(); //��Ʒչʾ
System.out.println("\n0-添加商品\t1-删除商品\t2-编辑商品\t3-查询商品\t4-退出");
int _control=new Scanner(System.in).nextInt();
if(_control==0){
add(sp.getShangpin_num());
}else if(_control==1){
delete();
}else if(_control==2){
edit();
}else if(_control==3){
find();
}else if(_control==4){
exit();
//break;
}else{
System.out.println("错误输入");
}
//}
return _control;
}
static void add(int x){
sp.setNum(x);
System.out.print("新的商品名:");
String name=new Scanner(System.in).next();
sp.setName(x,name);
System.out.print("价格:");
int jiage=new Scanner(System.in).nextInt();
sp.setJiaGe(x,jiage);
System.out.print("库存:");
int kucun=new Scanner(System.in).nextInt();
sp.setKuCun(x,kucun);
sp.shangPinNumAdd();
}
static void delete(){
System.out.print("输入你要删除的商品的序号:");
int index_d=new Scanner(System.in).nextInt();
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();
}
static void edit(){
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();
sp.setName(index_e,name_t);
break;
case 2:
System.out.print("输入新的价格:");
int jiage_t=new Scanner(System.in).nextInt();
sp.setJiaGe(index_e,jiage_t);
break;
case 3:
System.out.print("输入新的库存:");
int kucun_t=new Scanner(System.in).nextInt();
sp.setKuCun(index_e,kucun_t);
break;
default:
break;
}
}
static void find(){
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("查无此商品!");
}
}
static void exit(){
System.out.println("再见");
}
}
最后写一个主类利用循环结构达到想要的目的。
package version1_1;
public class CommodityManagementSystem {
public static void main(String[] args){
CaoZuo cz=new CaoZuo();
cz.register(); //登录注册
while (true){
cz.show();
int control=cz.control();
if(control==4) break;
}
}
}
小结:当时写出来的时候非常沾沾自喜,现在看来非常难看,虽然能跑,该有的功能都要,也能勉强达到想要的效果;但这个功能的实现代码可以说是为达目的不择手段,一点都不优雅。当然,那时还只学了一个多月。用现在的知识去评判以前的代码真的就是耍流氓,谁不是小白过来的。