C#實(shí)現(xiàn)備忘錄功能
一、簡(jiǎn)述
備忘錄,相信大家生活中都使用過(guò),比如記筆記、手機(jī)備忘錄等等,這些都是記錄自己靈感時(shí)所想、定期內(nèi)想做的事情,好像跑題了,說(shuō)說(shuō)我的備忘錄吧,我的備忘錄功能上也就是增刪改查的操作,另加到時(shí)提醒、語(yǔ)音 內(nèi)容,很簡(jiǎn)單吧,但是實(shí)用,好了,想看設(shè)計(jì)點(diǎn)吧。
二、設(shè)計(jì)
1、數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)用的是SQLite
數(shù)據(jù)庫(kù)表:Sys_Kind、Memorandum
Sys_Kind是一個(gè)通用字典表,這個(gè)對(duì)初學(xué)者有幫助,如下圖:
解析:ID不用說(shuō)了,自增的標(biāo)識(shí),K_Name:字典名稱,K_Parent:父類型標(biāo)識(shí),就是說(shuō)如果K_Parent為0,那么它就是一個(gè)類型,然后子字典就以它作為父類,這個(gè)字段鍵入父類ID值即可,K_Sort排序就是單個(gè)類型的排序,或者你也可以將所有數(shù)據(jù)作為排序也行,K_AddTime添加時(shí)間,K_Desc字典描述,這樣可以便于后來(lái)的人查看這個(gè)是用來(lái)干什么的,K_State字典狀態(tài),這個(gè)呢,可以靈活應(yīng)用,用來(lái)是否顯示某個(gè)字典或者其他多狀態(tài)都可以,K_Code字典代碼值,這個(gè)就很重要了,這個(gè)就用作字典的值,很多人或許會(huì)問(wèn),為什么不用自增ID呢,因?yàn)槿绻愋秃芏嗟那闆r下,這個(gè)ID值會(huì)越來(lái)越大,你定義的類型值本身沒(méi)有幾個(gè),而它的值還這么大,何必呢,旁邊這個(gè)表就是備忘錄表,我就不解釋了,自己慢慢體會(huì)。
2、程序設(shè)計(jì)(上圖)
這個(gè)呢,大家都知道哈,就是普普通通的增刪改查,沒(méi)什么大的技術(shù)含量
三、核心技術(shù)
1、自動(dòng)查詢備忘錄
這一塊呢,相信大家都知道,可以用Timer這個(gè)控件,的確可以用Timer,當(dāng)然這里,我用的不是Timer控件,而是System.Threading.Timer這個(gè)類,當(dāng)然需要了解相關(guān)的用法,大家可以百度搜索,也可以去這兒https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx看看,當(dāng)然我也貼出代碼,讓大家參考一下。
//聲明一個(gè)委托 private delegate void SetTimerLogicCallback(); //聲明一個(gè)定時(shí)器的類 private System.Threading.Timer threadTimer; //執(zhí)行委托的方法,ShowMemorandumInfo是查詢數(shù)據(jù)庫(kù)的方法 private void ThreadMethod(object obj) { SetTimerLogicCallback timerLogic = new SetTimerLogicCallback(ShowMemorandumInfo); this.Invoke(timerLogic); } /// <summary> /// 定時(shí)器設(shè)置,這個(gè)方法或者這段代碼可以寫(xiě)在窗體加載的時(shí)候 /// </summary> private void TimerSet() { threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ThreadMethod), null, 0, 1000); }
2、語(yǔ)音播報(bào)內(nèi)容
這塊我用了兩個(gè)方面的技術(shù),一個(gè)就是微軟自帶的System.Speech.Synthesis.SpeechSynthesizer語(yǔ)音識(shí)別的類,第二個(gè)就是百度提供的語(yǔ)音識(shí)別接口,為什么用兩個(gè)呢,如果我們用戶機(jī)上面沒(méi)網(wǎng),那么就可以使用微軟自帶的語(yǔ)音識(shí)別功能,如果用戶機(jī)沒(méi)裝微軟的語(yǔ)音識(shí)別,那么就可以使用百度的語(yǔ)音識(shí)別接口,如果沒(méi)網(wǎng)、機(jī)器也沒(méi)裝微軟的語(yǔ)音識(shí)別,那么你可以打包程序自動(dòng)裝微軟自帶語(yǔ)音識(shí)別的安裝包或者其他插件異或組件,當(dāng)然,這個(gè)安裝包肯定比你的程序大很多,估計(jì)現(xiàn)在除了用xp的,win7的沒(méi)有幾個(gè)沒(méi)自動(dòng)裝語(yǔ)音識(shí)別的吧,好了,下面就是代碼:
/// <summary> /// 微軟語(yǔ)音識(shí)別 /// </summary> /// <param name="content">提示內(nèi)容</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> /// 百度語(yǔ)音合成(文檔網(wǎng)站:http://yuyin.baidu.com/docs/tts/197) /// </summary> private void BaiduTts(string audioText) { _ttsClient = new Baidu.Aip.Speech.Tts("API_KEY", "SECRET_KEY "); // 可選參數(shù) var option = new Dictionary<string, object>() { {"spd", 5}, // 語(yǔ)速 {"vol", 7}, // 音量 {"per", 4} // 發(fā)音人,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("百度語(yǔ)音合成異常", result.ErrorMsg); } }
總結(jié):這是一個(gè)簡(jiǎn)單的備忘錄程序,歡迎初學(xué)者學(xué)習(xí),大神就隨便看看就行了,歡迎大家點(diǎn)贊轉(zhuǎn)發(fā)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新聞效果的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實(shí)現(xiàn)多線程下載文件的方法
- 01-10C#實(shí)現(xiàn)Winform中打開(kāi)網(wǎng)頁(yè)頁(yè)面的方法
- 01-10C#實(shí)現(xiàn)遠(yuǎn)程關(guān)閉計(jì)算機(jī)或重啟計(jì)算機(jī)的方法
- 01-10C#自定義簽名章實(shí)現(xiàn)方法
- 01-10C#文件斷點(diǎn)續(xù)傳實(shí)現(xiàn)方法
- 01-10winform實(shí)現(xiàn)創(chuàng)建最前端窗體的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法