【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 ...
随机推荐
- NSString去掉火车和空格
// backString = [backString stringByReplacingOccurrencesOfString:@"\r" withString:@&quo ...
- Android手机令牌教程
Android手机令牌教程 "沉下心,你不再是小孩子了.多看书,学做人"-JeffLi告诉自己 Written In The Font 花了一个天一夜,搞了这个小东西-安卓手机令牌 ...
- 【移动开发】WIFI热点通信(二)
相信大家在上一篇中已经了解了Android中WIFI热点通信的相关操作知识(http://smallwoniu.blog.51cto.com/3911954/1536126),今天我们将在上一篇代码基 ...
- linux elinks命令
Elinks是基于文本的免费浏览器,用于Unix及基于Unix的系统.Elinks支持 HTTP,HTTP Cookies以及支持浏览Perl和Ruby脚本.也很好的支持选项卡浏览.最棒的是它支持鼠标 ...
- 【转】AFNetworking之于https认证
转自:http://www.cocoachina.com/ios/20161220/18393.html 写在开头: 本来这篇内容准备写在AFNetworking到底做了什么?(三)中的,但是因为我想 ...
- 《photoshop cc 新功能 生成图像资源》智能切图逆天啦!
作为一个前端工程师切图这个步骤是必不可少的,方式多种多样,有和切图工具的,也有是把要切的图层元素或者组直接新建保存成文件的,现在photoshop cc2015,可以让你轻松切图,摆脱繁琐的切图步骤. ...
- (转)SQL流程控制语句学习(二):begin…end if…else case
1.begin…end 语法: begin {sql语句或语句块} end 注意:begin 和end要成对使用 2.if…else 语法: if 布尔表达式 {sql语句或语句块} else 布 ...
- c# 预处理命令
在编译之前进行的处理. 预处理命令以符号“#”开头. #define 只能 定义符号 不能定义宏(#define PI 3.14 这是错的,在c#中没宏) #region #endregion #if ...
- SQL Server 2008 R2 的版本和组件
SQL Server 2008 R2 的版本和组件 SQL Server 2008 R2 其他版本 SQL Server 2008 SQL Server 2005 SQL Server 2012 ...
- php全局变量与局部变量中的使用
<?php //error handler function $v1=10; function f1() { //这里是把局部变成全局变量,也就是创建一个和外部同名的局部变量并通过“引用”的方式 ...