Java课程设计 个人通讯录管理系统
Java通讯录管理系统课程设计报告

课程设计报告(本科)课程:面向对象分析程序设计学号:姓名:班级:教师:时间:计算机科学与技术系朋友信息管理模块添加朋友信息模块修改朋友信息模块删除朋友信息模块查询朋友信息模块图3 朋友信息管理模块功能结构图4.同学信息模块包括添加同学信息、修改同学信息、删除同学信息和查询同学信息4个功能,其功能结构如图4所示。
同学信息管理模块添加同学信息模块修改同学信息模块删除同学信息模块查询同学信息模块图4 同学信息管理模块功能结构图5.同事信息模块包括添加同事信息、修改同事信息、删除同事信息和查询同事信息4个功能,其功能结构如图5所示。
同事信息管理模块添加同事信息模块修改同事信息模块删除同事信息模块查询同事信息模块图5 同事信息管理模块功能结构图图9 通讯录管理系统主窗体由于整个系统分为家人、朋友、同学、同事和其他5类,并且这操作过程是一样的,所以下面主要以家人信息进行介绍。
系统运行后,首先进入系统登录模块,效果如图10图10 系统登录窗体所示的系统登录模块中可以通过输入正确的用户“,单击“登录”按钮进入通讯录管理系统的主窗体界面,通讯录管理系统图11 通讯录管理系统主窗体图12 添加家人信息模块.在通讯录管理系统的主窗体中,单击“家人”/“修改信息”菜单项,可以打开修改家人信息模块,如图13所示,在该界面中可以修改家人的联系信息,方法是首先在下面的表格中选择要修改的家人信息,然后在编辑组件中输入要修改的内容,单击“修改”按钮,保存此次信息的修改。
图13 修改家人信息模块.在通讯录管理系统的主窗体中,单击“家人”/“删除信息”菜单项,可以打开删除家人信息模块,如图14所示,从表格中选择要删除的家人信息,然后单击“删除”按钮,即可删除所选择的家人联系信息。
图14 删除家人信息模块图15 查询家人信息模块设计体会与建议:课程设计我们这组做的课题是设计通讯录管理系统,刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实附录(部分源代码):package cf.background;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import javax.swing.JPanel;public class BackgroundPanel extends JPanel //继承了swing.JPanel,给系统登录窗口和主窗口设置背景{private Image image; // 定义图像对象public BackgroundPanel(Image image){super(); // 调用父类的构造方法this.image=image; // 为图像对象赋值}/** 重写paintComponent方法*/protected void paintComponent(Graphics g){super.paintComponent(g); // 调用父类的方法Graphics2D g2 = (Graphics2D) g; // 创建Graphics2D对象if (image != null){int width = getWidth(); // 获得面板的宽度int height = getHeight(); // 获得面板的高度// 绘制图像g2.drawImage(image, 0, 0, width, height, this);//用本类作为图像的监听器this }}}package cf.db;public class Message { //一个封装联系人信息的实体类private String id; // 编号private String name; // 姓名private String sex; // 性别private String birthday; // 生日private String nation; // 民族private String zuoji; // 座机号码private String shouji; // 手机号码private String qq; // QQ号码private String email; // 电子信箱private String address; // 家庭住址private String youbian; // 邮政编码private String type; // 类型private String memo; // 备注public String getId(){ // id的get方法return id;}public void setId(String id){ // id的set方法this.id=id;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getNation() {return nation;}public void setNation(String nation) {this.nation = nation;}public String getZuoji() {return zuoji;}public void setZuoji(String zuoji) {this.zuoji = zuoji;}public String getShouji() {return shouji;}public void setShouji(String shouji) {this.shouji = shouji;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getAddress() {return address;}public void setAddress(String address) { this.address = address;}public String getYoubian() {return youbian;}public void setYoubian(String youbian) { this.youbian = youbian;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}}package cf.frame;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import .URL;import java.sql.Timestamp;import java.util.Date;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;import javax.swing.WindowConstants;import cf.background.BackgroundPanel;import cf.dao.DAO;public class LoginFrame extends JFrame {private JPasswordField pw_password;private JTextField tf_user;public static void main(String[] args) {new LoginFrame().setVisible(true);}public LoginFrame() {super();setResizable(false);setTitle("系统登录");setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setBounds(260,140,355,237);URL url = LoginFrame.class.getResource("/image/login.jpg"); // 获得图片的URLImage image=new ImageIcon(url).getImage(); // 创建图像对象BackgroundPanel gbPanel=new BackgroundPanel(image); // 创建背景面板gbPanel.setLayout(null); // 设置背景面板为绝对布局getContentPane().add(gbPanel); // 将背景面板添加到窗体容器中部final JLabel label = new JLabel();label.setText("用户名:");label.setBounds(61, 75, 66, 18);gbPanel.add(label);final JLabel label_1 = new JLabel();label_1.setText("密码:");label_1.setBounds(61, 108, 66, 18);gbPanel.add(label_1);tf_user = new JTextField();tf_user.setBounds(112, 73, 169, 22);gbPanel.add(tf_user);pw_password = new JPasswordField();pw_password.setEchoChar('*');pw_password.setBounds(112, 106, 169, 22);gbPanel.add(pw_password);final JButton button = new JButton();button.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {String user=tf_user.getText(); // 获得输入的用户名String password=new String(pw_password.getPassword()); // 获得输入的密码if (user.equals("") || password.equals("")){ // 如果用户名或密码为空JOptionPane.showMessageDialog(null, "用户名和密码不能为空。
Java通讯录管理系统设计报告

Java通讯录管理系统设计报告1. 引言随着社会发展和信息技术的进步,通讯录在人们的日常生活和工作中变得越来越重要。
Java通讯录管理系统是一种用于管理个人和组织联系信息的软件系统。
本篇文档将详细介绍Java通讯录管理系统的设计和实现。
2. 功能需求Java通讯录管理系统具有以下功能需求: - 添加联系人:用户可以添加新的联系人,包括姓名、电话号码、电子邮件等相关信息。
- 删除联系人:用户可以删除已存在的联系人。
- 编辑联系人:用户可以修改已存在联系人的信息。
- 搜索联系人:用户可以根据姓名、电话号码或其他关键字搜索联系人。
- 显示联系人列表:用户可以查看所有联系人的列表,并按照姓名或其他方式进行排序。
- 导入/导出联系人:用户可以将联系人导入/导出到文件中,以实现数据的备份和共享。
3. 系统设计3.1 技术栈选择Java通讯录管理系统采用Java语言进行开发,使用Java的面向对象特性来实现系统的各个功能模块。
系统使用MySQL数据库来存储联系人的信息。
3.2 系统架构Java通讯录管理系统采用三层架构,分为表示层、业务逻辑层和数据访问层。
•表示层:负责与用户的交互,包括图形界面和用户输入输出的处理。
•业务逻辑层:负责处理用户的请求,对联系人信息进行增加、删除、编辑、搜索等操作,并调用数据访问层进行数据的读写。
•数据访问层:负责与数据库交互,进行联系人信息的读写操作。
3.3 类设计在Java通讯录管理系统中,主要涉及以下类的设计: - Contact类:表示一个联系人,包含姓名、电话号码、电子邮件等属性。
- ContactDAO接口:定义对联系人的增删改查等操作。
- ContactDAOImpl类:实现ContactDAO接口,负责与数据库进行交互。
- ContactService类:负责处理业务逻辑,调用ContactDAOImpl 类进行联系人信息的操作。
- ContactConsole类:表示层的用户界面,处理用户输入输出和展示联系人信息。
java课程设计(通讯录管理系统)

掌握Java语言基础
理解面向对象编程思 想
掌握数据库操作技术
提高团队协作和沟通 能力
完成一个实用的通讯 录管理系统
联系人管理:添加、删除、修改、查询联系人信息 联系人分组:创建、删除、修改、查询联系人分组 联系人搜索:根据姓名、电话、邮箱等信息进行搜索 联系人导出:将联系人信息导出为Excel、CSV等格式的文件 联系人导入:从Excel、CSV等格式的文件中导入联系人信息 系统设置:修改系统语言、主题、字体等设置
数据库类型:MySQL
数据库表结构:用户表、 联系人表、分组表等
主键和外键:用户ID、联 系人ID、分组ID等
数据库操作:增删改查等 基本操作
数据库优化:索引、缓存、 分表等优化措施
数据库安全:用户权限管 理、数据加密等安全措施
界面布局:简洁 明了,易于操作
色彩搭配:协调 统一,易于阅读
功能模块:联系 人管理、分组管 理、搜索功能等
汇报人:
添加标题
添加标题
查询方式:支持模糊查询和精确查 询
查询优化:使用索引提高查询效率
功能描述:删除指定联系人信 息
实现方法:调用数据库删除接 口
操作步骤:选择联系人,点击 删除按钮,确认删除
注意事项:确保删除操作不会 影响其他数据完整性
添加联系人:输入姓名、电话、邮箱等信 息
修改联系人:修改姓名、电话、邮箱等信 息
删除联系人:删除指定联系人
查询联系人:根据姓名、电话、邮箱等信 息进行查询
导出联系人:将联系人信息导出为Excel 或CSV文件
导入联系人:将Excel或CSV文件中的联系 人信息导入到系统中
修改模块界面:提供用户友 好的界面,方便用户操作
JAVA课程设计--个人通讯录管理系统

JAVA课程设计课题:个人通讯录管理系统课程名称:java课程设计院系:计算机科学与技术学院班级:09计本组员:组员:组员:组员:指导教师:一、个人通讯录管理系统概述1、需求分析通讯录在当今的日常生活工作中的应用是十分普及的。
每个人都有可能拥有大量的通讯录资料信息,当前大家一般都用手工来记录所有的通讯录信息。
随着时代的进步,人们的联系信息,联系方式变得复杂而多样化,通讯录信息的大量增加,导致管理这些信息资料就成了问题。
直接操作来查找,添加,修改,删除这些信息,由于数据繁多,工作量十分巨大,查找,编辑都十分困难,而且极易出错,容易造成资料的混乱或者丢失。
在各种手机,商务通内设的电话簿尽管携带方便却又存在“记录量少,界面小,浏览不方便,记录数据信息不全面”的缺点。
有些人利用Excel 或Word编制通讯录,虽然数据比较全面,信息比较充分,可是查找极其不便,维护起来也麻烦。
所以运用数据库技术,在计算机中建立一个通讯录资料管理系统十分必要。
使通讯录资料管理工作规范化,系统化,程序化,避免资料管理中的混乱,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改通讯录的情况。
2、系统总体规划1.2.1 系统功能简介个人通讯录系统。
在明确了系统目标与数据库结构的前提下,设计出该系统的主要功能:系统登录、数据输入与修改、数据的删除、联系人和群组管理等。
主要功能包括:(1)可以登录和注册用户;(2)可以显示已有联系人和分组的基本信息。
(3)用户可以对自己已有的联系人和分组进行维护;如:删除和修改。
(4)用户可以随意添加自己的联系人和分组;1.2.2 系统功能模块规划系统的整体功能模块框架如图1.1所示:图1.1 系统整体模块框架图整个系统分为权限管理、群组管理、联系人管理3个子模块,各模块具体实现在下面陈述。
系统登录子模块框架如图1.2所示:图1.2 权限管理模块框架图该子模块中用户在运用这个通讯录系统前要注册成为该系统的用户,每次打开通讯薄前都需要登录系统,以保证用户通讯信息安全性。
通讯录管理系统课程设计java

通讯录管理系统是一个常见的软件应用,Java是一种广泛使用的编程语言,使用Java编写通讯录管理系统是一个不错的选择。
以下是通讯录管理系统的Java课程设计大体框架:
1.需求分析:首先需要分析和确定通讯录管理系统的具体需求,明确系统的功能和性能要求。
2.数据库设计:根据需求分析结果,设计系统所需的数据库结构和关系模型,并在MySQL等数据库中创建数据库和表格。
3.界面设计:设计通讯录管理系统的用户界面,包括添加、删除、修改、查询等功能的按钮、文本框等控件,并实现这些控件的布局。
4.后台程序设计:编写Java代码实现系统的后端逻辑,其中主要包括以下几个方面:
(1) 实现用户登录和注册功能,对用户输入的信息进行合法性验证并将其存储在数据库中。
(2) 实现通讯录添加、删除、修改和查询等功能,对用户输入的通讯录信息进行合法性验证并将其存储在数据库中。
(3) 实现数据的持久化,即将用户输入的数据保存到数据库中,并在需要时从数据库中读取数据。
5.测试和调试:完成系统设计后,需要对系统进行测试和调试,确保系统能够正常运行,并满足用户需求。
6.优化和改进:根据测试的结果,对系统进行优化和改进,提高系统的性能和稳定性。
以上是通讯录管理系统的Java课程设计大体框架,具体实现细节可以根据自己的需求进行调整和优化。
个人通讯管理系统java课程设计

个人通讯管理系统java课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握个人通讯管理系统的基本概念、设计方法和实现技术。
技能目标要求学生能够运用Java语言独立完成个人通讯管理系统的开发,培养学生的实际编程能力和问题解决能力。
情感态度价值观目标培养学生的创新意识,提高学生对计算机科学和软件工程的兴趣,使学生认识到信息技术在现代社会中的重要性和应用价值。
二、教学内容教学内容主要包括个人通讯管理系统的基本概念、设计方法和实现技术。
首先,介绍个人通讯管理系统的发展历程、功能和特点,使学生了解个人通讯管理系统的背景和应用场景。
其次,讲解个人通讯管理系统的设计方法,包括需求分析、系统设计、模块划分等,培养学生的问题分析和设计能力。
然后,教授Java语言的基本语法、数据结构和常用类库,使学生能够熟练使用Java语言进行编程。
最后,结合实际案例,讲解个人通讯管理系统的实现技术,包括数据库设计、界面设计、功能实现等,培养学生的实际编程能力和问题解决能力。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
首先,通过讲授法向学生传授个人通讯管理系统的基本概念、设计方法和实现技术。
其次,通过讨论法激发学生的思考和讨论,培养学生的创新意识和问题解决能力。
然后,通过案例分析法让学生结合实际案例进行分析和设计,提高学生的实际编程能力和问题解决能力。
最后,通过实验法让学生动手实践,培养学生的实际操作能力和问题解决能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于向学生传授个人通讯管理系统的基本概念、设计方法和实现技术。
多媒体资料用于辅助讲解和展示,使学生更直观地理解个人通讯管理系统的设计和实现。
实验设备用于让学生动手实践,培养学生的实际操作能力。
此外,还可以利用网络资源,如在线编程平台、开源个人通讯管理系统等,为学生提供更多的学习资源和实践机会。
个人通讯录管理系统课程设计

个人通讯录管理系统课程设计一、引言个人通讯录管理系统是一种方便用户管理联系人信息的软件,它可以帮助用户方便地存储、查找、编辑和删除联系人信息。
本文将介绍一个基于Java语言开发的个人通讯录管理系统的课程设计。
二、需求分析在开发个人通讯录管理系统之前,我们需要进行需求分析,明确系统所需要实现的功能。
根据实际需求,本系统需要实现以下功能:1. 用户登录:用户可以通过输入用户名和密码登录系统。
2. 联系人管理:用户可以添加、查找、编辑和删除联系人信息。
3. 分组管理:用户可以将联系人分组,并对不同分组进行管理。
4. 备份与恢复:用户可以备份和恢复联系人信息。
5. 数据统计:系统可以对联系人信息进行统计,并生成相应的报表。
三、概要设计概要设计是指在需求分析基础上,对系统进行整体设计,确定各模块之间的关系。
本系统采用MVC(Model-View-Controller)架构模式,具体如下:1. 模型层(Model):负责数据存储和处理,包括用户信息、联系人信息等数据操作。
2. 视图层(View):负责数据展示和用户交互界面的呈现,包括登录界面、主界面、联系人管理界面等。
3. 控制层(Controller):负责处理用户请求和数据流转,包括用户登录、联系人管理、分组管理、备份与恢复等功能。
四、详细设计在概要设计的基础上,我们需要进行详细设计,确定各个模块的具体实现方式。
本系统主要包括以下几个模块:1. 用户登录模块:用户输入用户名和密码后,系统会进行验证,验证成功后跳转到主界面。
2. 联系人管理模块:用户可以添加、查找、编辑和删除联系人信息。
添加联系人时需要输入姓名、电话号码等信息;查找联系人时可以按照姓名或电话号码进行查找;编辑联系人时可以修改姓名、电话号码等信息;删除联系人时需要先选择要删除的联系人。
3. 分组管理模块:用户可以将联系人分组,并对不同分组进行管理。
添加分组时需要输入分组名称;将联系人移动到不同的分组中时需要先选择要移动的联系人。
通讯录管理系统java课程设计

通讯录管理系统Java课程设计一、引言随着互联网的发展,人们的日常生活中越来越离不开各种各样的通讯工具。
通讯录是人们生活中常用的一种工具,通过通讯录可以管理和查找联系人的信息,为人们提供了便利。
本文将介绍一个基于Java语言开发的通讯录管理系统的设计和实现过程。
二、系统设计1. 系统需求通讯录管理系统的基本需求包括:添加联系人、删除联系人、查找联系人、编辑联系人信息等功能。
系统需要能够支持多用户使用,保证数据的安全性和可靠性。
2. 系统架构通讯录管理系统采用客户端-服务器模式,客户端负责与用户交互,服务器端负责数据存储和处理。
系统的主要模块包括用户管理模块、联系人管理模块、通讯录导入导出模块等。
3. 数据存储系统使用关系型数据库存储用户信息和联系人信息,保证数据的持久性和一致性。
可以选择使用MySQL或者SQLite等数据库。
三、系统实现1. 技术选型系统采用Java语言进行开发,使用Spring框架实现服务器端的业务逻辑,使用JavaFX构建客户端界面。
数据库访问采用JDBC技术,保证与数据库的连接和数据操作。
2. 功能实现•用户管理:实现用户的注册、登录、修改密码等功能,保证用户信息的安全性。
•联系人管理:实现联系人的添加、删除、查找、编辑等功能,支持分组管理和多种查询方式。
•导入导出:支持导入通讯录文件和导出联系人信息到文件,方便数据的备份和迁移。
四、系统测试系统开发完成后需要进行系统测试,包括功能测试、性能测试、安全测试等,确保系统的稳定性和可靠性。
可以使用Junit进行单元测试,使用JMeter进行压力测试。
五、总结通过本文的介绍,读者可以了解一个基于Java语言开发的通讯录管理系统的设计和实现过程。
通讯录管理系统可以提高人们日常生活中联系人信息的管理效率,为人们的生活提供更多的便利。
希望本文对读者有所帮助,谢谢观看。
以上是通讯录管理系统Java课程设计的相关内容,希朋友们能喜欢。
通讯录管理系统设计Java

通讯录管理系统设计Java引言通讯录管理系统是一种常见的实用系统,用于存储和管理联系人信息。
本文将介绍如何使用Java语言设计一个基于控制台的简单通讯录管理系统。
通过该系统,用户可以实现通讯录中联系人的增删改查等基本功能。
功能需求在设计通讯录管理系统时,首先需要明确定义系统的功能需求,包括但不限于:- 添加新联系人信息 - 删除已有联系人信息 - 修改联系人信息 - 查找特定联系人信息- 显示通讯录所有联系人信息系统设计类设计基于面向对象的思想,我们可以设计以下几个关键类: - Contact:表示一个联系人,包含姓名、电话等基本信息 - ContactBook:通讯录类,包含联系人列表,实现通讯录各种管理功能 - ContactManager:程序入口类,处理用户输入和调用ContactBook的方法数据结构可以使用ArrayList来存储联系人信息,方便进行动态增删改查操作。
模块设计添加联系人信息用户输入联系人信息,程序将其添加到通讯录中。
删除联系人信息用户输入待删除联系人的姓名,程序根据姓名查找并删除联系人信息。
修改联系人信息用户输入待修改联系人的姓名,程序根据姓名查找联系人信息,然后提示用户输入新信息,更新联系人信息。
查找特定联系人信息用户输入待查找联系人的姓名,程序根据姓名查找并显示联系人信息。
显示所有联系人信息遍历通讯录中的所有联系人信息,逐个显示给用户。
编码实现Contact类public class Contact {private String name;private String phoneNumber;public Contact(String name, String phoneNumber) { = name;this.phoneNumber = phoneNumber;}// Getters and setters// Other methods...}ContactBook类import java.util.ArrayList;public class ContactBook {private ArrayList<Contact> contacts;public ContactBook() {this.contacts = new ArrayList<>();}// Add, delete, modify, search methods...}ContactManager类import java.util.Scanner;public class ContactManager {private ContactBook contactBook;public ContactManager() {this.contactBook = new ContactBook();}// Main method to handle user input...}测试与运行编写测试用例对系统各功能进行验证,确保系统能够正常运行。
java课程设计通讯录管理系统

java课程设计通讯录管理系统## Java Course Design: Address Book Management System ##。
Requirements:1. The article should be answered in two languages, with the English answers coming before the Chinese answers.2. The article should not be less than 800 words in length and should not reveal the prompt.### English Answers: ###。
Introduction:An address book management system is a computer program that allows users to store and manage contact information. This can include names, addresses, phone numbers, email addresses, and other relevant data. Address book managementsystems can be used for a variety of purposes, such as personal contact management, business networking, and marketing campaigns.Design:The design of an address book management system will vary depending on the specific requirements of the user. However, there are some common features that are typically included in most systems. These features include:Contact management: This feature allows users to add, edit, and delete contacts from the address book.Search and filtering: This feature allows users to search for contacts based on a variety of criteria, such as name, address, or phone number.Grouping: This feature allows users to organize contacts into groups, such as friends, family, or business associates.Import and export: This feature allows users to import contacts from other sources, such as a CSV file or an email address book.Implementation:An address book management system can be implemented in a variety of ways. One common approach is to use a database to store the contact information. This allows for easy searching and filtering of contacts. Another approach is to use a flat file to store the contact information. This is a simpler approach, but it does not offer the same level of flexibility and scalability as a database.Evaluation:The success of an address book management system can be evaluated based on a number of factors, including:Ease of use: The system should be easy to use for both novice and experienced users.Functionality: The system should provide all of the features that the user needs.Performance: The system should be able to handle alarge number of contacts without slowing down.Security: The system should protect the privacy of the user's contact information.### 中文回答, ###。
基于JAVA个人通讯录管理系统开发与设计

1郑州科技学院Java 课程设计报告题 目 Java 通讯录课程设计课 程 名 称 Java 程序设计实用教程 院 部 名 称 信息工程学院 专 业 计算机科学与技术专业 班 级 11计科1班 学 生 姓 名 胡燊 学 号 201115007 指 导 教 师 杜 远 坤 完 成 时 间 2013年12月20日摘要本文介绍了一个简单实用的个人通讯录管理系统java工程,详细描述了本人在编程时候的编程思想和在MyEclipse 中调试运行的步骤,简明扼要地介绍了整个工程的功能和实用方法。
这个个人通讯录管理系统含有添加、删除、查找等基本功能,同时也添加了一些有趣的小功能——支持背景图片的更换。
在程序中完成了与数据库的通信,并同样可以对数据库进行添加、查找、删除等功能。
关键词:个人通讯录管理系统、添加、删除、查找、数据库2目录摘要 (2)1 绪论 (4)1.1 设计目的 (4)1.2 设计内容 (4)2 程序要求 (4)3 算法分析 (5)3.1 程序总体设计思想 (5)3.2 程序设计总体框图 (5)3.3 程序详细设计 (6)4 调试过程 (8)5 体会 (16)6 参考文献 (17)附录(源程序) (18)31 绪论1.1 设计目的本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力。
1.2 设计内容在设计一个完整的系统中,我从系统的管理员登录界面开始做,另外依据相关要求,对系统增加了数据库支持(Microsoft Access做的数据库),还有对数据库里的数据进行增加、删除、显示所有记录、查询记录、导出备份数据库文件。
另外为了界面美观,增加了系统主界面背景界面图片的支持。
java课程设计--- 个人通讯录管理系统

课程设计(论文)任务书设计题目:个人通讯录管理系统专业班级:10计算机科学与技术2班主要内容:设计GUI界面的个人通讯录,用户可以添加,删除,修改,查询,打印通讯录中的记录!采用图形用户界面,通过菜单选择相应的操作,直观且操作简单。
数据库用MySQL;编辑平台选用MyEclipse 。
所用到的知识点有:类的基本构成,异常处理,图形用户界面,文件操作和数据库。
基本要求:用图形用户界面实现,能实现增加记录,删除记录,显示所有记录,查询记录,文件备份。
通讯录的功能包括:姓名,电话,Email 等。
使用数据库做后台连接!1目录一、开发背景 (1)二、可行分析 (1)三、设计内容……………………………………………………………………….错误!未定义书签。
四、设计要求……………………………………………………………………….错误!未定义书签。
五、具体设计 (4)六、具体分工 (5)七、程序设计 (9)1、主程序模块…………………………………………………….....…........1错误!未定义书签。
1、添加模块…………………………………………………….....…........1错误!未定义书签。
2、删除模块 (22)4、背景框格设计 (32)八、实习心得 (35)2一、开发背景在信息化不断发展的今天,社会成员相互之间联系越来越紧密,联系方式也越来越多。
我们除了手机,移动电话等常规联系方式外,现在还有了电子邮箱、MSN、QQ等信息化的联系方式,那么为了方便我们将每个联系人的多个联系方式保存在一起,方便由于一种联系方式联系不到某人时,可查询其他联系方式,以前的“纸质”通讯录已经越来越赶不上信息化的速度,势必被淘汰,所以我们用所学过的知识实现一个“非纸质”通讯录。
二、可行分析介绍了一个简单实用的个人通讯录管理系统java工程,详细描述了本人在编程时候的编程思想和在MyEclipse 6.5中调试运行的步骤,简明扼要地介绍了整个工程的功能和实用方法。
java课程设计报告之个人通讯录管理程序

一、设计内容 (2)二、设计要求 (2)三、总体设计 (2)四、具体设计 (2)五、具体分工 (4)六、程序设计 (4)1、UseSystem;类 (4)2、MySystem类 (5)3、User类 (18)4、UserService类 (21)5、DAO类 (27)七、实习心得 (28)一、设计内容设计GUI界面的个人通讯录,用户可以添加,删除,修改,查询,打印通讯录中的记录!二、设计要求用图形用户界面实现:1、能实现增加记录,删除记录,显示所有记录,查询记录,文件备份。
2、通讯录的功能包括:姓名,电话,Email等。
3、使用数据库做后台连接!三、总体设计有5个类各类之间的关系!1、DAO.java该类主要负责进行数据库连接,含有数据库的连接方法!2、User.java实体类主要作用是实现java的封装特性,利用服务类实现各种增删改查的操作方法!3、UserService.java该类主要是对各种操作方法的定义和实现,是实现增删改查等主要功能的服务类!4、MySeystem该类主要是实现图形化界面的!实现按钮,输入框,标签等图形化界面!5、UseSystem该类是程序的主类,该类含有main方法,程序从该类开始执行。
四、具体设计将5个java文件保存到同一个文件夹中,例如:C:\test。
将5个java文件分别编译生成相应的字节码(class)文件。
然后,用java解释器运行主类:主界面修改界面添加界面五、具体分工我参与设计添加页面,添加方法,数据库部分操作。
六、程序设计代码:1、UseSystem;类public class UseSystem {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubnew MySystem().validate();}}2、MySystem类import java.awt.*;import java.awt.*;import java.awt.event.*;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.*;import javax.swing.*;import er;import erService;public class MySystem extends JFrame implements ActionListener, ItemListener {UserService uService = new UserService();User u=new User();Choice choice = new Choice();JTextField t1 = new JTextField(15);JButton b1 = new JButton("查询");java.awt.List list = new java.awt.List(6, true);JButton b2 = new JButton("增加");JButton b3 = new JButton("删除");JButton b4 = new JButton("修改");JButton b5 = new JButton("导出");Container con = getContentPane();java.util.List<User> uList = new ArrayList<User>();//static Vector<User> uv = new Vector<User>(100);int flag=0;MySystem() {super("个人通讯录管理程序");setSize(400, 400);con.setLayout(new BorderLayout());choice.add("姓名");choice.add("类别");choice.add("手机号码");choice.add("查询全部记录");Panel p1 = new Panel();// Panel p2=new Panel();Panel p3 = new Panel();p1.setBackground(Color.blue);p1.setSize(300, 10);// p2.setBackground(Color.cyan);// p2.setSize(380, 300);p3.setBackground(Color.green);list.setSize(300, 300);p1.add(choice);p1.add(t1);p1.add(b1);p3.add(b2);p3.add(b4);p3.add(b3);p3.add(b5);con.add("North", p1);con.add("Center", list);con.add("South", p3);setVisible(true);validate();addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);System.exit(0);}});b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);list.addItemListener(this);}@Overridepublic void actionPerformed(ActionEvent e) {if (e.getSource() == b2) {//通过产生外部窗体,来实现添加功能final JFrame newf = new JFrame("添加联系人");newf.setSize(400, 400);newf.setVisible(true);newf.setLayout(new GridLayout(10, 2));JLabel jb1 = new JLabel("联系人姓名:");final JTextField jtf1 = new JTextField(15); Panel pp1 = new Panel();pp1.add(jb1);pp1.add(jtf1);newf.getContentPane().add(pp1);JLabel jb2 = new JLabel("联系人电话:"); final JTextField jtf2 = new JTextField(15); Panel pp2 = new Panel();pp2.add(jb2);pp2.add(jtf2);newf.getContentPane().add(pp2);JLabel jb3 = new JLabel("固定电话:"); final JTextField jtf3 = new JTextField(15); Panel pp3 = new Panel();pp3.add(jb3);pp3.add(jtf3);newf.getContentPane().add(pp3);JLabel jb4 = new JLabel("联系人QQ :"); final JTextField jtf4 = new JTextField(15); Panel pp4 = new Panel();pp4.add(jb4);pp4.add(jtf4);newf.getContentPane().add(pp4);JLabel jb7 = new JLabel("联系人email:"); final JTextField jtf7 = new JTextField(15); Panel pp7 = new Panel();pp7.add(jb7);pp7.add(jtf7);newf.getContentPane().add(pp7);JLabel jb8 = new JLabel("联系类别:");final JTextField jtf8 = new JTextField(15);Panel pp8 = new Panel();pp8.add(jb8);pp8.add(jtf8);newf.getContentPane().add(pp8);JLabel jb5 = new JLabel("联系人工作:");final JTextField jtf5 = new JTextField(15);Panel pp5 = new Panel();pp5.add(jb5);pp5.add(jtf5);newf.getContentPane().add(pp5);JLabel jb6 = new JLabel("现居住地地址:");final JTextField jtf6 = new JTextField(15);Panel pp6 = new Panel();pp6.add(jb6);pp6.add(jtf6);newf.getContentPane().add(pp6);JButton bb1 = new JButton("提交");JButton bb2 = new JButton("关闭");Panel pp9 = new Panel();pp9.add(bb1);pp9.add(bb2);newf.getContentPane().add(pp9);// JTextArea jta=new JTextArea();Panel pp10=new // Panel();pp10.add(jta);newf.getContentPane().add();bb1.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent ee) { User u = new User();u.setName(jtf1.getText());u.setTel(jtf2.getText());u.setPhone(jtf3.getText());u.setQq(jtf4.getText());u.setWork(jtf5.getText());u.setAddress(jtf6.getText());u.setEmail(jtf7.getText());u.setCategory(jtf8.getText());if (uService.add(u)) {JOptionPane.showMessageDialog(null, "添加成功!!!");} elseJOptionPane.showMessageDialog(null, "添加失败!!!");}});bb2.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent ee) {newf.setVisible(false);}});}if (b1 == e.getSource()) {//通过调用select();实现模糊查询list.removeAll();select();}if (b3 == e.getSource()) {//通过获得联系人在list中的索引号,来实现对联系人的删除if (flag == 0) {JOptionPane.showMessageDialog(null, "不能删除该行!");}u = uList.get(flag - 1);if (uService.delById(u.getId())) {JOptionPane.showMessageDialog(null, "删除成功!");uList.remove(flag - 1);list.removeAll();list.add("编号" + " " + "姓名" + " " + "电话");for (User u1 :uList) {list.add(u1.getId() + ": " + u1.getName() + " "+ u1.getTel());}} elseJOptionPane.showMessageDialog(null, "删除失败!");}if(b4==e.getSource()){//通过获得联系人在list中的索引号,同弹出一个外部窗体其中//有联系人的信息,用户可以修改.并在将其存入数据库if (flag == 0) {JOptionPane.showMessageDialog(null, "不能修改首行!");return;}u = uList.get(flag - 1);final JFrame newf = new JFrame("添加联系人");newf.setSize(400, 400);newf.setVisible(true);newf.setLayout(new GridLayout(10, 2));JLabel jb1 = new JLabel("联系人姓名:");final JTextField jtf1 = new JTextField(u.getName(),15);Panel pp1 = new Panel();pp1.add(jb1);pp1.add(jtf1);newf.getContentPane().add(pp1);JLabel jb2 = new JLabel("联系人电话:");final JTextField jtf2 = new JTextField(u.getTel(),15);Panel pp2 = new Panel();pp2.add(jb2);pp2.add(jtf2);newf.getContentPane().add(pp2);JLabel jb3 = new JLabel("固定电话:");final JTextField jtf3 = new JTextField(u.getPhone(),15);Panel pp3 = new Panel();pp3.add(jb3);pp3.add(jtf3);newf.getContentPane().add(pp3);JLabel jb4 = new JLabel("联系人QQ :");final JTextField jtf4 = new JTextField(u.getQq(),15);Panel pp4 = new Panel();pp4.add(jb4);pp4.add(jtf4);newf.getContentPane().add(pp4);JLabel jb7 = new JLabel("联系人email:");final JTextField jtf7 = new JTextField(u.getEmail(),15);Panel pp7 = new Panel();pp7.add(jb7);pp7.add(jtf7);newf.getContentPane().add(pp7);JLabel jb8 = new JLabel("联系类别:");final JTextField jtf8 = new JTextField(u.getCategory(),15);Panel pp8 = new Panel();pp8.add(jb8);pp8.add(jtf8);newf.getContentPane().add(pp8);JLabel jb5 = new JLabel("联系人工作:");final JTextField jtf5 = new JTextField(u.getWork(),15);Panel pp5 = new Panel();pp5.add(jb5);pp5.add(jtf5);newf.getContentPane().add(pp5);JLabel jb6 = new JLabel("现居住地地址:");final JTextField jtf6 = new JTextField(u.getAddress(),15);Panel pp6 = new Panel();pp6.add(jb6);pp6.add(jtf6);newf.getContentPane().add(pp6);JButton bb1 = new JButton("提交");JButton bb2 = new JButton("关闭");Panel pp9 = new Panel();pp9.add(bb1);pp9.add(bb2);newf.getContentPane().add(pp9);bb1.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent ee) {u.setName(jtf1.getText());u.setTel(jtf2.getText());u.setPhone(jtf3.getText());u.setQq(jtf4.getText());u.setWork(jtf5.getText());u.setAddress(jtf6.getText());u.setEmail(jtf7.getText());u.setCategory(jtf8.getText());if(uService.update(u)){JOptionPane.showMessageDialog(null, "修改成功!");select();}else JOptionPane.showMessageDialog(null, "修改失败!"); }});bb2.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent ee) {newf.setVisible(false);}});}if(b5==e.getSource()){//实现全部联系人的导出File f=new File("user_information.txt");try {FileWriter w_file=new FileWriter(f);BufferedWriter b_file=new BufferedWriter(w_file);b_file.write("联系人编号\t姓名\t手机号码\t固定电话\tqq号码\temail\t类别\t工作\t现居住地地址\t");b_file.flush();for(User u:uService.getAllUser()){b_file.write(u.getId()+"\t"+u.getName()+"\t"+u.getTel()+"\t"+u.getP hone()+"\t"+u.getQq()+"\t"+u.getEmail()+"\t"+u.getCategory()+"\t"+u.getWork()+"\t"+u.g etAddress()+"\n");b_file.flush();}JOptionPane.showMessageDialog(null, "导出成功!");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}@Overridepublic void itemStateChanged(ItemEvent a) {int sum = Integer.parseInt(a.getItem().toString());flag=sum;}public void select(){if (choice.getSelectedItem().equals("姓名")) {//对姓名进行模糊查询uList.clear();for (User u : uService.getUser("name", t1.getText())){uList.add(u);}list.removeAll();list.add("编号" + " " + "姓名" + " " + "电话");for (User u :uList) {list.add(u.getId() + ": " + u.getName() + " "+ u.getTel());}}if (choice.getSelectedItem().equals("类别")) {//对类别进行模糊查询uList.clear();for (User u : uService.getUser("category", t1.getText())){uList.add(u);}list.removeAll();list.add("编号" + " " + "姓名" + " " + "电话");for (User u : uList) {list.add(u.getId() + ": " + u.getName() + " "+ u.getTel());}}if (choice.getSelectedItem().equals("手机号码")) {//对手机号码进行模糊查询uList.clear();for (User u : uService.getUser("tel", t1.getText())){uList.add(u);}list.removeAll();list.add("编号" + " " + "姓名" + " " + "电话");for (User u : uList) {list.add(u.getId() + ": " + u.getName() + " "+ u.getTel());}}if (choice.getSelectedItem().equals("查询全部记录")) {//对全部的联系人进行查询uList.clear();for (User u : uService.getAllUser()){uList.add(u);}list.removeAll();list.add("编号" + " " + "姓名" + " " + "电话");for (User u : uList) {list.add(u.getId() + ": " + u.getName() + " "+ u.getTel());}}}}3、User类public class User {private int id;private String name;private String tel;private String email;private String phone;private String category;private String address;private String work;private String qq;public User() {super();// TODO Auto-generated constructor stub}public User(int id, String name, String tel, String email, String phone,String category, String address, String work,String q) {super();this.id = id; = name;this.tel = tel;this.email = email;this.phone = phone;this.category = category;this.address = address;this.work = work;this.qq=q;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getEmail() {return email;}public void setEmail(String email) { this.email = email;}public String getPhone() {return phone;}public void setPhone(String phone) { this.phone = phone;}public String getCategory() {return category;}public void setCategory(String category) { this.category = category;}public String getAddress() {return address;}public void setAddress(String address) { this.address = address;}public String getWork() {return work;}public void setWork(String work) {this.work = work;}}4、UserService类import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import .system.model.*;public class UserService extends DAO {/**** 方法目的:添加联系人* @param u* @return*/public boolean add(User u){boolean flag=false;StringBuilder sql=new StringBuilder();sql.append("insert into TB_user (name,tel,phone,qq,email,category,work,address) values(?,?,?,?,?,?,?,?)");con=DAO.getConnect();try {pst=con.prepareStatement(sql.toString());pst.setString(1,u.getName());pst.setString(2,u.getTel());pst.setString(3,u.getPhone());pst.setString(4,u.getQq());pst.setString(5,u.getEmail());pst.setString(6,u.getCategory());pst.setString(7,u.getWork());pst.setString(8,u.getAddress());if(pst.executeUpdate()>0)flag=true;pst.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}/***** 方法目的:根据编号删除联系人* @param id* @return*/public boolean delById(int id){boolean flag=false;StringBuilder sql=new StringBuilder();sql.append("delete from TB_user where id=?");con=DAO.getConnect();try {pst=con.prepareStatement(sql.toString());pst.setInt(1, id);if(pst.executeUpdate()>0)flag=true;pst.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}/**** 方法目的:更新联系人* @param u* @return*/public boolean update(User u){boolean flag=false;StringBuilder sql=new StringBuilder();sql.append("update TB_user set name=?,tel=?,phone=?,qq=?,email=?,category=?,work=?,address=? where id=?");con=DAO.getConnect();try {pst=con.prepareStatement(sql.toString());pst.setString(1,u.getName());pst.setString(2,u.getTel());pst.setString(3,u.getPhone());pst.setString(4,u.getQq());pst.setString(5,u.getEmail());pst.setString(6,u.getCategory());pst.setString(7,u.getWork());pst.setString(8,u.getAddress());pst.setInt(9, u.getId());if(pst.executeUpdate()>0)flag=true;pst.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}/***** 方法目的:根据条件进行模糊查询* @param n* @param v* @return*/public List<User> getUser(String n,String v){List<User> uList=new ArrayList<User>();StringBuilder sql=new StringBuilder();User u=null;sql.append("select * from TB_User where "+n+" like ?");con=DAO.getConnect();try {pst=con.prepareStatement(sql.toString());pst.setString(1,"%"+v+"%");rs=pst.executeQuery();while(rs.next()){u=new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));u.setAddress(rs.getString("address"));u.setCategory(rs.getString("category"));u.setEmail(rs.getString("email"));u.setPhone("phone");u.setTel(rs.getString("tel"));u.setQq(rs.getString("qq"));u.setWork(rs.getString("work"));uList.add(u);}pst.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return uList;}/*** 方法目的:得到全部的联系人* @return*/public List<User> getAllUser(){List<User> uList=new ArrayList<User>();StringBuilder sql=new StringBuilder();User u=null;sql.append("select * from TB_User");con=DAO.getConnect();try {pst=con.prepareStatement(sql.toString());rs=pst.executeQuery();while(rs.next()){u=new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));u.setAddress(rs.getString("address"));u.setCategory(rs.getString("category"));u.setEmail(rs.getString("email"));u.setPhone("phone");u.setTel(rs.getString("tel"));u.setQq(rs.getString("qq"));u.setWork(rs.getString("work"));uList.add(u);}pst.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return uList;}}5、DAO类import java.sql.*;public class DAO {protected Connection con;protected Statement st;protected PreparedStatement pst;protected ResultSet rs;public static Connection getConnect(){Connection conn=null;Strings="jdbc:sqlserver://localhost:1433;databaseName=DB_WAB";try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn=DriverManager.getConnection(s,"sa","0000");} catch (Exception e) {System.out.println("错误提示:0"+e.getMessage());// e.printStackTrace();}return conn;}}七、实习心得实习,顾名思义,在实践过程中学习。
通讯录管理系统java课程设计源代码

通讯录管理系统简介通讯录是一种记录联系人信息的工具,用于存储和管理与个人、组织或机构相关的联系信息。
通讯录管理系统是一个用于创建、编辑、查找和删除联系人信息的软件应用程序。
本文将介绍一个使用Java编写的通讯录管理系统的设计源代码。
功能需求通讯录管理系统需要具备以下功能: 1. 添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件地址等信息,并将其添加到通讯录中。
2. 编辑联系人:用户可以选择要编辑的联系人,并可以修改其姓名、电话号码、电子邮件地址等信息。
3. 查找联系人:用户可以输入关键字进行搜索,系统将根据关键字在通讯录中查找匹配的联系人并显示出来。
4. 删除联系人:用户可以选择要删除的联系人,并将其从通讯录中删除。
5. 显示所有联系人:系统可以列出所有已存储在通讯录中的联系人信息。
设计思路数据结构为了实现上述功能,我们需要设计合适的数据结构来存储联系人信息。
在这里,我们可以使用一个类来表示每个联系人,其中包含姓名、电话号码和电子邮件地址等属性。
然后,我们可以使用一个集合(如ArrayList)来存储所有的联系人对象。
用户界面为了方便用户操作,我们可以使用命令行界面(CLI)来实现通讯录管理系统。
用户可以通过输入不同的命令来执行相应的操作,如添加联系人、编辑联系人、查找联系人等。
功能实现1.添加联系人:用户输入联系人的姓名、电话号码和电子邮件地址,系统创建一个联系人对象,并将其添加到集合中。
2.编辑联系人:用户选择要编辑的联系人,并输入要修改的信息,系统更新该联系人对象的属性。
3.查找联系人:用户输入关键字,系统遍历所有联系人对象并检查是否包含该关键字,将匹配的结果显示出来。
4.删除联系人:用户选择要删除的联系人,系统从集合中移除该对象。
5.显示所有联系人:系统遍历集合中的所有联系人对象,并将其属性逐个显示出来。
代码实现import java.util.ArrayList;import java.util.Scanner;class Contact {private String name;private String phoneNumber;private String email;public Contact(String name, String phoneNumber, String email) { = name;this.phoneNumber = phoneNumber;this.email = email;}public String getName() {return name;}public void setName(String name) { = name;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}public class AddressBook {private ArrayList<Contact> contacts;public AddressBook() {contacts = new ArrayList<>();}public void addContact(Contact contact) {contacts.add(contact);System.out.println("Contact added successfully!");}public void editContact(int index, Contact contact) {if (index >= 0 && index < contacts.size()) {contacts.set(index, contact);System.out.println("Contact edited successfully!");} else {System.out.println("Invalid index!");}}public void searchContacts(String keyword) {boolean found = false;for (Contact contact : contacts) {if (contact.getName().contains(keyword) || contact.getPhoneNumber ().contains(keyword)|| contact.getEmail().contains(keyword)) {System.out.println(contact.getName() + " | " + contact.getPhon eNumber() + " | " + contact.getEmail());found = true;}}if (!found) {System.out.println("No matching contacts found.");}}public void deleteContact(int index) {if (index >= 0 && index < contacts.size()) {contacts.remove(index);System.out.println("Contact deleted successfully!");} else {System.out.println("Invalid index!");}}public void displayAllContacts() {for (Contact contact : contacts) {System.out.println(contact.getName() + " | " + contact.getPhoneNum ber() + " | " + contact.getEmail());}}public static void main(String[] args) {AddressBook addressBook = new AddressBook();Scanner scanner = new Scanner(System.in);while (true) {System.out.println("\nAddress Book Management System");System.out.println("1. Add Contact");System.out.println("2. Edit Contact");System.out.println("3. Search Contacts");System.out.println("4. Delete Contact");System.out.println("5. Display All Contacts");System.out.println("6. Exit");System.out.print("\nEnter your choice: ");int choice = scanner.nextInt();switch (choice) {case 1:scanner.nextLine(); // Consume newline characterSystem.out.print("Enter name: ");String name = scanner.nextLine();System.out.print("Enter phone number: ");String phoneNumber = scanner.nextLine();System.out.print("Enter email address: ");String email = scanner.nextLine();Contact contact = new Contact(name, phoneNumber, email);addressBook.addContact(contact);break;case 2:System.out.print("Enter index of the contact to edit: ");int indexToEdit = scanner.nextInt();if (indexToEdit >= 0 && indexToEdit < addressBook.contacts. size()) {scanner.nextLine(); // Consume newline characterSystem.out.print("Enter name: ");String newName = scanner.nextLine();System.out.print("Enter phone number: ");String newPhoneNumber = scanner.nextLine();System.out.print("Enter email address: ");String newEmail = scanner.nextLine();Contact newContact = new Contact(newName, newPhoneNumb er, newEmail);addressBook.editContact(indexToEdit, newContact);} else {System.out.println("Invalid index!");}break;case 3:scanner.nextLine(); // Consume newline characterSystem.out.print("Enter keyword to search contacts: ");String keyword = scanner.nextLine();addressBook.searchContacts(keyword);break;case 4:System.out.print("Enter index of the contact to delete: "); int indexToDelete = scanner.nextInt();addressBook.deleteContact(indexToDelete);break;case 5:addressBook.displayAllContacts();break;case 6:System.exit(0);break;default:System.out.println("Invalid choice!");}}}}总结通过以上的设计和实现,我们创建了一个简单的通讯录管理系统。
原创Java通讯录管理系统设计报告

原创Java通讯录管理系统设计报告一、引言通讯录是人们生活中常用的工具,用于记录联系人的姓名、电话号码以及其他联系信息。
为了提高通讯录的管理效率和功能性,本文设计了一款基于Java的通讯录管理系统。
本系统通过Java编程语言实现,旨在提供用户友好的交互界面,使用户能够方便地添加、编辑、删除和搜索通讯录中的联系人信息。
系统还具备数据持久化的功能,保证数据的安全性和稳定性。
本文首先介绍了通讯录管理系统的需求分析,然后对系统的总体设计进行了详细说明,包括系统的架构设计、类的设计和关键功能的实现等。
接着介绍了系统的具体实现过程和测试结果,并对系统进行了性能分析和改进设想。
二、需求分析本系统需要满足以下需求:1.用户能够添加、编辑、删除和搜索通讯录中的联系人信息。
2.用户可以按照姓名、电话号码等条件进行搜索联系人。
3.系统需要提供用户友好的交互界面,使用户能够方便地操作系统。
4.数据需要持久化,确保数据的安全性和稳定性。
三、系统设计3.1 系统架构系统整体采用MVC(Model-View-Controller)架构,将数据、界面和控制逻辑分离,提高系统的可维护性和可扩展性。
系统包括以下几个模块:•Model:负责数据的存储和处理,包括通讯录信息的增删改查等操作。
•View:负责用户界面的展示和用户输入的处理,包括菜单显示、用户指令接收等。
•Controller:负责协调Model和View之间的交互,根据用户指令调用Model中的相应方法,并将结果返回给View进行展示。
3.2 类设计系统中主要包括以下几个类:•Contact:代表通讯录中的单个联系人,包含姓名、电话号码等属性。
•ContactList:代表整个通讯录,包含多个联系人,提供相关的增删改查方法。
•Menu:负责显示用户界面的菜单,接收用户输入的指令。
•Controller:负责根据用户指令调用相应的方法。
这些类之间的关系如下:┌─────────────────────┐│ Contact │├─────────────────────┤│- name: String ││- phoneNumber: String│└─────────────────────┘▲││┌─────────────────────┐│ ContactList │├─────────────────────┤│- contacts: List │├─────────────────────┤│+ addContact() ││+ deleteContact() ││+ updateContact() ││+ searchContact() │└─────────────────────┘▲││┌─────────────────────┐│ Menu │├─────────────────────┤│+ showMenu() ││+ getUserInput() ││+ executeCommand() │└─────────────────────┘▲││┌─────────────────────┐│ Controller │├─────────────────────┤│+ processCommand() │└─────────────────────┘3.3 关键功能实现3.3.1 添加联系人用户通过菜单选择添加联系人的功能,然后输入联系人的姓名和电话号码。
通讯录管理系统课程设计报告Java

通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。
本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。
通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。
2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。
- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。
- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。
- 修改联系人信息:用户可以对已保存的联系人信息进行修改。
- 删除联系人信息:用户可以删除通讯录中的联系人信息。
实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。
3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。
ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。
3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。
设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。
3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。
•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。
•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。
•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。
•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。
4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。
通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。
Java课程设计个人通讯录管理系统

功能描述:用户 可以添加新的联 系人信息
界面设计:简洁 明了,易于操作
数据存储:将新添 加的联系人信息存 储到数据库中
PART FOUR
使用JDBC(Java Database Connectivity) 技术进行数据库连接
连接数据库需要提供数据库URL、用户名、 密码等信息
使用Connection对象建立与数据库的连 接
性能优化: 采用索引、 缓存等技 术提高查 询效率
用户界面: 设计简洁、 易于使用 的查询界 面,方便 用户操作
操作流程:选择联系人,点 击删除按钮,确认删除
功能描述:删除指定联系人 信息
异常处理:删除失败时,提 示用户并重新尝试
数据库操作:删除联系人信 息,更新数据库记录
模块名称:添加 联系人
使用Statement或PreparedStatement对象 执行SQL语句
使用ResultSet对象获取查询结果
关闭数据库连接,释放资源
主界面:显 示通讯录列 表,包括姓 名、电话、 地址等信息
编辑界面: 编辑联系人 信息,包括 姓名、电话、 地址等
搜索界面: 根据姓名、 电话等信息 进行搜索
PART SIX
项目目标:实现个人通讯录管理系统 技术栈:Java、数据库、前端框架等 项目成果:实现了联系人管理、信息查询、数据备份等功能 项目挑战:数据库设计、前端交互、性能优化等 项目经验:团队协作、需求分析、代码规范等 未来展望:继续优化系统、增加新功能、提高用户体验等
收获:掌握了Java语言和面向对象编程的基本知识,提高了编程能力 收获:学会了如何设计一个完整的系统,包括需求分析、系统设计、编码实现和测试等环节 不足:在系统设计中,对某些功能的实现不够完善,需要进一步改进 不足:在编码实现中,对某些算法的效率不够高,需要进一步优化
JAVA课程设计-通讯录管理系统

目录一、设计题目 (1)二、设计目的 (1)三、需求分析 (1)四、总体设计 (1)1.程序总体设计思想 (1)2.程序设计总体框图 (2)五、详细设计 (2)1.功能模块图 (3)2.数据库概念模型 (3)3.数据库逻辑结构设计 (4)4.数据库表的建立 (4)5. 数据库的连接 (4)六、算法描述与实现 (5)1.登录界面 (5)2.通讯记录界面 (7)3.修改联系人界面 (8)4.删除联系人界面 (9)5.添加联系人记录界面 (10)七、结论 (11)八、参考文献 (12)一、设计题目通讯录管理系统二、设计目的本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力。
三、需求分析通讯录要求实现最基本的功能,包括新建联系人,查找信息,删除信息,修改信息,退出系统,为此需要首先定义记录项的格式,其基本属性包括姓名、电话、地址、邮箱。
通讯录管理系统的主要包括以下功能:(1). 新建联系人:操作添加一条新的联系人。
(2). 查找信息:查出一条已经存在的联系人。
(3). 删除信息:删除一个联系人的信息。
(4). 修改信息:修改联系人的基本信息。
四、总体设计1.程序总体设计思想个人通讯录件的功能模块有:(1)提供登陆界面,方便用户进入,满足需求;(2)添加:可以添加通讯录记录,依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司、E-Mail地址、家庭住址、组别、备注后,会提示是否继续添加;(3)显示:可以以表格形式输出所有通讯录里的记录;(4)查询:可以用姓名查询;(5)修改:输入欲修改的那个人的名字后,再依次输入姓名、性别、出生日期、移动电话、固定电话、MSN/QQ、公司、E-Mail地址、家庭住址、组别、备注即可完成修改;(6)删除:可以直接删除多余的通讯录记录;(7)帮助:可以在帮助里面修改用户密码;(8)导出数据库:可以将数据库以文本txt格式导出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《JAVA程序设计》课程设计说明书班级评目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2 需求分析 (1)2.1 功能需求 (1)2.2 系统的开发运行环境 (2)3 总体设计 (2)3.1 系统体系结构设计 (2)3.2系统功能模块及主要类设计 (3)3.3数据库设计 (4)4 详细设计与实现 (5)4.1 登录模块 (5)4.2 注册新用户模块 (6)4.3 查询模块 (7)4.4 添加模块 (8)4.5 修改模块 (9)4.6删除模块 (11)4.7备份模块 (11)4.8退出模块 (12)5 小结和展望 (12)参考文献 (13)附录 (14)使用说明书 (14)1引言1.1课程设计选题《个人通讯录管理系统》1.2课程设计的目的通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。
使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。
1.3本选题的设计背景一直以来就想做一个比较实用的通讯录管理系统,这样可以方便我对于身边联系人信息的管理,防止遗忘和丢失。
在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自己的联系人信息的管理。
2需求分析2.1 功能需求(1)登陆功能。
用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。
(2)注册功能。
其他用户可以输入自己的用户名和密码及确认密码,来实现注册成为该通讯录的使用者。
(3)查询功能。
在该功能里,用户可以采用模糊查询和精确查询两种查询方式来对自己存储的联系人信息进行查询。
(4)添加功能。
在该功能里,用户可以添加自己的常用联系人和分组信息。
(5)修改功能。
此功能里,用户可以修改数据库中已存的联系人信息和分组信息,以及个人的登陆密码。
(6)删除功能。
在该功能里,用户可以输入自己想要删除的分组名和联系人姓名。
(7)备份功能。
用户可以通过保存对话框,选择自己想要保存的联系人信息的路径,然后将其保存为txt文件。
(8)退出功能。
用户可以选择退出程序,也可以选择重新登录。
(1)系统的容错能力。
在做该系统时,一定要考虑全面可能出现错误信息的地方,然后加上try catch 语句进行捕捉,防止造成系统故障。
(2)系统的对话框提示。
当注册用户时,用户名有重复时,提示不可注册;注册密码与确认密码不同时,也要弹出提示,不允许注册等等一系列对话框弹出提示。
(3)在使用数据的查询语句时,尽量使用存储过程提交,方便了对数据库的查询,同时也提高了查询速度。
(4)便捷性。
尽量用户界面做的简洁大方美观,有很好的用户界面交互能力,也使用户使用起来更加方便。
2.2 系统的开发运行环境本系统开发平台: Java + sql server 2008本系统集成开发环境:Eclipse本系统运行环境: windows 7 家庭普通版3总体设计3.1 系统体系结构设计在登陆界面,如果不是该系统的用户的可以点击注册用户名和密码。
如果已经是该系统的用户的,可以输入用户名和密码后,登陆进入主功能界面,在主功能界面里,用户可以对通讯录实现以下功能:查询、添加、修改、删除、备份,退出等功能。
具体功能结构图如下:通讯录系统的使用者,以及一些注册界面的设计和布局。
(3)BookWindow.java。
该类为用户主功能界面,在该类里,包括菜单、菜单项的设计,以及实现查询、添加、修改、删除、备份和退出功能的界面布局设计和它们的功能的实现。
并且这些功能基本上都在一个窗体下的面板里显示的。
(4)ModifyContactuser。
该类主要用于实现联系人信息的修改功能。
包括窗体组件的布局和设计,以及要修改的联系人的默认信息的显示在文本框里等。
(5)Search.java。
该类中定义了一系列的公有的、静态的变量。
目的是为了获取要修改的联系人的所有信息,以便当要修改联系人时弹出的窗口里面有联系人信息的默认值。
(6)User.java。
该类主要是为了当用户修改密码时,原用户的用户名和密码默认都已在文本框里显示了,用户不必再手动输入自己的用户名和密码,只需输入自己要修改后的密码就行,方便了用户的使用。
3.3数据库设计(1)数据表的设计根据系统的需求,在该数据库中主要建立了3个表,分别为:联系人表(contactUser125)、分组表(contactGroup125)、用户表(systemUser125)。
①联系人表(联系人编号(int identity(100000,1))、联系人姓名(varchar(10))、性别(char(2) check(sex='男'or sex='女'))、出生日期(date)、家庭住址(varchar(50))、邮编(char(6))、电话(varchar(12))、手机(char(11))、Email(varchar(20))、QQ(varchar(12))、MSN(varchar(20))、公司地址(varchar(50))、公司电话(varchar(12))、分组编号(smallint)、备注(varchar(100)))。
②分组表(分组编号(smallint identity(1000,1))、分组名(varchar(20))、用户编号(tinyint))。
③用户表(用户编号(tinyint identity(100,1))、用户名(varchar(10))、用户密码(char(16)))。
(2)数据完整性设计实体完整性:在创建表的过程中已经为表contactUser125的主键设为contactid 列,contactGroup125的主键设为groupid列,systemUser125的主键设为userid。
域完整性:在创建contactUser125表的的过程中,就已经对sex列做了check约束,即只能是‘男’和‘女’;然后,对于contactUser25表里的Email列创建了名为email_constraint的check约束,规定每个Email的格式必须包含@.com。
参照完整性:在创建表的过程中,已经把contactGroup125的外键列userid参照了systemUser125表里的userid,把contactUser125表里的外键列groupid参照了contactGroup125表里的groupid 列。
(3)存储过程设计在本通讯录系统中,我一共做了十个存储过程。
①创建查询用户个人创建的所有联系人信息的存储过程search_all_info1,这是一个无参的存储过程,通过该存储过程,用户可以快速的获取contactUser125表里的联系人信息。
②创建一存储过程insert_systemUser,形参为@username,@userpassword,该存储过程可以向形参传递增加的用户名和密码,然后向systemUser125表里增加一条记录。
③创建一存储过程insert_contactUser,形参为@contactName,@sex,@birthday ,@homeAddress ,@postcode,@telephone,@handset,@Email ,@QQ,@MSN,@companyAddress,@companyPhone,@remark 。
该存储过程可以向形参传递要增加的联系人信息,然后向contactUser125表里增加一条记录。
4详细设计与实现4.1 登录模块1功能设计用户输入正确的用户名和密码后点击“登录”按钮则可以进入到该通讯录管理系统,如果输入错误,则提示“用户名或密码错误!”,如果用户名为空,则提示“用户名不能为空!”,如果密码为空,则提示“密码不能为空!”2.界面设计3模块算法(或重要代码段)①当用户点击“登录”按钮时,由于登录按钮添加了监听器,所以会产生一个监听动作,即系统会主动获取文本框中输入的用户名和密码,连接数据库,然后和数据库中systemUser125表中的username和userpassword列的数据相比对,如果完全匹配,则进入主功能界面,否则失败。
②当用户点击“取消”按钮时,使用System.exit(0)自动退出系统。
③当用户点击“注册”按钮时,则弹出注册窗口。
4调试与测试当用户名为空时,会弹出提示信息“用户名不能为空!”;当密码为空时,会弹出信息“密码不能为空!”当用户名或密码和数据库中的不匹配时,则会弹出提示信息“用户名或密码错误!”。
4.2 注册新用户模块1功能设计用户在登录界面点击“注册”时,会弹出一个注册新用户的窗口,在这个窗口里,想要使用该系统的人需填写用户名、密码、确认密码来注册成为该系统的用户。
2界面设计3模块算法①当用户点击“注册新用户”按钮时,由于该按钮添加了监听器,所以系统会发现用户点击了它,并且会产生一个监听动作,即获取用户名、密码和确认密码文本框中的字符串,然后通过连接数据库和使用数据库的SQL语句,将从文本框中读取到的字符串插入到数据库中的systemUser125表中,实现注册功能。
②当用户点击“退出”按钮时,由于按钮添加了监视器,系统会产生一个监听动作,即退出该界面。
4调试与测试如果用户名为空时,会弹出提示信息“用户名不能为空!”;如果用户名框中输入的字符在数据库中已经存在,则会弹出提示信息“该用户名已存在!”;如果密码框为空时,系统会弹出提示信息“密码不能为空!”;如果确认密码框为空时,会弹出提示信息“请输入确认密码!”;如果密码框和确认密码框中输入的字符串不同的话,则会弹出提示信息“两次密码输入不一致!”4.3 查询模块1功能设计在该功能里,用户可以选择“模糊查询”和“精确查询”两种操作,如果用户选择“模糊查询”的话,则又可以选择“按姓名查询”、“按分组查询”、“按手机号码查询”三种方式,这三种方式属于复选框类型的,用户可以根据自己的需要选中自己的查询方式,然后在该方式的文本框中输入内容,查询即可。
如果用户选择“精确查询”的话,也可以选择“按姓名查询”、“按手机号查询”、“按QQ号查询”这三种方式里的一种方式,选中查询方式后,在文本框中输入字符串,点击查询即可。
2界面设计模糊查询精确查询3模块算法①模糊查询算法当用户点击了“查询”按钮时,会产生一个监听动作,这个监听动作为:首先要加载数据库连接,然后定义一个StringBuffer类型的字符串str,并给他赋初值为SQL语句的查询语句字符串,然后使用if条件判断三种查询方式中,哪些方式被选择了,然后把被选择的查询方式所对应的where条件采用str.append( )方式,追加到SQL语句中,然后把StringBuffer类型的字符串用toString( )方法转换为String类型,最后把查询的结果在表格组件中显示出来。