我用java写了一个顾客信息系统。代码如下:
class Customer
{
String num[] = new String[50] ;
String bir[] = new String[50] ;
int point[] = new int[50] ;
int count = 3 ;
public Customer(){
num[0] = "0001" ;
num[1] = "0002" ;
num[2] = "0003" ;
bir[0] = "10/08" ;
bir[1] = "12/29" ;
bir[2] = "04/13" ;
point[0] = 10000 ;
point[1] = 5000 ;
point[2] = 1500 ;
}
static Scanner s = new Scanner(System.in) ;
public void show(){
System.out.println("\n\n会员号\t\t生日(月/日)\t\t积分") ;
for (int i = 0;i < count ;i++ )
{
System.out.println(num[i]+"\t\t"+bir[i]+"\t\t\t"+point[i]) ;
}
System.out.println("\n\n按0返回上一级菜单...") ;
int r = s.nextInt() ;
if (r == 0)
{
new Menu().CustomerMenu() ;
}
}
public void insert(){
boolean b = true;
do
{
System.out.print("\n\n请输入会员号(<4位整数>):") ;
String num = s.next() ;
System.out.print("请输入会员生日(月/日<各用2位数表示>):") ;
String bir = s.next() ;
System.out.print("请输入积分:") ;
int point = s.nextInt() ;
if (num.length() == 4)
{
boolean d = true ;
for (int i = 0;i < count; i++)
{
if (this.num[i].equals(num))
{
d = false ;
}
}
if (d)
{
this.num[count] = num ;
this.bir[count] = bir ;
this.point[count] = point ;
b = false ;
System.out.print("\n\n已录入的会员信息是:\n"+num+"\t"+bir+"\t"+point+"\n");
count++ ;
this.show();
System.out.print("现在有"+count+"顾客");
boolean c = true ;
do
{
System.out.print("\n\n是否继续添加(y/n):");
String j = s.next() ;
if (j.equals("y"))
{
b = true ;
c = false ;
}else if (j.equals("n"))
{
b = false ;
c = false ;
}else{
System.out.println("输入有误,请重新输入!") ;
continue ;
}
}
while (c);
}
else{
System.out.print("\n\n顾客号"+num+"已存在或无效!\n录入信息失败!") ;
b = true ;
}
}
}
while (b);
System.out.print("\n\n按0返回上一级菜单...") ;
int r = s.nextInt() ;
if (r == 0)
{
new Menu().CustomerMenu();
}
}
还有:
import java.util.* ;
class Menu
{
public void MainMenu(){
System.out.println("*************************************************\n\n") ;
System.out.println(" 1.客 户 信 息 管 理\n\n") ;
System.out.println(" 2.购 物 结 算\n\n") ;
System.out.println(" 3.真 情 回 顾\n\n") ;
System.out.println(" 4.注 销\n\n") ;
System.out.println("*************************************************\n\n") ;
System.out.print("请选择,输入数字:") ;
Scanner s = new Scanner(System.in) ;
int n = s.nextInt() ;
switch (n)
{
case 1 : {System.out.println("\n\n") ;
this.CustomerMenu() ;
}break ;
}
}
public void CustomerMenu(){
System.out.println("*************************************************\n\n") ;
System.out.println(" 1.显 示 所 有 客 户 信 息\n\n") ;
System.out.println(" 2.添 加 客 户 信 息\n\n") ;
System.out.println(" 3.删 除 客 户 信 息\n\n") ;
System.out.println(" 4.修 改 客 户 信 息\n\n") ;
System.out.println(" 5.查 询 客 户 信 息\n\n") ;
System.out.println("*************************************************\n\n") ;
System.out.print("请选择,输入数字:(按 0 返回上一级菜单)") ;
Scanner s = new Scanner(System.in) ;
int n = s.nextInt() ;
switch (n)
{
case 1 : new Customer().show() ;
break ;
case 2 : new Customer().insert() ;
break ;
case 3 : customer.delete() ;
break ;
}
}
}
大体思路是在Menu中区调用Customer中的insert方法添加用户信息。添加完成后返回Menu中的customMenu方法(返回上一级菜单),现在有个问题是在customer中最后返回,我每次都要new一个新的Menu实例,这样insert的内容就全没了,除了写到一个类里我想不去其他方法了,请高人指教,感激不尽。
class Customer
{
String num[] = new String[50] ;
String bir[] = new String[50] ;
int point[] = new int[50] ;
int count = 3 ;
public Customer(){
num[0] = "0001" ;
num[1] = "0002" ;
num[2] = "0003" ;
bir[0] = "10/08" ;
bir[1] = "12/29" ;
bir[2] = "04/13" ;
point[0] = 10000 ;
point[1] = 5000 ;
point[2] = 1500 ;
}
static Scanner s = new Scanner(System.in) ;
public void show(){
System.out.println("\n\n会员号\t\t生日(月/日)\t\t积分") ;
for (int i = 0;i < count ;i++ )
{
System.out.println(num[i]+"\t\t"+bir[i]+"\t\t\t"+point[i]) ;
}
System.out.println("\n\n按0返回上一级菜单...") ;
int r = s.nextInt() ;
if (r == 0)
{
new Menu().CustomerMenu() ;
}
}
public void insert(){
boolean b = true;
do
{
System.out.print("\n\n请输入会员号(<4位整数>):") ;
String num = s.next() ;
System.out.print("请输入会员生日(月/日<各用2位数表示>):") ;
String bir = s.next() ;
System.out.print("请输入积分:") ;
int point = s.nextInt() ;
if (num.length() == 4)
{
boolean d = true ;
for (int i = 0;i < count; i++)
{
if (this.num[i].equals(num))
{
d = false ;
}
}
if (d)
{
this.num[count] = num ;
this.bir[count] = bir ;
this.point[count] = point ;
b = false ;
System.out.print("\n\n已录入的会员信息是:\n"+num+"\t"+bir+"\t"+point+"\n");
count++ ;
this.show();
System.out.print("现在有"+count+"顾客");
boolean c = true ;
do
{
System.out.print("\n\n是否继续添加(y/n):");
String j = s.next() ;
if (j.equals("y"))
{
b = true ;
c = false ;
}else if (j.equals("n"))
{
b = false ;
c = false ;
}else{
System.out.println("输入有误,请重新输入!") ;
continue ;
}
}
while (c);
}
else{
System.out.print("\n\n顾客号"+num+"已存在或无效!\n录入信息失败!") ;
b = true ;
}
}
}
while (b);
System.out.print("\n\n按0返回上一级菜单...") ;
int r = s.nextInt() ;
if (r == 0)
{
new Menu().CustomerMenu();
}
}
还有:
import java.util.* ;
class Menu
{
public void MainMenu(){
System.out.println("*************************************************\n\n") ;
System.out.println(" 1.客 户 信 息 管 理\n\n") ;
System.out.println(" 2.购 物 结 算\n\n") ;
System.out.println(" 3.真 情 回 顾\n\n") ;
System.out.println(" 4.注 销\n\n") ;
System.out.println("*************************************************\n\n") ;
System.out.print("请选择,输入数字:") ;
Scanner s = new Scanner(System.in) ;
int n = s.nextInt() ;
switch (n)
{
case 1 : {System.out.println("\n\n") ;
this.CustomerMenu() ;
}break ;
}
}
public void CustomerMenu(){
System.out.println("*************************************************\n\n") ;
System.out.println(" 1.显 示 所 有 客 户 信 息\n\n") ;
System.out.println(" 2.添 加 客 户 信 息\n\n") ;
System.out.println(" 3.删 除 客 户 信 息\n\n") ;
System.out.println(" 4.修 改 客 户 信 息\n\n") ;
System.out.println(" 5.查 询 客 户 信 息\n\n") ;
System.out.println("*************************************************\n\n") ;
System.out.print("请选择,输入数字:(按 0 返回上一级菜单)") ;
Scanner s = new Scanner(System.in) ;
int n = s.nextInt() ;
switch (n)
{
case 1 : new Customer().show() ;
break ;
case 2 : new Customer().insert() ;
break ;
case 3 : customer.delete() ;
break ;
}
}
}
大体思路是在Menu中区调用Customer中的insert方法添加用户信息。添加完成后返回Menu中的customMenu方法(返回上一级菜单),现在有个问题是在customer中最后返回,我每次都要new一个新的Menu实例,这样insert的内容就全没了,除了写到一个类里我想不去其他方法了,请高人指教,感激不尽。
在类中写一个get set 就可以了
我觉得你应该好好分析一下各个对象的职责和关系,你的程序中一共两个类 Menu和Customer。
我的个人看法是,Menu是菜单他只管显示菜单,Customer是顾客他只描述顾客,两个都没有别的职责,而且如果是三个顾客应该是三个Customer实例,而不是一个Customer中编号一个数组 积分一个数组等。
还应该至少有一个类来负责操作,比如显示菜单,增加客户等。可以分的再明确些,你先考虑下他们的关系
把
String num[] = new String[50] ;
String bir[] = new String[50] ;
int point[] = new int[50] ;
int count = 3 ;
前面都加Static也可以。
就不怕“每次都要new一个新的Menu实例”了