FEATURED · 精选文章

JAVA+SQL电子通讯录带系统托盘(论文+源代码)

发布时间 / 2026/8/11 3:16:54
来源 / 创域科博编辑部
栏目 / 资讯中心
JAVA+SQL电子通讯录带系统托盘(论文+源代码) 1. 项目概述本项目是一个基于 Java Swing 和 SQLite 数据库开发的电子通讯录管理系统具备完整的增删改查功能并集成了系统托盘功能可在后台运行。系统采用 MVC 架构设计界面友好操作简便适合作为 Java 桌面应用开发的课程设计或毕业设计项目。主要特性联系人信息管理姓名、电话、邮箱、地址、分组等数据库持久化存储SQLite系统托盘支持最小化到托盘、托盘菜单操作数据导入导出CSV/Excel格式联系人分组与搜索功能用户友好的图形界面2. 系统架构设计2.1 技术栈开发语言Java 8GUI框架Swing数据库SQLite 3.x构建工具MavenIDEIntelliJ IDEA / Eclipse2.2 项目结构src/ ├── main/ │ ├── java/ │ │ ├── com/ │ │ │ └── addressbook/ │ │ │ ├── Main.java # 程序入口 │ │ │ ├── controller/ # 控制器层 │ │ │ │ ├── ContactController.java │ │ │ │ └── TrayController.java │ │ │ ├── model/ # 模型层 │ │ │ │ ├── Contact.java # 联系人实体类 │ │ │ │ └── DatabaseHelper.java # 数据库操作类 │ │ │ ├── view/ # 视图层 │ │ │ │ ├── MainFrame.java # 主窗口 │ │ │ │ ├── ContactDialog.java # 联系人对话框 │ │ │ │ └── TrayIconManager.java # 托盘管理 │ │ │ └── util/ # 工具类 │ │ │ ├── FileExporter.java │ │ │ └── Validator.java │ │ └── resources/ # 资源文件 │ │ ├── icons/ # 图标文件 │ │ └── db/ # 数据库文件 │ └── test/ # 测试代码 └── pom.xml # Maven配置文件2.3 数据库设计-- 联系人表CREATETABLEcontacts(idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTNOTNULL,phoneTEXTNOTNULL,emailTEXT,addressTEXT,group_nameTEXTDEFAULT默认,created_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-- 创建索引提高查询效率CREATEINDEXidx_nameONcontacts(name);CREATEINDEXidx_groupONcontacts(group_name);CREATEINDEXidx_phoneONcontacts(phone);3. 核心功能实现3.1 数据库连接与操作// DatabaseHelper.javapackagecom.addressbook.model;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;publicclassDatabaseHelper{privatestaticfinalStringDB_URLjdbc:sqlite:addressbook.db;privateConnectionconnection;publicDatabaseHelper(){try{Class.forName(org.sqlite.JDBC);connectionDriverManager.getConnection(DB_URL);createTables();}catch(Exceptione){e.printStackTrace();}}privatevoidcreateTables(){StringsqlCREATE TABLE IF NOT EXISTS contacts (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,phone TEXT NOT NULL,email TEXT,address TEXT,group_name TEXT DEFAULT 默认,created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);try(Statementstmtconnection.createStatement()){stmt.execute(sql);}catch(SQLExceptione){e.printStackTrace();}}// 添加联系人publicbooleanaddContact(Contactcontact){StringsqlINSERT INTO contacts(name, phone, email, address, group_name) VALUES(?,?,?,?,?);try(PreparedStatementpstmtconnection.prepareStatement(sql)){pstmt.setString(1,contact.getName());pstmt.setString(2,contact.getPhone());pstmt.setString(3,contact.getEmail());pstmt.setString(4,contact.getAddress());pstmt.setString(5,contact.getGroupName());pstmt.executeUpdate();returntrue;}catch(SQLExceptione){e.printStackTrace();returnfalse;}}// 查询所有联系人publicListContactgetAllContacts(){ListContactcontactsnewArrayList();StringsqlSELECT * FROM contacts ORDER BY name;try(Statementstmtconnection.createStatement();ResultSetrsstmt.executeQuery(sql)){while(rs.next()){ContactcontactnewContact();contact.setId(rs.getInt(id));contact.setName(rs.getString(name));contact.setPhone(rs.getString(phone));contact.setEmail(rs.getString(email));contact.setAddress(rs.getString(address));contact.setGroupName(rs.getString(group_name));contacts.add(contact);}}catch(SQLExceptione){e.printStackTrace();}returncontacts;}// 其他CRUD方法updateContact, deleteContact, searchContacts等}3.2 系统托盘实现// TrayIconManager.javapackagecom.addressbook.view;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionListener;publicclassTrayIconManager{privateTrayIcontrayIcon;privateSystemTraysystemTray;privateMainFramemainFrame;publicTrayIconManager(MainFrameframe){this.mainFrameframe;if(SystemTray.isSupported()){initTrayIcon();}}privatevoidinitTrayIcon(){systemTraySystemTray.getSystemTray();// 加载托盘图标ImageimageToolkit.getDefaultToolkit().getImage(getClass().getResource(/icons/addressbook_16.png));// 创建弹出菜单PopupMenupopupnewPopupMenu();MenuItemshowItemnewMenuItem(显示主窗口);showItem.addActionListener(e-mainFrame.setVisible(true));MenuItemexitItemnewMenuItem(退出);exitItem.addActionListener(e-{systemTray.remove(trayIcon);System.exit(0);});popup.add(showItem);popup.addSeparator();popup.add(exitItem);// 创建托盘图标trayIconnewTrayIcon(image,电子通讯录,popup);trayIcon.setImageAutoSize(true);// 添加双击事件trayIcon.addActionListener(e-mainFrame.setVisible(true));try{systemTray.add(trayIcon);}catch(AWTExceptione){e.printStackTrace();}}publicvoidshowNotification(Stringtitle,Stringmessage){if(trayIcon!null){trayIcon.displayMessage(title,message,TrayIcon.MessageType.INFO);}}publicvoidremoveFromTray(){if(trayIcon!nullsystemTray!null){systemTray.remove(trayIcon);}}}3.3 主界面设计// MainFrame.java 部分代码packagecom.addressbook.view;importjavax.swing.*;importjavax.swing.table.DefaultTableModel;importjava.awt.*;importjava.awt.event.*;publicclassMainFrameextendsJFrame{privateJTablecontactTable;privateDefaultTableModeltableModel;privateJButtonaddButton,editButton,deleteButton,searchButton;privateJTextFieldsearchField;privateTrayIconManagertrayManager;publicMainFrame(){initComponents();initTray();loadContacts();}privatevoidinitComponents(){setTitle(电子通讯录管理系统);setSize(800,600);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);setLocationRelativeTo(null);// 窗口关闭事件处理addWindowListener(newWindowAdapter(){OverridepublicvoidwindowClosing(WindowEvente){minimizeToTray();}});// 创建工具栏JToolBartoolBarnewJToolBar();addButtonnewJButton(添加);editButtonnewJButton(编辑);deleteButtonnewJButton(删除);searchButtonnewJButton(搜索);searchFieldnewJTextField(20);toolBar.add(addButton);toolBar.add(editButton);toolBar.add(deleteButton);toolBar.addSeparator();toolBar.add(newJLabel(搜索:));toolBar.add(searchField);toolBar.add(searchButton);// 创建表格String[]columns{ID,姓名,电话,邮箱,地址,分组};tableModelnewDefaultTableModel(columns,0);contactTablenewJTable(tableModel);JScrollPanescrollPanenewJScrollPane(contactTable);// 布局setLayout(newBorderLayout());add(toolBar,BorderLayout.NORTH);add(scrollPane,BorderLayout.CENTER);// 按钮事件绑定addButton.addActionListener(e-showAddDialog());editButton.addActionListener(e-showEditDialog());deleteButton.addActionListener(e-deleteSelectedContact());searchButton.addActionListener(e-searchContacts());}privatevoidinitTray(){trayManagernewTrayIconManager(this);}privatevoidminimizeToTray(){setVisible(false);trayManager.showNotification(电子通讯录,程序已最小化到系统托盘);}privatevoidloadContacts(){// 从数据库加载联系人并更新表格}privatevoidshowAddDialog(){// 显示添加联系人对话框}privatevoidshowEditDialog(){// 显示编辑联系人对话框}privatevoiddeleteSelectedContact(){// 删除选中的联系人}privatevoidsearchContacts(){// 搜索联系人}}4. 论文要点毕业设计/课程设计4.1 摘要本文设计并实现了一个基于 Java Swing 和 SQLite 数据库的电子通讯录管理系统。系统采用 MVC 设计模式实现了联系人的增删改查、分组管理、数据导入导出等核心功能。特别地系统集成了系统托盘功能支持后台运行和快速唤醒提升了用户体验。系统界面友好操作简便具有良好的可扩展性和维护性。4.2 系统需求分析功能需求用户管理支持多用户登录可选扩展联系人管理增删改查、批量操作分组管理自定义分组、分组筛选数据备份导入导出 CSV/Excel系统托盘最小化到托盘、托盘菜单非功能需求性能响应时间 2秒可用性支持 Windows/macOS/Linux可靠性数据自动备份安全性数据加密存储可选4.3 系统设计架构设计MVC 三层架构数据库设计ER图、表结构设计界面设计原型图、布局设计类设计UML类图、时序图4.4 实现与测试开发环境搭建核心模块实现单元测试与集成测试系统部署与运行4.5 论文结构建议第一章绪论研究背景、意义、国内外现状第二章相关技术介绍Java Swing、SQLite、系统托盘第三章系统需求分析第四章系统设计第五章系统实现第六章系统测试第七章总结与展望参考文献致谢附录源代码、使用说明5. 项目部署与运行5.1 环境准备安装 JDK 8 或更高版本安装 Maven可选用于构建安装 SQLite可选系统自带驱动5.2 项目导入与运行# 1. 克隆或下载项目gitclone https://github.com/yourusername/addressbook-system.git# 2. 导入IDEIntelliJ IDEA/Eclipse# - File - Open - 选择项目文件夹# - 等待Maven依赖下载完成# 3. 运行主类# - 找到 Main.java# - 右键 - Run Main.main()5.3 Maven 依赖配置!-- pom.xml --dependencies!-- SQLite JDBC驱动 --dependencygroupIdorg.xerial/groupIdartifactIdsqlite-jdbc/artifactIdversion3.42.0.0/version/dependency!-- Apache Commons CSV用于导入导出 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-csv/artifactIdversion1.10.0/version/dependency!-- JUnit测试 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependency/dependencies6. 功能演示与截图6.1 主界面----------------------------------------- | 电子通讯录管理系统 | ----------------------------------------- | [添加] [编辑] [删除] | 搜索[输入框] [搜索] | ----------------------------------------- | ID | 姓名 | 电话 | 邮箱 | |----|--------|------------|-------------| | 1 | 张三 | 13800138000| zsqq.com | | 2 | 李四 | 13900139000| lsqq.com | | 3 | 王五 | 13700137000| wwqq.com | -----------------------------------------6.2 系统托盘效果程序最小化后显示在系统托盘区右键托盘图标显示菜单显示主窗口、退出双击托盘图标快速恢复主窗口支持托盘消息通知7. 扩展功能建议7.1 短期扩展数据加密使用 AES 加密敏感信息云端同步集成 WebDAV 或云存储生日提醒添加生日字段和提醒功能导出PDF支持联系人列表导出为PDF7.2 长期扩展多用户支持用户注册登录系统网络版基于 Spring Boot 的 Web 版本移动端Android/iOS 客户端智能搜索基于拼音、模糊匹配的搜索8. 常见问题与解决方案8.1 数据库连接失败问题java.sql.SQLException: no suitable driver found解决确保 sqlite-jdbc 依赖已正确添加或手动添加驱动 jar 包。8.2 系统托盘不显示问题在某些 Linux 桌面环境下系统托盘可能不工作解决检查系统是否支持 SystemTray或使用第三方托盘库。8.3 中文乱码问题数据库或界面显示中文乱码解决// 数据库连接时指定编码Stringurljdbc:sqlite:addressbook.db?charsetutf8;// Swing组件设置字体UIManager.put(Button.font,newFont(微软雅黑,Font.PLAIN,12));UIManager.put(Label.font,newFont(微软雅黑,Font.PLAIN,12));8.4 打包为可执行文件使用 Maven Assembly 插件或 Launch4j 打包!-- 在pom.xml中添加 --buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-assembly-plugin/artifactIdconfigurationarchivemanifestmainClasscom.addressbook.Main/mainClass/manifest/archivedescriptorRefsdescriptorRefjar-with-dependencies/descriptorRef/descriptorRefs/configuration/plugin/plugins/build9. 源代码获取与使用9.1 完整项目结构项目包含以下核心文件Main.java- 程序入口DatabaseHelper.java- 数据库操作类Contact.java- 联系人实体类MainFrame.java- 主界面类ContactDialog.java- 联系人编辑对话框TrayIconManager.java- 系统托盘管理pom.xml
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻