91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通訊錄項目詳解

發布時間:2020-07-21 01:33:23 來源:網絡 閱讀:1205 作者:d_coding 欄目:數據庫


/**
* @author Mr.Deng
* @since 2016-5-14
* @version 1.0
*使用notepad打開方便閱讀
*歡迎糾正錯誤,寫下自己的見解
*/                                


項目描述:用戶登錄可以管理對自己的通信錄信息進行管理.

項目依賴軟件: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
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合川市| 温泉县| 河池市| 泸水县| 西盟| 织金县| 华坪县| 汝州市| 太仆寺旗| 福海县| 克什克腾旗| 峨边| 宁国市| 长顺县| 五峰| 闽侯县| 黄梅县| 凤庆县| 贺兰县| 涿鹿县| 霸州市| 龙泉市| 吴江市| 福清市| 泰州市| 凤城市| 宿松县| 巩义市| 来安县| 汉沽区| 宽甸| 资兴市| 松原市| 延川县| 商城县| 吴江市| 察隅县| 汕头市| 友谊县| 山丹县| 仪征市|