java 一个简单的学生信息管理系统

用java来写一个管理系统


我第一次做信息管理系统是用C语言做的,当时的第一感觉就是指针真的很好使,但是java中没有指针,这让我不能指哪儿打哪儿,而且两种语言的核心思想也是不同的—一个面向过程,一个面向对象。这使得我在思想上要有转变,这个管理系统我完成的有点紧迫,但是,做的再简单,最基础的增删改查功能一定要实现 。在这个过程中我还是遇到了很多的问题。


下面是相关的一些代码:

package contralSystem;
import java.util.*;

//需求:制作一个简单的学生信息管理系统,通过键盘选择操作进行添加学生
//(学号,姓名,性别,年龄,成绩)的信息,这些信息通过数组存储,同时
//还可以进行查询某个或全体学生信息,修改学生信息,删除学生信息的操作。
//(要求有一定的优化,例如对用户输入信息是否符合要求的处理)。
public class Main {
    static Stu[] stu=new Stu[100];
    static  int number=0;
    static Scanner scanner=new Scanner(System.in);


    public static void main(String args[]){
    int choice;

    System.out.println("这是一个学生信息管理系统,最大容量为100,欢迎您对本系统的使用");
    while(true){
    System.out.println("1.学生信息添加");
    System.out.println("2.学生信息查看");
    System.out.println("3.学生信息修改");
    System.out.println("4.学生信息删除");
    System.out.println("5.学生信息按成绩从低到高排序");  
    System.out.println("6.退出本操作系统");
    System.out.println("请输入你要进行的操作");
    choice=scanner.nextInt();
    if(choice==6)break;
    switch(choice){
    case 1:     add(); break;//添加学生信息
    case 2:     show();break;//查询学生信息
    case 3:     change();break;//修改学生信息
    case 4:     delete();break;//删除学生信息
    case 5:     paixu();break;//对学生信息排序
    }       
}
    System.out.println("感谢您对本系统的使用,欢迎下次继续使用");
}

static void add(){//添加学生信息
    while(true){
    System.out.println("点击任意键继续添加学生信息,停止添加输入0");
    if(scanner.nextInt()==0)break;
    System.out.println("请输入该学生的学号,姓名,性别,年龄,成绩");
    stu[number]=new Stu();
    stu[number].setStuNum(scanner.next());
    stu[number].setName(scanner.next());
    stu[number].setGender(scanner.next());
    stu[number].setAge(scanner.nextInt());
    stu[number].setScore(scanner.nextInt());
    number++;
    System.out.println("添加成功");
    }}


    static void show(){//展示学生信息
        System.out.println("这些学生的学号,姓名,性别,年龄,成绩分别为");
        for(int i=0;i"\t"+stu[i].getName()+"\t"+"\t"+stu[i].getGender()+"\t"+stu[i].getAge()+"\t"+stu[i].getScore());
    System.out.println();
}

    static void paixu(){//对学生信息进行排序
        int j;
        Stu temp=new Stu();
        for(int i=0;ifor(j=i+1;jif(stu[i].getScore()>stu[j].getScore())
            {temp=stu[i];stu[i]=stu[j];stu[j]=temp;}
        }
        System.out.println("排序完成,选择”学生信息查看“进行查看");
    }


static void change(){//改变学生信息
    System.out.println("请输入要修改信息的学生学号");
    String stunumber=scanner.next();
    for(int i=0;iif(stunumber.equals(stu[i].getStuNum()))
        {System.out.println("请输入要修改的学生的信息");
         stu[i].setStuNum(scanner.next());
            stu[i].setName(scanner.next());
            stu[i].setGender(scanner.next());
            stu[i].setAge(scanner.nextInt());
            stu[i].setScore(scanner.nextInt());
            break;
        }
        if(number==i)System.out.println("对不起查无此人");
   }

}


static void delete(){//删除学生信息
    System.out.println("请输入要删除信息的学生学号");
    String stunumber=scanner.next();
    int i;
        for( i=0;iif(stunumber.equals(stu[i].getStuNum()))break;
        if(number==i)System.out.println("对不起查无此人");
    for(;i1;i++)
        stu[i]=stu[i+1];
         number--;
   System.out.println("删除完成");
}

}

学生类的定义我就不在上面写了。我遇到的主要问题有:
1.首先就是无法通过传数组地址的方式来对数组进行操作。因为java中没有指针,我想的解决方法就是将数组静态定义在带有main函数的类中。这样一来就可以在一开始就在方法区中给数组分配内存。
2.函数调用是出现问题。无法正常调用函数。原因是没有实例化对象,函数就没有创建入口,无法进行调用。解决办法是在带有main函数的类中定义静态函数就可以实现在C语言中相似的操作,在程序一开始就创建了这些功能函数的入口。
3.数组声明完之后还要进行对数组中每个对象分别实例化,否则该对象无法使用。

你可能感兴趣的:(java,java)