代码分析

FileOperate.java

 package com.ftl.testperson;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.FileOutputStream ;
import java.io.ObjectInputStream ;
import java.io.ObjectOutputStream ;
public class FileOperate{ // 此类专门用于保存和读取
private File file = null ; // 定义文件对象
public FileOperate(String pathName){ // 通过 构造传递文件路径
this.file = new File(pathName) ;
}
public boolean save(Object obj) throws Exception{ // 保存对象
ObjectOutputStream oos = null ; // 对象输出流
boolean flag = false ; // 定义操作标志位
try{
oos = new ObjectOutputStream(new FileOutputStream(this.file)) ; // 实例化对象输出流
oos.writeObject(obj) ; // 写入对象
flag = true ;
}catch(Exception e){
throw e ; // 有异常交给被调用处处理
}finally{
if(oos!=null){
oos.close() ;
}
}
return flag ;
}
public Object load() throws Exception{ // 读取对象
Object obj = null ; // 接收读取的内容
ObjectInputStream ois = null ;
try{
ois = new ObjectInputStream(new FileInputStream(this.file)) ; // 实例化对象输入流
obj = ois.readObject() ; // 读取对象
}catch(Exception e){
throw e ;
}finally{
if(ois!=null){
ois.close() ; // 关闭
}
}
return obj ;
}
};

InputData.java

 package com.ftl.testperson;

 import java.io.* ;
import java.util.* ;
import java.text.* ;
public class InputData{
private BufferedReader buf = null ;
public InputData(){// 只要输入数据就要使用此语句
this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
}
public String getString(String info){ // 得到字符串信息
String temp = null ;
System.out.print(info) ; // 打印提示信息
try{
temp = this.buf.readLine() ; // 接收数据
}catch(IOException e){
e.printStackTrace() ;
}
return temp ;
}
public int getInt(String info,String err){ // 得到一个整数的输入数据
int temp = 0 ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d+$")){ // 判断是否由数字组成
temp = Integer.parseInt(str) ; // 转型
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
public float getFloat(String info,String err){ // 得到一个小数的输入数据
float temp = 0 ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d+.?\\d+$")){ // 判断是否由数字组成
temp = Float.parseFloat(str) ; // 转型
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
public Date getDate(String info,String err){ // 得到一个小数的输入数据
Date temp = null ;
String str = null ;
boolean flag = true ; // 定义一个标记位
while(flag){
str = this.getString(info) ; // 接收数据
if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){ // 判断是否由数字组成
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
try{
temp = sdf.parse(str) ; // 将字符串变为Date型数据
}catch(Exception e){}
flag = false ; // 结束循环
}else{
System.out.println(err) ; // 打印错误信息
}
}
return temp ;
}
};

Menu.java

 package com.ftl.testperson;

 public class Menu
{
public void start(){
while(true){
try {
Menu.show();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
public static void show() throws Exception
{
System.out.println("===================个人系统===================");
System.out.println(" 【1】、增加数据 ");
System.out.println(" 【2】、删除数据 ");
System.out.println(" 【3】、修改数据 ");
System.out.println(" 【4】、查看数据 ");
System.out.println(" 【0】、退出系统 ");
InputData input = new InputData();
int i = input.getInt("请选择:", "请输入正确的选项!");
switch(i)
{
case 1:
{
Operate.add();
break;
}
case 2:
{
Operate.delete();
break;
}
case 3:
{
Operate.update();
break;
}
case 4:
{
Operate.find();
break;
}
case 0:
{
System.exit(1);
break;
}
default:
{
System.out.println("请输入正确的操作!!!");
}
}
}
}

Operate.java

 package com.ftl.testperson;
public class Operate{
public static void add(){ // 增加操作
InputData input = new InputData() ; // 实例化输入数据对象
FileOperate fo = new FileOperate("E:\\ test.txt") ;
String name = input.getString("请输入姓名:") ;
int age = input.getInt("请输入年龄:" , "年龄必须是数字!") ;
Person per = new Person(name,age) ; // 实例化Person对象
try{
fo.save(per) ; // 保存对象
}catch(Exception e){
e.printStackTrace() ;
}
System.out.println("信息增加成功!") ;
}
public static void delete(){ // 删除操作
FileOperate fo = new FileOperate("d:\\test.per") ;
try{
fo.save(null) ; // 保存对象
}catch(Exception e){
e.printStackTrace() ;
}
System.out.println("信息删除成功!") ;
}
public static void update(){ // 更新操作
InputData input = new InputData() ; // 实例化输入数据对象
FileOperate fo = new FileOperate("d:\\test.per") ;
Person per = null ;
try{
per = (Person)fo.load() ; // 读取对象
}catch(Exception e){
e.printStackTrace() ;
}
String name = input.getString("请输入姓名(原姓名:"+per.getName()+"):") ;
int age = input.getInt("请输入年龄(原年龄:"+per.getAge()+"):" , "年龄必须是数字!") ;
per = new Person(name,age) ; // 实例化Person对象
try{
fo.save(per) ; // 保存对象
}catch(Exception e){
e.printStackTrace() ;
}
System.out.println("信息修改成功!") ;
}
public static void find(){ // 查看操作
FileOperate fo = new FileOperate("d:\\test.per") ;
Person per = null ;
try{
per = (Person)fo.load() ; // 读取对象
}catch(Exception e){
e.printStackTrace() ;
}
System.out.println(per) ;
}
};

Person.java

 package singleperson;

 import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.Serializable; import javax.swing.JFrame; public class Person implements Serializable {
private String name;
private int age;
@Override
public String toString() {
return "姓名:" + this.getName() + "\t " + "年龄:" + this.getAge() + "\n";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

MainTest.java

 package com.ftl.testperson;

 public class MainTest {
public static void main(String[] args) throws Exception {
Menu menu = new Menu();
menu.start();
}
}

程序截图:

源码下载

点击下载

Java实例---简单的个人管理系统的更多相关文章

  1. Java实例---简单的宠物管理系统

    代码分析 Cat.java package com.ftl.petshop; class Cat implements Pet { private String name; private Strin ...

  2. Java实例---简单的上课管理系统

    源码分析 Course.java package com.ftl.many2many; import java.util.*; public class Course { private int cr ...

  3. Java实例---简单的超市管理系统

    代码分析 Customer.java package test; public class Customer { private String name; private int customerTy ...

  4. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  5. Java实例---简单的投票系统

    代码分析  InputData.java package vote; import java.io.BufferedReader; import java.io.IOException; import ...

  6. 主题:Java WebService 简单实例

    链接地址:主题:Java WebService 简单实例    http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要 ...

  7. Java之从头开始编写简单课程信息管理系统

    编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: https://www.cnblogs.com/dream0-0/p/10090828.h ...

  8. PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例

    前言: 1.关于PureMVC: MVC框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了.嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西 ...

  9. java简单学生成绩管理系统

    题目要求: 一. 数据结构要求:(5 分) 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishi ...

随机推荐

  1. Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  2. android Application类的详细介绍(转)

    在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习. 一.先对它的整体概念解释: 在android源码中对他的描述是; * Base cl ...

  3. jsf和facelets的生命周期

    一.JSF生命周期 JSF是基于事件驱动.JSF生命周期分为两个主要阶段:执行阶段和渲染阶段. 1.执行阶段 分为六个阶段: 恢复视图阶段 当客户端请求一个JavaServer Faces页面时,Ja ...

  4. [C语言]日期间天数差值的计算

    刷一些算法题时总能遇到计算日期间天数的问题,每每遇到这种情况,不是打开excel就是用系统自带的计算器.私以为这种问题及其简单以至于不需要自己动脑子,只要会调用工具就好.直到近些天在写一个日历程序的时 ...

  5. html中设置textbox的宽和高

    1.宽:width是不行的,而应该用size size=30,表示能输入30个字符 2.高:  style="height:50px"

  6. [中英对照]Introduction to Remote Direct Memory Access (RDMA) | RDMA概述

    前言: 什么是RDMA? 简单来说,RDMA就是指不通过操作系统(OS)内核以及TCP/IP协议栈在网络上传输数据,因此延迟(latency)非常低,CPU消耗非常少. 下面给出一篇简单介绍RDMA的 ...

  7. 剑指offer(41-45)编程题

    41.入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. class Solution { public: vector&l ...

  8. Guava之RateLimiter的设计

    Guava源码中很详尽的解释了RateLimiter的概念. 从概念上看,限流器以配置速率释放允许的请求(permit).如有必要,调用acquire()将会阻塞知道一个允许可用.一旦被获取(acqu ...

  9. An Introduction to Computer Thinking

    1.Die Grundlage des Computers 1.1 Binärzahl in die Dezimalzahl umsetzen Bereiten nach Gewicht,dann b ...

  10. 常用的几种OCR方法/组件小结(C#)

    数字.英文识别比较容易.中文识别主要存在两个问题:其一,有可能误识别.其二.需要随带几十兆的识别库(甚至更大).   适合C#编程引用的中文ocr技术,查到以下两种:   1.使用开源的Tessera ...