学Java的人都知道这是向对象的编程语言,从字面上理解,就是针对对象的一些操作,将具有某一特性的实体封装成一个类或者是将具有一定功能的方法,抽取出来封装成一个供外面调用的方法,然后通过new这个类或方法生成对象,最后通过对对象进行操作或者实现相应的功能。如将一个人封装成一个人的类,人有属性:性别,年龄,出生日期,家庭住址等,外界对人进行操作时,只能改变其属性值,但是不能改变属性的种类,这要更安全,而且当对人进行操作时,也是连带属性一起进行操作,这就是面向对象的编程。
所以java的设计思想一般离不开封装,如做一个项目,首先对项目的每个子系统进行封装,然后对子系统中的每个模块进行封装,最后对每个模块中的每个组件(组件:能完成某一特定功能的方法)进行封装,这里的子系统、模块、组件都是一个封装体,这样做不仅能使项目做起来更加有条理,更加安全,而且让后面的维护和更改更加方便、简单、易操作。
接口及相关机制最基本的作用:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。根据接口可以了解对象的交互界面,而不需要了解对象所属的类。
面向对象程序设计讲究“提高内聚,松散耦合”,那么不同的程序模块怎么相互访问呢,就是通过接口,也就是接口是各部分对外的统一外观。接口在Java程序设计中体现的思想就是封装隔离,因为接口只是描述一个统一的行为,所以开发人员在面向接口编程时并不关心具体的实现。
由以上讲到的接口的作用和基本思想可以看到,接口在面向对象的Java程序设计中占有举足轻重的地位。事实上在设计阶段最重要的任务之一就是设计出各部分的接口,然后通过接口的组合,形成程序的基本框架结构。
注:对于行为模型,优先选用接口,尽量少用抽象类
既为约束子类的功能,又要提供一些公共的功能,就选用抽象类
2、优先使用对象组合而非类继承
在程序设计中,继承应该当做一种资源来使用,而不应该随意使用。同时在继承的时候继承链不能拖得太长,一旦有一个程序挂了,后面一路挂。
3、分层
最典型的三层结构: 表现层 --> 逻辑层 --> 数据层
① 表现层功能:展示数据、人机交互、收集参数调用逻辑层。
② 逻辑层功能:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层。
③ 数据层功能:实现数据持久化、实现对象和持久化数据的双向映射。
4、层间交互的基本原则
① 表现层调用逻辑层,逻辑层调用数据层,不可以反过来。
② 层间交互也应该通过接口进行调用,以确保各层的实现独立变化。
★ 加强内聚,松散耦合
指一个类,能够在自己内部实现的功能就自己内部实现,不要去调其它类,尽量减少与其它类的依赖关系。
★ 好的封装性
不必对外开放的部分,一律不对外开放。如果在不确定属性权限的情况下,先把类的属性设成private,用的时候再开。
★ 类的粒度要合理
Java规范中建议,一个类的大小不要超过1000行,一个方法的大小不要超过100行。
★ 实现类不能依赖它的使用类
一个类依赖(使用或调用)了另一个类,那么在另一个类中就不能反过来再依赖当前类。
★ 应考虑灵活性,也就是可配置、可维护
用户的需求是会不断改变的,后期的修改与维护是不可避免的,因此软件开发时就要考虑灵活性。
★ 要考虑性能,考虑可伸缩性
要权衡速度与资源耗费之间的关系,要考虑软件能够在一定范围内可伸缩。
★ 要考虑今后可能的变化,也就是可扩展性
可扩展性指该应用程序能够很方便地添加新的功能。
★ 要考虑合理的复用
要尽量考虑复用,但也不能光考虑复用,不能把其它的设计原则都丢掉了。
★ 要合理的考虑接口和抽象类的使用
优先使用接口,如果既想约束实现类的行为,又要为实现类提供公共的功能时,采用抽象类。
★ 尽量减少类与协作类的交互次数和交互信息的量
类之间不要反复地调用,不要每次传很多的数据。
★ 父类不应知道子类的信息,子类必须知道父类的信息
★ 访问对象必须通过接口,不能绕过接口直接去访问
功能:图形界面的个人信息管理系统,实现增、删、改、查等功能,而且将相关信息存在文件中。
设计思想:每个功能一个模块,也就是一个封装体。
表现层:
AddressApp.java(主界面)
设置界面的大体框架,如菜单,和面板,标题等
ListPanel.java
/*
* AddressApp.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu;
import javax.swing.JFrame;
import cn.hncu.ui.ListPanel;
/**
*
* @author __USER__
*/
public class AddressApp extends JFrame {
/** Creates new form AddressApp */
public AddressApp() {
initComponents();
this.setContentPane(new ListPanel(this));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
//
private void initComponents() {
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem();
saveAsMenuItem = new javax.swing.JMenuItem();
exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu();
cutMenuItem = new javax.swing.JMenuItem();
copyMenuItem = new javax.swing.JMenuItem();
pasteMenuItem = new javax.swing.JMenuItem();
deleteMenuItem = new javax.swing.JMenuItem();
helpMenu = new javax.swing.JMenu();
contentsMenuItem = new javax.swing.JMenuItem();
aboutMenuItem = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(800, 600));
getContentPane().setLayout(null);
fileMenu.setText("File");
openMenuItem.setText("Open");
fileMenu.add(openMenuItem);
saveMenuItem.setText("Save");
fileMenu.add(saveMenuItem);
saveAsMenuItem.setText("Save As ...");
fileMenu.add(saveAsMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setText("Edit");
cutMenuItem.setText("Cut");
editMenu.add(cutMenuItem);
copyMenuItem.setText("Copy");
editMenu.add(copyMenuItem);
pasteMenuItem.setText("Paste");
editMenu.add(pasteMenuItem);
deleteMenuItem.setText("Delete");
editMenu.add(deleteMenuItem);
menuBar.add(editMenu);
helpMenu.setText("Help");
contentsMenuItem.setText("Contents");
helpMenu.add(contentsMenuItem);
aboutMenuItem.setText("About");
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
pack();
}//
//GEN-END:initComponents
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
System.exit(0);
}//GEN-LAST:event_exitMenuItemActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AddressApp().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JMenuItem contentsMenuItem;
private javax.swing.JMenuItem copyMenuItem;
private javax.swing.JMenuItem cutMenuItem;
private javax.swing.JMenuItem deleteMenuItem;
private javax.swing.JMenu editMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenuItem openMenuItem;
private javax.swing.JMenuItem pasteMenuItem;
private javax.swing.JMenuItem saveAsMenuItem;
private javax.swing.JMenuItem saveMenuItem;
// End of variables declaration//GEN-END:variables
}
AddPanel.java
/*
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import javax.swing.JFrame;
import cn.hncu.business.MySet;
/**
*
* @author __USER__
*/
public class ListPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form ListPanel */
public ListPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
this.initComponents();
myInitData();
}
public ListPanel(JFrame mainFrame, Object objs[]) {
this.mainFrame = mainFrame;
this.initComponents();
jListAddress.setListData(objs);
}
private void myInitData() {
MySet set = new MySet();
Object objs[] = set.getAll();
jListAddress.setListData(objs);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
//
private void initComponents() {
queryBtn = new javax.swing.JButton();
addBtn = new javax.swing.JButton();
updateBtn = new javax.swing.JButton();
deleteBtn = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jListAddress = new javax.swing.JList();
setPreferredSize(new java.awt.Dimension(800, 600));
setLayout(null);
queryBtn.setText("\u67e5\u8be2\u64cd\u4f5c");
queryBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
queryBtnActionPerformed(evt);
}
});
add(queryBtn);
queryBtn.setBounds(510, 330, 93, 29);
addBtn.setText("\u6dfb\u52a0\u64cd\u4f5c");
addBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addBtnActionPerformed(evt);
}
});
add(addBtn);
addBtn.setBounds(140, 330, 95, 29);
updateBtn.setText("\u4fee\u6539\u64cd\u4f5c");
updateBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateBtnActionPerformed(evt);
}
});
add(updateBtn);
updateBtn.setBounds(390, 330, 93, 29);
deleteBtn.setText("\u5220\u9664\u64cd\u4f5c");
deleteBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteBtnActionPerformed(evt);
}
});
add(deleteBtn);
deleteBtn.setBounds(260, 330, 93, 29);
jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
jLabel1.setText("\u6211\u7684\u5730\u5740\u672c");
add(jLabel1);
jLabel1.setBounds(310, 70, 150, 40);
jListAddress.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4",
"Item 5" };
public int getSize() {
return strings.length;
}
public Object getElementAt(int i) {
return strings[i];
}
});
jScrollPane1.setViewportView(jListAddress);
add(jScrollPane1);
jScrollPane1.setBounds(250, 130, 250, 178);
}//
//GEN-END:initComponents
private void queryBtnActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new QueryPanel(mainFrame));
mainFrame.validate();
}
private void updateBtnActionPerformed(java.awt.event.ActionEvent evt) {
String str = (String) (jListAddress.getSelectedValue());
mainFrame.setContentPane(new UpDatePanel(mainFrame, str));
mainFrame.validate();
}
private void deleteBtnActionPerformed(java.awt.event.ActionEvent evt) {
String str = (String) (jListAddress.getSelectedValue());
mainFrame.setContentPane(new DeletePanel(mainFrame, str));
mainFrame.validate();
}
private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new AddPanel(mainFrame));
mainFrame.validate();
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton addBtn;
private javax.swing.JButton deleteBtn;
private javax.swing.JLabel jLabel1;
private javax.swing.JList jListAddress;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton queryBtn;
private javax.swing.JButton updateBtn;
// End of variables declaration//GEN-END:variables
}
DeletePanel.java
/*
* AddPanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.business.MySet;
/**
*
* @author __USER__
*/
public class AddPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form AddPanel */
public AddPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
//
private void initComponents() {
jLabelAddr = new javax.swing.JLabel();
jLabelName1 = new javax.swing.JLabel();
jLabelAge = new javax.swing.JLabel();
tfdAddr = new javax.swing.JTextField();
tfdName = new javax.swing.JTextField();
tfdAge = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
btnBack = new javax.swing.JButton();
btnAdd = new javax.swing.JButton();
setLayout(null);
jLabelAddr.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAddr.setText("\u5730\u5740");
add(jLabelAddr);
jLabelAddr.setBounds(220, 220, 70, 40);
jLabelName1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelName1.setText("\u59d3\u540d");
add(jLabelName1);
jLabelName1.setBounds(220, 140, 70, 40);
jLabelAge.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAge.setText("\u5e74\u9f84");
add(jLabelAge);
jLabelAge.setBounds(220, 180, 70, 40);
add(tfdAddr);
tfdAddr.setBounds(290, 230, 220, 26);
add(tfdName);
tfdName.setBounds(290, 150, 90, 26);
add(tfdAge);
tfdAge.setBounds(290, 190, 90, 26);
jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
jLabel1.setText("\u6dfb\u52a0\u9762\u677f...");
add(jLabel1);
jLabel1.setBounds(320, 80, 120, 40);
btnBack.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(450, 330, 95, 33);
btnAdd.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnAdd.setText("\u6dfb\u52a0");
btnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddActionPerformed(evt);
}
});
add(btnAdd);
btnAdd.setBounds(280, 330, 90, 33);
}//
//GEN-END:initComponents
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
}
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
String name = tfdName.getText();
String addr = tfdAddr.getText();
String ageStr = tfdAge.getText();
try {
int ageInt = Integer.parseInt(ageStr);
} catch (NumberFormatException e) {
e.printStackTrace();
}
String str = name + " , " + ageStr + " , " + addr;
boolean flag = false;
MySet set = new MySet();
flag = set.add(str);
if (flag) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
} else {
JOptionPane.showMessageDialog(this, "添加失败");
}
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnAdd;
private javax.swing.JButton btnBack;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabelAddr;
private javax.swing.JLabel jLabelAge;
private javax.swing.JLabel jLabelName1;
private javax.swing.JTextField tfdAddr;
private javax.swing.JTextField tfdAge;
private javax.swing.JTextField tfdName;
// End of variables declaration//GEN-END:variables
}
删除界面,选择需要删除的用户点击删除按钮
QueryPanel.java
/*
* DeletePanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.business.MySet;
/**
*
* @author __USER__
*/
public class DeletePanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
String str = "";
/** Creates new form DeletePanel */
public DeletePanel(JFrame mainFrame, String str) {
this.str = str;
this.mainFrame = mainFrame;
initComponents();
String strs[] = str.split(",");
tfdName.setText(strs[0]);
tfdName.setEditable(false);
tfdAge.setText(strs[1]);
tfdAge.setEditable(false);
tfdAddr.setText(strs[2]);
tfdAddr.setEditable(false);
}
//GEN-BEGIN:initComponents
//
private void initComponents() {
jLabelAddr = new javax.swing.JLabel();
jLabelName = new javax.swing.JLabel();
jLabelAge = new javax.swing.JLabel();
tfdAddr = new javax.swing.JTextField();
tfdName = new javax.swing.JTextField();
tfdAge = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
btnBack = new javax.swing.JButton();
btnDelete = new javax.swing.JButton();
setLayout(null);
jLabelAddr.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAddr.setText("\u5730\u5740");
add(jLabelAddr);
jLabelAddr.setBounds(220, 230, 70, 40);
jLabelName.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelName.setText("\u59d3\u540d");
add(jLabelName);
jLabelName.setBounds(220, 150, 70, 40);
jLabelAge.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAge.setText("\u5e74\u9f84");
add(jLabelAge);
jLabelAge.setBounds(220, 190, 70, 40);
add(tfdAddr);
tfdAddr.setBounds(290, 240, 220, 26);
add(tfdName);
tfdName.setBounds(290, 160, 90, 26);
add(tfdAge);
tfdAge.setBounds(290, 200, 90, 26);
jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
jLabel1.setText("\u5220\u9664\u9762\u677f...");
add(jLabel1);
jLabel1.setBounds(320, 90, 120, 40);
btnBack.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(450, 340, 95, 33);
btnDelete.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnDelete.setText("\u5220\u9664");
btnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDeleteActionPerformed(evt);
}
});
add(btnDelete);
btnDelete.setBounds(280, 340, 90, 33);
}//
//GEN-END:initComponents
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
MySet set = new MySet();
boolean flag = set.delete(str);
if (flag) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
} else {
JOptionPane.showMessageDialog(this, "添加失败");
}
}
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnDelete;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabelAddr;
private javax.swing.JLabel jLabelAge;
private javax.swing.JLabel jLabelName;
private javax.swing.JTextField tfdAddr;
private javax.swing.JTextField tfdAge;
private javax.swing.JTextField tfdName;
// End of variables declaration//GEN-END:variables
}
查询界面
UpDatePanel.java
/*
* QueryPanel.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.business.MySet;
/**
*
* @author __USER__
*/
public class QueryPanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
/** Creates new form QueryPanel */
public QueryPanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
initComponents();
}
//GEN-BEGIN:initComponents
//
private void initComponents() {
jLabelAddr = new javax.swing.JLabel();
jLabelName1 = new javax.swing.JLabel();
jLabelAge = new javax.swing.JLabel();
tfdAddr = new javax.swing.JTextField();
tfdName = new javax.swing.JTextField();
tfdAge = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
btnBack = new javax.swing.JButton();
btnQuery = new javax.swing.JButton();
setLayout(null);
jLabelAddr.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAddr.setText("\u5730\u5740");
add(jLabelAddr);
jLabelAddr.setBounds(230, 230, 70, 40);
jLabelName1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelName1.setText("\u59d3\u540d");
add(jLabelName1);
jLabelName1.setBounds(230, 150, 70, 40);
jLabelAge.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAge.setText("\u5e74\u9f84");
add(jLabelAge);
jLabelAge.setBounds(230, 190, 70, 40);
add(tfdAddr);
tfdAddr.setBounds(300, 240, 220, 26);
add(tfdName);
tfdName.setBounds(300, 160, 90, 26);
add(tfdAge);
tfdAge.setBounds(300, 200, 90, 26);
jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
jLabel1.setText("\u67e5\u8be2\u9762\u677f...");
add(jLabel1);
jLabel1.setBounds(330, 90, 120, 40);
btnBack.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(460, 340, 95, 33);
btnQuery.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnQuery.setText("\u67e5\u8be2");
btnQuery.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnQueryActionPerformed(evt);
}
});
add(btnQuery);
btnQuery.setBounds(290, 340, 90, 33);
}//
//GEN-END:initComponents
private void btnQueryActionPerformed(java.awt.event.ActionEvent evt) {
String name = tfdName.getText();
String addr = tfdAddr.getText();
String ageStr = tfdAge.getText();
MySet set = new MySet();
try {
Object obj[] = set.Query(name, ageStr, addr);
mainFrame.setContentPane(new ListPanel(mainFrame, obj));
mainFrame.validate();
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "无该联系人");
}
}
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnQuery;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabelAddr;
private javax.swing.JLabel jLabelAge;
private javax.swing.JLabel jLabelName1;
private javax.swing.JTextField tfdAddr;
private javax.swing.JTextField tfdAge;
private javax.swing.JTextField tfdName;
// End of variables declaration//GEN-END:variables
}
修改界面
/*
* UpDate.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import cn.hncu.business.MySet;
/**
*
* @author __USER__
*/
public class UpDatePanel extends javax.swing.JPanel {
private JFrame mainFrame = null;
private String oldStr = "";
/** Creates new form UpDate */
public UpDatePanel(JFrame mainFrame, String oldStr) {
this.mainFrame = mainFrame;
this.oldStr = oldStr;
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
//
private void initComponents() {
jLabelAddr = new javax.swing.JLabel();
jLabelName1 = new javax.swing.JLabel();
jLabelAge = new javax.swing.JLabel();
tfdAddr = new javax.swing.JTextField();
tfdName = new javax.swing.JTextField();
tfdAge = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
btnBack = new javax.swing.JButton();
btnUpdate = new javax.swing.JButton();
setLayout(null);
jLabelAddr.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAddr.setText("\u5730\u5740");
add(jLabelAddr);
jLabelAddr.setBounds(250, 230, 70, 40);
jLabelName1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelName1.setText("\u59d3\u540d");
add(jLabelName1);
jLabelName1.setBounds(250, 150, 70, 40);
jLabelAge.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 14));
jLabelAge.setText("\u5e74\u9f84");
add(jLabelAge);
jLabelAge.setBounds(250, 190, 70, 40);
add(tfdAddr);
tfdAddr.setBounds(320, 240, 220, 26);
add(tfdName);
tfdName.setBounds(320, 160, 90, 26);
tfdAge.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tfdAgeActionPerformed(evt);
}
});
add(tfdAge);
tfdAge.setBounds(320, 200, 90, 26);
jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
jLabel1.setText("\u4fee\u6539\u9762\u677f...");
add(jLabel1);
jLabel1.setBounds(350, 90, 120, 40);
btnBack.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnBack.setText("\u8fd4\u56de");
btnBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBackActionPerformed(evt);
}
});
add(btnBack);
btnBack.setBounds(480, 340, 95, 33);
btnUpdate.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
btnUpdate.setText("\u4fee\u6539");
btnUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpdateActionPerformed(evt);
}
});
add(btnUpdate);
btnUpdate.setBounds(310, 340, 90, 33);
}//
//GEN-END:initComponents
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {
String name = tfdName.getText();
String addr = tfdAddr.getText();
String ageStr = tfdAge.getText();
String newStr = name + " , " + ageStr + " , " + addr;
boolean flag = false;
MySet set = new MySet();
flag = set.upDate(oldStr, newStr);
if (flag) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
} else {
JOptionPane.showMessageDialog(this, "修改失败");
}
}
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
mainFrame.setContentPane(new ListPanel(mainFrame));
mainFrame.validate();
}
private void tfdAgeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton btnBack;
private javax.swing.JButton btnUpdate;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabelAddr;
private javax.swing.JLabel jLabelAge;
private javax.swing.JLabel jLabelName1;
private javax.swing.JTextField tfdAddr;
private javax.swing.JTextField tfdAge;
private javax.swing.JTextField tfdName;
// End of variables declaration//GEN-END:variables
}
逻辑层(business层)
MySet.java
package cn.hncu.business;
import javax.swing.JOptionPane;
import cn.hncu.dao.DaoFile;
public class MySet {
final String FileName="dao.data";
public static Object objs[]=new Object[0];
public boolean contains(Object obj){
for (Object o:objs){
if (o.equals(obj)){
return true;
}
}
return false;
}
public boolean add(Object o){
if (contains(o)){
return false;
}
Object temp[]=new Object[objs.length+1];
System.arraycopy(objs, 0, temp, 0, objs.length);
temp[objs.length]=o;
objs=temp;
boolean result=save();
return result;
}
public boolean delete(Object obj){
if (!contains(obj)){
return false;
}
Object tempObj[]=new Object[objs.length-1];
int k=0;
for (int i=0;i0){
if (!strs[0].contains(nameStr)){
continue;
}
}
if (ageStr!=null&&ageStr.trim().length()>0){
if (!strs[1].equals(ageStr)){
continue;
}
}
if (addrStr!=null&&addrStr.trim().length()>0){
if (!strs[2].contains(addrStr)){
continue;
}
}
tempObj[k++]=objs[i];
}
Object tempObj2[]=new Object[k];
for (int i=0;i数据层
DaoFile.java
package cn.hncu.dao;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class DaoFile {
public static Object[] read(String fileName){
ArrayList