Java——实现简单的学生信息管理系统(很简单,无GUI)

2021年1月16日 12点热度 0条评论 来源: 张起灵-小哥

1.开篇 

这篇博文也是博主复习一下之前学过的 Java 的相关内容,通过使用 Java中的类、对象、构造器、set和get方法、接口、重写、集合(泛型)等一些相对来说不算太难的知识,来实现一个简易的学生信息管理系统。我写的真的很水,有些数据都不切实际,当然了,写这篇博文为大家分享主要还是为了回顾一下学过的内容、和大家共同交流、一起学习。

下面我们一起来看一下程序代码的具体实现:(注释写的很清楚了)

2.程序代码

2.1 学生信息操作相关接口 

package student.system;
import java.util.*;
public interface StudentService {
	//初始化学生信息
	void initStudentInfo(List<Student> studentlist);
	
	//添加学生信息
	void addStudentInfo(List<Student> all,Student student);
	
	//更新学生信息
	List<Student> updateStudentInfo(List<Student> all,Student student);
	
	//删除学生信息
	List<Student> deleteStudentInfo(List<Student> all,String name);
	
	//打印所有学生信息
	void printStudentInfo(List<Student> all);
	
	//打印指定学生信息
	void printMeInfo(Student student);
}

2.2 学生信息操作相关接口实现类 

package student.system;
import java.util.*;
//该类具体实现了StudentService接口,需要重写接口中的所有方法
public class StudentManage implements StudentService {
	@Override
	public void addStudentInfo(List<Student> all,Student student) {
		all.add(student);//add(方法进行添加)
		System.out.println("学生信息已添加!!!");
	}
	
	@Override
	public List<Student> updateStudentInfo(List<Student> all,Student student) {
		for(Student student1 : all) {//遍历该集合
			if(student1.getSno().equals(student.getSno())) {//学号匹配成功
				student1.setSname(student.getSname());//存入更新信息
				student1.setSage(student.getSage());
				student1.setGrade(student.getGrade());
				student1.setGrade(student.getGrade());
				student1.setScore(student.getScore());
				student1.setPassword(student.getPassword());
				System.out.println("==============个人信息已更新=============");
				printMeInfo(student1);//及时打印更新之后的学生信息,确保更新正确
				break;
			}
		}
		return all;//返回更新后的集合
	}
	
	@Override
	public List<Student> deleteStudentInfo(List<Student> all,String name) {
		int length=all.size();//获取集合长度
		for(Student student1 : all) {//遍历该集合
			if(student1.getSname().equals(name)) {//姓名匹配成功
				System.out.println("==============消息通知==============");
	                        System.out.println("~~~~~~~~~~~~~成功删除" + name + "~~~~~~~~~");
                                System.out.println("=====================================");
	                        all.remove(student1);//remove()方法移除该学生的所有信息
	                        break;
			}
		}
		//每移除一个学生信息,集合长度都会减1
		if(length==all.size()) {//如果长度没变,则说明没有移除,也就是不存在该学生
			System.out.println("==============消息通知==============");
                        System.out.println("~~~~~~~~~~~~不存在该学生~~~~~~~~~");
                        System.out.println("=====================================");
		}
		return all;//返回移除后的集合
	}
	
	@Override
	public void printStudentInfo(List<Student> all) {
		System.out.println("==============学生信息==============");
                System.out.println("学号 |      姓名|    性别|    年龄|      分数|     年级|                 密码|");
                for(Student student1 : all) {//打印学生列表信息
                    System.out.println(student1.toString());
                }
                System.out.println("=====================================");
	}
	
	@Override
	public void printMeInfo(Student student) {//打印个人信息
		System.out.println("==============我的个人信息==============");
                System.out.println("学号--->" + student.getSno());
                System.out.println("姓名--->" + student.getSname());
                System.out.println("性别--->" + student.getSex());
                System.out.println("年龄--->" + student.getSage());
                System.out.println("分数--->" + student.getScore());
                System.out.println("年级--->" + student.getGrade());
                System.out.println("密码--->" + student.getPassword());
                System.out.println("=========================================");
	}
	
	@Override
	public void initStudentInfo(List<Student> studentlist) {//初始化学生列表
		Random random=new Random();//声明一个Random类对象,用于生成随机数
		for(int i=0;i<10;i++) {
			String sex=(i%2==0 ? "男" : "女");
			String grade=(i%3==0 ? "学士" : (i%2==0 ? "硕士" : "博士"));
			Student student=new Student("No." + i,"学生" + i,random.nextInt(10)+20,sex,random.nextInt(90)+10,grade,"2656307671");
			studentlist.add(student);
		}
	}
}

2.3 学生类

package student.system;
public class Student {
	private String sno;
	private String sname;
	private Integer sage;
	private String sex;
	private Integer score;
	private String grade;
	private String password;
	
	public Student() {
		
	}
	
	public Student(String sno,String sname,Integer sage,String sex,Integer score,String grade,String password) {
		this.sno=sno;
		this.sname=sname;
		this.sage=sage;
		this.sex=sex;
		this.score=score;
		this.grade=grade;
		this.password=password;
	}
	
	public String getSno() {
		return sno;
	}
	
	public void setSno(String sno) {
		this.sno=sno;
	}
	
	public String getSname() {
		return sname;
	}
	
	public void setSname(String sname) {
		this.sname=sname;
	}
	
	public Integer getSage() {
		return sage;
	}
	
	public void setSage(Integer sage) {
		this.sage=sage;
	}
	
	public String getSex() {
		return sex;
	}
	
	public void setSex(String sex) {
		this.sex=sex;
	}
	
	public Integer getScore() {
		return score;
	}
	
	public void setScore(Integer score) {
		this.score=score;
	}
	
	public String getGrade() {
		return grade;
	}
	
	public void setGrade(String grade) {
		this.grade=grade;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password=password;
	}
	
	@Override
        public String toString() {
            return sno + "|  " + sname + "|       " + sex + "|        " + sage + "|         " + 
        		score + "|     " + grade + "|      " + password + "|";
        }
}

2.4 main()方法,Java主程序的入口

package student.system;
import java.util.*;
public class Main {
	//控制台输入
	private static Scanner input=new Scanner(System.in);
	//创建一个集合studentlist存储学生信息,通过ArrayList类去实现List接口中的方法
	private static List<Student> studentlist=new ArrayList<Student>();
	//声明一个Student类对象,记录当前学生的信息
	private static Student current=new Student();
	//声明一个StudentManage类对象
	private static StudentManage studentservice=new StudentManage();
	//标记变量,是否登录的标志
	private static boolean isLogin=false;
	public static void main(String[] args) throws InterruptedException {
		System.out.println("正在初始化学生信息.......");
		Thread.sleep(3000);//线程延时,也可以不写
		studentservice.initStudentInfo(studentlist);//初始化,随机生成10个学生信息
		int choose=Integer.parseInt(Menu());//获取Menu()方法中的Integer整形数据
		while(choose<9) {//循环读入不同的数字,表示不同的功能
			switch(choose) {
				case 1:
					login();//登录
					break;
				case 2:
					register();//注册
					break;
				case 3:
					studentservice.printStudentInfo(studentlist);//打印学生信息列表
					break;
				case 4:
					update();//更新学生信息
					break;
				case 5:
					if(isLogin) {//已经登录
						System.out.println("=====>个人资料");
						studentservice.printMeInfo(current);//打印指定学生信息
					}else {//未登录
						System.out.println("请先登录!!!");
					}
					break;
				case 6:
					if(isLogin) {//已经登录
						System.out.print("请输入需要删除的学生姓名:");
						String sname=input.next();
						studentservice.deleteStudentInfo(studentlist,sname);//删除指定学生信息
					}else {//未登录
						System.out.println("请先登录!!!");
					}
					break;
				case 7:
					sortscore();//按成绩升序排名
					break;
				case 8:
					System.out.println("系统退出,欢迎您下次访问!!!");//退出程序
					System.exit(0);
				default ://输入不合法
					System.out.println("输入错误!!!");
					break;
			}
			choose=Integer.parseInt(Menu());//继续下一步操作
		}
	}
	
	//主界面,菜单栏
	private static String Menu() {
        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("8.退出");
        System.out.println("========================================");
        System.out.print("输入你需要选择的功能编号:");
        return input.next();//返回每个功能前的数字
    }
	
	//登录
	private static void login() {
		System.out.println("请输入学号:");
		String username=input.next();//获取学号
		System.out.println("请输入密码:");
		String password=input.next();//获取密码
		for(Student student : studentlist) {//for-each循环进行列表集合遍历
			//学号和密码都输入正确
			if(student.getSno().equals(username) && student.getPassword().equals(password)) {
				isLogin=true;//标记变量修改为true,即登录成功
				current.setSno(student.getSno());//存入学生信息
				current.setSname(student.getSname());
				current.setSage(student.getSage());
				current.setSex(student.getSex());
				current.setScore(student.getScore());
				current.setGrade(student.getGrade());
				current.setPassword(student.getPassword());
				break;
			}
		}
		if(isLogin) {
			System.out.println("登录成功!!!");
		}else {
			System.out.println("学号或密码输入错误!!!");
		}
	}
	
	//注册
	private static void register() {
		System.out.println("请输入学生的基本信息=====>");
		System.out.print("学号:");
		String sno=input.next();//获取学生学号
		for(Student student : studentlist) {//for-each循环进行列表集合遍历
			if(student.getSno().equals(sno)) {//匹配成功,即此学号已经存在
				System.out.println("此学号已存在,请重新输入!!!");
				System.out.print("学号:");
				sno=input.next();//重新输入
			}
		}
		//依次输入注册学生的所有信息
		System.out.print("姓名:");
		String sname=input.next();
		System.out.print("性别:");
		String sex=input.next();
		System.out.print("年龄:");
		Integer sage=input.nextInt();
		System.out.print("成绩:");
		Integer score=input.nextInt();
		System.out.print("年级:");
		String grade=input.next();
		System.out.print("密码:");
		String password=input.next();
		//向构造器中传入具体值
		Student student=new Student(sno,sname,sage,sex,score,grade,password);
		//将该学生信息添加至studentlist列表集合中
		studentservice.addStudentInfo(studentlist,student);
	}
	
	//更新
	private static void update() {
		if(isLogin) {//已经登录
			System.out.print("请输入需要更新的学号:");
			String sno=input.next();//进行更新操作,这里不能更新学号
			System.out.println("姓名:");
			String sname=input.next();
			System.out.println("性别:");
			String sex=input.next();
			System.out.println("年龄:");
			Integer sage=input.nextInt();
			System.out.println("成绩:");
			Integer score=input.nextInt();
			System.out.println("年级:");
			String grade=input.next();
			System.out.println("密码:");
			String password=input.next();
			//向构造器中传入具体值
			Student student=new Student(sno,sname,sage,sex,score,grade,password);
			//将更新后的学生信息添加至studentlist列表集合中
			studentservice.updateStudentInfo(studentlist,student);
		}else {//未登录
			System.out.println("请先登录!!!");
		}
	}

	//按成绩排名
	private static void sortscore() {
		List<Student> list=studentlist;
		for(int i=0;i<list.size()-1;i++) {//冒泡排序
			for(int j=0;j<list.size()-i-1;j++) {
				if(list.get(j).getScore()>list.get(j+1).getScore()) {
					swap(list.get(j),list.get(j+1));//swap()方法在Main类中的最后
				}
			}
		}
		studentservice.printStudentInfo(list);//打印排好序的学生信息列表
	}
	
	//定义排序方法,即交换对象m和n中的所有内容
	private static void swap(Student m,Student n) {
		//先从构造器中获取对象m的所有信息
        Student student=new Student(m.getSno(),m.getSname(),m.getSage(),m.getSex(),m.getScore(),m.getGrade(),m.getPassword());
        //将对象n的所有信息存入对象m中
        m.setSno(n.getSno());
        m.setSname(n.getSname());
        m.setSage(n.getSage());
        m.setSex(n.getSex());
        m.setScore(n.getScore());
        m.setGrade(n.getGrade());
        m.setPassword(n.getPassword());
        //再将对象m的所有信息存入对象n中
        n.setSno(student.getSno());
        n.setSname(student.getSname());
        n.setSage(student.getSage());
        n.setSex(student.getSex());
        n.setScore(student.getScore());
        n.setGrade(student.getGrade());
        n.setPassword(student.getPassword());
	}
}

2.5 程序的部分运行结果

    原文作者:张起灵-小哥
    原文地址: https://blog.csdn.net/weixin_43823808/article/details/107791010
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。