简单的同学管理系统

该博客介绍了一个简单的Java学生信息管理系统,包括添加、查找、修改、删除和排序学生信息的功能。系统采用ArrayList存储学生对象,并通过Scanner获取用户输入,实现了对学生信息的验证和操作。同时,系统具备文件读写功能,能持久化存储学生数据。
摘要由CSDN通过智能技术生成

主方法App

import java.io.IOException;
import java.util.ArrayList;

public class App {
	//主方法
	public static void main(String[] args) throws IOException {
		// TODO 自动生成的方法存根
		ArrayList<Student> al = new ArrayList<>();//创建一个存数据的集合
		Meau.function(al);//调用功能
		Operation.writeTxt(al);//写出文件
	}
}

学生类

定义学生的属性

import java.util.Objects;

public class Student {
	private String id;//ID
	private String name;//姓名
	private String sex;//性别
	private int age;//年龄
	private String telephone;//电话号码
	public Student() {}//无参构造方法
	//有参构造方法
	public Student(String id, String name, String sex, int age, String telephone) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.telephone = telephone;
	}
	/**
	 * @return id
	 */
	public String getId() {
		return id;
	}
	/**
	 * @param id 要设置的 id
	 */
	public void setId(String id) {
		this.id = id;
	}
	/**
	 * @return name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name 要设置的 name
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return sex
	 */
	public String getSex() {
		return sex;
	}
	/**
	 * @param sex 要设置的 sex
	 */
	public void setSex(String sex) {
		this.sex = sex;
	}
	/**
	 * @return age
	 */
	public int getAge() {
		return age;
	}
	/**
	 * @param age 要设置的 age
	 */
	public void setAge(int age) {
		this.age = age;
	}
	/**
	 * @return telephone
	 */
	public String getTelephone() {
		return telephone;
	}
	/**
	 * @param telephone 要设置的 telephone
	 */
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	
	@Override
	//重写tostring方法
	public String toString() {
		return id + "	" + name + "	" + sex + "	" + age + "	" + telephone+"\r\n";
	}	
	
}

菜单类

主要是打印菜单

import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Meau {
	//主菜单
	public static void meau() {
		System.out.println("------请选择功能------");
		System.out.println("------1.添加学生信息------");
		System.out.println("------2.查找学生信息------");
		System.out.println("------3.修改学生信息------");
		System.out.println("------4.删除学生信息------");
		System.out.println("------5.排序学生信息------");
		System.out.println("------0.退出------");
	}
	//查找菜单
	public static void findMeau() {
		System.out.println("------请选择功能------");
		System.out.println("------1.按ID进行查找------");
		System.out.println("------2.按姓名进行查找------");
		System.out.println("------3.按性别进行查找------");
		System.out.println("------4.按年龄进行查找------");
		System.out.println("------0.返回上一级------");
	}
	//修改菜单
	public static void madificationMeau() {
		System.out.println("------请选择功能------");
		System.out.println("------1.修改ID------");
		System.out.println("------2.修改姓名------");
		System.out.println("------0.返回上一级------");
	}
	//删除菜单
	public static void deleteMeau() {
		System.out.println("------请选择功能------");
		System.out.println("------1.按ID进行删除------");
		System.out.println("------2.按姓名进行删除------");
		System.out.println("------0.返回上一级------");
	}
	//排序菜单
	public static void rankMeau() {
		System.out.println("------请选择功能------");
		System.out.println("------1.按ID排序------");
		System.out.println("------2.按姓名排序------");
		System.out.println("------3.按性别排序------");
		System.out.println("------4.按年龄排序------");
		System.out.println("------0.返回上一级------");
	}
	//选择功能
	public static void function(ArrayList<Student> al) throws IOException {
		Operation.readTxt(al);
		while(true) {
			meau();//打印功能信息
			Scanner r = new Scanner(System.in);
			System.out.println("请输入您要选择的功能:");
			int k=r.nextInt();
			switch(k) {
			case 1:
				Operation.addStudent(al);//添加
				break;
			case 2:
				Operation.findStudent(al);//查找
				break;
			case 3:
				Operation.madificationStudent(al);//修改
				break;
			case 4:
				Operation.deleteStudent(al);//删除
				break;
			case 5:
				Operation.rankStudent(al);//排序
				break;
			case 0:
				//退出提示
				System.out.println("欢迎您的使用!");
				break;
			default:
				System.out.println("您输入的功能有误!");
			}
			if(k==0) break;
		}
	}
	
}

验证类

验证用户输入的信息是否合法

import java.util.ArrayList;
import java.util.Scanner;

//校检
public class Check {
	//验证ID
	public static String checkId(String id,ArrayList<Student> al){
		Scanner r = new Scanner(System.in);
		while(true) {
			int k = id.length();//获取ID长度
			if(k<=0||k>8) {
				System.out.println("请重新输入:");
				id = r.next();
			}else {
				return id;
			}
		}		
	}
	//姓名长度
	/*
	 * 正则表达式是一种可以用于模式匹配和替换的规范,
	 * 一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,
	 * 它 用以描述在查找文字主体时待匹配的一个或多个字符串。
	 * 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
	 * 正则表达式的特点是:
		1、灵活性、逻辑性和功能性非常强;
		2、可以迅速地用极简单的方式达到字符串的复杂控制。
	 * */
	static int namelength(String name) {
		int length = 0;
		String ch = "[\u0391-\uFFE5]";//正则表达式范围
		for (int i = 0; i < name.length(); i++) {
			String temp = name.substring(i,i+1);//获取一个字符
			if(temp.matches(ch)) {//告知此字符串是否匹配给定的正则表达式。 
				length+=2;//含汉字
			}else {
				length+=1;
			}
		}
		return length;
	}
	//验证name
	public static String checkName(String name){
		Scanner r = new Scanner(System.in);
		while(true) {
			int k = namelength(name);//获取name长度
			//进行比较
			if(k<=0||k>8) {
				System.out.println("请重新输入:");
				name = r.next();
			}else {
				return name;
			}
		}		
	}
	//验证性别
	public static String checkSex(String sex){
		Scanner r = new Scanner(System.in);
		while(true) {
			//判断性别正确
			if(sex.equals("M")||sex.equals("F")) {
				return sex;
			}else {
				System.out.println("请重新输入:");
				sex = r.next();
			}
		}		
	}
	//验证年龄
	public static int checkAge(int age){
		Scanner r = new Scanner(System.in);
		while(true) {
			if(age<0||age>130) {//判断年龄是否合法
				System.out.println("请重新输入:");
				age = r.nextInt();
			}else {
				return age;
			}
		}		
	}
	//验证电话
	public static String checkTel(String tel){
		Scanner r = new Scanner(System.in);
		while(true) {
			int k = tel.length();//获取tel长度
			if(k!=11) {
				System.out.println("请重新输入:");
				tel = r.next();
			}else {
				return tel;
			}
		}
	}
}

操作类

各种学生操作

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;

//操作
public class Operation {
	//添加
	public static void addStudent(ArrayList<Student> al) {
		Scanner r = new Scanner(System.in);
		System.out.println("请输入你要添加学生的ID:");
		String id = r.nextLine();//输入ID
		id = Check.checkId(id,al);//验证
		System.out.println("请输入你要添加学生的姓名:");
		String name = r.nextLine();//输入姓名
		name = Check.checkName(name);//验证
		System.out.println("请输入你要添加学生的性别:(男:M 女:F)");
		String sex = r.nextLine();//输入性别
		sex = Check.checkSex(sex);//验证
		System.out.println("请输入你要添加学生的年龄:");
		int age = r.nextInt();//输入年龄
		age = Check.checkAge(age);//验证
		System.out.println("请输入你要添加学生的电话:");
		String tel = r.next();//输入电话
		tel = Check.checkTel(tel);//验证
		//创建新的Student对象用于存添加的用户信息
		Student tian = new Student(id,name,sex,age,tel);
		al.add(tian);//将创建用户添加到集合中
		System.out.println("添加成功!");
	}
	//查找
	public static void findStudent(ArrayList<Student> al) throws IOException {
		Scanner r = new Scanner(System.in);
		Meau.findMeau();//打印查找菜单
		System.out.println("请输入你要选择的功能:");
		String k = r.next();
		switch(k) {
		//id
		case "1":
			System.out.println("请输入查找人的ID:");
			String id = r.next();//输入ID
			//遍历集合
			Iterator<Student> it1 = al.iterator();
			System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
			while(it1.hasNext()) {
				Student stu = it1.next();//将每一行信息存到Student中用于查找
				if(stu.getId().equals(id)) {//输入的id与集合中数据进行比较
					System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getTelephone()+"\n");
				}
			}
			break;
		//name
		case "2":
			System.out.println("请输入查找人的姓名:");
			String name = r.next();//输入name
			//遍历集合
			Iterator<Student> it2 = al.iterator();//将每一行信息存到Student中用于查找
			System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
			while(it2.hasNext()) {
				Student stu = it2.next();
				if(stu.getName().equals(name)) {//输入的name与集合中数据进行比较
					System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getTelephone()+"\n");
				}
			}
			break;
		//sex
		case "3":
			System.out.println("请输入查找人的性别:");
			String sex = r.next();//输入name
			//遍历集合
			Iterator<Student> it3 = al.iterator();
			System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
			while(it3.hasNext()) {
				Student stu = it3.next();
				if(stu.getSex().equals(sex)) {//输入的性别与集合中数据进行比较
					System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getTelephone()+"\n");
				}
			}
			break;
		//age
		case "4":
			System.out.println("请输入查找人的年龄:");
			int age = r.nextInt();//输入年龄
			//遍历集合
			Iterator<Student> it4 = al.iterator();
			System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
			while(it4.hasNext()) {
				Student stu = it4.next();
				if(stu.getAge()==age) {//输入的年龄与集合中数据进行比较
					System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getTelephone()+"\n");
				}
			}
			break;
		case "0":
			Meau.function(al);//返回上一级功能
			break;
		default:
			System.out.println("您输入的功能有误!");
		}
	}
	//修改
	public static void madificationStudent(ArrayList<Student> al) throws IOException {
		Scanner r = new Scanner(System.in);
		Meau.madificationMeau();//打印修改菜单
		System.out.println("请输入你要选择的功能:");
		String k = r.next();
		switch(k) {
		//id
		case "1":
			System.out.println("请输入要修改人的ID:");
			String id = r.next();
			//遍历集合
			Iterator<Student> it1 = al.iterator();
			int i=0;//看在集合的位置
			while(it1.hasNext()) {
				Student stu = it1.next();
				if(stu.getId().equals(id)) {//寻找用户
					modificationFunction(al, stu,i);//调用修改功能
					break;
				}
				i++;
			}
			break;
		//name
		case "2":
			System.out.println("请输入要修改人的姓名:");
			String name = r.next();
			//遍历集合
			Iterator<Student> it2 = al.iterator();
			i=0;//看在集合的位置
			while(it2.hasNext()) {
				Student stu = it2.next();
				if(stu.getName().equals(name)) {//寻找用户
					modificationFunction(al, stu,i);//调用修改功能
					break;
				}
				i++;
			}
			break;
		case "0":
			Meau.function(al);//返回上一级功能
			break;
		default:
			System.out.println("您输入的功能有误!");
		}
	}
	//修改功能
	public static void modificationFunction(ArrayList<Student> al,Student stu,int i) {
		Scanner r = new Scanner(System.in);
		System.out.println("请输入要修改的信息:1.id  2.姓名  3.性别  4.年龄  5.电话");
		String k = r.next();//信息选项
		switch(k) {
		//id
		case "1":
			System.out.println("请输入ID:");
			String id  = r.next();//用户输入修改信息
			stu.setId(id);//改变ID值
			al.set(i, stu);//覆盖集合中对应数值
			System.out.println("修改成功!");
			break;
		//name
		case "2":
			System.out.println("请输入姓名:");
			String name  = r.next();//用户输入修改信息
			stu.setName(name);//改变name值
			al.set(i, stu);//覆盖集合中对应数值
			System.out.println("修改成功!");
			break;
		//sex
		case "3":
			System.out.println("请输入性别:");
			String sex  = r.next();//用户输入修改信息
			stu.setSex(sex);//改变sex值
			al.set(i, stu);//覆盖集合中对应数值
			System.out.println("修改成功!");
			break;
		//age
		case "4":
			System.out.println("请输入年龄:");
			int age  = r.nextInt();//用户输入修改信息
			stu.setAge(age);//改变age值
			al.set(i, stu);//覆盖集合中对应数值
			System.out.println("修改成功!");
			break;
		//tel
		case "5":
			System.out.println("请输入电话:");
			String tel  = r.next();//用户输入修改信息
			stu.setTelephone(tel);//改变电话值
			al.set(i, stu);//覆盖集合中对应数值
			System.out.println("修改成功!");
			break;
		default:
			System.out.println("输入错误!");
		}
	}
	//删除
	public static void deleteStudent(ArrayList<Student> al) throws IOException {
		Scanner r = new Scanner(System.in);
		Meau.deleteMeau();//打印删除菜单
		System.out.println("请输入你要选择的功能:");
		int k = r.nextInt();
		switch(k) {
		//id
		case 1:
			System.out.println("请输入要删除人的ID:");
			String id = r.next();//用户输入要删除人的信息
			Iterator<Student> it1 = al.iterator();
			int i=0;//集合中的位置
			while(it1.hasNext()) {
				Student stu = it1.next();
				if(stu.getId().equals(id)) {//寻找用户
					al.remove(i);//删除用户
					System.out.println("删除成功!");
					break;
				}
				i++;
			}
			break;
		//name
		case 2:
			System.out.println("请输入要删除人的姓名:");
			String name = r.next();//用户输入要删除人的信息
			Iterator<Student> it2 = al.iterator();
			i=0;//集合中的位置
			while(it2.hasNext()) {
				Student stu = it2.next();
				if(stu.getName().equals(name)) {//寻找用户
					al.remove(i);//删除用户
					System.out.println("删除成功!");
					break;
				}
				i++;
			}
			break;
		case 0:
			Meau.function(al);//返回上一级功能
			break;
		default:
			System.out.println("您输入的功能有误!");
		}
	}
	//排序
	public static void rankStudent(ArrayList<Student> al) throws IOException {
		Scanner r = new Scanner(System.in);
		Meau.rankMeau();//打印排序菜单
		System.out.println("请输入你要选择的功能:");
		int k = r.nextInt();
		switch(k) {
			case 1:
				//使用匿名内部类重写方法对集合进行排序
				Collections.sort(al, new Comparator<Student>() {
					//重写compare方法
					public int compare(Student s1,Student s2) {
						// TODO 自动生成的方法存根
						return s1.getId().compareTo(s2.getId());
					}
					});
				Iterator<Student> it1 = al.iterator();
				System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
				//打印
				while(it1.hasNext()){
					Student s = it1.next();
					System.out.println(s);
				}
				break;
			case 2:
				//使用匿名内部类重写方法对集合进行排序
				Collections.sort(al, new Comparator<Student>() {
					//重写compare方法
					public int compare(Student s1,Student s2) {
						// TODO 自动生成的方法存根
						return s1.getName().compareTo(s2.getName());
					}
				});
				Iterator<Student> it2 = al.iterator();
				System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
				//打印
				while(it2.hasNext()){
					Student s = it2.next();
					System.out.println(s);
				}
				break;
			case 3:
				//使用匿名内部类重写方法对集合进行排序
				Collections.sort(al, new Comparator<Student>() {
					//重写compare方法
					public int compare(Student s1,Student s2) {
						// TODO 自动生成的方法存根
						return s1.getSex().compareTo(s2.getSex());
					}
				});
				Iterator<Student> it3 = al.iterator();
				System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
				//打印
				while(it3.hasNext()){
					Student s = it3.next();
					System.out.println(s);
				}
				break;
			case 4:
				//使用匿名内部类重写方法对集合进行排序
				Collections.sort(al, new Comparator<Student>() {
					//重写compare方法
					public int compare(Student s1,Student s2) {
						// TODO 自动生成的方法存根
						return String.valueOf(s1.getAge()).compareTo(String.valueOf(s2.getAge()));
					}
				});
				Iterator<Student> it = al.iterator();
				System.out.println("Id\t"+"姓名\t"+"性别\t"+"年龄\t"+"电话\n");
				//打印
				while(it.hasNext()){
					Student s = it.next();
					System.out.println(s);
				}
				break;
			case 0:
				Meau.function(al);//返回上一级功能
				break;
			default:
				System.out.println("您输入的功能有误!");
		}
	}
	//读取外部信息
	public static void readTxt(ArrayList<Student> al) throws IOException {
		Scanner r = new Scanner(System.in);
		BufferedReader br = new BufferedReader(new FileReader("信息.txt"));//创建对象
		String line;
		//将文件数据添加到集合中
		while((line=br.readLine())!=null) {
			String[] s = line.split("	");
			Student stu = new Student(s[0],s[1],s[2],Integer.parseInt(s[3]),s[4]); 
			al.add(stu);
		}
	}
	public static void writeTxt(ArrayList<Student> al) throws IOException {
		BufferedWriter out = new BufferedWriter(new FileWriter("信息.txt"));//创建对象
		Iterator<Student> key = al.iterator();
		//重写文件
		while(key.hasNext()) {
			Student jia = key.next();
			out.write(jia.toString());//写入文件
		}
		out.close();//关闭流
	}
}

总结

第一次写,不知道如何去写,就这吧!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法看不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值