我用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的内容就全没了,除了写到一个类里我想不去其他方法了,请高人指教,感激不尽。

解决方案 »

  1.   

    太长太乱
    在类中写一个get set 就可以了
      

  2.   

    看了你的程序真的感觉很迷茫啊,你是不是学生在学编程啊。
    我觉得你应该好好分析一下各个对象的职责和关系,你的程序中一共两个类 Menu和Customer。
    我的个人看法是,Menu是菜单他只管显示菜单,Customer是顾客他只描述顾客,两个都没有别的职责,而且如果是三个顾客应该是三个Customer实例,而不是一个Customer中编号一个数组 积分一个数组等。
    还应该至少有一个类来负责操作,比如显示菜单,增加客户等。可以分的再明确些,你先考虑下他们的关系
      

  3.   

    很赞同“三个顾客应该是三个Customer实例,而不是一个Customer中编号一个数组 积分一个数组等”
      

  4.   

    “每次都要new一个新的Menu实例”,你的数据都保存在实例中,用单例模式试试
      

  5.   

    你逻辑的设计确实不怎么样,

    String num[] = new String[50] ; 
    String bir[] = new String[50] ; 
    int point[] = new int[50] ; 
    int count = 3 ;
    前面都加Static也可以。
    就不怕“每次都要new一个新的Menu实例”了
      

  6.   

    你写的这是什么啊,没有用户界面让客户怎么用,只能用shell运行。。正常开发软件部会出现逆的问题,你还是用swing重写个吧