JAVA控制台实现学生管理系统

之前的两篇讲了HashMap的原理和应用部分
原理:
https://blog.csdn.net/weixin_46726346/article/details/107428192
应用:
https://blog.csdn.net/weixin_46726346/article/details/107433284
这次做的学生管理系统应用到的容器就是HashMap,那为什么要用这个呢;
前面说到过HashMap的特点:
1.存储无序
2.键唯一

正好对应的就是学生的顺序我不在意,但是学生的学号是唯一的,那么我们就可以吧学号当成key,学生对象当做value;

一、学生类

言归正传,就开始写这个简单系统;
首先我们应该创建一个学生类:
那,成员变量应该包括学号姓名年龄性别(性别可以用枚举型,当然也可以用字符串类型);
然后方法我们要有构造方法,getter和setter方法,我们还要重写学生类的toString方法来便于输出学生的信息;

public class Student {
	private int sid;//学号
	private String name;//姓名
	private int age;//年龄
	private Gender gender;//性别
	public Student() {
		
	}
	public Student(int sid,String name,int age,Gender gender) {
		this.sid=sid;
		this.name=name;
		this.age=age;
		this.gender=gender;
	}
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "学生信息  [学号:" + sid + ", 姓名:" + name + ", 年龄:" + age + ", 性别:" + gender + "]";
	}
	
	

}
enum Gender{,}

二、接口

这样的话我们学生类就写完了,那一个系统自然要涉及到增删改查,我们总结一下这些方法;
1.显示所有的学生信息。
2.添加学生信息
3.通过学号查找学生信息(学号唯一,所以查到的也是一个学生的信息)
4.通过姓名查找学生信息(姓名可能存在重复,所以应该返回一个表)
5.删除学生信息
6.修改学生信息

那这么多方法,我们最好先写出一个接口来放置这些方法

public interface StudentInterface {
	void showAll();//显示学生信息
	boolean addStudent();//添加学生
	Student findBysid();//通过学号查找学生
	List<Student> findByname();//通过姓名查找学生
	boolean removeStu();//删除学生信息
	boolean exchangeStu();//修改学生信息

}

返回类型设置成布尔型的方法,是为了确定是否操作成功;
这样接口我们就写好了,然后创建一个系统类,并且重写接口中的方法;

三、学生系统类

public class StudentSystem implements StudentInterface{
	HashMap<Integer, Student> students=new HashMap<Integer, Student>();//定义HashMap对象,key为学号,value为学生对象
	Scanner scan=new Scanner(System.in);
	//欢迎界面
	public void welcome() {
		System.out.println("********欢迎进入学生管理系统****************");
		System.out.println("\n");
		System.out.println("初始化成功。。。。。。。。。。。。。。。。。。。");
	}
	//退出界面
	public void exit() {
		System.out.println("********感谢使用学生管理系统****************");
	}
	//菜单界面
	public void showMenu() {
		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("6.选择修改学生信息");
		System.out.println("7.退出系统");
		System.out.println("************");
	}
	public void showAll() {
		//遍历哈希表
		Set<Integer> sids=students.keySet();//获取所有键值
		Iterator<Integer> iterator=sids.iterator();
		if(iterator.hasNext()) {
		while(iterator.hasNext()) {
			Integer sid=iterator.next();
			Student stu=students.get(sid);
			System.out.println(stu);
		}
		}
		else {
			System.out.println("没有学生信息");
		}
	}
	public boolean addStudent() {
		System.out.println("请输入学生的学号");
		int sid=scan.nextInt();
		System.out.println("请输入学生的姓名");
		String name=scan.next();
		System.out.println("请输入学生的年龄");
		int age=scan.nextInt();
		System.out.println("请输入学生的性别");
		Gender gender=scan.next().equals("男")?Gender.:Gender.;
		Student stu=new Student(sid,name,age,gender);
		//添加学生到哈希表中
		students.put(sid,stu);
		System.out.println("添加学生成功");
		return true;
	}
	public Student findBysid() {
		System.out.println("请输入学生的学号");
		int sid=scan.nextInt();
		//从哈希表获取学生信息
		Student stu=students.get(sid);
		if(stu==null) {
			System.out.println("学生不存在");
		}
		else {
			System.out.println(stu);
		}
		return stu;
	}
	public List<Student> findByname(){
		System.out.println("请输入学生的姓名");
		String name=scan.next();
		//创建一个存放学生对象的表
		List<Student> list=new ArrayList<>();
		//获取所有的内容对哈希表进行遍历
		Collection<Student> stus=students.values();
		Iterator<Student> iterator=stus.iterator();
		while(iterator.hasNext()) {
			Student stu=iterator.next();
			if(stu.getName().equals(name)) {
				list.add(stu);
			}
		}
		if(list==null) {
			System.out.println("学生不存在");
		}
		else {
			for(int i=0;i<list.size();i++) {
				System.out.println(list.get(i));
			}
		}
		return list.size()==0?null:list;

	}
	public boolean removeStu() {
		System.out.println("请输入学生的学号");
		int sid=scan.nextInt();
		//从哈希表中删除学生信息
		Student stu=students.remove(sid);
		return stu==null?false:true;
		
	}
	public boolean exchangeStu() {
		System.out.println("请输入学生的学号");
		int sid=scan.nextInt();
		//从哈希表中获取学生信息
		Student stu=students.get(sid);
		if(stu!=null) {
			System.out.println("请输入学生的新姓名");
			String name=scan.next();
			System.out.println("请输入学生的新年龄");
			int age=scan.nextInt();
			System.out.println("请输入学生的新性别");
			Gender gender=scan.next().equals("男")?Gender.:Gender.;
			stu.setAge(age);
			stu.setGender(gender);
			stu.setName(name);
		}
		return stu==null?false:true;
	}

}

这里面呢,除了刚才接口中重写的方法,还有的就是欢迎界面退出界面的方法,还有显示菜单的方法;因为用到了HashMap的容器,如果不理解的话可以看开头的链接的文章,那里面有讲解HashMap的原理和使用方法;

四、测试类

最后写的就是测试类,也就是主方法的类;

public class Test {
	public static void main(String args[]){
		Scanner scan=new Scanner(System.in);
		StudentSystem system=new StudentSystem();
		system.welcome();
		//死循环进行功能重复
		while(true) {
			system.showMenu();
			System.out.println("请输入选择的功能");
			int x=scan.nextInt();
		    switch(x){
		    case 1:
		    	system.showAll();
		    	break;
		    case 2:
		    	system.addStudent();
		    	break;
		    case 3:
		    	system.findBysid();
		    	break;
		    case 4:
		    	system.findByname();
		    	break;
		    case 5:
		    	if(system.removeStu()) {
		    		System.out.println("删除成功");
		    	}
		    	else {
		    		System.out.println("删除学生信息失败");
		    	}
		    	break;
		    case 6:
		    	if(system.exchangeStu()) {
		    		System.out.println("修改成功");
		    	}
		    	else {
		    		System.out.println("修改学生信息失败");
		    	}
		    	break;
		    case 7:
		    	system.exit();
		    	System.exit(0);
		    default:
		    	System.out.println("请选择正确的功能");
		    }
			
		}
	}

}

关于测试类中,主要就是用到一个死循环来测试,然后就是用switch语句进行选择功能;

OK,关于一个简单的学生管理系统,基本功能也就全实现了,当然这里不涉及到数据库的存储和文件的操作,只是一个简单的在控制台运行的系统程序,也有很多不完善的地方,仅供学习参考;
结束,END;

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/107444106