精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為自己做一個簡單記賬簿

數據庫
當每個月收到信用卡賬單時,筆者總會又驚又惑。為什么上個月又花了那么多錢?為了有效的管理自己的資金動態,筆者利用SQLite為自己做了一個簡單記賬簿。

每個月收到信用卡賬單時,我總會又驚又惑。上個月怎么又花了那么多錢?看著每一筆出帳流水,猛抓頭皮卻怎么也記不起來這錢是用在了哪兒。痛定思痛,采取行動,我要記賬。作為一個信奉技術能改變世界的IT人,我理所當然的在網上搜索各種電子記賬本。在線的記賬功能不敢用(怕被騷擾),一些單機記賬軟件提供的功能又不是我想要的。

與此同時,最近空下來的時候,我在看SQLite方面的資料。SQLite的簡潔、小巧讓我有些愛不釋手。就此決定給自己做個記賬本,用SQLite作為本地數據引擎。

功能概述

我需要的記賬功能比較簡單:

***、記錄每一筆消費,并可以添加需要的標簽。當我查看明細時,能知道自己買了啥。

第二、對我來說,消費只需要分成兩種:‘生活必需消費’和‘享受消費’。每周、每月可以看到這兩種消費所占的比例、金額。

第三、能查看自己近6個月的消費走勢。

根據這3點需求,我為自己度身定制了這款記賬工具。

圖1是記賬本的啟動框。

程序將啟動一個工作線程來檢查記賬程序路徑下是否已存在賬本數據庫,若沒有則創建該數據庫和所需的表結構。同時定時器將輪詢檢查結果。

 (圖1)

圖2是記賬本的主界面。

很多其他記賬軟件把消費分成餐飲,交通,買衣服……或者更細。一筆賬到底歸為哪一類要想個半天,同時出的圖表復雜但又意義不大。

為自己做的賬本只有兩種消費類別,對應兩個大按鈕,點擊即可進入記賬界面。這兩種消費所占的比例和總額是我每月的關注點。

主界面的最下方還有3個按鈕,分別對應‘返回主界面’、‘退出程序’、‘查看報表’。在任何其它界面中,這三個按鈕的圖案、功能都保持一致。

(圖2)

點擊主界面上的綠色或紅色按鈕就會進入到記賬界面。如圖3所示

標題、圖標、主色調區分了不同的消費。該界面的設計也是希望最簡化,省去了消費時間選擇框,默認為當前記錄時間。

該界面的一個亮點是‘標簽選擇框’??蛑械臉撕炇莿討B生成的。系統會取近一個月時間,使用最頻繁的10個標簽來顯示。(代碼分析部分還會展開)

這里記錄的標簽,會出現在后面的明細報表中,這是我用來對賬的。

(圖3)

***來看一下這個小工具能生成的圖表與報表,如圖4所示

該工具能輸出3種報表,分別是消費比例圖,近6月消費走勢圖,消費對賬明細。對于圖表,鼠標至于色塊上方時將顯示消費金額。

這3個報表也本著減少操作,降低復雜度,簡潔好用為宗旨,所以只提供了最必要的功能。

(圖4)

程序結構

看了工具的界面設計后,讓我們來看一下程序結構,如圖5所示

(圖5)

整個Solution最主要由3個Project組成。

1. DataAccessLayer.SQLite包裝了對SQLite訪問的方法

2. ForSingle 主程序

3. UserControls 自定義用戶控件

需要說明的是:

這個工具所有界面最下方的3個按鈕保持統一,所以我在UserControls中畫了一個BaseForm(圖中橙色框標出),讓主界面繼承自BaseForm。

其他的每一個界面都做成UserControl,在主程序中控制它們的創建與顯示。如圖中綠色框標出。

SQLite對于本地應用是個不錯的選擇,我使用的是一個包裝成ADO.NET接口的SQLite引擎。以下鏈接供參考:

我使用的類庫:http://sqlite.phxsoftware.com/

SQLite官方網站:http://www.sqlite.org/

#p#

代碼分析

1. 程序啟動

當程序啟動時,需要做一下檢查和初始化工作。我把這些工作都放在啟動框中完成。

Program.cs:

  1. [STAThread]    
  2.  
  3. static void Main()    
  4.  
  5. {    
  6.  
  7.     Application.EnableVisualStyles();    
  8.  
  9.     Application.SetCompatibleTextRenderingDefault(false);    
  10.  
  11.     if (Splash.Instance.ShowDialog() == DialogResult.OK)    
  12.  
  13.      {    
  14.  
  15.          Application.Run(new MainFrame());    
  16.  
  17.      }    
  18.  
  19. }   

以上代碼中的Splash就是啟動對話框。只有當返回DialogResult.OK時,才會啟動主程序。

Splash對話框是一個簡單單例模式的實現。

Splash.cs:

  1. private static Splash _instance;    
  2.  
  3. public static Splash Instance    
  4.  
  5. {    
  6.  
  7.     get   
  8.  
  9.     {    
  10.  
  11.         if (_instance == null)    
  12.  
  13.         {    
  14.  
  15.             _instance = new Splash();    
  16.  
  17.         }    
  18.  
  19.         return _instance;    
  20.  
  21.     }    
  22.  
  23. }   

在Splash的構造過程中,會啟動一個定時器,再會啟動一個工作線程運行初始化程序。

Splash.cs:

  1. private Splash()    
  2.  
  3. {    
  4.  
  5.     InitializeComponent();    
  6.  
  7.     SetDialogInfo();    
  8.  
  9.     Ticker.Start();    
  10.  
  11.     Worker.RunWorkerAsync();    
  12.  
  13. }  

工作線程與定時器之間由標志DBState聯系起來的,工作線程置標志,定時器輪詢標志。

Splash.cs:

  1. private Timer _ticker;    
  2. public Timer Ticker    
  3. {    
  4.     get   
  5.     {    
  6.         if (_ticker == null)    
  7.         {    
  8.             _ticker = new Timer(this.components);    
  9.             _ticker.Interval = 2000;    
  10.             _ticker.Tick += new System.EventHandler(_ticker_Tick);    
  11.         }    
  12.         return _ticker;    
  13.     }    
  14. }    
  15. private enum DBStateEnum    
  16. {    
  17.     Undefined,    
  18.     Ready,    
  19.     Failed    
  20. }    
  21. private DBStateEnum _dbState = DBStateEnum.Undefined;    
  22. private DBStateEnum DBState    
  23. {    
  24.     get { return _dbState; }    
  25.     set { _dbState = value; }    
  26. }    
  27. private void _ticker_Tick(object sender, System.EventArgs e)    
  28. {    
  29.     if (DBState == DBStateEnum.Ready)    
  30.     {    
  31.         this.DialogResult = DialogResult.OK;    
  32.         this.Close();    
  33.     }    
  34.     else if (DBState == DBStateEnum.Failed)    
  35.     {    
  36.         if (string.IsNullOrEmpty(this.lblMessage.Text))    
  37.         {    
  38.             this.lblMessage.Text = ErrorMessage;    
  39.         }    
  40.         else   
  41.         {    
  42.             this.DialogResult = DialogResult.Cancel;    
  43.             this.Close();    
  44.         }    
  45.     }    
  46. }  

2. 標簽選擇框的繪制

圖3下半部分中有一系列動態標簽,這些標簽的顯示邏輯為:

從本地SQLite數據庫中,查詢出指定消費類別(‘生活必需’或‘奢侈享受’)近一個月中不重復的標簽,按出現頻率倒序排列,并取出前10個

FeeRecorderControl.cs:

  1. private static readonly string getRecentMonthTop10SubCategorySql =    
  2.              @"select    
  3.                SubCategory    
  4.              from    
  5.                AccountRecord    
  6.              where    
  7.                Category = '{0}'    
  8.                and    
  9.                ConsumeDate >= date('now''localtime''-1 month')    
  10.                and    
  11.                ConsumeDate <= datetime('now''localtime')    
  12.                and    
  13.                ifnull(SubCategory, '') <> ''    
  14.              group by    
  15.                SubCategory    
  16.              order by    
  17.                count(*) desc    
  18.              limit 0,10;";   

界面上的繪制標簽區域其實是一個Panel,每一個標簽是一個Label。

每次添加Label時,需檢查當前將繪制的Label是否會超出Panel的邊界,并相應的進行換行處理或退出循環。

FeeRecorderControl.cs:

  1. private void InitalizeSubCategoryPanel(string strCategory, Color backColor)    
  2.         {    
  3.             using (SQLiteConnection conn = new SQLiteConnection(SqliteConnString))    
  4.             {    
  5.                 conn.Open();    
  6.                 using (SQLiteCommand cmd = new SQLiteCommand(string.Format(getRecentMonthTop10SubCategorySql, strCategory), conn))    
  7.                 {    
  8.                     using (SQLiteDataReader reader = cmd.ExecuteReader())    
  9.                     {    
  10.                         Point subCategoryLocation = new Point(0, 0);    
  11.                         SubCategoryList.Clear();    
  12.                         plSubCategory.Controls.Clear();    
  13.                         while (reader.Read())    
  14.                         {    
  15.                             string strSubCategory = reader["SubCategory"].ToString();    
  16.                             Label lblSubCategory = new Label();    
  17.                             lblSubCategory.Text = strSubCategory;    
  18.                             lblSubCategory.Font = new Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold,    
  19.                                                            System.Drawing.GraphicsUnit.Point, ((byte) (0)));    
  20.                             lblSubCategory.Width = lblSubCategory.Text.Length*25 + 10;    
  21.                             lblSubCategory.Height = 35;    
  22.                             lblSubCategory.TextAlign = ContentAlignment.MiddleCenter;    
  23.                             lblSubCategory.BackColor = backColor;    
  24.                             lblSubCategory.Click += new EventHandler(lblSubCategory_Click);    
  25.                             if (subCategoryLocation.X + lblSubCategory.Width <= plSubCategory.Width    
  26.                                 && subCategoryLocation.Y + lblSubCategory.Height <= plSubCategory.Height)    
  27.                             {    
  28.                                 lblSubCategory.Location = subCategoryLocation;    
  29.                             }    
  30.                             else if (subCategoryLocation.X + lblSubCategory.Width > plSubCategory.Width     
  31.                                 && subCategoryLocation.Y + lblSubCategory.Height + 5 + lblSubCategory.Height <= plSubCategory.Height)    
  32.                             {    
  33.                                 subCategoryLocation.X = 0;    
  34.                                 subCategoryLocation.Y = subCategoryLocation.Y + lblSubCategory.Height + 5;    
  35.                                 lblSubCategory.Location = subCategoryLocation;    
  36.                             }    
  37.                             else   
  38.                             {    
  39.                                 break;    
  40.                             }    
  41.                             subCategoryLocation.X = subCategoryLocation.X + lblSubCategory.Width + 5;    
  42.                             SubCategoryList.Add(lblSubCategory);    
  43.                         }    
  44.                         plSubCategory.Controls.AddRange(SubCategoryList.ToArray());    
  45.                     }    
  46.                 }    
  47.                 conn.Close();    
  48.             }    
  49.         }  

總結與思考

1. 我對WinForm的開發遠沒有對數據庫開發熟悉,大家若發現紕漏之處,請溫柔指出。

2. 最近用戶體驗是一個熱門詞匯,做軟件除了考慮技術問題之外,更要站在用戶的角度去考慮他們的使用習慣。

3. 我自己非常想把這個記賬工具做成手機版的,但對于移動開發知之甚少,大家可以進行嘗試與討論,歡迎和我郵件交流。

原文鏈接:http://www.cnblogs.com/DBFocus/archive/2011/02/27/1966203.html

【編輯推薦】

  1. SQLite做為本地緩存應注意的幾大方面
  2. C#中數據本地存儲方案之SQLite
  3. 淺析SQLite數據庫開發常用管理工具
  4. Widget開發心得 解決跳轉頁面和SQLite類問題

 

責任編輯:艾婧 來源: 博客園
相關推薦

2015-07-03 11:27:30

程序員自己神器

2020-07-20 10:00:52

Python翻譯工具命令行

2021-12-30 06:59:27

視頻通話網頁

2013-04-18 09:33:57

Windows PhoWindows Pho

2022-12-22 19:22:55

應用開發鴻蒙

2012-12-17 12:58:18

WebjQuery重構

2023-05-27 21:13:34

FlaskURL裝飾器

2017-06-30 15:18:24

對賬系統互聯網

2021-11-26 08:33:51

React組件前端

2010-08-11 13:39:16

Flex3.0Flv播放器

2016-11-23 18:13:44

javascriptrxjsreactivex

2018-01-04 16:04:35

圓環放大動畫

2021-12-17 10:06:42

鴻蒙HarmonyOS應用

2021-12-01 07:02:55

Python 記錄器按鍵

2019-04-22 10:25:52

程序員技術職場

2014-04-29 10:50:16

池建強

2018-09-17 15:12:25

人工智能神經網絡編程語言

2023-12-16 13:21:00

Python元類ORM

2021-05-26 07:53:58

Linux運維Linux系統

2022-10-14 17:48:55

D2C代碼vue
點贊
收藏

51CTO技術棧公眾號

欧美国产亚洲一区| 国产原创精品| 免费网站观看www在线观| 成人高潮视频| 色综合天天视频在线观看| 亚洲精品成人久久久998| 精品国产av 无码一区二区三区 | 国产亚洲人成a在线v网站| 亚洲乱码中文字幕综合| 免费看国产精品一二区视频| 国产精品午夜福利| 久久精品91| 久久韩剧网电视剧| v8888av| 国产一区2区在线观看| 狠狠久久亚洲欧美专区| 亚洲五月六月| 麻豆影视在线| 高清日韩电视剧大全免费| 国产精品吹潮在线观看| 日韩成人一区二区三区| 久久精品亚洲人成影院| 国产午夜一区二区| 黄色录像a级片| 日韩中文字幕| 欧美裸体bbwbbwbbw| 97xxxxx| av成人影院在线| 亚洲女同ⅹxx女同tv| 亚洲国产一区在线| 男人天堂网在线| 99这里只有精品| 99re国产视频| 国产尤物视频在线观看| 日韩av电影天堂| 51午夜精品视频| 久久久一区二区三区四区| 国产精品成人a在线观看| 一区二区三区天堂av| 9.1成人看片| 牛牛影视久久网| 欧美mv日韩mv亚洲| 在线观看免费看片| 国产精品视频一区二区三区| 欧美视频精品在线观看| 91香蕉视频污版| 日韩a**中文字幕| 日韩欧美一区二区三区久久| 日韩欧美视频网站| 蜜桃av在线| 黑人欧美xxxx| 国产精品97在线| 国产在线观看www| 精品久久久在线观看| 人妻少妇精品无码专区二区 | 一区二区三区精品视频| 男女h黄动漫啪啪无遮挡软件| www视频在线观看免费| 国产人伦精品一区二区| 午夜午夜精品一区二区三区文| 韩国中文字幕2020精品| 国产欧美精品一区二区三区四区| 色狠狠久久av五月综合| 自拍视频在线网| 亚洲视频小说图片| 中文字幕一区二区三区乱码 | 日韩美女视频一区二区| 妞干网这里只有精品| av免费在线网站| 一区二区免费视频| 青青草精品视频在线| 欧美亚洲日本精品| 在线观看视频欧美| 在线免费看v片| 97精品久久| 精品亚洲va在线va天堂资源站| 老司机福利av| 欧美r级电影| 欧美猛交ⅹxxx乱大交视频| 国产一级片视频| 噜噜噜在线观看免费视频日韩| 国产精品久久久久久久久影视| 一本色道久久综合亚洲| 国产成人高清视频| 裸模一区二区三区免费| 午夜视频在线| 五月婷婷激情综合网| 毛葺葺老太做受视频| 国产精品麻豆| 亚洲精品自拍第一页| 免费成人深夜天涯网站| 欧美成人日韩| 热99久久精品| jizz中国少妇| 久久久久久99久久久精品网站| 亚洲精品一品区二品区三品区| 2021国产在线| 日韩欧美在线播放| 中文字幕在线观看视频www| 日本午夜精品久久久| 精品国产依人香蕉在线精品| 日韩精品一区二区av| 日本亚洲三级在线| 国产伦一区二区三区色一情| 91在线观看| 亚洲成人资源网| 色婷婷一区二区三区av免费看| 动漫3d精品一区二区三区乱码| 一区二区三区视频免费| 国产精品18p| 久久99国产乱子伦精品免费| 精品一区二区三区国产| 成人黄色在线电影| 91久久精品一区二区三| 国产视频精品视频| 综合精品久久| 国产欧美精品日韩精品| 飘雪影视在线观看免费观看| 亚洲综合色婷婷| 亚洲一级片网站| 亚洲精品亚洲人成在线观看| 久99九色视频在线观看| 一级特黄特色的免费大片视频| 99r精品视频| 日本大片免费看| 成人免费网站www网站高清| 亚洲国产成人精品电影| 久草免费在线观看视频| 精品一区二区三区不卡| 神马影院我不卡| 成人做爰视频www网站小优视频| 亚洲精品在线免费观看视频| 男人操女人的视频网站| 国产在线视视频有精品| 亚洲一区二区三区精品视频| 午夜无码国产理论在线| 亚洲欧美中文日韩v在线观看| 国产成人在线播放视频| 高清久久久久久| 国产传媒久久久| 一区视频网站| 欧美国产亚洲精品久久久8v| 国产肥老妇视频| 亚洲免费观看在线观看| 黄色aaaaaa| 欧美日韩国产色综合一二三四| 95av在线视频| 色呦呦在线观看视频| 日韩三级在线观看| 久久免费视频精品| 福利91精品一区二区三区| www.日本在线视频| 动漫视频在线一区| 97精品国产97久久久久久免费| 日本美女一级片| 精品久久久久久亚洲精品| 成人手机在线免费视频| 久久一区亚洲| 一区二区在线高清视频| 精品国产伦一区二区三区观看说明 | 三叶草欧洲码在线| 新狼窝色av性久久久久久| 欧美极品色图| 成人在线免费av| 久久久精品一区| 北条麻妃一二三区| 疯狂做受xxxx高潮欧美日本| 欧美成人国产精品一区二区| 蜜臀av性久久久久蜜臀aⅴ| 一本色道久久综合亚洲二区三区| 亚洲精品一区av| 欧美极品少妇xxxxⅹ喷水| 日韩中文字幕综合| 日本乱人伦一区| 欧美三级黄色大片| 成人av在线电影| 88av.com| 女人天堂亚洲aⅴ在线观看| 国产一区免费在线观看| 成人激情视屏| 欧美激情亚洲自拍| 国产视频福利在线| 7777精品伊人久久久大香线蕉超级流畅 | a级片国产精品自在拍在线播放| 亚洲人a成www在线影院| 亚洲国产精品午夜在线观看| 91看片淫黄大片一级在线观看| 妞干网在线免费视频| 国产精品毛片一区二区在线看| 国产精品国产精品| av亚洲一区| 超碰在线成人| 欧美在线视频导航| 免费高清完整在线观看| 亚洲大胆人体在线| 伊人影院中文字幕| 亚洲线精品一区二区三区| 国产精品美女高潮无套| 成人在线一区二区三区| 蜜臀视频一区二区三区| 亚洲一级影院| 亚洲欧洲一区二区| 精品视频在线你懂得| 国产精品午夜一区二区欲梦| cao在线视频| 久久精品成人欧美大片古装| 日韩有码电影| 日韩欧美二区三区| 中文字幕+乱码+中文| 亚洲国产另类精品专区| 黑人狂躁日本娇小| 久久精品免费在线观看| 18禁一区二区三区| 蜜桃久久精品一区二区| 黑森林福利视频导航| 国内自拍一区| 中文字幕日韩精品一区二区| 国产成人精品999在线观看| 国产亚洲第一区| 欧美1区2区3| 国产精品丝袜一区二区三区| 成人亚洲欧美| 国模私拍视频一区| 新版中文在线官网| 久久久精品日本| 91大神xh98hx在线播放| 亚洲天堂一区二区三区| 日韩欧美在线观看一区二区| 精品国产凹凸成av人网站| 国产人妖一区二区| 欧美二区三区的天堂| 中文字幕自拍偷拍| 欧美影院一区二区三区| 日本特级黄色片| 天天综合网天天综合色| 国产一级片免费| 亚洲国产成人porn| 久久精品女人毛片国产| 亚洲影院理伦片| 丰满少妇高潮久久三区| 亚洲免费观看高清在线观看| 久久嫩草捆绑紧缚| 中文字幕制服丝袜一区二区三区 | 国产第一页视频| 国产女优一区| 免费在线观看亚洲视频| 99视频精品| 国产免费毛卡片| 久久久久久久波多野高潮日日| 四虎永久在线精品无码视频| 美女国产精品| 中文字幕第36页| 麻豆精品在线视频| 制服丝袜中文字幕第一页| 九九国产精品视频| 超碰中文字幕在线观看| 国产91精品一区二区麻豆网站| 俄罗斯女人裸体性做爰| 国产制服丝袜一区| 不卡的一区二区| 成人性生交大片免费看中文| 亚洲精品乱码久久| 久久久久久久久蜜桃| 欧美日韩aaaaa| 五月婷婷激情视频| 欧美三级中文字| 国产免费无遮挡| 日韩欧美国产1| 四虎精品在永久在线观看| 亚洲欧美日韩在线高清直播| 成人激情电影在线看| 久久精品中文字幕| 91九色美女在线视频| 欧美专区在线观看| 日韩免费大片| 国产精品免费在线播放| 中文字幕中文字幕精品| 伊人av成人| 激情久久婷婷| 人人爽人人av| 国产成人亚洲精品青草天美| 久久国产精品无码一级毛片| 国产精品麻豆久久久| 久久精品国产亚洲AV无码男同 | 国偷自产视频一区二区久| 免费国产一区二区| 国产精品久久久久久久久久10秀| 激情六月天婷婷| 香蕉av777xxx色综合一区| 亚洲第一区第二区第三区| 99久久国产综合精品女不卡| 美国黑人一级大黄| 亚洲图片一区二区| 亚洲一区二区三区网站| 亚洲成av人乱码色午夜| avtt亚洲| 午夜精品在线观看| 电影一区二区三区久久免费观看| 九色综合日本| 亚洲欧美综合| 日本精品一区二区三区四区| 国产精品一区二区在线看| 受虐m奴xxx在线观看| 一区二区三区毛片| 一区二区视频免费| 日韩精品免费在线| 五月天激情在线| 国产精品偷伦免费视频观看的| 欧美sss在线视频| 欧美日韩视频免费在线观看| 蜜桃伊人久久| 黄色av网址在线观看| 亚洲视频在线观看一区| 中文字幕 国产| 亚洲人成电影在线| 都市激情国产精品| 91久久国产综合久久蜜月精品| 国产一区二区三区四区二区| 野外做受又硬又粗又大视频√| 国产在线精品视频| 美国黄色特级片| 色综合久久中文综合久久97| 六月丁香色婷婷| 欧美激情按摩在线| 欧美专区一区| 国产又黄又爽免费视频| 蜜桃视频在线观看一区二区| 亚洲av综合一区二区| 精品色蜜蜜精品视频在线观看| 亚洲精品字幕在线| 久久福利网址导航| 国产剧情一区二区在线观看| 亚洲午夜久久久影院伊人| 日本美女视频一区二区| 好吊视频在线观看| 欧美日韩精品在线| 四虎精品在线| 日韩美女在线看| 国产区精品区| 狠狠热免费视频| 国产日韩欧美亚洲| 天天综合久久综合| 一区二区国产精品视频| 电影在线观看一区二区| 五月天久久狠狠| 久久99国产精品尤物| 日韩成人毛片视频| 日韩精品一区二区三区在线播放 | 黑人无套内谢中国美女| 亚洲欧美日韩在线不卡| www黄色网址| 久久久久女教师免费一区| 大型av综合网站| 亚洲中文字幕无码专区| 国产色综合一区| 一区二区精品视频在线观看| 久久精品最新地址| 99精品中文字幕在线不卡| 日韩五码在线观看| 国产性天天综合网| 一卡二卡三卡在线观看| 欧美麻豆久久久久久中文 | 国产精品综合二区| 久久久久久久久久久久久久免费看 | 婷婷综合在线| 91人人澡人人爽| 黑人精品xxx一区| yourporn在线观看中文站| 91久久精品国产91性色| 亚洲无线视频| 国产全是老熟女太爽了| 欧美日韩国产一级二级| 在线网址91| 久久精品国产精品青草色艺| 免费成人美女在线观看| 国产97免费视频| 日韩精品免费在线视频观看| 日本肉肉一区| 妞干网视频在线观看| 久久久九九九九| 国产女人爽到高潮a毛片| 91国产在线精品| 国产精品成人av| 最近中文字幕无免费| 欧美日韩精品系列| 182在线播放| 亚洲视频在线二区| 不卡影院免费观看| 中文字幕 欧美激情| 性欧美xxxx视频在线观看| 成人在线亚洲| 日韩无码精品一区二区| 欧美丝袜丝交足nylons| 国产网红在线观看| 亚洲精品一区二区三| 成人性色生活片免费看爆迷你毛片| 波多野结衣视频免费观看| 色综合五月天导航| 日韩三级在线| v8888av|