c# 小小備忘錄

来源:http://www.cnblogs.com/WeFly/archive/2017/11/16/7845622.html
-Advertisement-
Play Games

一、簡述 備忘錄,相信大家生活中都使用過,比如記筆記、手機備忘錄等等,這些都是記錄自己靈感時所想、定期內想做的事情,好像跑題了,說說我的備忘錄吧,我的備忘錄功能上也就是增刪改查的操作,另加到時提醒、語音播放內容,很簡單吧,但是實用,好了,想看設計點吧。 二、設計 1、資料庫設計 資料庫用的是SQLi ...


一、簡述

              備忘錄,相信大家生活中都使用過,比如記筆記、手機備忘錄等等,這些都是記錄自己靈感時所想、定期內想做的事情,好像跑題了,說說我的備忘錄吧,我的備忘錄功能上也就是增刪改查的操作,另加到時提醒、語音播放內容,很簡單吧,但是實用,好了,想看設計點吧。

 

二、設計

              1、資料庫設計

                    資料庫用的是SQLite

                    資料庫表:Sys_Kind、Memorandum

                    Sys_Kind是一個通用字典表,這個對初學者有幫助,如下圖:

                    

                    

 

                    解析:ID不用說了,自增的標識,K_Name:字典名稱,K_Parent:父類型標識,就是說如果K_Parent為0,那麼它就是一個類型,然後子字典就以它作為父類,這個欄位鍵入父類ID值即可,K_Sort排序就是單個類型的排序,或者你也可以將所有數據作為排序也行,K_AddTime添加時間,K_Desc字典描述,這樣可以便於後來的人查看這個是用來乾什麼的,K_State字典狀態,這個呢,可以靈活應用,用來是否顯示某個字典或者其他多狀態都可以,K_Code字典代碼值,這個就很重要了,這個就用作字典的值,很多人或許會問,為什麼不用自增ID呢,因為如果類型很多的情況下,這個ID值會越來越大,你定義的類型值本身沒有幾個,而它的值還這麼大,何必呢,旁邊這個表就是備忘錄表,我就不解釋了,自己慢慢體會。

             2、程式設計(上圖)

                         

                  

              這個呢,大家都知道哈,就是普普通通的增刪改查,沒什麼大的技術含量

 

三、核心技術

              1、自動查詢備忘錄

                    這一塊呢,相信大家都知道,可以用Timer這個控制項,的確可以用Timer,當然這裡,我用的不是Timer控制項,而是System.Threading.Timer這個類,當然需要瞭解相關的用法,大家可以百度搜索,也可以去這兒https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx看看,當然我也貼出代碼,讓大家參考一下。

               

//聲明一個委托
private delegate void SetTimerLogicCallback();

//聲明一個定時器的類
private System.Threading.Timer threadTimer;

//執行委托的方法,ShowMemorandumInfo是查詢資料庫的方法
private void ThreadMethod(object obj)
        {
            SetTimerLogicCallback timerLogic = new SetTimerLogicCallback(ShowMemorandumInfo);
            this.Invoke(timerLogic);
        }


 /// <summary>
        /// 定時器設置,這個方法或者這段代碼可以寫在窗體載入的時候
        /// </summary>
        private void TimerSet()
        {
             threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ThreadMethod), null, 0, 1000);
        }

             2、語音播報內容

                  這塊我用了兩個方面的技術,一個就是微軟自帶的System.Speech.Synthesis.SpeechSynthesizer語音識別的類,第二個就是百度提供的語音識別介面,為什麼用兩個呢,如果我們用戶機上面沒網,那麼就可以使用微軟自帶的語音識別功能,如果用戶機沒裝微軟的語音識別,那麼就可以使用百度的語音識別介面,如果沒網、機器也沒裝微軟的語音識別,那麼你可以打包程式自動裝微軟自帶語音識別的安裝包或者其他插件異或組件,當然,這個安裝包肯定比你的程式大很多,估計現在除了用xp的,win7的沒有幾個沒自動裝語音識別的吧,好了,下麵就是代碼:

                 

        /// <summary>
        /// 微軟語音識別
        /// </summary>
        /// <param name="content">提示內容</param>
        public static void SpeakAsync(string content)
        {
            try
            {
                if (synth != null)
                    synth.Dispose();
                synth = new System.Speech.Synthesis.SpeechSynthesizer();
                synth.SpeakAsyncCancelAll();
                synth.SpeakAsync(content);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// 百度語音合成(文檔網站:http://yuyin.baidu.com/docs/tts/197)
        /// </summary>
        private void BaiduTts(string audioText)
        {
            _ttsClient = new Baidu.Aip.Speech.Tts("API_KEY", "SECRET_KEY ");
            // 可選參數
            var option = new Dictionary<string, object>()
                {
                    {"spd", 5}, // 語速
                    {"vol", 7}, // 音量
                    {"per", 4}  // 發音人,4:情感度丫丫童聲
                };
            var result = _ttsClient.Synthesis(audioText, option);
            if (result.ErrorCode == 0)
            {
                string fileName = Application.StartupPath + "\\" + Guid.NewGuid().ToString() + ".mp3";
                System.IO.File.WriteAllBytes(fileName, result.Data);
                axWindowsMediaPlayer1.URL = fileName;
                axWindowsMediaPlayer1.Ctlcontrols.play();
                System.IO.File.Delete(fileName);
            }
            else
            {
                Utils.LogMessage("百度語音合成異常", result.ErrorMsg);
            }
        }

 

 總結:這是一個簡單的備忘錄程式,歡迎初學者學習,大神就隨便看看就行了,歡迎大家點贊轉發


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.1 cobbler簡介 Cobbler是一個Linux伺服器安裝的服務,可以通過網路啟動(PXE)的方式來快速安裝、重裝物理伺服器和虛擬機,同時還可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API介面,可 ...
  • linux中的rtc驅動位於drivers/rtc下,裡面包含了許多開發平臺的RTC驅動,我們這裡是以S3C24xx為主,所以它的RTC驅動為rtc-s3c.c 1.進入./drivers/rtc/rtc-s3c.c 還是首先進入入口函數,如下圖所示: 這裡註冊了一個“s3c2410-rtc”名稱的 ...
  • 1、下載安裝nginx 2、編輯nginx.conf文件 3、重啟或者啟動nginx 4、分別在172.100.10.21 和172.100.10.22 兩天機器人安裝配置apache+php或者nginx+php的環境 ...
  • sar命令常用格式 sar [options] [-A] [-o file] t [n] 其中: t為採樣間隔,n為採樣次數,預設值是1; -o file表示將命令結果以二進位格式存放在文件中,file 是文件名。 options 為命令行選項,sar命令常用選項如下: -A:所有報告的總和 -u: ...
  • 返回總目錄 本節包含3個手法: 1、Extract Method(提煉函數) 2、Inline Method(內聯函數) 3、Inline Temp(內聯臨時變數) Extract Method(提煉函數) 概要 你有一段代碼可以被組織在一起並獨立起來。 將這段代碼放進一個獨立函數中,並讓函數名稱解 ...
  • ASP.NET MVC程式設計自我感覺剛開始太難了,一個好好的頁面分成了好幾部分。剛開始沒有一點頭緒,只能按著源碼開始敲一遍,其中80%的代碼的含義都不知道啥意思,只能按著教材來一遍,開頭是非常痛苦,不知其然 , 更不知其所以然,出了問題就對著源碼看,看到底是哪段代碼的問題,就這樣敲了估計有大半個月 ...
  • Controller中的代碼如下var bingo = new Web1.Models.Bingo() { Title = "測試", desc = "嘻嘻", StarTime = DateTime.Now, EndTime = DateTime.Now.... ...
  • 在分析兩者之間的區別之前,我們先搞清楚這兩者的關係, TCP/IP協議簇 是一種網路控制協議,簡單點說就是一種網路協議,我們網路中的電腦就是通過這套協議簇來進行數據通信的。這套協議簇裡面包含了很多協議,比如說DNS,HTTP,ARP,ICMP等,UDP協議也是其中的一種。 關於TCP/IP協議簇詳 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...