Java 简化版学生管理系统(IO版)

时间:2022-09-06 08:04:00
Student management system

 

  • 学生管理系统IO版
  1. 详细知识点可参考一下几篇文章
  2. 常用API
  3. Java 之ArrayList集合及应用
  4. Java 之IO流及应用

Comprehensive exercises

1.1 要求

A:键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合,要求学生信息的学号不能重复

B:遍历集合把每一个学生信息存入文本文件

C:每一个学生信息为一行数据,每行学生的学号,姓名,年龄和居住地在文件中均以逗号分隔

1.1.1 案例代码一:

package com.gao;
/*
* 标准的学生类
*/
public class Student {
//学号
private String id;
//姓名
private String name;
//年龄
private String age;
//居住地
private String address; public Student() { } public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} } package com.gao; import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner; /*
* 键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)
*
* 分析:
* A:定义学生类
* B:创建集合对象
* C:写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合
* D:创建输出缓冲流对象
* E:遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件
* 举例:heima001,向问天,30,北京
* F:释放资源
*/
public class ArrayListToFileTest {
public static void main(String[] args) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>(); //写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合
addStudent(array);
addStudent(array);
addStudent(array); //创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt")); //遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
//heima001,向问天,30,北京
StringBuilder sb = new StringBuilder();
sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress()); bw.write(sb.toString());
bw.newLine();
bw.flush();
} //释放资源
bw.close();
} //添加学生
public static void addStudent(ArrayList<Student> array) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in); //为了让id能够被访问到,我们就把id定义在了循环的外面
String id; //为了让代码能够回到这里,用循环
while(true) {
System.out.println("请输入学生学号:");
//String id = sc.nextLine();
id = sc.nextLine(); //判断学号有没有被人占用
//定义标记
boolean flag = false;
//遍历集合,得到每一个学生
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
//获取该学生的学号,和键盘录入的学号进行比较
if(s.getId().equals(id)) {
flag = true; //说明学号被占用了
break;
}
} if(flag) {
System.out.println("你输入的学号已经被占用,请重新输入");
}else {
break; //结束循环
}
} System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
String age = sc.nextLine();
System.out.println("请输入学生居住地:");
String address = sc.nextLine(); //创建学生对象
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address); //把学生对象作为元素添加到集合
array.add(s); //给出提示
System.out.println("添加学生成功");
}
}

1.2 要求

把上一案例的array.txt文本文件中的学生信息读取出来存储到集合中,然后遍历集合,在控制台输出

1.2.1 案例代码二:

package com.gao;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList; /*
* 把上一题的文本文件中的学生信息读取出来存储到集合中,然后遍历集合,在控制台输出
*
* 分析:
* A:定义学生类
* B:创建输入缓冲流对象
* C:创建集合对象
* D:读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合
* heima001,向問天,30,北京
* E:释放资源
* F:遍历集合
*/
public class FileToArrayListTest {
public static void main(String[] args) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("array.txt")); //创建集合对象
ArrayList<Student> array = new ArrayList<Student>(); //读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合
String line;
while((line=br.readLine())!=null) {
//分割字符串
String[] strArray = line.split(",");
//创建学生对象并赋值
Student s = new Student();
s.setId(strArray[0]);
s.setName(strArray[1]);
s.setAge(strArray[2]);
s.setAddress(strArray[3]);
//把学生对象作为元素存储到集合
array.add(s);
} //释放资源
br.close(); //遍历集合
System.out.println("学号\t\t姓名\t年龄\t居住地");
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}
} package com.gao; import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList; /*
* 把上一题的文本文件中的学生信息读取出来存储到集合中,然后遍历集合,在控制台输出
*
* 分析:
* A:定义学生类
* B:创建输入缓冲流对象
* C:创建集合对象
* D:读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合
* heima001,向問天,30,北京
* E:释放资源
* F:遍历集合
*/
public class FileToArrayListTest {
public static void main(String[] args) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("array.txt")); //创建集合对象
ArrayList<Student> array = new ArrayList<Student>(); //读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合
String line;
while((line=br.readLine())!=null) {
//分割字符串
String[] strArray = line.split(",");
//创建学生对象并赋值
Student s = new Student();
s.setId(strArray[0]);
s.setName(strArray[1]);
s.setAge(strArray[2]);
s.setAddress(strArray[3]);
//把学生对象作为元素存储到集合
array.add(s);
} //释放资源
br.close(); //遍历集合
System.out.println("学号\t\t姓名\t年龄\t居住地");
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}
}

1.3 学生管理系统IO版

-------------欢迎来到学生管理系统--------------

1 查看所有学生

2 添加学生

3 删除学生

4 修改学生

5 退出

请输入您的选择:

学生管理系统IO版

A:在集合版学生管理系统案例的基础上,添加新需求

B:查看所有的学生的数据需要从information.txt(提供好的)中读取出来

C:增删改都需要先从information.txt中读出学生的数据然后

再把改后的学生数据重新写回information.txt

1.3.1 原有的集合版学生管理系统

  具体内容请看另一篇博文:http://www.cnblogs.com/yoke/p/7436070.html

                                                 (第三部分  学生管理系统)

1.3.2 对文本文件进行读写操作

public static void readData(String fileName,ArrayList<Student> array):从fileName的文件中读取学生的数据,并把学生的数据封装到array集合中

public static void writeData(String fileName,ArrayList<Student> array):

将array中的每个元素中包含的数据写入到fileName的文件中

1.3.2.1 案例代码四:

// 从文件中读数据到集合
public static void readData(String fileName, ArrayList<Student> array)
throws IOException {
// 创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(fileName)); String line;
while ((line = br.readLine()) != null) {
String[] datas = line.split(",");
Student s = new Student();
s.setId(datas[0]);
s.setName(datas[1]);
s.setAge(datas[2]);
s.setAddress(datas[3]);
array.add(s);
} br.close();
} // 把集合中的数据写入文件
public static void writeData(String fileName, ArrayList<Student> array)
throws IOException {
// 创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
StringBuilder sb = new StringBuilder();
sb.append(s.getId()).append(",").append(s.getName()).append(",")
.append(s.getAge()).append(",").append(s.getAddress()); bw.write(sb.toString());
bw.newLine();
bw.flush();
} bw.close();
}

1.3.3 增删改查功能调用读写文件方法(IO完整版):

1.3.3.1 案例代码五:

package com.gao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner; /*
* 这是我的学生管理系统的主类
*
* 步骤如下:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统的查看所有学生的代码编写
* D:学生管理系统的添加学生的代码编写
* E:学生管理系统的删除学生的代码编写
* F:学生管理系统的修改学生的代码编写
*/
public class StudentManagerTest {
public static void main(String[] args) throws IOException{
//定义文件路径
String fileName = "students.txt"; //为了让程序能够回到这里来,我们使用循环
while(true) {
//这是学生管理系统的主界面
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("请输入你的选择:");
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
String choiceString = sc.nextLine();
//用switch语句实现选择
switch(choiceString) {
case "1":
//查看所有学生
findAllStudent(fileName);
break;
case "2":
//添加学生
addStudent(fileName);
break;
case "3":
//删除学生
deleteStudent(fileName);
break;
case "4":
//修改学生
updateStudent(fileName);
break;
case "5":
default:
System.out.println("谢谢你的使用");
System.exit(0); //JVM退出
break;
}
}
} // 从文件中读数据到集合
public static void readData(String fileName, ArrayList<Student> array)
throws IOException {
// 创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(fileName)); String line;
while ((line = br.readLine()) != null) {
String[] datas = line.split(",");
Student s = new Student();
s.setId(datas[0]);
s.setName(datas[1]);
s.setAge(datas[2]);
s.setAddress(datas[3]);
array.add(s);
} br.close();
} // 把集合中的数据写入文件
public static void writeData(String fileName, ArrayList<Student> array)
throws IOException {
// 创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
StringBuilder sb = new StringBuilder();
sb.append(s.getId()).append(",").append(s.getName()).append(",")
.append(s.getAge()).append(",").append(s.getAddress()); bw.write(sb.toString());
bw.newLine();
bw.flush();
} bw.close();
} //修改学生
public static void updateStudent(String fileName) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//从文件中把数据读取到集合中
readData(fileName, array); //修改学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就修改该学生
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的学生的学号:");
String id = sc.nextLine(); //定义一个索引
int index = -1; //遍历集合
for(int x=0; x<array.size(); x++) {
//获取每一个学生对象
Student s = array.get(x);
//拿学生对象的学号和键盘录入的学号进行比较
if(s.getId().equals(id)) {
index = x;
break;
}
} if(index == -1) {
System.out.println("不好意思,你要修改的学号对应的学生信息不存在,请回去重新你的选择");
}else {
System.out.println("请输入学生新姓名:");
String name = sc.nextLine();
System.out.println("请输入学生新年龄:");
String age = sc.nextLine();
System.out.println("请输入学生新居住地:");
String address = sc.nextLine(); //创建学生对象
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address); //修改集合中的学生对象
array.set(index, s);
//把集合中的数据重新写回到文件
writeData(fileName, array);
//给出提示
System.out.println("修改学生成功");
}
} //删除学生
public static void deleteStudent(String fileName) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//从文件中把数据读取到集合中
readData(fileName, array); //删除学生的思路:键盘录入一个学号,到集合中去查找,看是否有学生使用的是该学号,如果有就删除该学生
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的学生的学号:");
String id = sc.nextLine(); //我们必须给出学号不存在的时候的提示 //定义一个索引
int index = -1; //遍历集合
for(int x=0; x<array.size(); x++) {
//获取到每一个学生对象
Student s = array.get(x);
//拿这个学生对象的学号和键盘录入的学号进行比较
if(s.getId().equals(id)) {
index = x;
break;
}
} if(index == -1) {
System.out.println("不好意思,你要删除的学号对应的学生信息不存在,请回去重新你的选择");
}else {
array.remove(index);
//把集合中的数据重新写回到文件
writeData(fileName, array);
System.out.println("删除学生成功");
} } //添加学生
public static void addStudent(String fileName) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//从文件中把数据读取到集合中
readData(fileName, array); //创建键盘录入对象
Scanner sc = new Scanner(System.in); //为了让id能够被访问到,我们就把id定义在了循环的外面
String id; //为了让代码能够回到这里,用循环
while(true) {
System.out.println("请输入学生学号:");
//String id = sc.nextLine();
id = sc.nextLine(); //判断学号有没有被人占用
//定义标记
boolean flag = false;
//遍历集合,得到每一个学生
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
//获取该学生的学号,和键盘录入的学号进行比较
if(s.getId().equals(id)) {
flag = true; //说明学号被占用了
break;
}
} if(flag) {
System.out.println("你输入的学号已经被占用,请重新输入");
}else {
break; //结束循环
}
} System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
String age = sc.nextLine();
System.out.println("请输入学生居住地:");
String address = sc.nextLine(); //创建学生对象
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address); //把学生对象作为元素添加到集合
array.add(s);
//把集合中的数据重新写回到文件
writeData(fileName, array); //给出提示
System.out.println("添加学生成功");
} //查看所有学生
public static void findAllStudent(String fileName) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//从文件中把数据读取到集合中
readData(fileName, array); //首先来判断集合中是否有数据,如果没有数据,就给出提示,并让该方法不继续往下执行
if(array.size() == 0) {
System.out.println("不好意思,目前没有学生信息可供查询,请回去重新选择你的操作");
return;
} //\t 其实就是一个tab键的位置
System.out.println("学号\t\t姓名\t年龄\t居住地");
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}
}

Java 简化版学生管理系统(IO版)的更多相关文章

  1. 模拟斗地主和学生管理系统 IO 版

    1.模拟斗地主 public class PlayCards { public static void main(String[] args) { String[] color = {"黑桃 ...

  2. java构建学生管理系统(一)

    用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...

  3. Java&plus;Mysql&plus;学生管理系统

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...

  4. Java 小型学生管理系统心得

    这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...

  5. Java开发学生管理系统

    Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...

  6. Java写学生管理系统

    package Homework08;/*调试了一上午,收获:学会了昨天的debug的使用吸取教训:Student stus[]=new Student[2]; for (int i=0;i<s ...

  7. Java小例子(学习整理)-----学生管理系统-控制台版

    1.功能介绍: 首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试! 功能: 增加学生信息 删除学生信息 修改学生信息 查询学生信息:  按照学号(精确查询)  按照姓名(模糊查询) 打 ...

  8. java集合学生管理系统

    //student.java package com.sran.www; import java.util.Arrays; import java.util.Scanner; public class ...

  9. C语言学生管理系统完善版

    #include<stdio.h>#include<string.h>#include <stdlib.h>#define M 100struct score    ...

随机推荐

  1. &period;NET面试题解析&lpar;03&rpar;-string与字符串操作

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 字符串可以说是C#开发中最常用的类型了,也是对系统性能影响很关键的类型,熟练掌握字符串的操作非常重要. 常 ...

  2. 一个比较全面的java随机数据生成工具包

    最近,由于一个项目的原因需要使用一些随机数据做测试,于是写了一个随机数据生成工具,ExtraRanom.可以看成是Java官方Random类的扩展,主要用于主要用于测试程序.生成密码.设计抽奖程序等情 ...

  3. BF算法

    BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符:若不相等,则比较S的第二个字符和P的第一个字符, ...

  4. 访问修饰符与可选修饰符static的使用

    在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内 ...

  5. laravel Authentication and Security

    Creating the user modelFirst of all, we need to define the model that is going to be used to represe ...

  6. 学渣也要搞 laravel(1)—— 安装篇

    看到laravel(我叫它:拉瓦)那么热门,我也决定学上一学. Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持.隐式模型绑定.简化Eloquent 全 ...

  7. USACO6&period;4-The Primes

    The Primes IOI'94 In the square below, each row, each column and the two diagonals can be read as a ...

  8. Java JSON处理库Jackson

    Jackson是一款为Java平台提供的一套数据处理类库工具,Jackson的主要功能是提供JSON解析和生成.另外,Jackson还提供额外的类库以支持处理Avro, CBOR, CSV, Smil ...

  9. 用php做省份的三级联动 附带数据库

    可以把它做成小插件的形式,以后需要,可以随时调 来看一下怎么来做 先来写个div然后,再引入js包 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  10. ConnectionString 属性尚未初始化

    关于"ConnectionString 属性尚未初始化"的问题(如下图),      我在下面一段代码中发现了问题所在:   public bool ReturnFlag(stri ...