【7】JAVA---地址App小软件(AddrBusiness.class)(逻辑层)
这个。。。没多少好解释的。。。
表现层的增删改查的具体实现类。
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)(逻辑层)的更多相关文章
- Java---设计模式app小软件汇总应用
写了一个app小软件,重点不在于软件,软件bug挺多,也没去修改. 这个小软件只是为了更好的说明和了解设计模块而做的. Java 程序设计–包结构 Java程序设计的系统体系结构很大一部分都体现在包结 ...
- 小程序框架之逻辑层App Service
小程序开发框架的逻辑层使用 JavaScript 引擎为小程序提供开发者 JavaScript 代码的运行环境以及微信小程序的特有功能. 逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈. ...
- 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
查找模块: 年龄可进行段查找. 其他的都是模糊匹配. 空格为无用字符,会屏蔽的(除年龄). (如果在年龄中输入空格,会出现异常,当时没想到这点,要防护这点很容易的,但因为在这个小软件的编写过程,我主要 ...
- 【1】JAVA---地址App小软件(AddressApp.class)(初步接触项目开发的分层思想)(表现层)
这个是表现层的main方法. 实现的地址信息有: 姓名,性别,年龄,电话,地址. 实现的功能有: 增加地址: 删除地址: 修改地址: 查找地址:其中年龄的查找为年龄段的查找. 数据存储的方式为文件存储 ...
- 【5】JAVA---地址App小软件(DeletePanel.class)(表现层)
删除地址的表现层类. 如果没有选中要删除的地址信息,会出现窗口提示: 删除地址界面:(无法修改数据,只能看) /* * DeletePanel.java * */ package cn.hncu.ad ...
- 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)
修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ...
- 【3】JAVA---地址App小软件(AddPanel.class)(表现层)
添加地址信息界面. 年龄和地址必须是数字,否则会弹出窗口提示. 地址信息不能为空. /* * AddPanel.java * * Created on __DATE__, __TIME__ */ pa ...
- 【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)
实现数据进行文件的存储和读写. 本软件也就到此结束了. 没多少可以讲的. 因为这个小软件也就8个类,主要学习的也就是一个分层思想的简单应用. package cn.hncu.addr.dao; imp ...
- 【2】JAVA---地址App小软件(ListPanel.class)(表现层)
这个是表现层的主界面. /* * ListPanel.java * */ package cn.hncu.addr.ui; import javax.swing.JFrame; import java ...
随机推荐
- 数据迁移sql
1.把数据库test中的表Table1中的数据插入到数据库test2中的表Table2:insert into test2.Table2(a,c,d) select a,c,5 from test.T ...
- [RxJS] Creation operator: create()
We have been using Observable.create() a lot in previous lessons, so let's take a closer look how do ...
- Jetty开发指导:框架
Spring设置 你能嵌入Jetty到你的项目中,也能够使用差点儿全部的IoC类型框架,包含Spring.假设全部你想做的是在你的Spring中设置Jetty Server,那么以下的xml片段能够作 ...
- 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】
2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...
- eclipse中svn版本不兼容问题
eclipse中导入本地svn管理的Android项目 使用svn时弹出以下提示: org.apache.subversion.javahl.ClientException: Unsupported ...
- android之GridView实现九宫格布局
效果图: 代码如下: MyGridView.java /** * 自定义GridView 解决在scrollview中只显示第一行数据的问题 * Created by Spring on 2015/1 ...
- 搭建ngrok服务器(ubuntu 14)-- 微信 80端口和IPC备案限制解决方案
概述: ngrok其实这东西,我也不是很懂,所以也直接跟大家说,这就是个类似花生壳的东西. 简单来说,它就好像把我们内网自己使用的电脑和服务器用vpn连接起来,然后你的电脑就可以从互联网来访问了,有个 ...
- 单点登录CAS使用记(七):关于服务器超时以及客户端超时的分析
我的预想情况 一般情况下,当用户登录一个站点后,如果长时间没有发生任何动作,当用户再次点击时,会被强制登出并且跳转到登录页面, 提醒用户重新登录.现在我已经为站点整合了CAS,并且已经实现了单点登录以 ...
- centos安装redis-3.2.3
这次介绍的是在虚拟机centos下安装redis-3.2.3 首先进入官网http://redis.io/download
- C/C++安全编码-字符串
1 字符串 1.1 字符串基础 字符串提供命令行参数.环境变量.控制台输入.文本文件及网络连 接,提供外部输入方法来影响程序的行为和输出,这也是程序容易出错的地方.字符串是一个概念,并不是C/ ...