数组练习,实现同学信息的添加修改查询

这是一个使用Java实现的学生信息管理系统,包含添加、查询、修改和删除等功能。系统使用Scanner进行用户交互,通过switch或if判断实现菜单选择,支持动态扩容数组。用户可以选择按姓名、性别或成绩查询,也可按需修改特定信息。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述

**

/注意,没有做用户输入类型判断,如果遇到input.nextInt();输入字符会报错

第一种、用switch做菜单

//不使用Arrays类的方法


import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// TODO 5.初始为3	同学信息保存    
		//一个数组保存学员姓名 
		//一个数组保存学员成绩 
		//一个数组保存学员性别 
		//功能一:添加数据 保存同学的信息 用户可持续输入 选择n时结束
		//功能二:遍历展示所有信息 没有信息时提示先添加数据
		//	姓名    性别    成绩
	    //           张三	男	89
		//功能三:输入待修改信息的学员姓名 修改其成绩及性别
		//功能四:输入待查询信息的学员姓名 展示展示其姓名及学员信息
		//功能五:输入性别 展示该性别所有学员的信息
		//功能六:输入一个成绩 展示所有大于等于这个成绩的学员信息
		//功能七:退出应用程序
		//要求项目可以循环执行菜单选择 用户选择7时 退出应用 其他情况提示输入有误
		String[] names = new String[3];
		int[] scores = new int[3];
		char[] sexs = new char[3];
		
		Scanner input = new Scanner(System.in);
		int num = 0;//存入用户输入的选择
		int num2 = -1;//数组索引变量
        String name = null;//存放用户输入的姓名
        char sex = ' ';//存放用户输入的性别
        int score = 0;//保存用户输入的成绩判断条件
        boolean bool = true;//输出提示判断标记
        boolean quit = false;//退出判断标记
		while(true) {//循环执行菜单
			
			
			System.out.println("菜单\n1.添加 2.查看全部 3.修改 4.条件查询(姓名)\n"
					+ "5.成绩查询(大于当前输入成绩)6.条件查询(性别)7.退出");
			System.out.println("=================================================");
			num = input.nextInt();
			System.out.println("==========================================");
			switch(num) {
			case 1://添加
				
				num2=0;
				while(true) {//循环添加
					
					if(num2>=2) {//当数组没有空间开辟空间
						String[] names2 =new String[names.length+2];
						int[] scores2 = new int[scores.length+2];
						char[] sexs2 = new char[sexs.length+2];
					    for(int i = 0;i<names.length;i++) {
					    	names2[i]=names[i];
					    	scores2[i]=scores[i];
					    	sexs2[i]=sexs[i];
					    }
					    names=names2;
					    scores=scores2;
					    sexs=sexs2;
					}
					
					//System.out.println(num2);
					System.out.println("请输入姓名:");
					names[num2]=input.next();//保存姓名数据
					System.out.println("==========================================");
					System.out.println("请输入成绩:");
					scores[num2]=input.nextInt();//保存成绩数据
					System.out.println("==========================================");
					System.out.println("请输入性别:");
					sexs[num2]=input.next().charAt(0);//保存性别数据
					System.out.println("==========================================");
					System.out.println("是否继续添加y/n:");
					if(input.next().equals("n")) {//判断是否继续添加
						System.out.println("==========================================");
						break;
					}
					System.out.println("==========================================");
					num2++;

				}
				
				break;
			case 2://查询全部
				
				System.out.println("学生信息");
				//System.out.println(name);
				if(num2==-1) {//判断数组中是否有数据,没有数据输出提示并返回
					System.out.println("没有学生信息,请添加学生信息");
					System.out.println("==========================================");
					System.out.println("返回菜单");
					System.out.println("==========================================");
					continue;
				}
				for(int i = 0;i<=num2;i++) {//遍历数组
					System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
				}
				
				break;
			case 3://修改信息
				
				System.out.println("请输入你要修改学生的姓名:");
				name = input.next();
				System.out.println("==========================================");
				int num3 = 0;
				bool=true;
				for(int i = 0;i <num2;i++) {
					if(names[i].equals(name)) {
					    bool=false;
					    num3=i;
						System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
					    break;
					}
				}
				if(bool) {//判断bool初始值是否更改
					System.out.println("未找到学生信息,返回菜单");
					System.out.println("==========================================");
					continue;//返回菜单
				}
				while(true) {//循环修改
					System.out.println("请选择你要修改的信息:\n1.姓名2.性别3.成绩");
					num=input.nextInt();
					System.out.println("==========================================");
					if(num==1) {//修改姓名
						System.out.println("请输入姓名");
						names[num3]=input.next();
						System.out.println("修改成功");
						System.out.println("==========================================");
						
					}else if(num==2) {//修改性别
						System.out.println("请输入性别");
						sexs[num3]=input.next().charAt(0);
						System.out.println("修改成功");
						System.out.println("==========================================");
					}else if(num==3) {//修改成绩
						System.out.println("请输入成绩");
						scores[num3]=input.nextInt();
						System.out.println("修改成功");
						System.out.println("==========================================");
					}else {//输入其他数字
						System.out.println("输入有误,请重新选择");
						System.out.println("==========================================");
						continue;
					}
					//是否返回修改此学生其它信息
					System.out.println("是否修改其他信息y/n(返回):");
					if(input.next().equals("y")) {
						System.out.println("==========================================");
						continue;
					}else {
						System.out.println("==========================================");
						break;
					}
				}
				
				break;
			case 4://条件查询(姓名)
				
				System.out.println("请输入你要查询学生的姓名:");
				name = input.next();
				System.out.println("==========================================");
				if(num2==-1) {//判断数组中是否有数据,没有数据输出提示并返回
					System.out.println("没有学生信息,请添加学生信息");
					System.out.println("==========================================");
					System.out.println("返回菜单");
					System.out.println("==========================================");
					continue;
				}
			    bool=true;
				for(int i = 0;i <=num2;i++) {//遍历查询是否有这个学生
					if(names[i].equals(name)) {
						bool=false;
						System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
					    break;
					}
				}
				//未查询到
				if(bool) {
					System.out.println("没有查询到信息");
					System.out.println("==========================================");
				}
				
				break;
			case 5://成绩查询
				
				System.out.println("请输入你要查询学生的成绩(大于等于当前输入分数):");
				score = input.nextInt();
				System.out.println("==========================================");
				if(num2==-1) {
					System.out.println("没有学生信息,请先添加学生信息");
					System.out.println("==========================================");
					System.out.println("返回菜单");
					System.out.println("==========================================");
					continue;
				}
				bool =true;
				for(int i = 0;i <=num2;i++) {//遍历数组
					if(scores[i]>score) {//判断条件是否满足
						bool=false;
						System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
					}
				}
				//未查询到
				if(bool) {
					System.out.println("没有查询到信息");
					System.out.println("==========================================");
				}
				
				break;
			case 6://条件查询(性别)
				
				System.out.println("请输入你要查询学生的性别:");
				sex = input.next().charAt(0);
				System.out.println("==========================================");
				//判断整改数组是否有数据
				if(num2==-1) {
					System.out.println("没有学生信息,请先添加学生信息");
					System.out.println("==========================================");
					System.out.println("返回菜单");
					System.out.println("==========================================");
					continue;
				}
				bool=true;
				for(int i = 0;i <=num2;i++) {//遍历数组
					if(sexs[i]==sex) {//判断条件是否满足
						bool=false;
						System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
					}
				}
				if(bool) {
					System.out.println("没有查询到信息");
					System.out.println("==========================================");
				}
				
				break;
			case 7://退出
				//System.out.println("退出程序");
				quit=true;
				//return;
				break;
				default:
					System.out.println("输入有误,请重新输入");
					System.out.println("==========================================");
					continue;
			}
			if(quit) {//退出
				System.out.println("退出程序");
				break;
			}
			
			//返回菜单/退出程序
			System.out.println("是否返回菜单y/n(退出):");
			if(input.next().equals("y")) {
				System.out.println("==========================================");
				continue;
			}else {
				System.out.println("已退出程序");
				System.out.println("==========================================");
				break;
			}
		}
	}

}

第二种、使用if做菜单,并使用Arrays方法


import java.util.Arrays;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		// TODO 5.初始为3	同学信息保存    
				//一个数组保存学员姓名 
				//一个数组保存学员成绩 
				//一个数组保存学员性别 
				//功能一:添加数据 保存同学的信息 用户可持续输入 选择n时结束
				//功能二:遍历展示所有信息 没有信息时提示先添加数据
				//	姓名    性别    成绩
			    //           张三	男	89
				//功能三:输入待修改信息的学员姓名 修改其成绩及性别
				//功能四:输入待查询信息的学员姓名 展示展示其姓名及学员信息
				//功能五:输入性别 展示该性别所有学员的信息
				//功能六:输入一个成绩 展示所有大于等于这个成绩的学员信息
				//功能七:退出应用程序
				//要求项目可以循环执行菜单选择 用户选择7时 退出应用 其他情况提示输入有误
				String[] names = new String[3];
				int[] scores = new int[3];
				char[] sexs = new char[3];
				
				Scanner input = new Scanner(System.in);
				int num = 0;//存入用户输入的选择
				int num2 = -1;//数组索引变量
		        String name = null;//存放用户输入的姓名
		        char sex = ' ';//存放用户输入的性别
		        int score = 0;//保存用户输入的成绩判断条件
		        boolean bool = true;
				while(true) {//循环执行菜单
					
					
					System.out.println("菜单\n1.添加 2.查看全部 3.修改 4.条件查询(姓名)\n"
							+ "5.成绩查询(大于当前输入成绩)6.条件查询(性别)7.退出");
					num = input.nextInt();
					if(num==1) {//添加						
						num2=0;
						while(true) {//循环添加
							
							if(num2>=2) {//当数组没有空间开辟空间
//								String[] names2 =new String[names.length+2];
//								int[] scores2 = new int[scores.length+2];
//								char[] sexs2 = new char[sexs.length+2];
//							    for(int i = 0;i<names.length;i++) {
//							    	names2[i]=names[i];
//							    	scores2[i]=scores[i];
//							    	sexs2[i]=sexs[i];
//							    }
								//使用Arrays类中的copyOf复制老数组并扩容两位数组空间
								String[] names2=Arrays.copyOf(names, names.length+2);
								int[] scores2=Arrays.copyOf(scores, scores.length+2);
								char[] sexs2=Arrays.copyOf(sexs, sexs.length+2);
							    //将新数组地址赋值给老数组
								names=names2;
							    scores=scores2;
							    sexs=sexs2;
							}
							
							System.out.println(num2);
							System.out.println("请输入姓名:");
							names[num2]=input.next();//保存姓名数据
							System.out.println("请输入成绩:");
							scores[num2]=input.nextInt();//保存成绩数据
							System.out.println("请输入性别:");
							sexs[num2]=input.next().charAt(0);//保存性别数据
							System.out.println("是否继续添加y/n:");
							if(input.next().equals("n")) {//判断是否继续添加
								break;
							}
							num2++;

						}
				        
					}else if(num==2) {//查看全部
						System.out.println("学生信息");
						//System.out.println(name);
						if(num2==-1) {//判断数组中是否有数据,没有数据输出提示并返回
							System.out.println("没有学生信息,请添加学生信息");
							System.out.println("返回菜单");
							continue;
						}
						for(int i = 0;i<=num2;i++) {//遍历数组
							System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
						}
						//返回菜单/退出程序
						System.out.println("是否返回菜单y/n(退出):");
						if(input.next().equals("y")) {
							continue;
						}else {
							System.out.println("已退出程序");
							break;
						}
					}else if(num==3) {//修改
						System.out.println("请输入你要修改学生的姓名:");
						name = input.next();
						int num3 = 0;
						bool=true;
						for(int i = 0;i <num2;i++) {
							if(names[i].equals(name)) {
							    bool=false;
							    num3=i;
								System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
							    break;
							}
						}
						if(bool) {//判断bool初始值是否更改
							System.out.println("未找到学生信息,返回菜单");
							continue;//返回菜单
						}
						while(true) {//循环修改
							System.out.println("请选择你要修改的信息:\n1.姓名2.性别3.成绩");
							num=input.nextInt();
							if(num==1) {//修改姓名
								System.out.println("请输入姓名");
								names[num3]=input.next();
								System.out.println("修改成功");
								
							}else if(num==2) {//修改性别
								System.out.println("请输入性别");
								sexs[num3]=input.next().charAt(0);
								System.out.println("修改成功");
							}else if(num==3) {//修改成绩
								System.out.println("请输入成绩");
								scores[num3]=input.nextInt();
								System.out.println("修改成功");
							}else {//输入其他数字
								System.out.println("输入有误,请重新选择");
								continue;
							}
							//是否返回修改此学生其它信息
							System.out.println("是否修改其他信息y/n(返回):");
							if(input.next().equals("y")) {
								continue;
							}else {
								break;
							}
						}
						
					}else if(num==4) {//条件查询(姓名)
						
						System.out.println("请输入你要查询学生的姓名:");
						name = input.next();
						if(num2==-1) {//判断数组中是否有数据,没有数据输出提示并返回
							System.out.println("没有学生信息,请添加学生信息");
							System.out.println("返回菜单");
							continue;
						}
					    bool=true;
						for(int i = 0;i <=num2;i++) {//遍历查询是否有这个学生
							if(names[i].equals(name)) {
								bool=false;
								System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
							    break;
							}
						}
						//未查询到
						if(bool) {
							System.out.println("没有查询到信息");
						}
						
					}else if(num==5) {//成绩查询
						System.out.println("请输入你要查询学生的成绩(大于等于当前输入分数):");
						score = input.nextInt();
						if(num2==-1) {
							System.out.println("没有学生信息,请先添加学生信息");
							System.out.println("返回菜单");
							continue;
						}
						bool =true;
						for(int i = 0;i <=num2;i++) {//遍历数组
							if(scores[i]>score) {//判断条件是否满足
								bool=false;
								System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
							}
						}
						//未查询到
						if(bool) {
							System.out.println("没有查询到信息");
						}
					}else if(num==6) {//条件查询(性别)
						System.out.println("请输入你要查询学生的性别:");
						sex = input.next().charAt(0);
						//判断整改数组是否有数据
						if(num2==-1) {
							System.out.println("没有学生信息,请先添加学生信息");
							System.out.println("返回菜单");
							continue;
						}
						bool=true;
						for(int i = 0;i <=num2;i++) {//遍历数组
							if(sexs[i]==sex) {//判断条件是否满足
								bool=false;
								System.out.println(names[i]+"\t"+sexs[i]+"\t"+scores[i]);
							}
						}
						if(bool) {
							System.out.println("没有查询到信息");
						}
					}else if(num==7) {//退出
						break;
					}else {
						System.out.println("输入有误,请重新输入");
					}
					//返回菜单/退出程序
					System.out.println("是否返回菜单y/n(退出):");
					if(input.next().equals("y")) {
						continue;
					}else {
						System.out.println("已退出程序");
						break;
					}
				}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值