这个。。。没多少好解释的。。。

表现层的增删改查的具体实现类。

package cn.hncu.addr.business;

import javax.swing.JOptionPane;

import cn.hncu.addr.dao.AddrDaoFile;
import sun.security.util.Length; public class AddrBusiness {
//静态方法。访问的是同一个对象--也就是说就算是new这个对象,也只是引用之前的那个静态对象
private static Object[] objs = new Object[0]; private boolean save() {
boolean result = AddrDaoFile.write(objs);
if(!result){
JOptionPane.showMessageDialog(null, "数据存储失败!");
return false;
} return true;
} //判断集合是不是已经有了那个元素
public boolean contains(Object obj){
for(Object temp:objs){
if(temp.equals(obj)){
return true;
}
}
return false;
} //添加元素,不能添加重复的元素
public boolean add(Object obj){
if(contains(obj)){
return false;
}
Object[] temp = new Object[objs.length+1];
System.arraycopy(objs, 0, temp, 0, objs.length);
temp[objs.length]=obj;
objs = temp;
boolean result = save();
return result;
} //返回集合的所有元素
public Object[] getAll(){
objs = AddrDaoFile.read();
return objs;
} //返回集合的元素长度
public int size(){
return objs.length;
} public boolean update(String oldStrAdd, String newStrAdd) {
for(int i=0;i<objs.length;i++){
if(((String)objs[i]).equals(oldStrAdd)){
objs[i] = (Object)newStrAdd;
boolean result = save();
return result;
}
}
return false;
} public boolean delete(String oldStrAdd) {
Object[] tempObj = new Object[objs.length-1];
int k=0;
for(int i=0;i<objs.length;i++){
if(!(((String)objs[i]).equals(oldStrAdd))){
tempObj[k++]=objs[i];
}
}
objs = tempObj;
boolean result = save();
return result;
} public Object[] query(String[] strsQu) {
Object[] tempObjs = new Object[objs.length];
int k=0;
for(int i=0;i<objs.length;i++){
String strObj = (String)objs[i];
String strs[] = strObj.split(","); //卫条件
if(strsQu[0]!=null&&strsQu[0].trim().length()>0){
if(!strs[0].contains(strsQu[0])){//模糊匹配姓名
continue;
}
} if(strsQu[1]!=null&&strsQu[1].trim().length()>0){
if(!strs[1].contains(strsQu[1])){//模糊匹配性别
continue;
}
} //年龄大于第一段的
if(strsQu[2]!=null){
if(strsQu[2].trim().length()>0){
if(Integer.parseInt(strs[2])<Integer.parseInt(strsQu[2])){
continue;
}
}
} //年龄小于第二段的
if(strsQu[5]!=null){
if(strsQu[5].trim().length()>0){
if(Integer.parseInt(strs[2])>Integer.parseInt(strsQu[5])){
continue;
}
}
} //电话
if(strsQu[3]!=null&&strsQu[3].trim().length()>0){
if(!strs[3].contains(strsQu[3])){//模糊匹配
continue;
}
} //地址
if(strsQu[4]!=null&&strsQu[4].trim().length()>0){
if(!strs[4].contains(strsQu[4])){//模糊匹配
continue;
}
}
tempObjs[k++]=objs[i];
} Object[] tempObjs2 = new Object[k];
for(int i=0;i<k;i++){
tempObjs2[i]=tempObjs[i];
}
return tempObjs2;
} }

【7】JAVA---地址App小软件(AddrBusiness.class)(逻辑层)的更多相关文章

  1. Java---设计模式app小软件汇总应用

    写了一个app小软件,重点不在于软件,软件bug挺多,也没去修改. 这个小软件只是为了更好的说明和了解设计模块而做的. Java 程序设计–包结构 Java程序设计的系统体系结构很大一部分都体现在包结 ...

  2. 小程序框架之逻辑层App Service

    小程序开发框架的逻辑层使用 JavaScript 引擎为小程序提供开发者 JavaScript 代码的运行环境以及微信小程序的特有功能. 逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈. ...

  3. 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)

    查找模块: 年龄可进行段查找. 其他的都是模糊匹配. 空格为无用字符,会屏蔽的(除年龄). (如果在年龄中输入空格,会出现异常,当时没想到这点,要防护这点很容易的,但因为在这个小软件的编写过程,我主要 ...

  4. 【1】JAVA---地址App小软件(AddressApp.class)(初步接触项目开发的分层思想)(表现层)

    这个是表现层的main方法. 实现的地址信息有: 姓名,性别,年龄,电话,地址. 实现的功能有: 增加地址: 删除地址: 修改地址: 查找地址:其中年龄的查找为年龄段的查找. 数据存储的方式为文件存储 ...

  5. 【5】JAVA---地址App小软件(DeletePanel.class)(表现层)

    删除地址的表现层类. 如果没有选中要删除的地址信息,会出现窗口提示: 删除地址界面:(无法修改数据,只能看) /* * DeletePanel.java * */ package cn.hncu.ad ...

  6. 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)

    修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ...

  7. 【3】JAVA---地址App小软件(AddPanel.class)(表现层)

    添加地址信息界面. 年龄和地址必须是数字,否则会弹出窗口提示. 地址信息不能为空. /* * AddPanel.java * * Created on __DATE__, __TIME__ */ pa ...

  8. 【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)

    实现数据进行文件的存储和读写. 本软件也就到此结束了. 没多少可以讲的. 因为这个小软件也就8个类,主要学习的也就是一个分层思想的简单应用. package cn.hncu.addr.dao; imp ...

  9. 【2】JAVA---地址App小软件(ListPanel.class)(表现层)

    这个是表现层的主界面. /* * ListPanel.java * */ package cn.hncu.addr.ui; import javax.swing.JFrame; import java ...

随机推荐

  1. C primer plus 读书笔记第二章

    这章的标题是C语言概述,内容大概是介绍一些简单的示例程序,来了解和熟悉C语言的一些基本特征. 这是书里的第一段代码,敲敲找找感觉.推荐在linux环境下写代码. PS:倒腾sublime text一下 ...

  2. TN2151:崩溃报告

    understanding and analyzing ios application crashreports 这个TN涉及了与崩溃相关的 内存耗尽信息,堆栈信息 以及 异常编号 等信息 内存耗尽 ...

  3. Android中使用ListView绘制自定义表格(2)

    上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 ...

  4. js中的隐式转换

    js中的不同的数据类型之间的比较转换规则如下: 1. 对象和布尔值比较 对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字 [] == true; //false [] ...

  5. 0x05: post 守护进程(deamon) json 任务调度

    python 签名 post #coding:utf-8 import urllib,urllib2 url='http://wtf.thinkphp.com/index.php?m=&c=t ...

  6. .net错误处理机制(转)

    asp.net 提供了4中错误机制:Page_Error事件>ErrorPage属性>Application_Error事件> <customErrors>配置项 ① P ...

  7. C# - openxml 操作excel - '“System.IO.Packaging.Package”在未被引用的程序集中定义'

    在 CodeProject中,有位网友写的一篇基于OpenXML SDK 2.0对excel(大数据量)进行操作,其中,运行的时候,有如下错误: 类型“System.IO.Packaging.Pack ...

  8. Redhat Enterprise 5.4下安装配置Oracle 11g R2详细过程

    1.Linux环境配置准备 环境:Linux:Redhat Enterprise 5.4,DB:Oracle 11g R2 X64,Oracle安装到/home/oralce_11目录下. 配置过程如 ...

  9. 武汉科技大学ACM :1007: 华科版C语言程序设计教程(第二版)习题7.10

    Problem Description 输入n(n<100)个字符串,每个字符串长度不超过1000,将他们按字典顺序输出. Input 多组测试样例. 每组第一行有一个整数n表示有n个字符串. ...

  10. C#操作Excel文件(转)

    摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...