Java 写的通讯录管理系统 带详细设计报告 功能非常齐全 完整源码
今天为大家分享一个java语言编写的贪吃蛇系统,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为SQL SERVER。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发,下载。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。
系统主要功能
性能需求
系统结构化程序设计是讲一个完整的大的系统划分成若干个合适的小的功能,每个具体的功能模块相对独立,系统设计需要遵循以下一些原则。
系统性。从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。
灵活性
系统应具有较好的开放性和结构的可变性,采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据偶合,使各子系统间的数据依赖减至最低限度
可靠性
可靠性是指系统抵御外界干扰的能力及受外界干扰时的恢复能力。一个成功的管理信息系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力等。
4 经济性
经济性指在满足系统需求的前提下,尽可能减小系统的开销。一方面,在硬件投资上不能盲目追求技术上的先进,而应以满足应用需要为前提;另一方面,系统设计中应尽量避免不必要的复杂化,各模块应尽量简洁,以便缩短处理流程、减少处理费用
程序启动
1 下载程序源码,解压后导入到ECLIPSE或者IDEA。导入相关的JAR,然后运行Main.java文
件,然后程序进入到系统登陆界面
2 导入数据库文件到SQL SERVER数据库中
主要模块
经过项目小组的调研和讨论,系统分为两个主要模块,普通用户模块和系统管理员模块。普通用的主要的功能是:
注册
登录
管理自己的通讯录
管理自己的备忘录
管理员的主要的功能是
用户管理。用户的新增,删除,修改。
分类管理。分类的新增,删除,修改。
备忘录管理。分类的新增,删除,修改。
运行效果
关键代码
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;}}
Java 写的通讯录管理系统 带详细设计报告 功能非常齐全 完整源码相关推荐
- Java编写的教室管理系统 带详细设计报告 功能非常齐全 完整源码
今天为大家分享一个java语言编写的教室管理系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...
- Java开发的KTV系统 功能非常齐全 完整源码
今天为大家分享一个java语言编写的KTV系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语言 ...
- Java编写的公交查询系统 功能非常齐全 完整源码
今天为大家分享一个java语言编写的教室管理系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...
- Java开发的模拟双色球抽奖程序 功能非常齐全 完整源码
今天为大家分享一个java语言编写的模拟双色球抽奖程序,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 ...
- Java开发的飞翔的小鸟小游戏408 功能非常齐全 完整源码
今天为大家继续分享飞翔的小鸟游戏的开发与制作 408,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 ...
- Java开发的船体程序 超级玛丽小游戏 411 功能非常齐全 完整源码
今天为大家继续分享泡泡堂小游戏的开发与制作 410,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步!! 开发环 ...
- Java开发的超级马里奥小游戏410 相对简单 功能非常齐全 完整源码
今天为大家继续分享泡泡堂小游戏的开发与制作 410,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步!! 开发环 ...
- Java 开发的QQ聊天系统 窗体程序 功能非常齐全 完整源码
今天为大家分享一个java语言编的QQ聊天系统,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发 ...
- java高校心理测评管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
java高校心理测评管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java高校心理测评管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目 ...
最新文章
- 速度快到飞起 如何跟蜻蜓的大脑学习计算?
- CentOS6静态网络配置
- 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )
- Docker知识6:实战!将一个tensorflow项目制作成Docker image
- 欢迎使用CSDN-markdown编辑器test
- with(nolock)简解
- 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
- FAQ:Domain Event 和 C# 中的 Event 有啥区别?
- db2官方SQLSTATE代码提示
- ueditor编辑器的使用
- 触摸屏驱动学习并移植
- 雅虎助手是如何自杀式攻击360安全卫士的?雅虎助手,3721是什么恶心人的--(部份转贴)
- Java实现微信H5支付
- c语言爬楼梯不用递归,[leetcode]爬楼梯的递归和非递归方法
- Android、Python实现微信运动
- JavaScript创建对象的方式
- php车牌识别,跨平台车牌识别应用 Light-LPR
- 手把手Verilog HDL同步Vaild-Ready握手FIFO机制
- 2022年软考可以参加哪些科目考试?熟知
- Java实现HighCharts纯后台图表生成