java-IO 文件作为数据库的学生管理系统

本文介绍了一个简单的学生信息管理系统,该系统采用Java实现,具备添加、查询、删除学生信息的功能,并能够将数据保存到本地文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.text.html.HTMLDocument.Iterator;

public class Student {

	public static List num = new ArrayList<String>(); // 学生编号
	public static List name = new ArrayList<String>(); // 学生姓名
	public static List age = new ArrayList<Integer>(); // 学生姓名

	public static File file = new File(
			"..//exercise//src//com//chinasoft//exercise12//Student.txt");

	static {

		List temp = new ArrayList<String>();
		try {
			BufferedReader br = new BufferedReader(new FileReader(file));

			String read = br.readLine();
			while (read != null) {
				temp.add(read);
				read = br.readLine();
			}
			br.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		for (int i = 0; i < temp.size(); i++) {
			String[] sTemp = ((String) temp.get(i)).split(",");
			num.add(sTemp[0]);
			name.add(sTemp[1]);
			age.add(Integer.parseInt(sTemp[2]));
		}

	}

}
</pre><pre name="code" class="java"><pre name="code" class="java">
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * 操作学生数据
 * 
 * @author Administrator
 *
 */
public class StudentOperator {

	static String action = "";

	static Scanner sc = new Scanner(System.in);

	/**
	 * 主菜单
	 */
	public static void menu() {
		System.out.println("请选择相应的操作:");
		System.out.println("--------------------");
		System.out.println("【1】添加学生信息");
		System.out.println("【2】查询学生信息");
		System.out.println("【3】删除学生信息");
		System.out.println("【4】退出");
		String select = sc.next();
		if ("1234".indexOf(select) > -1) {
			switch (select) {
			case "1":
				add();
				break;
			case "2":
				search();
				break;
			case "3":
				delete();
				break;
			case "4":
				if (save()) {
					System.out.println("\n谢谢使用!");
				} else {
					System.out.println("保存失败!");
				}
				break;
			}
		}
	}

	/**
	 * 判断是否继续
	 */
	public static void returnMenu() {
		System.out.println("是否继续(输入y继续操作)?");
		String input = sc.next();
		if (input.equals("y") || input.equals("Y")) {
			switch (action) {
			case "add":
				add();
				break;
			case "search":
				search();
				break;
			case "delete":
				delete();
				break;
			}
		} else {
			menu();
		}
	}

	/**
	 * 查询所有学生信息 如果传入-1,则打印所有学生 如果传入下标,则打印指定下标的学生
	 */
	public static void show(int index) {
		if (index == -1) {
			for (int i = 0; i < Student.num.size(); i++) {
				System.out.println("*******************");
				System.out.println("编号:" + Student.num.get(i));
				System.out.println("姓名:" + Student.name.get(i));
				System.out.println("年龄:" + Student.age.get(i));
				System.out.println("*******************");
			}
		} else {
			System.out.println("*******************");
			System.out.println("编号:" + Student.num.get(index));
			System.out.println("姓名:" + Student.name.get(index));
			System.out.println("年龄:" + Student.age.get(index));
			System.out.println("*******************");
		}

	}

	/**
	 * 添加学生信息
	 */
	public static void add() {
		action = "add";
		System.out.println("添加学生信息: ");
		System.out.println("--------------------");
		// 输入学号
		String inputNum = null;
		while (true) {
			System.out.println("请输入学生编号:");
			inputNum = sc.next();
			if (isExist(inputNum)) {
				System.out.println("学号已存在,请重新输入!");
				continue;
			} else {
				break;
			}
		}
		// 输入年龄,如果输入的格式不对,则重新输入!
		int inputAge = 0;
		while (true) {
			System.out.println("请输入学生年龄:");
			String age = sc.next();
			if (isNumber(age)) {
				inputAge = Integer.parseInt(age);
				break;
			} else {
				System.out.println("输入的格式不对,请重新输入!");
			}
		}
		// 输入学生姓名
		System.out.println("请输入学生姓名:");
		String inputName = sc.next();
		// 插入到数据库中
		Student.num.add(inputNum);
		Student.name.add(inputName);
		Student.age.add(inputAge);
		// 打印所有学生
		show(-1);

		// 是否继续
		returnMenu();
	}

	/**
	 * 查询学院信息
	 */
	public static void search() {
		action = "search";
		System.out.println("输入学生编号,查询相关信息:");
		String num = sc.next();
		int i = 0;
		for (; i < Student.num.size(); i++) {
			if (Student.num.get(i).equals(num)) {
				show(i);
				break;
			}
		}

		if (i >= Student.num.size()) {
			System.out.println("找不到!");
		}

		// 是否继续
		returnMenu();
	}

	/**
	 * 删除学生信息
	 */
	private static void delete() {
		System.out.println("请输入要删除的学生编号:");
		String num = sc.next();
		for (int i = 0; i < Student.num.size(); i++) {
			if (Student.num.get(i).equals(num)) {
				Student.num.remove(i);
				Student.name.remove(i);
				Student.age.remove(i);
				break;
			}
		}

		// 是否继续
		returnMenu();
	}

	/**
	 * 保存信息
	 */
	public static boolean save() {
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter(Student.file));
			for (int i = 0; i < Student.num.size(); i++) {
				String temp = Student.num.get(i) + "," + Student.name.get(i)
						+ "," + Student.age.get(i);
				bw.write(temp);
				bw.newLine();
			}

			bw.flush();
			bw.close();
			return true;
		} catch (IOException e) {
			return false;
		}
	}

	/**
	 * 判断输入的是否是数字,如果是则返回true,如果不是,则返回false
	 */
	public static boolean isNumber(String inputNum) {
		try {
			int change = Integer.parseInt(inputNum);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 判断学号是否存在
	 */
	public static boolean isExist(String num) {
		for (int i = 0; i < Student.num.size(); i++) {
			if (Student.num.get(i).equals(num)) {
				return true;
			}
		}
		return false;
	}
}
<pre name="code" class="java">public class testStudent {
	public static void main(String[] args) {
		
		StudentOperator.menu();
		
	}
}




压缩含使用说明,windows端在文件资源管理器中 点击create.bat支持一键建表,其他系统可以使用 createtables.sql里面的sql语句进行数据库 欢迎使用学生信息管理系统(管理员端) 本系统支持添加,删除,修改等实用功能 方便您更好的管理学生数据 【I】管理员端 一,选择数据库 通过右上角的数据库菜单栏可以选择当前操 作的数据库 二,添加教师,学生,教师,学生成绩(管理员) 1)通过管理员窗口的左侧按钮可以按需添加 学生,教师,管理员,学生成绩等信息 2)通过下方按钮“添加行”来新建空行,然 后手动输入数据,再点击“保存”按钮将表 单上传到数据库。 (注意:如果格式不正确,比如通过该方法上传 的数据可能会发生错误,所以方法2只适合管 理员使用) 3)支持批量添加行(注意:如果有一行错误,所 有操作将被回滚) 4)为学生添加老师,进入选择学生数据库,在 某一个学生行单击右键,选择“添加老师”,即 可为该id的学生添加老师 5)为学生添加课程,进入学生数据可以,在某一 学生行单击右键,选择“修改成绩”,可以进入 成绩修改窗口(管理员端),输入学生id, 为学生添加任意课程,也可为课程添加或修改删除 成绩 三,删除 在表格中使用鼠标选中一些数据行,然后点击 左侧“删除”按钮,即可删除表单中的数据 四,修改 双击表格,输入数据,按回车保存,然后点击 右下角“保存修改”按钮,将表单上传到数据 库中。(注意:因为学生成绩信息是以二进制 形式储存,所以请不要直接在表格中修改) 五,排序 在表格某一列点击排序按钮,对当前选择的表单 按该列进行排序,右上角排序选择框可以决定排 序的方向是升序还是逆序。 【II】教师端 1)教师基本信息 教师信息将显示在表格左侧 2)查看学生列表 单击“我的学生”,表格中将显示该教师的所有 学生 3)在表格中右击某一个学生,将进入成绩修改窗 口(教师端),支持为当前学生添加或修改当前 教师所教科目的学生成绩 4)查看成绩表 单击“成绩表”,表格中显示该教师所有学生的 成绩信息。 【III】学生端 1)学生基本信息 学生信息将显示在表格左侧 2)查看成绩 单击“学业成绩”,表格中将显示学生所有成绩 3)查看老师 单击“我的老师”,表格中将显示学生所有老师 的基本信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值