【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 ...
随机推荐
- ios开发应用内实现多语言自由切换
需求描述:应用内部有一按钮,点击切换语言(如中英文切换).说起来这个是好久以前做的一个功能点了,刚开始也是没有头绪,后来解决了发现很简单,把方法分享一下.1.原理.查看NSLocalizedStrin ...
- mysql将一个库中表的某几个字段插入到另一个库中的表
insert into dbname1.tablename1(filed1,filed2,filed3) select filed1,filed2,filed3from dbname2.tablena ...
- Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)
1. 案例分析: 我有如下一个字符串:"91 27 46 38 50" 写代码实现最终输出结果是:"27 38 46 50 91" 分析: (1)定义一个 ...
- Counting Lines, Words, and Characters with wc
Counting Lines, Words, and Characters with wc When working with text files, you sometimes get a ...
- mysql 热备
全备份:(生成时间戳文件夹:2016-04-20_16-12-01)innobackupex --users=root --password=root /tmp/backup 第一次增量备份:(生成时 ...
- poj 2823 Sliding Window(单调队列)
/* 裸地单调队列.. 第一次写 写的好丑.... */ #include<iostream> #include<cstdio> #include<cstring> ...
- 最近很火的携程Java 工程师的一道面向对象面试题
最近这道面试题,传遍程序员各大小园地,本小白特摘抄整理与大家一起学习: 原题: package com.gxlee; public class Base { private String baseNa ...
- Shell语法中的test命令用法
test命令用法.功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表达式都为真 test 表达式1 – ...
- Cacti安装教程
CentOS 6.0架设流量监控及集中日志系统 第一章.cacti的安装 1. 系统的基本设置2. 设置主机名3. [root@localhost ~]# vi /etc/sysconfig/netw ...
- angularjs使用directive实现倒计时按钮
前不久在做一个彩票的项目时,有一个手动开奖的需求.所以有了这个倒计时按钮.下面分享下具体的代码: 效果: 代码: App.directive('timerBtn', function() { // 倒 ...