[Java] 简单文件数据库实现

本文通过Java实现了一个简单的文件数据库,用于管理学生记录的增删改查操作。使用字符流操作文本文件,记录以学号、姓名、出生年月、专业组成的格式存储,每条记录占一行。主要涉及StudentBean、DatabaseHelper、Menu和Client类的设计,其中DatabaseHelper为核心,包含了数据的查找、删除和修改。由于删除操作复杂,最初尝试的双文件操作未能成功,最终采取读取全部数据后重新写入的方法。代码在正常输入测试下运行良好,但对数据格式和异常处理未做充分考虑。
摘要由CSDN通过智能技术生成

昨晚上在设计项目数据库遇到点困难,刚好看到Java选修课群里说有个“大作业”。大概的意思就是一张固定的表,使用文件的方式管理这张表的数据,使其可以对数据进行"更删改查"。这不就是一个"数据库"么,当然和实际使用的数据库差很远,不过大体思想差不多是吧→_→(原谅我这个标题党)

题目描述:

利用字符流操作文本文件,实现 学生记录的增加、删除和更新;
记录的格式(学号,姓名,出生年月,专业) 数据项按“,”分割,一条记录为一行


之前可以说没有用过Java的文件操作,只看过Oracle 文档上关于I/O 流的介绍,借此机会练练手。

首先类的设计

  •  StudentBean: 用户表示学生信息,亦即“数据库”中的表
  •  DatabaseHelper: 数据库的工具类 实现更删改查(不过我这里将文件操作都扔里边了 耦合性高了点 懒的分出来了)
  •  Menu: 菜单类 也就是用户操作界面了
  •  Client: 主类 测试用

这里边最主要的就是 DatabaseHelper 的编写,属于这里边的核心类。

它包含学生记录的 增删改查

增: 向文件末尾写入一条数据

删: 首先查找数据位置,将文件中数据读取出来,删除再写入文件

改: 首先查找数据位置,再删除,修改后再写入


这几步当中,"删"较为复杂一点。开始的时候我是打算直接打开两个文件,一边读一遍写。这样同时操作就不需要

一次性将文件中的所有数据加载到内存了,相对来说对系统内存要求小一些,防止文件过大内存被用光。但是在实际的实现当中,数据产生混乱。数据的删除出现问题,最后还是采用将数据读出来再写进去的方法。这个方法很简单,就不做细节介绍了。删除记录完成了,更改数据就可以在"增"和“删”的基础上进行了。同时数据记录的查找就是上边操作的基础,就是做一个字符串匹配。


下边就贴两段代码,注释都很详细了。

这个程序关注的是核心功能的实现,对数据格式的没做太多限制,异常处理也不是很全面。不过正常的输入测试是没有问题的。代码耦合也没做太多考虑,讲究这看吧。文末会附上完整源码地址。(IntelliJ IDEA 工程)


StudentBean:

package com.mummyding.javacourse;

import java.util.Scanner;

/**
 * Created by mummyding on 15-11-25.
 */
public class StudentBean {
    private String studentID;
    private String studentName;
    private String birthDay;
    private String major;

    public String getStudentID() 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值