用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<number;i++)
System.out.println(stu[i].getStuNum()+"\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;i<number;i++)
{
for(j=i+1;j<number;j++)
if(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;i<number;i++)
{
if(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;i<number;i++)
if(stunumber.equals(stu[i].getStuNum()))break;
if(number==i)System.out.println("对不起查无此人");
for(;i<number-1;i++)
stu[i]=stu[i+1];
number--;
System.out.println("删除完成");
}
}
学生类的定义我就不在上面写了。我遇到的主要问题有:
1.首先就是无法通过传数组地址的方式来对数组进行操作。因为java中没有指针,我想的解决方法就是将数组静态定义在带有main函数的类中。这样一来就可以在一开始就在方法区中给数组分配内存。
2.函数调用是出现问题。无法正常调用函数。原因是没有实例化对象,函数就没有创建入口,无法进行调用。解决办法是在带有main函数的类中定义静态函数就可以实现在C语言中相似的操作,在程序一开始就创建了这些功能函数的入口。
3.数组声明完之后还要进行对数组中每个对象分别实例化,否则该对象无法使用。