JAVA SE 做学生管理系统

 

最近学校老师让做的一个基础实验,现在给大家分享一下我的实现过程,有点困....

①具体的话,用了MVC设计模式,也不算是MVC设计模式,主要是对工程进行分类,实现代码的简洁。

比如主函数独立一个包,控制层一个包,服务层一个包,

服务层就是分得很细,一个功能一个函数,,

控制层的话,就实现服务层的组合,满足需求,

主函数就调用控制层写好的函数。

②还有就是要写到文件,但是写文件的话,数据会混乱,

我目前的想法就是,将数据一行一行的写,

每一行的格式就是:

姓名|学号|成绩

就类似于一个excel表格,这样去简单地实现数据库

好了,开始尝试做一下吧

1.创建工程

2.工程目录如下,直接上代码了,下午还有实验课,有空再解释

3.代码

runMain.java

package Main;

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

import controll.studentControll;
import pojo.Student;

public class runMain {

	static Scanner input;

	public static void main(String[] args) {
		input = new Scanner(System.in);
		// 整个程序中的学生列表
		List<Student> students = new ArrayList<Student>();
		int operation;
		while (true) {
			System.out.println("欢迎来到学生管理系统:");
			System.out.println("1.输入信息");
			System.out.println("2.成绩查询");
			System.out.println("3.成绩统计");
			operation = input.nextInt();
			if (operation == 1) {
				studentControll.studentInput(students);
			} else if (operation == 2) {
				studentControll.studentQuery(students);
			} else if (operation == 3) {
				studentControll.studentShow(students);
			} else {
				break;
			}
		}
	}
}

studentControll.java 

package controll;

import java.util.List;
import java.util.Scanner;

import pojo.Student;
import service.studentService;

public class studentControll {

	static Scanner input;

	// 输入用户信息
	public static void studentInput(List<Student> students) {
		input = new Scanner(System.in);
		int operation;
		System.out.println("请选择您输入记录的方式:");
		System.out.println("1.增加记录");
		System.out.println("2.文件批量导入记录");
		operation = input.nextInt();
		if (operation == 1) {
			studentService.singleInput(students);
		}
		else if (operation == 2) {
			studentService.batchInput(students);
		}
	}

	// 根据学号查询学生信息
	public static void studentQuery(List<Student> students) {
		input = new Scanner(System.in);
		int QueryId;
		System.out.println("请输入需要查询的学生学号:");
		QueryId = input.nextInt();
		for (Student student : students) {
			if (student.getId() == QueryId) {
				System.out.println("查到学生:"+student.toString());
				break;
			}
		}
	}

	// 统计学生成绩
	public static void studentShow(List<Student> students) {
		System.out.println("以下是全部学生信息:");
		for (Student student : students) {
			System.out.println(student.toString());
		}
	}
}

Student.java  (学生类对象)

package pojo;

public class Student {

	private String name;
	
	private int id;
	
	private int grader;

	public String getName() {
		return name;
	}

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

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getGender() {
		return grader;
	}

	public void setGender(int grader) {
		this.grader = grader;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", id=" + id + ", gender=" + grader + "]";
	}

	public Student(String name, int id, int grader) {
		super();
		this.name = name;
		this.id = id;
		this.grader = grader;
	}

	public Student() {
		super();
	}
	
}

studentService.java

package service;

import java.util.List;
import java.util.Scanner;

import pojo.Student;
import util.util;

public class studentService {
	
	static Scanner input;

	//将从文件中读取出来的学生列表写到程序中的学生列表中
	public static void batchInput(List<Student> students) {
		List<Student> GETstudents = util.getFileStudent("studentList.txt");
		students.addAll(GETstudents);
		for (Student student : students) {
			System.out.println("成功插入:"+student.toString());
		}
		System.out.println("插入完成!");
	}
	
	//输入学生信息记录
	public static void singleInput(List<Student> students) {
		input = new Scanner(System.in);
		int id;
		String name;
		int grader;
		System.out.println("输入学号:");id=input.nextInt();
		System.out.println("输入名字:");name=input.next();
		System.out.println("输入成绩:");grader=input.nextInt();
		Student student = new Student(name,id,grader);
		students.add(student);
	}
	
}

util.java

package util;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import pojo.Student;

public class util {

	/**
	 * 从文件中读取student
	 * @return
	 */
	public static List<Student> getFileStudent(String fileName) {
		//用来过滤第一行的错误数据
		int index = 0;
		//用来储存获得到的学生数据
		List<Student> students = new ArrayList<Student>();
		try {
			//获取文件资源
//			FileInputStream is = new FileInputStream("../"+fileName);
			FileInputStream is = new FileInputStream(fileName);
			// 防止路径乱码   如果utf-8 乱码  改GBK  eclipse里创建的txt  用UTF-8,在电脑上自己创建的txt  用GBK
			InputStreamReader isr = new InputStreamReader(is, "UTF-8");
			//获取数据读取缓存区
			BufferedReader br = new BufferedReader(isr);
			//每一行数据获取的字符串对象
			String line = "";
			while ((line = br.readLine()) != null) {
				index++;
				if (index == 1) {
					continue;
				}
				//打印读到的行内容
//				System.out.println(line); 
				String[] strarray = line.split("\\|");
				//打印切割后的数据
//				for (String string : strarray) {    
//					System.out.print(string + "........");
//				}
				//将数据读到student对象
				String name = strarray[0];
				int id = Integer.valueOf(strarray[1]);
				int grade = Integer.valueOf(strarray[2]);
				Student student = new Student(name,id,grade);
				//添加student对象
				students.add(student);
//				System.out.println(student.toString());
//				System.out.println();
			}
			br.close();
	        isr.close();
	        is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return students;
	}
}

studentList.txt

注意,这里第一行为空的,因为第一行会读到一个乱码


志成|1700301310|80
小蓝|1700301309|80

同时文件的话,也需要设置为utf8的编码

1.打开文件

2.选择文件 -> 另存为

在这里就可以设置txt文件的编码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值