Day38-SE学生系统

流程图

在这里插入图片描述

代码

.entity

package com.zhc.entity;

import java.io.Serializable;

public class Student implements Serializable{

	private Integer id;
	private String name;
	private String className;
	private double javaScore;
	private double htmlScore;
	private double sumScore;
	public static int COUNT = 0;
	
	public Student(){}

	public Student(String name, String className, double javaScore, double htmlScore) {
		super();
		this.id = COUNT;
		COUNT++;
		this.name = name;
		this.className = className;
		this.javaScore = javaScore;
		this.htmlScore = htmlScore;
		this.sumScore = javaScore + htmlScore;
	}
	
	
	public Integer getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

	public double getJavaScore() {
		return javaScore;
	}

	public void setJavaScore(double javaScore) {
		this.javaScore = javaScore;
	}

	public double getHtmlScore() {
		return htmlScore;
	}

	public void setHtmlScore(double htmlScore) {
		this.htmlScore = htmlScore;
	}

	public double getSumScore() {
		return sumScore;
	}

	
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", className=" + className + ", javaScore=" + javaScore
				+ ", htmlScore=" + htmlScore + ", sumScore=" + sumScore + "]";
	}
	
	
	
	
	
}

.manager

package com.zhc.manager;

import java.io.*;
import java.util.ArrayList;

import com.zhc.entity.Student;
import com.zhc.util.SystemComparator;

public class SystemManagerForService {

	private ArrayList<Student> stuList = null;

	public SystemManagerForService() {
		stuList = new ArrayList<Student>();
		try {
			load();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 程序启动后,读取文件中的对象,存储到集合中
	 * 
	 * @throws IOException
	 */
	private void load() throws IOException {
		File file = new File("D:\\data.txt");
		if (file.exists()) {
			FileInputStream fis = new FileInputStream(file);// 字节输入流
			ObjectInputStream ois = new ObjectInputStream(fis);// 对象输入流
			Object obj = null;
			Student stu = new Student();
			while (true) { // 循环读入对象

				try {
					obj = ois.readObject();
					Student stu2 = (Student) obj;

					// 每次循环,找到当前对象id最大的,作为自增id的当前值。
					Student.COUNT = stu.getId() > stu2.getId() ? stu.getId() : stu2.getId();

				} catch (Exception e) {
					break;
				}
				stuList.add((Student) obj);
			}

			System.out.println("初始化完成,有学员信息:" + stuList.size());
			ois.close();
			fis.close();

		} else {
			file.createNewFile();
		}

	}

	public void saveByStream() {
		try {
			FileOutputStream fos = new FileOutputStream("D:\\data.txt", false);
			ObjectOutputStream oos = new ObjectOutputStream(fos);

			for (int i = 0; i < stuList.size(); i++) {
				Student stu = stuList.get(i);
				oos.writeObject(stu);
			}
			oos.close();
			fos.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void seeAll() {
		for (int i = 0; i < stuList.size(); i++) {
			System.out.println(stuList.get(i));
		}
	}

	public boolean add(Student stu) {
		boolean b = stuList.add(stu);
		System.out.println("添加状态:" + b);
		return b;
	}

	public Object deletData(int id) {
		checkId(id);
		Object o = stuList.remove(id);
		return o;
	}

	/**
	 * 检查下标是否合法
	 * 
	 * @param id
	 */
	public void checkId(int id) {
		if (id < 0 || id >= stuList.size()) {
			throw new ArrayIndexOutOfBoundsException("出现问题:" + id);
		}
	}

	public Student get(int id) {
		System.out.println(stuList.get(id));
		return stuList.get(id);
	}

	public void sortByClass(String className) {
		for (int i = 0; i < stuList.size(); i++) {
			if (stuList.get(i).getClassName().equals(className)) {
				System.out.println(stuList.get(i));
			}
		}
	}

	public void sort(SystemComparator<Student> sc) {
		Object[] sortTemp = stuList.toArray();

		for (int i = 0; i < sortTemp.length - 1; i++) {

			for (int j = i + 1; j < sortTemp.length; j++) {

				if (sc.compare((Student) sortTemp[i], (Student) sortTemp[j]) < 0) {
					Student temp = (Student) sortTemp[i];
					sortTemp[i] = sortTemp[j];
					sortTemp[j] = temp;
				}
			}
		}
		for (Object object : sortTemp) {
			System.out.println(object);
		}

	}

}

.menu

package com.zhc.menu;

import java.util.Scanner;

import com.zhc.service.SystemServiceForMenu;

public class SystemMainMenu {

	static Scanner input = new Scanner(System.in);
	public static void main(String[] args) {

		SystemServiceForMenu ssm = new SystemServiceForMenu();
		
		while(true){
			System.out.println("1.查看所有学员、2.新增学员、"
					+ "3.根据ID删除学员、4.根据ID查询学员、"
					+ "5.根据ID修改信息、6.根据班级查询学员、"
					+ "7.根据姓名查询学员、8.根据需求排序、0.退出");
			System.out.println("输入选项:");
			int choice = input.nextInt();
			switch(choice){
			case 1:{
				ssm.seeAll();
				break;
			}
			
			case 2:{
				ssm.add();
				break;
			}
			
			case 3:{
				ssm.deletData();
				break;
			}
			
			case 4:{
				ssm.get();
				break;
			}
			
			case 5:{
				ssm.upDate();
				break;
			}
			
			case 6:{
				ssm.sortByClass();
				break;
			}
			
			case 8:{
				ssm.sort();
				break;
			}
			
			case 0:{
				ssm.saveByStream();
				System.out.println("bye");
				return;
			}
			
			default:
				break;
			
			
			}
			
		}
		
	}

}

.service

package com.zhc.service;

import java.util.Scanner;

import com.zhc.entity.Student;
import com.zhc.manager.SystemManagerForService;
import com.zhc.util.SystemComparator;

public class SystemServiceForMenu {

	Scanner input = new Scanner(System.in);
	SystemManagerForService mfs = new SystemManagerForService();

	/**
	 * 查看全部成员
	 */
	public void seeAll() {
		System.out.println("开始查看所有学员");
		mfs.seeAll();
	}

	/**
	 * 添加一个成员
	 */
	public void add() {
		System.out.println("开始新增学员");
		System.out.print("输入姓名:");
		String name = input.next();

		System.out.print("输入班级:");
		String className = input.next();

		System.out.print("输入JAVA:");
		double javaScore = input.nextDouble();

		System.out.print("输入HTML:");
		double htmlScore = input.nextDouble();

		Student stu = new Student(name, className, javaScore, htmlScore);
		mfs.add(stu);
	}

	/**
	 * 根据ID删除学员
	 */
	public void deletData() {
		System.out.println("开始删除成员");
		System.out.println("输入成员编号:");
		int id = input.nextInt();
		mfs.checkId(id);
		mfs.deletData(id);
	}

	/**
	 * 根据ID查询学员
	 */
	public void get() {
		System.out.println("开始查询单一学员");
		System.out.println("输入ID:");
		int id = input.nextInt();
		mfs.checkId(id);
		mfs.get(id);
	}

	/**
	 * 根据ID修改成员信息
	 */
	public void upDate() {
		System.out.println("开始修改单一学员,输入ID:");
		int id = input.nextInt();
		mfs.checkId(id);
		Student stu = mfs.get(id);
		while (true) {
			System.out.println("1.修改姓名、2.修改班级、3.修改JAVA、4.修改HTML、5.退出修改");
			int choice = input.nextInt();

			switch (choice) {
			case 1: {
				System.out.println("输入新的");
				String name = input.next();
				stu.setName(name);
				break;
			}

			case 2: {
				System.out.println("输入新的");
				String newClass = input.next();
				stu.setClassName(newClass);
				break;
			}

			case 3: {
				System.out.println("输入新的");
				double newJava = input.nextDouble();
				stu.setJavaScore(newJava);
				break;
			}

			case 4: {
				System.out.println("输入新的");
				double newHtml = input.nextDouble();
				stu.setHtmlScore(newHtml);
				break;
			}

			case 5: {
				return;
			}

			default:
				break;

			}
		}
	}

	/**
	 * 根据class查询学生信息
	 */
	public void sortByClass() {
		System.out.println("开始根据班级查询学员");
		System.out.println("输入班级:");
		String className = input.next();

		mfs.sortByClass(className);
	}

	/**
	 * 排序
	 */
	public void sort() {
		// TODO Auto-generated method stub
		System.out.println("开始排序查询学员");
		while (true) {
			System.out.println("输入排序方式:1.按总分降序、0.退出");
			int choice = input.nextInt();
			switch (choice) {
			case 1:
				mfs.sort(new SystemComparator<Student>() {
					public int compare(Student stu1, Student stu2) {
						return (int) ((stu1.getSumScore() - stu2.getSumScore()) * 100);
					}

				});
				break;

			case 0: {
				return;
			}

			default:
				break;

			}

		}
	}

	public void saveByStream() {
		System.out.println("开始保存文件");
		mfs.saveByStream();
	}

}

.util

package com.zhc.util;

public interface SystemComparator<E> {

	public int compare(E stu1, E stu2);
}

运行图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值