您的位置:首页 > 其它

编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长

2018-01-23 21:32 1146 查看
public class Student {
//学生信息包括有(学生学号、姓名、性别、手机号码
private int id;
private String name;
private String sex;
private String phone;
public Student() {
}
public Student(int id, String name, String sex, String phone) {
this.id = id;
this.name = name;
this.sex = sex;
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "学号:" + id + "\t 姓名:" + name + "\t 性别:" + sex + "\t 电话:" + phone ;
}

}
import java.util.Scanner;

/*
编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息
(初始数组为10个元素,每当数组存储满时,需要进行扩容,扩容规则可以为翻倍也可以固定增长)

系统对学生的操作包括:新增、查询、修改、删除。
大概流程如下:
请选择操作:退出请输入bye
1.新增
2.查询
3.修改
4.删除
输入:1
请输入:学生学号,姓名,性别,手机号码
输入:学生学号,姓名,性别,手机号码

新增完成,请继续操作!
请选择操作:退出请输入bye
1.新增
2.查询
3.修改
4.删除

输入:2
请输入学生的姓名
钱钟书
查询学生:
学生学号,姓名,性别,手机号码

查询完毕,请继续操作!
请选择操作:退出请输入bye
1.新增
2.查询
3.修改
4.删除
输入:3
请输入要修改的学生学号:
10000
学生不存在,请继续操作!

请选择操作:退出请输入bye
1.新增
2.查询
3.修改
4.删除

输入4
请输入学生学号
删除成功
*
*/
public class StudentManage {
// 定义对象数组的存储空间
private Student[] students = new Student[4];

public static void main(String[] args) {
// 创建类对象,通过类对象调用非静态的方法
StudentManage sm = new StudentManage();
// 初始化部分数据
sm.initStudent();

// 菜单
while (true) {
String select = sm.menu();
switch (select) {
case "1":
sm.addStudent();// 新增
break;
case "2":
sm.queryStudent();// 查找
break;
case "3":
sm.modify();// 修改
break;
case "4":
sm.deleteStudent();// 删除
break;
case "bye":
System.out.println("谢谢您的使用");// 退出
return;
default:
System.out.println("功能未开放");
break;
}
}
}

// 修改学生信息
public void modify() {
Scanner sc = new Scanner(System.in);
// 从数组中找到引用值不为null的空间,存在学号,则修改, 若 学生不存在,请继续操作!
System.out.println("请输入要修改的学生学号");
int id = sc.nextInt();
boolean b = true;
for (int i = 0; i < students.length; i++) {
if (students[i] != null && students[i].getId() == id) {
System.out.println(students[i]);// 存在学号,先输出该学号的学生信息,然后修改
b = true;

// 学号不修改
System.out.println("请输入要修改的学生姓名:");
String name = sc.next();
students[i].setName(name);
System.out.println("请输入要修改的学生性别:");
String sex = sc.next();
students[i].setSex(sex);
System.out.println("请输入要修改的手机号码:");
String phone = sc.next();
students[i].setPhone(phone);
System.out.println("修改完成");
break;
} else {
b = false;
}
}
// 学生不存在
if (b == false) {
System.out.println("修改失败!没有找到要修改的学生信息!!");
}
}
//查找学生   小菜单   1.按照学生姓名查找2.总览学生3.返回
public void queryStudent() {
while(true) {
Scanner sc=new Scanner(System.in);
System.out.println("1.按照学生姓名查找");
System.out.println("2.  总览学生          ");
System.out.println("3.   返回               ");
System.out.println("请选择对应的操作:");
int select=sc.nextInt();

//按照姓名查找
if(select==1) {
System.out.println("请输入学生的姓名:");
String name=sc.next();
//返回的下标值,根据下标,输出要找的某一个学生信息
int index=queryByName(name);
if(index!=-1) {
System.out.println("找到了该学生信息:");
System.out.println(students[index]);
}else{
System.out.println("没有找到该姓名的学生信息");
}
//总览
}else if(select==2) {
queryByAll();
}else if(select==3) {
//结束查找方法,跳出循环
break;
}
}
}
//查找  总览学生信息
public void queryByAll() {
for (int i = 0; i < students.length; i++) {
if(students[i]!=null) {
System.out.println(students[i]);
}
}
}
//按照姓名查找
public int queryByName(String name) {
//存在要查找的学生姓名,输出该学生的信息,不存在,提示没有要查找的学生信息
for (int i = 0; i < students.length; i++) {
if(students[i]!=null && students[i].getName().equals(name)) {
return i;//找到了就返回下标
}
}
return -1;
}
//删除学生
public void deleteStudent() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
int id=sc.nextInt();
//查找到学号,从数组中删除学生,没查找到,输出没有该学生信息
boolean b=true;
for (int i = 0; i < students.length; i++) {
//从数组头开始找,一个引用值不为null的空间
if(students[i]!=null && students[i].getId()==id) {
System.out.println(students[i]);
b=true;//找到学生的id
students[i]=null;
System.out.println("删除成功!");
break;//删除后要跳出循环
}else{
b=false;
}
}
//没有找到学生的id
if(b==false) {
System.out.println("删除失败,没有找到要删除的学生信息!");}
}
//添加学生
public void addStudent() {
Scanner sc=new Scanner(System.in);
//输入要添加的学生信息
System.out.println("请输入要新增的学生学号:");
int id=sc.nextInt();
//保证学生的学号是唯一的,如果已存在,则不能新增
for (int i = 0; i < students.length; i++) {
if(students[i]!=null && students[i].getId()==id) {
System.out.println("该学生已存在,不能新增!");
return;
}
}
System.out.println("请输入要新增的学生姓名:");
String name=sc.next();
//保证了数组中 学生的姓名是唯一的
//如果数组中已经有了要添加的学生姓名,则不能添加
int index=queryByName(name);
if(index!=-1) {
System.out.println("该学生已存在,不能新增!");
return;
}
System.out.println("请输入要新增的学生性别:");
String sex=sc.next();
System.out.println("请输入要新增的学生手机号码:");
String phone=sc.next();
//将信息添加到学生对象数组中
//从数组头开始找,直到找到一个引用值 为null的空间,添加学生信息
boolean isFull=true;
for (int i = 0; i <students.length; i++) {
if(students[i]==null) {
students[i]=new Student(id,name,sex,phone);
System.out.println("新增完成,请继续操作!");
isFull=false;
break;
}
}
if(isFull==true) {
//每当数组存储满时,需要进行扩容,扩容  翻倍...........................?
//新建一个学生对象数组,并指定新的数组的长度是原来的2倍
Student[] newStudents= new Student[students.length*2];
//通过遍历,把 原来数组里的学生赋值到了新的数组里
for(int i=0;i<students.length;i++) {
newStudents[i]=students[i];
}
//然后再把新的数组赋值给原来的数组,因为,下面的操作要用到原来的对象数组
students=newStudents;
}
}

//菜单
public String menu() {
System.out.println("请选择操作:退出请输入bye");
System.out.println("1.新增学生信息");
System.out.println("2.查询学生信息");
System.out.println("3.修改学生信息");
System.out.println("4.删除学生信息");
Scanner sc=new Scanner(System.in);
String select=sc.next();
return select;
}
//初始化部分数据
public void initStudent() {
students[0]=new Student(101,"张三","男","15566668888");
students[1]=new Student(102,"李四","男","14455557777");
students[2]=new Student(103,"王二","男","12233336666");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐