Java课程设计

您所在的位置:网站首页 学生管理系统设计步骤有哪些 Java课程设计

Java课程设计

2024-07-16 19:02| 来源: 网络整理| 查看: 265

一、题目要求:

综合题:设计并实现一个通讯录管理系统包含以下功能: a)用户注册、登录; b) 通讯录信息的浏览、查找与增删改维护 其他说明:         要求采用JDBC连接数据库         界面可以选用Swing GUI技术或JSP技术

其中通讯录基本信息包括: 记录号、联系人、工作单位、电话号码、邮件、创建日期等(可根据需要扩展信息)

例如:

通讯录 记录号联系人工作单位电话号码邮件创建日期r5王老师清华大学计算机工程学院[email protected]/12/20r21李经理腾讯公司[email protected]/6/25 二、程序设计: 1.实验目的

本实验致力于深入学习和应用Java编程语言以及相关技术,通过设计和实现一个通讯录管理系统,旨在达到以下具体目标:

学习和应用Java编程语言: 通过实际项目的开发,加深对Java编程语言的理解,并熟悉其面向对象的编程思想。实践中将涉及类的设计、继承、多态等概念,从而提高对Java语言特性的掌握。掌握Java Swing桌面应用程序的设计与开发: 通过使用Java Swing框架,了解并实践图形用户界面(GUI)的设计与开发。在这个过程中,将学习如何创建窗体、面板、按钮、文本框等Swing组件,以及如何处理事件和实现用户交互。理解并应用数据库设计和连接: 通过与MySQL数据库的交互,学会设计数据库表结构、进行增删改查等基本操作。使用JDBC连接数据库,实现系统与数据的有效交互,从而提升对数据库设计和连接技术的理解和应用。培养软件设计和开发的能力:通过整个系统的设计与实现过程,培养学生的软件设计和开发能力。强调模块化设计,将系统拆分为不同的模块,使得代码结构清晰,易于维护和扩展。包括模块化设计、代码解耦、异常处理等方面的技能: 在实际编码中,注重采用模块化设计原则,将系统划分为不同的功能模块,实现各模块之间的解耦。另外,要实现合理的异常处理,确保系统在面对不可避免的错误时能够很好地处理。 2. 系统简介

        通讯录管理系统是一个便捷的工具,用于管理个人和工作联系人的信息。系统通过图形用户界面提供直观的操作方式,用户可以登录、注册,并对通讯录进行增删改查的操作。数据存储在MySQL数据库中,通过JDBC连接实现对数据库的高效操作。

系统主要包含三个界面:

登录界面 (LoginFrame): 用户通过输入用户名和密码登录系统。验证成功后,用户可以进入通讯录界面;否则,系统会提示登录失败信息。通讯录界面 (ContactsFrame): 用户可以在这个界面进行通讯录的管理。可以添加、删除、更新联系人信息,也可以通过搜索功能查找特定联系人。界面使用Java Swing框架,表格显示联系人信息,用户友好的界面设计提高了用户体验。注册界面 (RegistrationFrame): 新用户可以在这里进行注册。用户输入用户名、密码和确认密码后,系统验证信息并将用户存储到数据库中。注册成功后,用户可以返回登录界面进行登录。

        系统通过合理的模块化设计,实现了界面和数据操作的解耦,提高了代码的可维护性。整体设计符合面向对象的原则,使得系统扩展和改进更加容易。

3. 系统设计 3.1 UML类图:

图3-1 UML类图

3.2 流程图:

图3-1 登录注册选择流程图

图3-2 登录流程图

图3-3 注册流程图

图3-4 主功能流程图

3.3 主要操作流程 用户打开程序,进入登录界面 (LoginFrame)。用户输入用户名和密码,点击登录按钮。程序验证用户信息,如果验证通过,进入通讯录界面 (ContactsFrame);否则,提示错

误信息。

在通讯录界面,用户可以进行添加、删除、更新和搜索联系人的操作。用户点击注册按钮,进入注册界面 (RegistrationFrame)。在注册界面,用户输入用户名、密码和确认密码,点击注册按钮。程序验证信息并将用户信息存储到数据库中,注册成功后返回登录界面。用户可以在登录界面输入新注册的账号信息进行登录。 4. 系统实现

系统的实现主要涉及用户登录和注册、通讯录的增删改查操作以及数据库连接和操作。以下是这些功能的代码实现和相应的文字分析。

———————————————————————————————————————

4.1 用户登录和注册

用户登录 (LoginFrame):

// 登录按钮点击事件处理 private void onLoginButtonClick() { String username = usernameField.getText(); String password = String.valueOf(passwordField.getPassword()); // 调用UserService进行用户验证 boolean loginSuccessful = UserService.login(username, password); if (loginSuccessful) { // 登录成功,打开通讯录界面 ContactsFrame = new ContactsFrame(); contactsFrame.setVisible(true); dispose(); // 关闭当前登录窗口 } else { // 登录失败,显示错误提示 JOptionPane.showMessageDialog(this, "用户名或密码错误!", "登录失败", JOptionPane.ERROR_MESSAGE); } }

文字分析:

当用户点击登录按钮时,获取输入的用户名和密码。

通过调用UserService的login方法进行用户验证。

如果验证成功,打开通讯录界面 (ContactsFrame),关闭当前登录窗口;否则,显示错误提示。

用户注册 (RegistrationFrame)

// 注册按钮点击事件处理 private void onRegisterButtonClick() { String username = usernameField.getText(); String password = String.valueOf(passwordField.getPassword()); String confirmPassword = String.valueOf(confirmPasswordField.getPassword()); // 调用UserService进行用户注册 boolean registrationSuccessful = UserService.register(username, password, confirmPassword); if (registrationSuccessful) { // 注册成功,返回登录界面 LoginFrame i = new LoginFrame(); loginFrame.setVisible(true); dispose(); // 关闭当前注册窗口 } else { // 注册失败,显示错误提示 JOptionPane.showMessageDialog(this, "注册失败,请检查输入信息!", "注册失败", JOptionPane.ERROR_MESSAGE); } }

文字分析:

当用户点击注册按钮时,获取输入的用户名、密码和确认密码。

通过调用UserService的register方法进行用户注册。

如果注册成功,返回登录界面 (LoginFrame),关闭当前注册窗口;否则,显示错误提示。

———————————————————————————————————————

 4.2 通讯录的增删改查操作

添加联系人 (ContactsFrame)

private void addContact() { String name = JOptionPane.showInputDialog("请输入联系人姓名:"); String workplace = JOptionPane.showInputDialog("请输入联系人工作地点:"); String phone = JOptionPane.showInputDialog("请输入联系人电话:"); String email = JOptionPane.showInputDialog("请输入联系人电子邮件:"); if (name != null && !name.trim().isEmpty()) { // 获取数据库中当前最大ID值 int maxId = DBUtil.getMaxId("contacts"); // 插入新联系人,ID为最大ID+1 boolean insertSuccessful = ContactService.addContact(maxId + 1, name, workplace, phone, email); if (insertSuccessful) { JOptionPane.showMessageDialog(this, "联系人添加成功!", "成功", JOptionPane.INFORMATION_MESSAGE); refreshTable(); // 刷新表格显示 } else { JOptionPane.showMessageDialog(this, "联系人添加失败,请重试。", "失败", JOptionPane.ERROR_MESSAGE); } } }

文字分析:

用户点击添加联系人按钮时,弹出输入对话框获取联系人信息。

通过调用DBUtil的getMaxId方法获取数据库中当前最大ID值。

调用ContactService的addContact方法插入新联系人,其中新联系人的ID为最大ID值+1。

根据插入结果显示相应的提示信息,成功则刷新表格显示。

删除联系人 (ContactsFrame)

private void deleteContact() { int selectedRow = contactsTable.getSelectedRow(); if (selectedRow != -1) { int contactId = (int) contactsTable.getValueAt(selectedRow, 0); // 调用ContactService进行联系人删除 boolean deleteSuccessful = ContactService.deleteContact(contactId); if (deleteSuccessful) { JOptionPane.showMessageDialog(this, "联系人删除成功!", "成功", JOptionPane.INFORMATION_MESSAGE); refreshTable(); // 刷新表格显示 } else { JOptionPane.showMessageDialog(this, "联系人删除失败,请重试。", "失败", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(this, "请选择要删除的联系人。", "提示", JOptionPane.WARNING_MESSAGE); } }

文字分析:

用户在表格中选择要删除的联系人行,点击删除联系人按钮。

获取选中联系人的ID。

调用ContactService的deleteContact方法进行联系人删除。

根据删除结果显示相应的提示信息,成功则刷新表格显示。

更新联系人 (ContactsFrame)

private void updateContact() { int selectedRow = contactsTable.getSelectedRow(); if (selectedRow != -1) { int contactId = (int) contactsTable.getValueAt(selectedRow, 0); String name = JOptionPane.showInputDialog("请输入联系人姓名:"); String workplace = JOptionPane.showInputDialog("请输入联系人工作地点:"); String phone = JOptionPane.showInputDialog("请输入联系人电话:"); String email = JOptionPane.showInputDialog("请输入联系人电子邮件:"); // 调用ContactService进行联系人更新 boolean updateSuccessful = ContactService.updateContact(contactId, name, workplace, phone, email); if (updateSuccessful) { JOptionPane.showMessageDialog(this, "联系人更新成功!", "成功", JOptionPane.INFORMATION_MESSAGE); refreshTable(); // 刷新表格显示 } else { JOptionPane.showMessageDialog(this, "联系人更新失败,请重试。", "失败", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(this, "请选择要更新的联系人。", "提示", JOptionPane.WARNING_MESSAGE); } }

文字分析:

用户在表格中选择要更新的联系人行,点击更新联系人按钮。

获取选中联系人的ID。

弹出输入对话框获取更新后的联系人信息。

调用ContactService的updateContact方法进行联系人更新。

根据更新结果显示相应的提示信息,成功则刷新表格显示。

搜索联系人 (ContactsFrame)

private void searchContacts(String keyword) { // 调用ContactService进行模糊搜索 ResultSet resultSet = ContactService.searchContacts(keyword); // 更新表格显示搜索结果 updateTable(resultSet); }

文字分析:

用户在搜索文本框输入关键字,点击搜索按钮。

调用ContactService的searchContacts方法进行模糊搜索。

更新表格显示搜索结果。

———————————————————————————————————————

4.3 数据库连接和操作

DBUtil类

public class DBUtil { // 获取数据库连接 public static Connection getConnection() { // 连接数据库的代码,此处省略 } // 关闭数据库资源 public static void close(Connection connection, Statement statement, ResultSet resultSet) { // 关闭数据库资源的代码,此处省略 } // 获取数据表中当前最大ID值 public static int getMaxId(String tableName) { int maxId = 0; try (Connection connection = getConnection(); Statement statement = connection.createStatement()) { ResultSet resultSet = statement.executeQuery("SELECT MAX(id) FROM " + tableName); if (resultSet.next()) { maxId = resultSet.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } return maxId; } }

文字分析:

DBUtil类提供了获取数据库连接、关闭数据库资源以及获取数据表中当前最大ID值的方法。

getConnection方法用于获取数据库连接。

close方法用于关闭数据库连接、Statement和ResultSet。

getMaxId方法用于获取数据表中当前最大ID值。

 ContactService类

public class ContactService { // 添加联系人 public static boolean addContact(int id, String name, String workplace, String phone, String email) { // 调用DBUtil进行数据库操作,此处省略 } // 删除联系人 public static boolean deleteContact(int contactId) { // 调用DBUtil进行数据库操作,此处省略 } // 更新联系人 public static boolean updateContact(int contactId, String name, String workplace, String phone, String email) { // 调用DBUtil进行数据库操作,此处省略 } // 模糊搜索联系人 public static ResultSet searchContacts(String keyword) { // 调用DBUtil进行数据库操作,此处省略 } }

文字分析:

ContactService类提供了添加、删除、更新联系人以及模糊搜索联系人的方法。

每个方法内部通过调用DBUtil进行相应的数据库操作。

4.5 测试效果图

登录界面:

图4-1 用户登录界面

注册界面:

图4-2 用户注册界面

通讯录界面:

图4-3 通讯录界面

联系人添加对话框:

图4-4 添加联系人

联系人删除提示:

图4-5 删除联系人操作

联系人更新对话框:

图4-6 联系人更新操作

联系人搜索:

图4-7 联系人查询搜索操作

5. 总结

通过这次实验,我深入学习了Java编程语言和相关技术的应用。设计和实现通讯录管理系统的过程中,我不仅提高了对Java语言的熟练度,还学到了如何设计和实现一个桌面应用程序。通过数据库的操作,我对数据存储和检索有了更深入的理解。在软件设计和开发的过程中,我注重了模块化设计和代码解耦,使得系统的可维护性得到提高。这次实验让我收获很多。

三、参考文献

[1]耿祥义.Java面向对象程序设计[M].北京: 清华大学出版社,2010.

[2]JAVA界面编程之弹窗、弹框JOptionPane的showMessageDialog方法详解

[3]java dispose()方法: Java dispose()方法详解

[4]【Java图形化界面---JOptionPane的使用】

[5]mysql怎么查询id最大值

[6]SQL 数据的插入(INSERT 语句的使用方法)

[7]Swing-JTable(查询记录)

[8] addrow方法

[9]java getvalueat

[10]mysql字段创建时间和更新时间

[11]JAVA日期处理(Timestamp)

[12]java+Swing创建表格

[13]Java——日期时间(SimpleDateFormat)

四、附录源码

https://download.csdn.net/download/m0_73059486/88735065icon-default.png?t=N7T8https://download.csdn.net/download/m0_73059486/88735065



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3