广告
返回顶部
首页 > 资讯 > 数据库 >通讯录项目详解
  • 500
分享到

通讯录项目详解

2024-04-02 19:04:59 500人浏览 泡泡鱼
摘要

                     &n


                                


项目描述:用户登录可以管理对自己的通信录信息进行管理.

项目依赖软件:Mysql eclipse.

项目依赖技术:javaSE , JDBC, swing组件   

                                              
1.架构:3层架构
    1.展示层:1.用户只能对自己和自己的通讯录进行操作(私人权限)
              2.使用java GUI图像界面:
                                1.登录注册主页面界面
                                2.注册页面
                                3.功能页面:按上中下3层界面布局:
                                                         1.上:欢迎窗口
                                                         2.中:展示用户所有通讯录信息详情
                                                         3.下:用户对通讯录操作的按钮                                                                                
      
    2.业务层:1.后台人员对所有用户进行操作(管理员权限)
              2.使用java编写后台程序:编写接口和实现类实现类通过调用持久层编写的接口实现功能
                 
    3.持久层:1.java程序员通过编写源代码实现各种操作(造物主)
              2.使用JDBC连接数据库保存数据
              3.使用配置文件连接JDBC,假如修改了数据库。只需要修改配置文件不需要修改源代码
                           
具体实现:3层架构每层通过接口进行连接(依赖关系)
            
        1.展示层---业务层:1.接口:UsersService,ContactsService
                           2.实现类:UsersServiceImpl,ContactsServiceImpl
                        
        作用:展示层获得的数据或操作传入到业务层
              业务层流程:1.调用持久层的接口
                          2.创建接口对象
                          3.调用接口对象身上的方法进行数据操作
        
        原理:1.接口只定义方法体,没有实现细节,不能直接创建对象
              2.ContactDaoImpl类是实现类,重写了接口的所有方法,并且有实现细节
              3.通过创建实现类对象,实例化接口。接口就可以调用所有实现类的方法,进行操作              
              ContactDao ctd = new ContactDaoImpl();                          
       
       
      2.业务层---持久层:1.接口:UsersDao                       
                         2.实现类:UsersDaoImpl                        
        作用:对数据进行各种操作并放入数据库中
                        
        原理:1.通讯录和用户对象随着方法的调用而存在,方法调用结束对象消失。
              2.对象存在于内存,通过JDBC连接数据库就可以将对象身上的属性保存起来。
                             
      3.持久层---展示层:持久层的所有功能依赖于展示层获得的数据
                         没有数据持久层的存在没有意义      
                          没有持久层的功能实现,展示层也没有任何意义
                       
2.包命名规范:
         1.持久层:1.com.lovo.contacts.bean:实体包存放所有的实体对象,Users,contactsdetail遵循javabean规范,实现序列化接口Serializable
                   2.com.lovo.contacts.dao:接口包存放持久层的所有接口    
                   3.com.lovo.contacts.dao.impl:实现类存放所有实现了dao包接口的类
                   4.com.lovo.contacts.util:工具包存放所有持久层代码需要的工具 如文件,DBUtil
                   
         2.业务层:1.com.lovo.contacts.service:业务层包存放所有业务层接口 UsersService,ContactsService                   
                   2.com.lovo.contacts.service.impl:实现类包存放所有实现业务层包接口的实现类
        
         3.展示层:com.lovo.contacts.gui:图形界面包存放所有界面类
        
         4.javabean规范:1.公共的类
                         2.属性私有化
                         3.提供公共的get,set方法
                         4.不带参的构造方法
                         5.实现序列化接口Serializable
                   
总结:1.命名规范化保证项目的可理解性,方便管理。项目由多个程序员编写一个好的命名规范和结构方便更改实现同步编写
      2.每个项目有自己的命名规范,大体一致
      

                       
3.各方法块代码流程:1.获取数据库连接:Connection con = DBUtil.getconnection
                    2.编写sql语句,使用问号防止SQL注入
                       3.创建预编译处理对象:PreparedStatement pstmt = con.prepardStatement(sql);
                      4.更改问号的值
                    5.执行sql语句:
                             1.增:1.(sql, PreparedStatement.RETURN_GENERATED_KEYS)保证主键自增长,
                                   2.获取对象身上的值,设置到数据库相应的字段中
                                   3.获取数据库结果集,判断将第一个对象的ID设置成1,多个对象实现自增长
                                   4.关闭连接
                                   
                             2.查:1.查询所有字段的值放入结果集,条件id=? and status=1 1表示存在
                                   2.创建新的contactdetail对象,
                                   3.将结果集相应的值设置到contactdetail对象身上
                                   4.关闭连接
                                   
                             3.删:1.status字段表示表的状态,根据查询语句只有status=1时 用户才能查询到这张表
                                   2.设置status=0 用户就不能查询到这张表。逻辑删除:数据还存在,只是用户查询不到。物理删除:数据从数据库消失
                                   3.更新数据库
                                   4.关闭连接
                                   
                             4.改:1.用户传入contactdetail对象,有些字段的值是修改过的
                                   2.获取contactdetail对象身上的值
                                   3.对数据库里contactdetail里字段的每一个字段的值进行覆盖
                                   4.关闭连接

扩展:
    1.自定义异常:1.定义异常类继承Exception的属性和方法
                  2.提供带参和不参的构造方法    
                    public NameNotFoundException() {}
                    public NameNotFoundException(String message) {super(message);}    
                  3.判断语句如果用户名不正确 throw new NameNotFoundException("用户名不存在");
    
    2.try{}finally{}作用:保证try块内发生异常都能执行finally块里的内容                  
                                   
总结:1.对数据库里的数据进行修改后,需要更新。查询不需要
      2.先分析功能理清思路,再写流程注释。最后根据流程注释填充代码。
      3.根据返回类型,参数列表。灵活编写代码,万变不离其宗
                                    

4.时间转换:    
    1.util.date---sql.date:     
        1.获取Contact对象身上的时间毫秒数,如果没有获取系统时间的毫秒数,三元运算符:条件 ?表达式1(true): 表达式2(false)
           long time = detail.getCreateTime() == null ? System.currentTimeMillis() : detail.getCreateTime().getTime();
        2. 调用sql.date类的带参构造方法将时间毫秒数传入获取sql包的时间    
           new Date(time))
    2.sql.date---util.date:
        1.获取sql.date的毫秒数,将其作为参数传入util.date的构造方法类
         new java.util.Date(rs.getDate("d.createtime").getTime())

5.属性对象:1.sql user表 与 detail表是1对多关系, 一个用户可以有多个通讯录
          2. 在contactdetail类放一个user对象,将user类与contactdetail类连接
             user.getid() = contactdetail.getuser().getid()          
             实现java user类与contactdetail类 1对多关系
        
 sql.userid----contact.user
       1.创建user对象
       2.将userid设置到user对象身上
       3.分析 user的set方法参数是user对象,将创建的对象传入user的set方法
       
6.二维数组:在业务层定义方法getAllContact 返回类型:Object[][] 参数:useid        
        1.获取contactdetail对象的集合
          List<ContactDetail> list = cd.queryContactListByUser(userId);
        2.定义数组长度,第一个字段表示通讯录实体的个数,第2个字段表示通讯录的信息个数
          Object[][] datas = new Object[list.size()][8];
        3. 循环数组 循环一次第一个括号+1,第2个括号挨个放入通讯录信息
            for (int i = 0; i < list.size(); i++) {
            ContactDetail detail = list.get(i);
            datas[i][0] = detail.getId();
            datas[i][1] = detail.getName();
            。。。。。。。。。。。。。。。。}
        4.返回 datas     
        
eclipse:导入项目:file---import---Existing Projects into Workspace---选择项目路径---finish        
        导入图片:项目名---src---general---file system---文件路径---选择图片--finish---把图片移动到lib包
        生成文档:项目右键---export---java---javadoc---选择生成路径---finish
        java架包:项目右键---export---java---jar file选择生成路径----架包名---finish
        导入架包:复制架包到项目---build path
        界面插件使用:类右键---open with---windowbuilder editor---左下角Design按钮
       

附件:Http://down.51cto.com/data/2367904
您可能感兴趣的文档:

--结束END--

本文标题: 通讯录项目详解

本文链接: https://www.lsjlt.com/news/42760.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 通讯录项目详解
                         &n...
    99+
    2022-10-18
  • C语言实现通讯录小项目
    本文实例为大家分享了C语言实现通讯录小项目的具体代码,供大家参考,具体内容如下 编写程序实现通讯录的基本功能,可以做到增,删,查,改,打印通讯录,等等功能 test.c #inc...
    99+
    2022-11-12
  • C++实现通讯录系统项目实战
    本文实例为大家分享了C++实现通讯录系统项目的具体代码,供大家参考,具体内容如下 制作一个具有添加联系人、删除联系人、修改联系人等功能的通讯录系统 效果图: 代码如下: #incl...
    99+
    2022-11-13
  • C++实现通讯录管理系统项目
    本文实例为大家分享了C++实现通讯录管理系统的具体代码,供大家参考,具体内容如下 1、通讯录设计要点 1:添加联系人:向通讯录中添加新人(包括:性别,年龄,联系电话,家庭住址),并且...
    99+
    2022-11-13
  • Java实现通讯录管理系统项目
    本文实例为大家分享了Java实现通讯录管理系统的具体代码,供大家参考,具体内容如下 一、前言 我们学了这么久的知识了,光学知识不会用是一件很悲伤的事情,所以我们应学完 部分练一些项目...
    99+
    2022-11-12
  • Java项目的目录结构详解
    一个java web项目 目录分为两个部分 ① Web应用的根目录下子目录WEB-INF,里面内容不能被客户端访问的,包括专用Web应用程序软件,包括Servlet类文件、部署描述符...
    99+
    2022-11-13
  • C语言如何实现通讯录小项目
    这篇文章主要介绍了C语言如何实现通讯录小项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文实例为大家分享了C语言实现通讯录小项目的具体代码,供大家参考,具体内容如下编写程...
    99+
    2023-06-15
  • vue3项目目录结构示例详解
    目录一、vue3项目的目录结构详解二、部分主要文件详解1、index.html2、main.js(main.ts)3. package.json三、其他说明1. node版本错误2....
    99+
    2023-02-03
    vue3.0目录结构 vue项目目录结构 vue项目的目录结构
  • C++如何实现通讯录管理系统项目
    这篇文章主要介绍“C++如何实现通讯录管理系统项目”,在日常操作中,相信很多人在C++如何实现通讯录管理系统项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录管理系统项目”的疑惑有所帮助!...
    99+
    2023-07-02
  • Java如何实现通讯录管理系统项目
    这篇文章主要介绍了Java如何实现通讯录管理系统项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言我们学了这么久的知识了,光学知识不会用是一件很悲伤的事情,所以我们应...
    99+
    2023-06-25
  • 删除Tomcatwebapps目录自带项目方式详解
    目录1.webapps目录中的项目2.修改配置文件1.webapps目录中的项目 本文将 %CATALINA_HOME% 目录称为“tomcat”目录。 在 ...
    99+
    2022-11-13
  • 详解C语言之实现通讯录
    目录基本思路和代码实现其他探讨总结基本思路和代码实现 为了代码清晰易读,我们创建一个Main.c源文件用来实现代码的基本逻辑。创建一个Contact.h源文件用于封装实现功能的函数,...
    99+
    2022-11-12
  • 【机器学习项目实战案例目录】项目详解 + 完整源码
    前言 大家好,我是阿光。 本专栏整理了《机器学习项目实战案例》,内包含了各种不同的入门级机器学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码。 正在更新中~ ✨ 🚨...
    99+
    2023-08-31
    python 深度学习 人工智能 神经网络
  • Python项目通用的目录结构总结
    一个好的项目结构会让我们在开发中更加得心应手。 对于Web项目,我们通常采用Flask或Django等框架,会有一套适合这种项目的工程目录。 对于爬虫项目,通常有Scrapy等开源框架,也会提供一套适合这种项目的工程目录。 对...
    99+
    2023-01-31
    结构 目录 项目
  • C语言改造通讯录操作详解
    目录1.在通讯录退出前写入文件2.改造初始化通讯录3.通讯录源码文件改造通讯录需要修改的地方: 1.在通讯录退出前写入文件 在contact.c文件中实现: //写入文件(保存通讯录...
    99+
    2023-01-17
    C语言改造通讯录 C语言通讯录 C语言文件操作
  • springBoot项目常用目录解读
    目录springBoot项目常用目录springBoot项目的目录结构及名规范目录说明注意事项总结springBoot项目常用目录 springBoot项目的目录结构及名规范 介绍...
    99+
    2023-05-20
    springBoot项目 springBoot项目常用目录 springBoot目录
  • C++ 实现的通讯录管理系统详解
    代码如下: #include<iostream> #include <sstream> using namespace std; #define Max ...
    99+
    2022-11-12
  • 【机器学习项目实战10例目录】项目详解 + 数据集 + 完整源码
    前言 大家好,我是阿光。 本专栏整理了《机器学习项目实战10例》,内包含了各种不同的入门级机器学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 注意:本专栏内容已经整理到新的...
    99+
    2023-09-09
    python 深度学习 人工智能 sklearn
  • express项目文件目录说明以及功能描述详解
    app.js:启动文件,或者说入口文件 package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时,运行 npm install,npm...
    99+
    2022-11-12
  • linux目录/usr/lib/systemd/system目录详解
    文章目录 前言一. systemd介绍二. service 脚本详解2.1 [Unit] 区块2.2 [Service] 区块2.3 [Install] 区块 总结 前言 init的进...
    99+
    2023-09-04
    linux 服务器 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作