Java课设-简单的通讯录系统(增删改查连接数据库)

Java--通讯录管理系统【课程设计】 阅读详情

一.题目介绍

 二.实验思路

       这里主要是运用到了jdbc来连接数据库,而在数据库中存在的是通讯录的记录,有id,姓名,手机号,创建时间,修改时间。同时使用的是swing的来做可视化界面,其中运用到了弹窗,按钮,标签,表格等组件,同时还有着监视器来监测的是按钮的动作。

       理论知识:这里使用的是手写sql语句,而不采取MyBatis框架,首先要连接数据库,通过sql语句来读取与更新数据,要学会select,update,delete语句的使用。同时要运用到接口与实现类的结构模式,简化开发操作。

三.实验代码简单展示及数据库表的简单展示

1.项目的结构简介

 2.项目主界面代码及连接数据库层的接口实现类代码

主界面的代码:

package view;


import service.ViewService;
import service.impl.ViewServiceImpl;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.sql.SQLException;

//主窗口的进入
public class Mainview extends JFrame {
    ViewService v = new ViewServiceImpl();
    public void Mainview() throws ClassNotFoundException, SQLException {
        //数据库的加入
        JFrame jFrame = new JFrame("通讯录系统");//创建对象
        jFrame.setVisible(true);//窗口的可视化
        jFrame.setBounds(650, 150, 700, 400);//窗口的初始化
        jFrame.setResizable(false);
        Container container = jFrame.getContentPane();
        container.setBackground(Color.lightGray);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭事件
        container.setLayout(null);
        //初始化按钮信息
        JLabel jLabelr = new JLabel("通讯录管理系统By陈某宏");
        jLabelr.setFont(new Font("行书", Font.BOLD, 30));
        jLabelr.setForeground(Color.BLUE);
        jLabelr.setBounds(180, 250, 400, 100);
        container.add(jLabelr);
        JButton button1 = new JButton("浏览所有的通讯信息");
        JButton button2 = new JButton("增加通讯录信息");
        JButton button3 = new JButton("查询相应ID或姓名的通讯录成员");
        JButton button4 = new JButton("删除指定的通讯录成员");
        JButton button5 = new JButton("修改指定的通讯录成员");
        jFrame.update(jFrame.getGraphics());
        button1.setBounds(150, 20, 400, 40);
        button2.setBounds(150, 70, 400, 40);
        button3.setBounds(150, 120, 400, 40);
        button4.setBounds(150, 170, 400, 40);
        button5.setBounds(150, 220, 400, 40);
        //添加按钮
        container.add(jLabelr);
        container.add(button1);
        container.add(button2);
        container.add(button3);
        container.add(button4);
        container.add(button5);
        jFrame.update(jFrame.getGraphics());
        button1.addActionListener(new AbstractAction() {//按钮1 增加学生信息
            @Override
            public void actionPerformed(ActionEvent e) {
                v.selectAll();
            }
        });
        //按钮2
        button2.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                v.add();
            }
        });
        button3.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                v.selectByxx();

            }
        });
        button4.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                v.delete();
            }
        });
        button5.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                v.update();
            }
        });
    }
}
















连接数据库,实现增删改查的操作代码:

package dao.impl;

import dao.PhonerelationshipDao;
import entity.PhonerelationshipEntity;
import utils.MysqlDriverutil;

import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PhonerelationshipImpl implements PhonerelationshipDao {

    Connection connection;

    {
        try {
            connection = new MysqlDriverutil().getconnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    @Override

    public List<PhonerelationshipEntity> selectAll() {
        String sql = "select * from phonerelationship";
        PreparedStatement std;
        ArrayList<PhonerelationshipEntity> phonerelationshipEntities = new ArrayList<>();
        try {
            std = connection.prepareStatement(sql);
            ResultSet resultSet = std.executeQuery(sql);
            while (resultSet.next()) {
                PhonerelationshipEntity p = new PhonerelationshipEntity();
                p.setId(resultSet.getString("id"));
                p.setName(resultSet.getString("name"));
                p.setPhonenum(resultSet.getString("phonenum"));
                p.setCreattime(resultSet.getDate("createtime"));
                p.setUpdatetime(resultSet.getDate("updatetime"));
                phonerelationshipEntities.add(p);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return phonerelationshipEntities;
    }

    @Override
    public List<PhonerelationshipEntity> selectByIdorName(String idorname) {
        String sql = "select * from phonerelationship where `id`=" + "'" + idorname + "'" + " or `name` like" + " '%" + idorname + "%'";
        PreparedStatement std;
        ArrayList<PhonerelationshipEntity> phonerelationshipEntities = new ArrayList<>();
        try {
            std = connection.prepareStatement(sql);
            ResultSet resultSet = std.executeQuery(sql);
            while (resultSet.next()) {
                PhonerelationshipEntity p = new PhonerelationshipEntity();
                p.setId(resultSet.getString("id"));
                p.setName(resultSet.getString("name"));
                p.setPhonenum(resultSet.getString("phonenum"));
                p.setCreattime(resultSet.getDate("createtime"));
                p.setUpdatetime(resultSet.getDate("updatetime"));
                phonerelationshipEntities.add(p);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return phonerelationshipEntities;

    }

    @Override
    public int deleteById(String idorallname) {
        String sql = "delete from phonerelationship where `id`=" + "'" + idorallname + "'" + " or `name`=" + "'" + idorallname + "'";
        PreparedStatement std;
        int i = 0;
        try {
            std = connection.prepareStatement(sql);
            i = std.executeUpdate(sql);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return i;

    }

    @Override
    public int updateById(PhonerelationshipEntity p) {
        PreparedStatement std = null;
        Timestamp timestamp = new Timestamp(new Date().getTime());
        int i = 0;
        String sql = "update phonerelationship set `name`=" + "'" + p.getName() + "'" + ",`phonenum`=" + "'" + p.getPhonenum() + "'" + ",updatetime=" + "'" + timestamp + "'" + " where id=" + "'" + p.getId() + "'";
        try {
            std = connection.prepareStatement(sql);
            i = std.executeUpdate(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return i;
    }

    @Override
    public void add(PhonerelationshipEntity p) {
        PreparedStatement std = null;
        String sql = "insert into phonerelationship (`id`,`name`,`phonenum`,`createtime`,`updatetime`) value (?,?,?,?,?)";
        try {
            std = connection.prepareStatement(sql);
            std.setString(1, p.getId());
            std.setString(2, p.getName());
            std.setString(3, p.getPhonenum());
            std.setString(4, String.valueOf(new Timestamp(new Date().getTime())));
            std.setString(5, String.valueOf(new Timestamp(new Date().getTime())));
            std.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

数据库展示(mysql):

四.实验结果展示

主界面:

 浏览所有的通讯信息:

增加通讯信息:

 

查询界面(这里可以进行的是id或者是姓名的模糊查询) :

 

删除界面: 

 修改界面:

 

 五.总结

本实验实现的是简单的通讯录系统,仅供参考。

ssm752基于Java的通讯录管理系统的设计与实现+jsp 在编程开发使用中,主要通过封装的方式,通过类来实现,具有很好的可编辑行和操作性,这就是面向对象语言的最大特性,还可以在同一个类中把共同特性的类封装起来,形成一个抽象类,抽象类形容的不是一个对象,而是一个实体,这样就使用过程中就可以进行实例化,达到更好的效果。(4)采用Java语言进行后台代码的开发,是面向对象的开发语言,可以直接查看和调用已用的案例,可以直接调用XML服务,而且兼容性非常的强,不管是哪个平台,都可以直接调用,而且是通用的,可以提高开发者的工作效率,而且有很好的灵活性,使用起来非常的方便。 阅读详情

相关推荐

【Java项目(2)】基于Javaee的通讯录系统

这是一个使用了 H-ui 组件库的一个页面,后端使用JavaEE开发,访问数据库使用阿里的 Druid连接池,使用 ThreadLocal 进行统一的事务管理,对于 Servlet控制器,采用一个抽象基础类,在每一次访问的时候都将手动的携带一个 action访问参数,使用 Java反射机制动态调用方法,提高代码复用率。 通讯录系统开发严格遵循 MVC模式。 本系统截止 2020-11-30已经完成了注册、登录、修改密码、新增分组、新增联系人、联系人信息管理、分组管理功能。

weixin_43493559的博客 1274

简单通讯录管理系统(Java)

在 MenuPhone.java 中有 5 个选项,实现这几个选项的功能;获取键盘输入的值,如果为 1、2、3、4,分别调用 PhoneManage.java 的方法实现这四个功能,之后返回主菜单,也就是将通讯录信息管理页面的内容重新打印输出;如果为 5 ,退出程序,并输出:“退出成功!”;如果输入的是其它值时,输出:“选择错误!”,返回主菜单。注意:PhoneMange 类并没有实例化 Scannner 对象,本文仅仅简单介绍了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。

m0_65420451的博客 5099

java连接MySQL版本的电话本管理系统

最近老师讲到了JDBC,以电话簿为例,系统的整理一下 要求: 1.创建数据库test中,创建一张名为telephone的表 2.telephone包含的字段有ID(主键自增)、Name、Sex、Age、Telephone、QQ、Address 3.使用程序完成增删改查的功能。 4.具体实现方式仿照8月26日课堂案例。 5.要求:使用PreparedStatement来完成(1)打开Nav

moyandede的博客 5466

java入门编程之个人通讯录管理系统-数据库

【代码】java入门编程之个人通讯录管理系统-数据库。

lazy_88的博客 2921

基于SpringBoot+Redis的JAVA+SQL电子通讯录系统

基于SpringBoot+Redis的JAVA+SQL电子通讯录系统 1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 代码已经上传github,下载地址https://github.com/21503882/communication 开发环境: Eclipse ,MYSQL,JDK1.8,Tom...

QQ21503882的博客 784

java实现通讯录管理系统(附完整源码)

java实现通讯录管理系统(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1757

Java《个人通讯录系统》【附源码】

基于Java Swing的个人通讯录管理系统。系统包含用户管理(注册、登录、修改密码)和联系人管理(增删改查)两大模块。用户信息存储在MySQL的users表,联系人数据保存在contacts表,通过JDBC实现数据库连接。界面包括登录窗口、主操作窗口和各类对话框,采用Swing组件构建。系统实现了联系人添加时的唯一性校验、密码修改的安全验证等功能,并通过表格展示数据。

weixin_44207499的博客 1046

Java通讯录系统开发:全面指南

本文还有配套的精品资源,点击获取 简介:本文详细解析了开发一个具有来电号码姓名查询和搜索功能的Java公司通讯录系统。该系统基于MVC设计模式,涉及数据库操作、姓名查询与模糊匹配、来电号码实时识别、全局关键词搜索、用户友好的图形界面设计、异常处理、数据安全性保护、性能优化以及系统可扩展性考虑。本文旨在为Java开发者提供全面的技术指南,帮助他们理解和掌握构建高效、安全、易于...

weixin_35732273的博客 1003

苹果手机通讯录java代码_求通讯录系统

求通讯录系统老师要求我们做作业,题目是做一个同学通讯录系统,用java语言写。功能:控制台上进行同学信息的增删改查,比如录入:张三,1365541646,上海,乒乓球、唱K;王五,123454554,广州,篮球、绘画;修改名字:张三为李四;或按要求查询,比如按城市查询,输入查询的城市:上海;然后就输出结果:张三,1365541646,上海,乒乓球、唱K;还能按名字查询:王五;查询结果:王五,123...

weixin_39699163的博客 185

Java电子通讯录系统开发及文档指南

Java是一种广泛应用于企业级开发的高级编程语言,以其跨平台性、面向对象、安全性和多线程等特性著称。作为IT专业人员,掌握Java语言对提升开发效率和质量至关重要。表现层是用户直接与之交互的界面部分,它负责接收用户输入并展示处理结果。在三层架构中,表现层通过与业务逻辑层通信,获取需要展示的数据,然后将其转化成用户可理解的形式,如网页、桌面应用程序界面等。实现表现层时,我们通常会使用一些成熟的框架来加快开发进程,比如在Java中,可以使用Spring MVC框架。

weixin_28681379的博客 1302

C# .NET网络通讯录系统完整教程

NET平台由微软开发,是一个用于构建、部署和运行应用程序的全面框架。它不仅支持多种编程语言,如C#、VB.NET等,还提供了丰富的类库,适用于构建多种类型的应用程序,从桌面到Web、移动设备再到云计算平台。本系统主要分为以下几个模块:用户管理模块:负责用户注册、登录、信息修改等用户相关的操作。联系人管理模块:负责联系人的添加、编辑、删除以及分类管理等操作。通讯录数据存储模块:负责存储联系人信息,包括数据的增删改查。网络通信模块:负责客户端与服务器之间的数据交换。

weixin_42594427的博客 987

java基于控制台和oracle数据库的通讯录系统

帮助我们熟悉了更多Java 语言的功能,提高了我们的动于能力,学到了许多解决实际问题的美贵经验。发现了自己的许多个不足。各个功能都可以正常被主菜单调用,显示功能可以正确显示出所有通讯录信息,增加功能通过输入三个不同情况进行测试测试结果为1:当输入正常数据时可以正确增加联系人信息。2:当输入的手机号码长度不是所规定的长度时,会显示出异常并要求你输入正确的电话号码。在现实生活中,我们管理通讯录有多种方式,为了进一步提高管理通讯录的效率以及及时更新通讯录,特开发通讯录系统来方便用户使用和管理通讯录。

qq_54044331的博客 345

C#开发的多功能通讯录系统教程

C#(读作“C Sharp”)是微软公司设计的一种面向对象、类型安全的现代编程语言。它是.NET框架的一部分,并且随着.NET Core的发布,C#已经演化成为跨平台的开源语言。C#具备简洁明了的语法结构,支持声明式编程,并且从C/C++和Java语言中借鉴了很多特性,例如指针操作、运算符重载以及泛型等。在C#中,接口是一种引用类型,它是方法、属性、事件或其他成员的协定。接口定义了实现它的类或结构必须遵循的规则,但不提供这些成员的具体实现。

weixin_35753291的博客 766

【期末课设】 Java+MySQL管理信息之简易通讯录、产品销售子系统/复习JDBC

借着大三这次期末课设,我打算从0开始实现一个小系统,正好对之前学过的JDBC做以复习。 首先是课设的问题描述: 编写一个简单的通讯录管理程序。通讯录中需要存储姓名,地址,电话号码,邮政编码四项。还可以存储Email,家庭电话等信息。 基本要求:程序应提供的基本管理功能有: 1)添加:即增加一个人的记录到通信录中。 2) 显示:即在屏幕上显示所有通信录中的人员信息。 3)存储:即将通讯录信息保存在数...

weixin_41750142的博客 2241

一个强大的java swing通讯录管理系统

使用java swing图形化界面开发的通讯录管理系统,具有通讯录管理的各项功能,包括通讯录的excel导入,导出Excel,添加通讯信息,删除通讯信息,修改通讯信息,查询通讯信息,通讯信息的统计等功能。

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8207

基于java个人通讯录系统论文

论文成果总结:系统功能完成度与创新点不足与改进方向:扩展云端同步、多端适配等。

QQ_402205496的博客 377

告别手工AS91/AB01L:用BAPI_FIXEDASSET_OVRTAKE_CREATE实现SAP资产历史数据自动化迁移

本文详细解析了如何利用BAPI_FIXEDASSET_OVRTAKE_CREATE实现SAP资产历史数据的自动化迁移,替代传统手工操作如AS91/AB01L。通过核心参数解析、迁移逻辑说明及实战案例,帮助顾问团队提升资产和折旧数据迁移的效率与准确性,确保数据一致性并降低错误风险。

weixin_42524708的博客 414

Java+MySQL图形界面编程模拟通讯录系统

需求分析 通讯录信息管理系统的功能总结起来,共需要以下几个方面: 1、通讯录中联系人的增加、保存功能 2、联系人的信息检索功能,包括对联系人的信息排序(如:按年龄排序),精确查找,条件查询等快捷功能 3、联系人信息修改与删除功能,通过本系统可快速修改联系人信息,批量删除和全部删除。 结构设计 根据对系统的需求分析,本系统将分为 3 个模块: 输入信息管理: 管理联系人的基本信息录入。 查询信息管...

沸腾的石灰 8289

Sparse4Dv3

instance_feature也设置为nn.Parameter。修正分支2*(linear->relu->linear->relu->layernorm)->linear->scale,分类分枝2*(linear->relu->layernorm)->linear(256,9),质量评估分枝2*(linear->relu->layernorm)->linear(256,2)。每组两类instance,1是加上范围(-x,x)内均匀分布噪声,2是加上(-2x,-x)U(x,2x)范围内均匀分布噪声。

yuanl15的博客 1351

【光学仿真】基于Matlab的LG/BG/PV/HG光束生成与特性分析【附完整源码】

本文详细介绍了如何使用Matlab进行拉盖尔-高斯(LG)、贝塞尔-高斯(BG)、完美涡旋(PV)和厄米-高斯(HG)四种特殊光束的仿真与特性分析。通过提供完整的Matlab源码,手把手指导读者生成光束、分析其强度、相位、传播特性及轨道角动量,为光学研究、激光应用及教学提供了直观高效的数值实验平台。

3a9bq4r8t2y的博客 488

基于JavaSwing的简易通讯录系统

本次课程设计是开发一个简易的、小型的通讯录,我们命名为“通讯录”。通讯录保存在计算机中,便于分组,还便于增加、修改、删除好友信息。点击运行系统,进入主界面进行操作组和好友的操作;点击组操作,进入界面,进行组添加,组修改,组删除以及退出的操作。点击好友操作,进入界面,进行好友的添加,好友查询,好友修改,好友删除的操作。组操作点击添加组的操作,进入界面,进行组的添加。点击删除组的操作,进入界面,进行组的删除。点击修改组名的操作,进入界面,进行组的修改。...

Jack魏 1035

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2027
上一篇: 数据库系统概论常考简答题,常考概念资料梳理
下一篇: 计组期末考试 选择题 易错梳理
jakeonil
博客等级 码龄5年 1万+粉丝 60原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

jakeonil

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

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

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

打赏作者

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

抵扣说明:

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

余额充值