--------------------------数据类--------------------------------------------------
**
 * 此类定义了student类中用到的数据。
 *//**
 * @author kaikai
 * @version 1.0 2--8-06-13
 *
 */
public class Information {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "" + name + "  " + age + "  " + sex;
}
}---------------------------------测试类----------------------------------
/**
 * 这个类实现了对学生信息的管理的入口,此系统所有信息将在内存创建,关闭即丢失。首先请您添加信息。
 * 2--8-06-13可把我给累坏了。实现了三个方法了,还有两个,明天做。
 *//**
 * @author kaikai
 * @version 1.0 2--8-06-13
 * @since JDK1.6
 *
 */
public class StudentManage {
public static void main(String[] args) {
new InfoManage(); 
}
}
程序有毛病啊。查找,修改都不是很好。里面有好几条。但是说找不到。。希望给看看。。还要好多bug没修正,主要是方法还没实现,bug没心情啊。
希望给调试下。看看哪里不完善。谢谢了。。处理类另发啊。说太长了。

解决方案 »

  1.   

    附上处理类
    ------------------------处理类-----------------------------------------------
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.InputMismatchException;
    import java.util.List;
    import java.util.Scanner;/**
     * 实现对信息的存储,添加,修改,删除等功能。输入三次无效,将自动退出
     */
    /**
     * 
     * @author kaikai
     * 
     */
    public class InfoManage {
    List<Information> list = new ArrayList<Information>();
    // Information infor = new Information();
    static int err = 0;
    private FileInputStream fis;
    private FileOutputStream fos;
    private BufferedInputStream br;
    /**
     * 静态加载信息
     */
    static {
    System.out
    .println("------------------------------------------学生信息管理系统--------------------------------------------------------");
    System.out
    .println("----------------------------------------------------------注:此系统所有信息将在内存创建,关闭即丢失。首先请您添加信息。---");
    System.out
    .println("---------------------------------------------------------------------------------------------------------------");
    } public InfoManage() {
    test();

    } /**
     * 主菜单
     */
    private void test() {
    if (err >= 3) {
    System.out.println("您输入的错误超过三次,-bye-bye-");
    System.exit(0);
    } else {
    try {
    System.out
    .println(" 开始选择: 全部信息(0)| 添加请按(1) | 删除请按(2) | 修改请按(3) | 查找请按(4) | 关闭请按(5)");
    System.out
    .println("---------------------------------------------------------------------------------------------------------------");
    System.out
    .println("                                                                               (*^__^*) 嘻嘻……kaikai服务**");
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    if (num == 0) {
    print();
    } else if (num == 1) {
    System.out.println("您选择的是添加用户信息功能");
    add();
    } else if (num == 2) {
    System.out
    .println("您选择的是删除用户信息功能,一旦删除将永远消失,确定删除请按(1)退出请按(0)");
    if (scanner.nextInt() == 1) {
    delete();
    } else {
    test();
    }
    } else if (num == 3) {
    System.out.println("您选择的是修改功能!");
    update();
    } else if (num == 4) {
    System.out.println("您选择的是查找功能!");
    search();
    } else if (num == 5) {
    System.out.println("您选择的是关闭功能!");
    stop();
    } else {
    System.out.println("输入有误,-bye-bye-");
    err++;
    System.exit(0);
    }
    } catch (InputMismatchException e) {
    System.out.println(" warning: 请输入数字,谢谢合作!\n ");
    err++;
    test();
    }
    }
    } /**
     * 打印功能,打印所有人的信息
     */
    private void print() { if (list.size() > 0) {
    System.out.println("学生信息详细表:");
    System.out.println("现在共有" + list.size() + "个学生的信息"); for (int i = 0; i < list.size(); i++) {
    Information b = (Information) list.get(i);
    System.out.println(b.toString());
    }
    } else {
    System.out.println("当前没有任何信息!");
    }
    System.out.println("----------继续管理(Y/N)-----------");
    Scanner scanner = new Scanner(System.in);
    if (scanner.next().toUpperCase().equals("Y")) {
    test(); } else {
    System.out.println("谢谢使用,-bye-bye-");
    System.exit(0);
    }
    } /**
     * 添加功能
     */
    private void add() {
    Information infor = new Information();
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入姓名:");
    infor.setName(scanner.next());
    System.out.println("请输入年龄(0--120):");
    infor.setAge(scanner.nextInt());
    System.out.println("请输入性别(男/女):");
    infor.setSex(scanner.next());
    System.out.println("您输入的学生信息是:" + infor.toString());
    System.out.println("----确认添加请按(1) |  重新输入请按(2)----"); if (scanner.nextInt() == 1) {
    list.add(infor);
    } else if (scanner.nextInt() == 2) {
    test();
    }
    System.out.println("添加成功!");
    System.out.println("----继续管理(Y/N)----"); if (scanner.next().toUpperCase().equals("Y")) {
    test(); } else {
    System.out.println("谢谢使用,-bye-bye-");
    System.exit(0);
    }
    } /**
     * 删除功能
     */
    private void delete() {
    if (list.size() < 1) {
    System.out.println("------对不起,还没有信息!请添加-----");
    System.out.println("--------------------------------");
    test();
    } else {
    System.out.println("----当前所有信息如下:");
    System.out.println("|姓名 | 年龄 |  性别|");
    for (Information in : list) {
    System.out.println(in + " ");
    }
    System.out.println("您现在所在位置:删除板块!");
    System.out.println("请输入您要删除人的名字");
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next(); for (int i = 0; i < list.size(); i++) {
    Information b = (Information) list.get(i);
    if (b.getName().equals(str)) {
    System.out.println("----找到此人,确认删除(Y/N)----");
    if (scanner.next().equals("y")) {
    list.remove(i);
    System.out.println("---删除成功!---");
    test();
    } else {
    test();
    }
    } else {
    System.out.println("没有此人,");
    }
    }
    /*
     * for (Information in : list) { System.out.println(in + " ");
     * System.out.println(" 没有数据了。"); }
     */
    }
    } private void update() {
    if (list.size() < 1) {
    System.out.println("---warning: -对不起,还没有信息!请添加-----");
    System.out.println("--------------------------------");
    test();
    } else {
    System.out.println("请输入要修改的名字!");
    Scanner scanner = new Scanner(System.in); for (int i = 0; i < list.size(); i++) {
    Information b = list.get(i);
    if (b.getName().equals(scanner.next())) {
    System.out.println("找到你要修改的信息,确定修改么(Y/N)");
    if (scanner.next().toUpperCase().equals("Y")) {
    // 昨晚上写到这里了,,更新方法。
    System.out.println("请输入您修改后的名字:");
    b.setName(scanner.next());
    System.out.println("请输入您修改后的年龄(0--120):");
    b.setAge(scanner.nextInt());
    System.out.println("请输入性别(男/女):");
    b.setSex(scanner.next());
    System.out.println("确认修改请按(1) |  重新修改请按(2)");
    if (scanner.nextInt() == 1) {
    list.add(b);
    } else if (scanner.nextInt() == 2) {
    test();
    }
    System.out.println("修改成功!");
    System.out.println("----继续管理(Y/N)----");
    if (scanner.next().toUpperCase().equals("Y")) {
    test(); } else {
    System.out.println("谢谢使用,-bye-bye-");
    System.exit(0);
    }
    } else {
    test();
    }
    }
    }
    }
    } private void search() {
    if (list.size() < 1) {
    System.out.println("------对不起,还没有信息!请添加-----");
    System.out.println("--------------------------------");
    test();
    } else {
    System.out.println("请输入您要查询的姓名:");
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next(); for (int i = 0; i < list.size(); i++) {
    Information b = (Information) list.get(i);
    if (b.getName().equals(str)) {
    System.out.println("您查找的人的信息如下:" + b.toString());
    System.out.println("----继续管理(Y/N)----");
    if (scanner.next().toUpperCase().equals("Y")) {
    test(); } else {
    System.out.println("谢谢使用,-bye-bye-");
    System.exit(0);
    }
    } else {
    System.out.println("没有此人,继续操作(Y/N)");
    if (scanner.next().toUpperCase().equals("Y")) {
    test();
    } else {
    stop();
    }
    }
    }
    }
    } private void stop() { System.out.println("----确认离开(Y/N)!----");
    Scanner scanner = new Scanner(System.in); if (scanner.next().toUpperCase().equals("Y")) {
    System.out.println("谢谢使用,-bye-bye-");
    System.exit(0);
    } else {
    test();
    }
    }}
      

  2.   

    毕业啥设计啊。。刚学完类,然后自己看了list那,这不就做个么,,给调试下。给看看哪错了。取得list里的内容出错了。
      

  3.   

    对题不对人好不,,我怎么了呀。伤心,现在从早上7点到晚上9点半都是学java好不。我刚学完了类,然后自己看了list那里,这不就写了东西而已,遇到问题你们怎么这样对我。难受。
      

  4.   

    我也没长成坏蛋样啊-_-...不信,可以看我的博客。都是学习的好不好啊。zhangkaiwangfei.cn....只是这头像用了好久了。你可以问老紫竹。请牛人给调试下吧。俺还初学呢。
      

  5.   

    我靠
    用main写的学生信息管理系统
    (#@……%(@……%(@……#(%……@#
    LZ很有钻研精神啊,勇气可嘉
    可惜代码发的太乱了实在,我懒得看
    难道你不知道可以插入java代码的么?
    回复的文本框上面一排第七个
    再靠下
      

  6.   

    调用接口?..我没定义接口,就定义了几个方法,然后在构造函数里调用了。现在问题是从list拿数据出现错误。。给看看。谢了。
      

  7.   

    什么叫插入java代码,不明白,给我说说呗。。我才学完类。谢谢了。
      

  8.   

    没错误啊。就是修改,查找功能实现的不好,从list内取值不准确,,给看看吧。。
      

  9.   

    难道我不用GUI写是错误的么,难道我练习类是错误的么,难道。。明天来看。还求有人给我看看。。
      

  10.   

    你的流程一团糟,我替你梳理了一下http://www.java2000.net/viewthread.jsp?tid=6226
      

  11.   

    看了老竹子给你整理的代码,发现问题了..
    1.修改操作:在list.add之前要先list.remove(i),不是修改是又添加了一条...
    2.查询操作:lz应该明白为什么list.size()>1时,就会出现查询不到此人...
      原因:比如list中有两条记录,list中0位置:haha;1位置:haha1;当你调用查找方法时,每次循环都是从0开始找,然后list.get(i)比较,这样我找1位置的haha1,肯定找不到...
      

  12.   

    查找方法这样写吧:
      private void search() {   
        if (list.size() < 1) {   
          System.out.println("------对不起,还没有信息!请添加-----");   
          System.out.println("--------------------------------");   
          test();   
        } else {   
          System.out.println("请输入您要查询的姓名:");  
          Scanner scanner = new Scanner(System.in);   
          String str = scanner.next();  
          int i = 0;
          for (; i < list.size(); i++) {   
            Information b = (Information) list.get(i);   
            if (b.getName().equals(str)) {   
              System.out.println("您查找的人的信息如下:" + b.toString());   
              return;   
            } else {   
             continue;
            } 
          }
          if(i == list.size())
           System.out.println("查无此人!");
        }   
      } 
      

  13.   

    怎么感觉着是把C或是C++里的东东直接给用JAVA表示出来了。
    我在C++的代码中经常见到类似的,我好像是还做过。
    我现在正在做图书管理系统(老师让做的),现在用GUI,连接数据库,
    等JSP学完了。还要用JSP重来一遍。
    楼主,你的钻研的精神可是比我强多了。
    不好意思,你的代码有点多,我没看。
      

  14.   

    不好意思,忘记修改方法了...给你改了下:
      private void update() {   
        if (list.size() < 1) {   
          System.out.println("---warning: -对不起,还没有信息!请添加-----");   
          System.out.println("--------------------------------");   
          test();   
        } else {   
          System.out.println("请输入要修改的名字!");   
          Scanner scanner = new Scanner(System.in); 
          String str = scanner.next();
          int i = 0;
          for (; i < list.size(); i++) {
           //System.out.println(i);
            Information b = (Information)list.get(i);
            if (b.getName().equals(str)){
             System.out.println("找到你要修改的信息,确定修改么(Y/N)");
              if (scanner.next().toUpperCase().equals("Y")) {   
                // 昨晚上写到这里了,,更新方法。   
                System.out.println("请输入您修改后的名字:");   
                b.setName(scanner.next());   
                System.out.println("请输入您修改后的年龄(0--120):");   
                b.setAge(scanner.nextInt());   
                System.out.println("请输入性别(男/女):");   
                b.setSex(scanner.next());   
                System.out.println("确认修改请按(1) |  重新修改请按(2)");   
                if (scanner.nextInt() == 1) {   
                    list.remove(i);
                 list.add(i,b);   
                } else if (scanner.nextInt() == 2) {   
                  test();   
                }   
                System.out.println("修改成功!");   
                return;   
              }
              else    
                return;     
            } 
            else 
              continue; 
          } 
          if(i == list.size())
           System.out.println("查无此人,让我怎么改!");
        }   
      }
      

  15.   

    重构,重构!
    这哪里是Java,简直就是C版本的Java
    用的也是Java的工具包,而不是OO
      

  16.   

    OOP面向对象。。
    可惜,我也不太了解,不过我个人认为写一个学生管理系统,学生一个类,包含基本数据
    然后下面是一堆方法,用来对数据进行管理
    如果可以就进行策略设计
    添加你想要的,让程序更有弹性而这个既然是系统,那么还应有个系统类
    这样在系统类里定义一些GUI或者Console的show方法,之后就可以进入main了
      

  17.   

    如果有必要就使用person作为基类,用student来继承之,这样更可以增加弹性
    并且将人的一些行为独立出来,比如study作为一个行为独立出来,用接口的形式进行独立,然后建立一个studentStudy类实现这个接口
    将学习这个动作委托给它
      

  18.   

    请问LZ是不是在记事本中写java程序,然后将其保存为java文件,接着在控制台下使用java命令编译并运行该java程序?
      

  19.   

    从list内取值不准确,,给看看吧。。 
     
    这个没有错。只是不能多次调试而已,只能调试一遍,因为你有没有写可以让循环,所以你多次调试就会出错。明白?