Java 写的通讯录管理系统 带详细设计报告 功能非常齐全 完整源码

该文章介绍了一个基于JavaSwing开发的贪吃蛇系统,系统具备完善的用户管理和备忘录管理功能,使用SQLSERVER作为数据库。系统设计遵循模块化原则,注重灵活性、可靠性和经济性,提供完整源码并附带详细设计文档。

今天为大家分享一个java语言编写的贪吃蛇系统,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为SQL SERVER。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,下载。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。

系统主要功能

性能需求

系统结构化程序设计是讲一个完整的大的系统划分成若干个合适的小的功能,每个具体的功能模块相对独立,系统设计需要遵循以下一些原则。

  1. 系统性。从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。

  1. 灵活性

系统应具有较好的开放性和结构的可变性,采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据偶合,使各子系统间的数据依赖减至最低限度

  1. 可靠性

可靠性是指系统抵御外界干扰的能力及受外界干扰时的恢复能力。一个成功的管理信息系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力等。

4 经济性

经济性指在满足系统需求的前提下,尽可能减小系统的开销。一方面,在硬件投资上不能盲目追求技术上的先进,而应以满足应用需要为前提;另一方面,系统设计中应尽量避免不必要的复杂化,各模块应尽量简洁,以便缩短处理流程、减少处理费用

程序启动

1 下载程序源码,解压后导入到ECLIPSE或者IDEA。导入相关的JAR,然后运行Main.java文

件,然后程序进入到系统登陆界面

2 导入数据库文件到SQL SERVER数据库中

主要模块

经过项目小组的调研和讨论,系统分为两个主要模块,普通用户模块和系统管理员模块。普通用的主要的功能是:

  1. 注册

  1. 登录

  1. 管理自己的通讯录

  1. 管理自己的备忘录

管理员的主要的功能是

  1. 用户管理。用户的新增,删除,修改。

  1. 分类管理。分类的新增,删除,修改。

  1. 备忘录管理。分类的新增,删除,修改。

运行效果

关键代码

package com.zzk.frame;

import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JScrollPane;
import javax.swing.JList;

import com.zzk.dao.MemoTypeDao;
import com.zzk.dao.SortDao;
import com.zzk.list.button.MemoTypeListItemButton;
import com.zzk.list.button.SortListItemButton;
import com.zzk.panel.AddMemoPanel;
import com.zzk.panel.AddMessagePanel;
import com.zzk.panel.EditQueryMemoPanel;
import com.zzk.panel.EditQueryMessagePanel;
import com.zzk.tool.SaveStateTool;
import java.awt.Dimension;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.ImageIcon;

/**
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 *
 */
public class MainFrame extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JToolBar jToolBar = null;
    private JButton jButton = null;
    private JButton jButton1 = null;
    private JSplitPane jSplitPane = null;
    private JTabbedPane jTabbedPane = null;
    private JScrollPane jScrollPane = null;
    private JScrollPane jScrollPane1 = null;
    private JPanel jPanel1 = null;
    private JToolBar jToolBar1 = null;
    private JButton jButton3 = null;
    private JButton jButton4 = null;
    private JList lst_sort = null;
    private JList lst_memo = null;
    private AddMessagePanel messagePanel = null;
    private AddMemoPanel memoPanel = null;
    private EditQueryMessagePanel editQueryMessagePanel = null;
    private EditQueryMemoPanel editQueryMemoPanel = null;
    private static Map sortMap = null;
    private static Map typeMap = null;
    private JButton jButton2 = null;
    private JButton jButton5 = null;
    private JButton jButton6 = null;
    private JButton jButton7 = null;
    private JButton jButton8 = null;
    
    
    /**
     * This method initializes jToolBar    
     *     
     * @return javax.swing.JToolBar    
     */
    private JToolBar getJToolBar() {
        if (jToolBar == null) {
            jToolBar = new JToolBar();
            jToolBar.add(getJButton());
            jToolBar.addSeparator();
            jToolBar.add(getJButton1());
            jToolBar.addSeparator();
            jToolBar.add(getJButton7());
            jToolBar.addSeparator();
            jToolBar.add(getJButton8());
            jToolBar.addSeparator();
            jToolBar.add(getJButton6());
        }
        return jToolBar;
    }

    /**
     * This method initializes jButton    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton() {
        if (jButton == null) {
            jButton = new JButton();
            jButton.setText("");
            jButton.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_03.gif")));
            jButton.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_03.gif")));
            jButton.setToolTipText("添加分类");
            jButton.setMargin(new Insets(0, 0, 0, 0));
            jButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(0);
                    AddSortFrame thisClass = new AddSortFrame();
                    thisClass.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    Toolkit tookit = thisClass.getToolkit();
                    Dimension dm = tookit.getScreenSize();
                    thisClass.setLocation((dm.width - thisClass.getWidth())/2, (dm.height-thisClass.getHeight())/2);
                    thisClass.setVisible(true);
                }
            });
        }
        return jButton;
    }

    /**
     * This method initializes jButton1    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton1() {
        if (jButton1 == null) {
            jButton1 = new JButton();
            jButton1.setText("");
            jButton1.setToolTipText("添加备忘录");
            jButton1.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_05.gif")));
            jButton1.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_05.gif")));
            jButton1.setMargin(new Insets(0, 0, 0, 0));
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(1);
                    AddMemoTypeFrame thisClass = new AddMemoTypeFrame();
                    thisClass.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    Toolkit tookit = thisClass.getToolkit();
                    Dimension dm = tookit.getScreenSize();
                    thisClass.setLocation((dm.width - thisClass.getWidth())/2, (dm.height-thisClass.getHeight())/2);
                    thisClass.setVisible(true);
                }
            });
        }
        return jButton1;
    }

    /**
     * This method initializes jSplitPane    
     *     
     * @return javax.swing.JSplitPane    
     */
    private JSplitPane getJSplitPane() {
        if (jSplitPane == null) {
            jSplitPane = new JSplitPane();
            jSplitPane.setDividerLocation(120);
            jSplitPane.setRightComponent(getJPanel1());
            jSplitPane.setLeftComponent(getJTabbedPane());
        }
        return jSplitPane;
    }

    /**
     * This method initializes jTabbedPane    
     *     
     * @return javax.swing.JTabbedPane    
     */
    private JTabbedPane getJTabbedPane() {
        if (jTabbedPane == null) {
            jTabbedPane = new JTabbedPane();
            jTabbedPane.setTabPlacement(JTabbedPane.TOP);
            jTabbedPane.addTab("分类", null, getJScrollPane(), null);
            jTabbedPane.addTab("备忘录", null, getJScrollPane1(), null);
            jTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() {
                public void stateChanged(javax.swing.event.ChangeEvent e) {
                    if (jTabbedPane.getSelectedIndex()==0){
                        jPanel1.remove(getEditQueryMemoPanel());
                        jPanel1.remove(getMessagePanel());
                        jPanel1.remove(getMemoPanel());
                        jPanel1.add(getEditQueryMessagePanel(),BorderLayout.CENTER);
                        jSplitPane.setDividerLocation(121);
                        jSplitPane.setDividerLocation(120);
                        jPanel1.validate();
                    }else{
                        
                        jPanel1.remove(getMemoPanel());
                        jPanel1.remove(getEditQueryMessagePanel());
                        jPanel1.remove(getMessagePanel());
                        jPanel1.add(getEditQueryMemoPanel(),BorderLayout.CENTER);
                        jSplitPane.setDividerLocation(121);    // 改变分隔条的位置到121处
                        jSplitPane.setDividerLocation(120);    // 改变分隔条的位置到120处,即恢复到原来位置
                        jPanel1.validate();
                        
                    }
                }
            });
        }
        return jTabbedPane;
    }

    /**
     * This method initializes jScrollPane    
     *     
     * @return javax.swing.JScrollPane    
     */
    private JScrollPane getJScrollPane() {
        if (jScrollPane == null) {
            jScrollPane = new JScrollPane();
            jScrollPane.setViewportView(getLst_sort());
        }
        return jScrollPane;
    }

    /**
     * This method initializes jScrollPane1    
     *     
     * @return javax.swing.JScrollPane    
     */
    private JScrollPane getJScrollPane1() {
        if (jScrollPane1 == null) {
            jScrollPane1 = new JScrollPane();
            jScrollPane1.setViewportView(getLst_memo());
        }
        return jScrollPane1;
    }

    /**
     * This method initializes jPanel1    
     *     
     * @return javax.swing.JPanel    
     */
    private JPanel getJPanel1() {
        if (jPanel1 == null) {
            jPanel1 = new JPanel();
            jPanel1.setLayout(new BorderLayout());
            jPanel1.add(getJToolBar1(), BorderLayout.NORTH);
            jPanel1.add(getMessagePanel(),BorderLayout.CENTER);
        }
        return jPanel1;
    }

    /**
     * This method initializes jToolBar1    
     *     
     * @return javax.swing.JToolBar    
     */
    private JToolBar getJToolBar1() {
        if (jToolBar1 == null) {
            jToolBar1 = new JToolBar();
            jToolBar1.add(getJButton3());
            jToolBar1.add(getJButton2());
            jToolBar1.addSeparator();
            jToolBar1.add(getJButton4());
            jToolBar1.add(getJButton5());
        }
        return jToolBar1;
    }

    /**
     * This method initializes jButton3    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton3() {
        if (jButton3 == null) {
            jButton3 = new JButton();
            jButton3.setText("");
            jButton3.setToolTipText("添加联系人信息");
            jButton3.setMargin(new Insets(0, 0, 0, 0));
            jButton3.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_18.gif")));
            jButton3.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_18.gif")));
            jButton3.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(0);
                    jPanel1.remove(getEditQueryMemoPanel());
                    jPanel1.remove(getEditQueryMessagePanel());
                    jPanel1.remove(getMemoPanel());
                    jPanel1.add(getMessagePanel(),BorderLayout.CENTER);
                    jSplitPane.setDividerLocation(121);
                    jSplitPane.setDividerLocation(120);
                    jPanel1.validate();
                    SaveStateTool.setMessageEditAndQueryClicked(false);
                }
            });
        }
        return jButton3;
    }

    /**
     * This method initializes jButton4    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton4() {
        if (jButton4 == null) {
            jButton4 = new JButton();
            jButton4.setText("");
            jButton4.setMargin(new Insets(0, 0, 0, 0));
            jButton4.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_22.gif")));
            jButton4.setToolTipText("添加备忘录信息");
            jButton4.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_22.gif")));
            jButton4.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(1);
                    jPanel1.remove(getEditQueryMemoPanel());
                    jPanel1.remove(getEditQueryMessagePanel());
                    jPanel1.remove(getMessagePanel());
                    jPanel1.add(getMemoPanel(),BorderLayout.CENTER);
                    jSplitPane.setDividerLocation(121);
                    jSplitPane.setDividerLocation(120);
                    jPanel1.validate();
                    SaveStateTool.setMemoEditAndQueryClicked(false);
                }
            });
        }
        return jButton4;
    }

    /**
     * This method initializes lst_sort    
     *     
     * @return javax.swing.JList    
     */
    private JList getLst_sort() {
        if (lst_sort == null) {
            lst_sort = new JList();
            lst_sort.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    if (lst_sort.getSelectedIndex()>=0){
                        String sortName = (String)lst_sort.getSelectedValue();
                        int currentSortId=SortDao.queryCurrentSortId(sortName);
                        SaveStateTool.setSingleSortName(sortName);
                        SaveStateTool.setCurrentSingleSortId(currentSortId);
                        SaveStateTool.setMessageEditAndQueryClicked(true);
                        getEditQueryMessagePanel().requestFocus();
                    }
                }
            });
        }
        return lst_sort;
    }

    /**
     * This method initializes lst_memo    
     *     
     * @return javax.swing.JList    
     */
    private JList getLst_memo() {
        if (lst_memo == null) {
            lst_memo = new JList();
            lst_memo.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    if (lst_memo.getSelectedIndex()>=0){
                        String typeName = (String)lst_memo.getSelectedValue();
                        int currentTypeId=MemoTypeDao.queryCurrentTypeId(typeName);
                        SaveStateTool.setSingleMemoTypeName(typeName);
                        SaveStateTool.setCurrentSingleMemoTypeId(currentTypeId);
                        SaveStateTool.setMemoEditAndQueryClicked(true);
                        getEditQueryMemoPanel().requestFocus();
                    }
                }
            });
        }
        return lst_memo;
    }

    /**
     * This method initializes jButton2    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton2() {
        if (jButton2 == null) {
            jButton2 = new JButton();
            jButton2.setText("");
            jButton2.setMargin(new Insets(0, 0, 0, 0));
            jButton2.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_20.gif")));
            jButton2.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_20.gif")));
            jButton2.setToolTipText("查询和编辑联系人信息");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(0);
                    SaveStateTool.setMessageEditAndQueryClicked(true);
                    jPanel1.remove(getEditQueryMessagePanel());
                    jPanel1.remove(getMessagePanel());
                    jPanel1.remove(getMemoPanel());
                    jPanel1.remove(getEditQueryMemoPanel());
                    jPanel1.add(getEditQueryMessagePanel(),BorderLayout.CENTER);
                    jSplitPane.setDividerLocation(121);
                    jSplitPane.setDividerLocation(120);
                    jPanel1.validate();
                    SaveStateTool.setMessageEditAndQueryClicked(true);
                    getEditQueryMessagePanel().requestFocus();
                    
                }
            });
        }
        return jButton2;
    }

    /**
     * This method initializes jButton5    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton5() {
        if (jButton5 == null) {
            jButton5 = new JButton();
            jButton5.setText("");
            jButton5.setMargin(new Insets(0, 0, 0, 0));
            jButton5.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_24.gif")));
            jButton5.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_24.gif")));
            jButton5.setToolTipText("查询和编辑备忘录信息");
            jButton5.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    jTabbedPane.setSelectedIndex(1);
                    SaveStateTool.setMemoEditAndQueryClicked(true);
                    jPanel1.remove(getMessagePanel());
                    jPanel1.remove(getMemoPanel());
                    jPanel1.remove(getEditQueryMessagePanel());
                    jPanel1.add(getEditQueryMemoPanel(),BorderLayout.CENTER);
                    jSplitPane.setDividerLocation(121);
                    jSplitPane.setDividerLocation(120);
                    jPanel1.validate();
                    getEditQueryMemoPanel().requestFocus();
                }
            });
        }
        return jButton5;
    }

    /**
     * This method initializes jButton6    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton6() {
        if (jButton6 == null) {
            jButton6 = new JButton();
            jButton6.setText("");
            jButton6.setToolTipText("退出系统");
            jButton6.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_11.gif")));
            jButton6.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_11.gif")));
            jButton6.setMargin(new Insets(0, 0, 0, 0));
            jButton6.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    int flag = JOptionPane.showConfirmDialog(null, "确实要退出系统吗?","确认对话框",JOptionPane.YES_NO_OPTION);
                    if (flag == JOptionPane.YES_OPTION){
                        System.exit(0);
                    }
                }
            });
        }
        return jButton6;
    }

    /**
     * This method initializes jButton7    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton7() {
        if (jButton7 == null) {
            jButton7 = new JButton();
            jButton7.setText("");
            jButton7.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_07.gif")));
            jButton7.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_07.gif")));
            jButton7.setToolTipText("添加用户");
            jButton7.setMargin(new Insets(0, 0, 0, 0));
            jButton7.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    AddUserFrame thisClass = new AddUserFrame();
                    thisClass.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    Toolkit tookit = thisClass.getToolkit();
                    Dimension dm = tookit.getScreenSize();
                    thisClass.setLocation((dm.width - thisClass.getWidth())/2, (dm.height-thisClass.getHeight())/2);
                    thisClass.setVisible(true);
                }
            });
        }
        return jButton7;
    }

    /**
     * This method initializes jButton8    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton8() {
        if (jButton8 == null) {
            jButton8 = new JButton();
            jButton8.setText("");
            jButton8.setIcon(new ImageIcon(getClass().getResource("/image/btn_icon/1_09.gif")));
            jButton8.setRolloverIcon(new ImageIcon(getClass().getResource("/image/btn_icon/2_09.gif")));
            jButton8.setToolTipText("修改密码");
            jButton8.setMargin(new Insets(0, 0, 0, 0));
            jButton8.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    UpdatePasswordFrame thisClass = new UpdatePasswordFrame();
                    thisClass.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    Toolkit tookit = thisClass.getToolkit();
                    Dimension dm = tookit.getScreenSize();
                    thisClass.setLocation((dm.width - thisClass.getWidth())/2, (dm.height-thisClass.getHeight())/2);
                    thisClass.setVisible(true);
                }
            });
        }
        return jButton8;
    }


    /**
     * This is the default constructor
     */
    public MainFrame() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(860, 520);
        this.setContentPane(getJContentPane());
        this.setTitle("讯友桌面通讯录");
        this.setResizable(false);
        
        //////
        
        DefaultListModel sortModel = new DefaultListModel();
        lst_sort.setModel(sortModel);
        SortListItemButton sort=new SortListItemButton();
        lst_sort.setCellRenderer(sort);
        
        DefaultListModel memoTypeModel = new DefaultListModel();
        lst_memo.setModel(memoTypeModel);
        MemoTypeListItemButton memoType=new MemoTypeListItemButton();
        lst_memo.setCellRenderer(memoType);
        this.addWindowListener(new java.awt.event.WindowAdapter() {   
            public void windowClosing(java.awt.event.WindowEvent e) {    
                int flag = JOptionPane.showConfirmDialog(null, "确实要退出系统吗?","确认对话框",JOptionPane.YES_NO_OPTION);
                if (flag == JOptionPane.YES_OPTION){
                    System.exit(0);
                }
            }   
            /* 
             * 主窗体成为活动窗体的事件
             */
            public void windowActivated(java.awt.event.WindowEvent e) {
                Map sortNameMap = SortDao.querySortNameAndID();
                DefaultListModel sortModel = (DefaultListModel) lst_sort
                        .getModel();
                sortModel.removeAllElements();
                Set set = sortNameMap.keySet();
                Iterator it = set.iterator();
                while (it.hasNext()) {
                    sortModel.addElement((String) it.next());
                }
                lst_sort.setModel(sortModel);
                SortListItemButton sortCellRender = new SortListItemButton();
                lst_sort.setCellRenderer(sortCellRender);
                Map memoTypeNameMap = MemoTypeDao.queryMemoTypeAndID();
                DefaultListModel memoTypeModel = (DefaultListModel) lst_memo
                        .getModel();
                memoTypeModel.removeAllElements();
                Set set1 = memoTypeNameMap.keySet();
                Iterator it1 = set1.iterator();
                while (it1.hasNext()) {
                    memoTypeModel.addElement((String) it1.next());
                }
                lst_memo.setModel(memoTypeModel);
                MemoTypeListItemButton memoCellRender = new MemoTypeListItemButton();
                lst_memo.setCellRenderer(memoCellRender);
            }
        });
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getJToolBar(), BorderLayout.NORTH);
            jContentPane.add(getJSplitPane(), BorderLayout.CENTER);
        }
        return jContentPane;
    }


    /**
     * @return the messagePanel
     */
    public AddMessagePanel getMessagePanel() {
        if (messagePanel == null) {
            messagePanel = new AddMessagePanel();
        }
        return messagePanel;
    }

    /**
     * @return the memoPanel
     */
    public AddMemoPanel getMemoPanel() {
        if (memoPanel == null) {
            memoPanel = new AddMemoPanel();
        }
        return memoPanel;
    }


    /**
     * @return the sortMap
     */
    public static Map getSortMap() {
        if (sortMap == null){
            sortMap = new HashMap();
        }
        return sortMap;
    }


    /**
     * @return the typeMap
     */
    public static Map getTypeMap() {
        if (typeMap == null){
            typeMap = new HashMap();
        }
        return typeMap;
    }


    /**
     * @return the editQueryMessagePanel
     */
    public EditQueryMessagePanel getEditQueryMessagePanel() {
        if (editQueryMessagePanel == null){
            editQueryMessagePanel = new EditQueryMessagePanel();
        }
        return editQueryMessagePanel;
    }


    /**
     * @return the editQueryMemoPanel
     */
    public EditQueryMemoPanel getEditQueryMemoPanel() {
        if (editQueryMemoPanel == null){
            editQueryMemoPanel = new EditQueryMemoPanel();
        }
        return editQueryMemoPanel;
    }

}  
源码实现了如下功能: 1.2 系统功能分析 1.2.1 基本功能 支持以下信息的录入: (1)基本信息:姓名、手机号码、电话、电子邮箱、生日、所属组、备注、相片 (2)工作单位:国家、省份、城市、地址、工作单位、所属部门、职位、邮编、电话、传真 (3)网络信息:个人主页、即时通信工具及号码、备用邮箱 (4)家庭资料:国家、省份、城市、地址、邮编、电话 1.2.2 查询功能 (1)默认显示所有条目 (2)模糊查询:可以按姓名、姓名的汉语拼音的声母或全拼查询。支持模糊查询,即输入部分数据后,可以查询出符合条件的全部条目。如:输入“张”,列出所有名字中有“张”的条目;输入“xl”,列出声母为该2个字母的所有条目。 (该实验报告时,暂未实现按手机号码、电话号码查询。) (3)指定分组后,列出某分组的所有条目。查询结果如果有多个条目,应按照姓名排序,并使用姓或姓的第一个汉语拼音的字母分类。 1.2.3 删除和修改功能 (1)选中单个联系人后,可以修改其内容,可以删除该联系人 (2)选中一个分组后,可以删除该分组,同时删除分组下的全部联系人 (3)支持情况账户下的所有联系人数据 1.2.4 导入和导出 支持将账户下的所有文本文档联系人数据导出为CSV格式文件,支持将CSV文件导入到账户,并能够与主流手机或其他通讯录软件交换数据。 1.2.5 通讯录的显示 显示查询结果,可以设置一个条目可以显示或不显示哪些内容。 1.2.6 通讯录数据的录入 对于新建联系人,保存时如果有同名或同电话号码时,给出提示。 1.2.7 联系人星标 支持一键收藏联系人,联系人加星标后更加方便于用户查找与管理。 【系统设计文档】、【系统需求分析文档】、【系统实验报告】、【答辩展示PPT】另见我的资源……
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值