一个简单的学生管理系统。能输入学生的信息,能查找学生的信息和更改的学生的信息。
先写一个学生类
package com.icss.Student;
public class Student {
private String name;//学生姓名
private int id; //学生ID
public Student(String name, int id) {
super();
this.name = name;
this.id = id;
}
public Student() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void showInfo()//显示学生信息
{
System.out.println("***************************");
System.out.println("学生名:"+name+"\t学生ID"+id);
System.out.println("***************************");
}
}
再写出一个方法类。用来调用,修改学生信息。
package com.icss.Student;
import java.util.*;//导入Scanner类的包
public class Manage {
Scanner input=new Scanner(System.in);
int number=input.nextInt();//输入学生人数
Student []class1=new Student[number];//建立一个学生类的数组,保存每个学生的信息
public Manage() {
super();
for(int i=0;i<number;i++)
{
class1[i]=new Student();//将数组中的每个成员实例化
System.out.println("请输入学生姓名");//输入学生信息和ID
String name=input.next();
class1[i].setName(name);
System.out.println("请输入学生ID");
int id=input.nextInt();
class1[i].setId(id);
}
}
public void showAll()//显示所有学生信息的方法
{
if(class1!=null)
{
for(Student s:class1)
{
s.showInfo();
}
}
}
public void find()//查找学生信息的方法
{
System.out.println("请输入查找学生的名字");
String name=input.next();
int findFlag=0;//设置一个标志量,如果找到了标志量就为1.未找到仍为0.下同
for(int i=0;i<number;i++)
{
if(name.equals(class1[i].getName()))
{
findFlag=1;
class1[i].showInfo();
}
}
if(findFlag==0)
{
System.out.println("没有找到该同学的信息");
}
}
public void changeId()//修改学生ID的方法
{
System.out.println("请输入查找学生的名字");
String name=input.next();
int findFlag=0;
for(int i=0;i<number;i++)
{
if(name.equals(class1[i].getName()))
{
findFlag=1;
System.out.println("请输入新ID");
int id=input.nextInt();
class1[i].setId(id);
}
}
if(findFlag==0)
{
System.out.println("没有找到该同学的信息");
}
}
public void changeName()//修改学生名字的方法
{
System.out.println("请输入查找学生的ID");
int id=input.nextInt();
int findFlag=0;
for(int i=0;i<number;i++)
{
if(id==class1[i].getId())
{
findFlag=1;
System.out.println("请输入更改后的名字");
String name=input.next();
class1[i].setName(name);
}
}
if(findFlag==0)
{
System.out.println("没有找到该ID的信息");
}
}
}
最后建立一个Test类。进行测试。
package com.icss.Student;
import java.util.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入班级人数");//在控制台输出 请输入班级人数
Manage m=new Manage();//实例化m之后马上会输入班级人数,因为输出语句只能写在方法里面,所以只能用上面的输出达到效果。
int i=-1; //定义一个控制的变量,来让方便用户的操作和控循环
while(i!=0)
{
System.out.println("请输入您要做的操作:\t1.显示全部信息\t2.输入名字查找学生信息\t3.更改学生ID\t4.更改学生名字\t0.退出系统");
Scanner input=new Scanner(System.in);
i=input.nextInt();
switch(i)
{
case 1: m.showAll();break;
case 2: m.find();break;
case 3: m.changeId();break;
case 4: m.changeName();break;
case 0: break;//i==0.没操作。然后结束循环。
}
}
}
}
程序写好了。 来运行试试吧。
请输入班级人数
3
请输入学生姓名
张三
请输入学生ID
1
请输入学生姓名
李四
请输入学生ID
2
请输入学生姓名
周星驰
请输入学生ID
3
请输入您要做的操作: 1.显示全部信息 2.输入名字查找学生信息 3.更改学生ID 4.更改学生名字 0.退出系统
1
***************************
学生名:张三 学生ID:1
***************************
***************************
学生名:李四 学生ID:2
***************************
***************************
学生名:周星驰 学生ID:3
***************************
请输入您要做的操作: 1.显示全部信息 2.输入名字查找学生信息 3.更改学生ID 4.更改学生名字 0.退出系统
2
请输入查找学生的名字
周星驰
***************************
学生名:周星驰 学生ID:3
***************************
请输入您要做的操作: 1.显示全部信息 2.输入名字查找学生信息 3.更改学生ID 4.更改学生名字 0.退出系统
3
请输入查找学生的名字
周星驰
请输入新ID
9527
请输入您要做的操作: 1.显示全部信息 2.输入名字查找学生信息 3.更改学生ID 4.更改学生名字 0.退出系统
1
***************************
学生名:张三 学生ID:1
***************************
***************************
学生名:李四 学生ID:2
***************************
***************************
学生名:周星驰 学生ID:9527
***************************
请输入您要做的操作: 1.显示全部信息 2.输入名字查找学生信息 3.更改学生ID 4.更改学生名字 0.退出系统
0
基本上得到了想要的结果。
我用的是MYECLIPSE在运行的时候碰到一个很有意思的问题。不解中。。。
运行的时候学生名输入中文 需要在输入的时候换行,否则会出现错误或者异常。如果输入法一直英文就没有这种现象。如果要输入中文则输入前先换到输入字的下一行再输入才行。
问题:这个程序有个致命的问题,就是当你输入不符合要求的时候会报异常,暂时没有学过异常的处理。等学完以后再继续把这个项目做完整吧。