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

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

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. 《UNIX网络编程》之select IO

    select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...

  2. sass笔记-1|Sass是如何帮你又快又好地搞定CSS的

    Sass学习笔记持续整理中,开篇不讲怎么安装,sass是什么,这些搜索引擎会告诉你,我们从sass的作用开始讲起,知道sass用来干什么,有什么作用,我们才能相信用sass的好处,并且时时刻刻想着sa ...

  3. 【网络流#7】POJ 3281 Dining 最大流 - 《挑战程序设计竞赛》例题

    不使用二分图匹配,使用最大流即可,设源点S与汇点T,S->食物->牛->牛->饮料->T,每条边流量为1,因为流过牛的最大流量是1,所以将牛拆成两个点. 前向星,Dini ...

  4. java03变量和基本数据类型

    /** * * 失去一日甚易,欲得回已无途! * * 关键字:java中的关键字 就是指 已经被定义了的单词! * 我们就不能再拿关键字 作为我们的变量名! * 常用的关键字: * 基本数据类型: * ...

  5. (转)js获取url参数值

    明天有空编辑下 今天做项目遇到js取得url地址问号后面的参数,找了下面的,用着非常好,项目是选项卡样式的,也就是一点击二级分类,底下的同样名字的背景变红(选项卡倍选中) http://www.cnb ...

  6. 粗俗易懂的SQL存储过程在.NET中的实例运用

    整理了一下存储过程在项目中的运用,防止遗忘,便记录于此!存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数( ...

  7. mysql数据表如何导入MSSQL中

    本案例演示所用系统是windows server 2012.其它版本windows操作系统类似. 1,首先需要下载mysql odbc安装包. http://dev.mysql.com/downloa ...

  8. 使用padding-top实现自适应背景图片

    在父级容器中设定最大的宽度,由于背景图片会出现塌陷的情况,有宽度无高度, 则,在图片容器中添加以下属性 padding-top:%(计算方式:图片的高度/图片的宽度*100%) background- ...

  9. jQuery.YesShow - 图片轮播插件(带图片放大功能)

    jQuery.YesShow - 图片轮播插件(带图片放大功能) 使用简单,原文件只要这样就可以了:<div id="yes">         <ul> ...

  10. 快速入门cocos2d-x jsbinding

    如果你是一个cocos2d-x的老手,那你可以忽略这篇博文,如果你是一个接触过javascript,想通过HTML5做游戏的,但是苦于不知道如何下手,那么这篇博文可能会帮到你. cocos2dx-js ...