简单的学生系统—保存到文件内
清空集合
studentList.clear();
添加
创建保存信息的集合
保存到工程的路径下 直接写保存的文件名称
保存学生信息的文件对象制作成全局
private static File file=new File("student.txt");
创建一个字符输出流对象
BufferedWriter out=new BufferedWriter(new FileWriter(file,true)); //此类不提供换行
调用写出方法来输出学生信息到文件
if(studentList.size()>0) {
for(Object obj:studentList) { //遍历学生信息
Student student=(Student)obj; //创建学生信息对象
String studentinfo=student.getStuid()+"-"+
student.getStuname()+"-"+student.getStuage()+"-"+
student.getStuaddress(); //拼接学生信息字符串
out.write(studentinfo); //写出
out.newLine(); //换行
}
刷新关流
out.flush();
out.close();
先添加数据到集合
boolean flag=studentList.add(student);
将集合中的数据写入文件
saveStudentInfoToFile(studentList);
如果不清空集合 第二次添加就会把第一次集合中保存的信息再次写出,清空集合不能放在保存方法之前,否则一个都不会保存–清空集合
studentList.clear();
return flag;
查询
读取文件中的数据到集合
public void readFileToList() {}
创建字符输入流对象
BufferedReader in=new BufferedReader(new FileReader(file));
定义读取来的每一条学生信息
不等于空就持续读信息
String stuinfo=null;
while((stuinfo=in.readLine())!=null)
解析String类型的学生信息成学生对象
public Student jiexiStringStuInfo(String stuinfo) {
String stuarray[]=stuinfo.split("-");
Student student=new Student();
student.setStuid(Integer.parseInt(stuarray[0]));
student.setStuname(stuarray[1]);
student.setStuage(Integer.parseInt(stuarray[2]));
student.setStuaddress(stuarray[3]);
return student;
}
把解析好的文件放入集合对象
studentList.add(jiexiStringStuInfo(stuinfo));
查询所有学生信息的数据访问方法
public ArrayList selectAll() {
//清空集合
studentList.clear();
readFileToList();
return studentList;
}
根据学号查询学生信息的数据访问方法
查值
public Student selectByStuid(**int stuid**)
调取readFileToList
传入集合
清空集合
根据学号修改学生信息数据访问方法
查找在新集合中的下标
Student newListstudent=selectByStuid(student.getStuid());
传入
Object obj=studentList.set(studentList.indexOf(newListstudent), newStudent);
判断文件是否存在删除文件
if(file.exists()) {
file.delete();
}
修改后执行保存
saveStudentInfoToFile(studentList);
根据学号删除学生信息数据访问方法
public boolean deleteByStuid(Student student) {
//清空集合
studentList.clear();
readFileToList();
Student newListstudent=selectByStuid(student.getStuid());
boolean flag=studentList.remove(newListstudent);
if(file.exists()) {
file.delete();
}
saveStudentInfoToFile(studentList);
return flag;
}
删除所有学生信息数据访问方法
直接删除文件
删除先判断是否为空
public boolean deleteAll() {
boolean flag =false;
if(file.exists()) {
flag=file.delete();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
代码整合 :
例:
StudentDao.java →
package com.lx.dao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import com.lx.bean.Student;
/**
* 提供学生信息的数据访问类
* @author Administrator
*
*/
public class StudentDao {
//保存信息的具体集合
private static ArrayList studentList=new ArrayList();
//定义保存学生信息的文件对象
private static File file=new File("student.txt");
/**
* 将集合中的学生信息保存到文件
* @param studentList
*/
private void saveStudentInfoToFile(ArrayList studentList) {
try {
//3.创建字符输出流对象
BufferedWriter out=new BufferedWriter(new FileWriter(file,true));
//4.调用写出方法来输出学生信息到文件
if(studentList.size()>0) {
for(Object obj:studentList) {
Student student=(Student)obj;
String studentinfo=student.getStuid()+"-"+
student.getStuname()+"-"+student.getStuage()+"-"+
student.getStuaddress();
out.write(studentinfo);
out.newLine();
}
out.flush();
out.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
/**
* 读取文件中的数据到集合
*/
public void readFileToList() {
try {
//清空集合
studentList.clear();
//创建字符输入流对象
BufferedReader in=new BufferedReader(new FileReader(file));
//定义读取来的每一条学生信息
String stuinfo=null;
while((stuinfo=in.readLine())!=null) {
//解析String类型的学生信息成学生对象
studentList.add(jiexiStringStuInfo(stuinfo));
}
in.close();
}catch(Exception e) {
e.printStackTrace();
}
}
/**
* 解析String类型的学生信息成学生对象
* @return
*/
public Student jiexiStringStuInfo(String stuinfo) {
String stuarray[]=stuinfo.split("-");
Student student=new Student();
student.setStuid(Integer.parseInt(stuarray[0]));
student.setStuname(stuarray[1]);
student.setStuage(Integer.parseInt(stuarray[2]));
student.setStuaddress(stuarray[3]);
return student;
}
/**
* 添加学生信息的数据访问方法
*/
public boolean insert(Student student) {
//清空集合
studentList.clear();
//先添加数据到集合
boolean flag=studentList.add(student);
//将集合中的数据写入文件
saveStudentInfoToFile(studentList);
//清空集合
studentList.clear();
return flag;
}
/**
* 查询所有学生信息的数据访问方法
* @return
*/
public ArrayList selectAll() {
//清空集合
studentList.clear();
readFileToList();
return studentList;
}
/**
* 根据学号查询学生信息的数据访问方法
* @param stuid
* @return
*/
public Student selectByStuid(int stuid) {
//清空集合
studentList.clear();
readFileToList();
Student student=null;
for(Object obj:studentList) {
Student stu=(Student)obj;
if(stu.getStuid()==stuid) {
student=stu;
break;
}
}
return student;
}
/**
* 根据学号修改学生信息数据访问方法
* @param student
* @param newStudent
* @return
*/
public boolean updateByStuid(Student student,Student newStudent) {
//清空集合
studentList.clear();
readFileToList();
Student newListstudent=selectByStuid(student.getStuid());
Object obj=studentList.set(studentList.indexOf(newListstudent), newStudent);
if(file.exists()) {
file.delete();
}
saveStudentInfoToFile(studentList);
if(obj!=null) {
return true;
}
return false;
}
/**
* 根据学号删除学生信息数据访问方法
* @param student
* @return
*/
public boolean deleteByStuid(Student student) {
//清空集合
studentList.clear();
readFileToList();
Student newListstudent=selectByStuid(student.getStuid());
boolean flag=studentList.remove(newListstudent);
if(file.exists()) {
file.delete();
}
saveStudentInfoToFile(studentList);
return flag;
}
/**
* 删除所有学生信息数据访问方法
* @return
*/
public boolean deleteAll() {
boolean flag =false;
if(file.exists()) {
flag=file.delete();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
}
StudentService.java →
package com.lx.service;
import java.util.ArrayList;
import com.lx.bean.Student;
import com.lx.dao.StudentDao;
import com.lx.util.StudentHelper;
/**
* 学生信息的业务访问类
* @author Administrator
*
*/
public class StudentService {
/**
* 添加学生信息的具体业务处理方法
* @param student
*/
private void insertStudent(Student student) {
StudentDao studao=new StudentDao();
boolean flag=studao.insert(student);
if(flag) {
System.out.println("学生信息添加成功!");
}else {
System.out.println("学生信息添加失败!");
}
}
/**
* 查询所有学生信息的具体业务处理方法
*/
private void selectAllStudent() {
StudentDao studao=new StudentDao();
ArrayList studentList=studao.selectAll();
if(studentList.size()>0) {
System.out.println("---------------------------");
for(Object obj:studentList) {
Student stu=(Student)obj;
System.out.println("--"+stu.getStuid()+"-"+
stu.getStuname()+"-"+stu.getStuage()+"-"+stu.getStuaddress()+"--");
System.out.println("---------------------------");
}
}else {
System.out.println("---------------------------");
System.out.println("----------没有记录!------------");
System.out.println("---------------------------");
}
}
/**
* 根据学号查询学生信息的具体业务处理方法
* @param stuid
*/
private void selectStudentByStuid(int stuid) {
StudentDao studao=new StudentDao();
Student student=studao.selectByStuid(stuid);
if(student!=null) {
System.out.println("---------------------------");
System.out.println("--"+student.getStuid()+"-"+
student.getStuname()+"-"+student.getStuage()+"-"+student.getStuaddress()+"--");
System.out.println("---------------------------");
}else {
System.out.println("---------------------------");
System.out.println("----------没有记录!------------");
System.out.println("---------------------------");
}
}
/**
* 根据学号修改学生信息的具体业务处理方法
* @param stuid
*/
private void updateStudentByStuid(int stuid) {
StudentDao studao=new StudentDao();
Student student=studao.selectByStuid(stuid);
if(student!=null) {
Student newStudent=StudentHelper.getInputStudent();
boolean flag=studao.updateByStuid(student,newStudent);
if(flag) {
System.out.println("修改成功!");
}else {
System.out.println("修改失败!");
}
}else {
System.out.println("---------------------------");
System.out.println("----------没有记录!------------");
System.out.println("---------------------------");
}
}
/**
* 根据学号删除学生信息的具体业务处理方法
* @param stuid
*/
private void deleteStudentByStuid(int stuid) {
StudentDao studao=new StudentDao();
Student student=studao.selectByStuid(stuid);
if(student!=null) {
boolean flag=studao.deleteByStuid(student);
if(flag) {
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}else {
System.out.println("---------------------------");
System.out.println("----------没有记录!------------");
System.out.println("---------------------------");
}
}
/**
* 删除所有学生信息的具体业务处理方法
* @param stuid
*/
private void deleteAll() {
StudentDao studao=new StudentDao();
boolean flag=studao.deleteAll();
if(flag) {
System.out.println("删除所有信息成功!");
}else {
System.out.println("删除所有信息失败!");
}
}
/**
* 具体业务处理方法
* @param setvice_code 【键盘输入的具体操作编号】
*/
public void service(int setvice_code) {
switch(setvice_code) {
case 1:System.out.println("添加学生信息");
insertStudent(StudentHelper.getInputStudent());
break;
case 2:System.out.println("查询所有学生信息");
selectAllStudent();
break;
case 3:System.out.println("根据学号查询学生信息");
selectStudentByStuid(StudentHelper.getIntValue("--请输入需要查询的学生学号:--"));
break;
case 4:System.out.println("根据学号修改学生信息");
updateStudentByStuid(StudentHelper.getIntValue("--请输入需要修改的学生学号:--"));
break;
case 5:System.out.println("根据学号删除学生信息");
deleteStudentByStuid(StudentHelper.getIntValue("--请输入需要删除的学生学号:--"));
break;
case 6:System.out.println("删除所有学生信息");
deleteAll();
break;
case 0:System.out.println("退出系统");System.exit(0);break;
}
}
}
StudentMain.java →
package com.lx.main;
import com.lx.service.StudentService;
import com.lx.util.StudentHelper;
public class StudentMain {
public static void main(String[] args) {
while(true) {
StudentHelper.getMenu();
int setvice_code=StudentHelper.getIntValue("-请输入对应的编号执行相应的具体操作:-");
StudentService studentService=new StudentService();
studentService.service(setvice_code);
}
}
}