C#實現(xiàn)備忘錄功能
一、簡述
備忘錄,相信大家生活中都使用過,比如記筆記、手機(jī)備忘錄等等,這些都是記錄自己靈感時所想、定期內(nèi)想做的事情,好像跑題了,說說我的備忘錄吧,我的備忘錄功能上也就是增刪改查的操作,另加到時提醒、語音播放內(nèi)容,很簡單吧,但是實用,好了,想看設(shè)計點吧。
二、設(shè)計
1、數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫用的是SQLite
數(shù)據(jù)庫表:Sys_Kind、Memorandum
Sys_Kind是一個通用字典表,這個對初學(xué)者有幫助,如下圖:


解析:ID不用說了,自增的標(biāo)識,K_Name:字典名稱,K_Parent:父類型標(biāo)識,就是說如果K_Parent為0,那么它就是一個類型,然后子字典就以它作為父類,這個字段鍵入父類ID值即可,K_Sort排序就是單個類型的排序,或者你也可以將所有數(shù)據(jù)作為排序也行,K_AddTime添加時間,K_Desc字典描述,這樣可以便于后來的人查看這個是用來干什么的,K_State字典狀態(tài),這個呢,可以靈活應(yīng)用,用來是否顯示某個字典或者其他多狀態(tài)都可以,K_Code字典代碼值,這個就很重要了,這個就用作字典的值,很多人或許會問,為什么不用自增ID呢,因為如果類型很多的情況下,這個ID值會越來越大,你定義的類型值本身沒有幾個,而它的值還這么大,何必呢,旁邊這個表就是備忘錄表,我就不解釋了,自己慢慢體會。
2、程序設(shè)計(上圖)


這個呢,大家都知道哈,就是普普通通的增刪改查,沒什么大的技術(shù)含量
三、核心技術(shù)
1、自動查詢備忘錄
這一塊呢,相信大家都知道,可以用Timer這個控件,的確可以用Timer,當(dāng)然這里,我用的不是Timer控件,而是System.Threading.Timer這個類,當(dāng)然需要了解相關(guān)的用法,大家可以百度搜索,也可以去這兒https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx看看,當(dāng)然我也貼出代碼,讓大家參考一下。
//聲明一個委托
private delegate void SetTimerLogicCallback();
//聲明一個定時器的類
private System.Threading.Timer threadTimer;
//執(zhí)行委托的方法,ShowMemorandumInfo是查詢數(shù)據(jù)庫的方法
private void ThreadMethod(object obj)
{
SetTimerLogicCallback timerLogic = new SetTimerLogicCallback(ShowMemorandumInfo);
this.Invoke(timerLogic);
}
/// <summary>
/// 定時器設(shè)置,這個方法或者這段代碼可以寫在窗體加載的時候
/// </summary>
private void TimerSet()
{
threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ThreadMethod), null, 0, 1000);
}
2、語音播報內(nèi)容
這塊我用了兩個方面的技術(shù),一個就是微軟自帶的System.Speech.Synthesis.SpeechSynthesizer語音識別的類,第二個就是百度提供的語音識別接口,為什么用兩個呢,如果我們用戶機(jī)上面沒網(wǎng),那么就可以使用微軟自帶的語音識別功能,如果用戶機(jī)沒裝微軟的語音識別,那么就可以使用百度的語音識別接口,如果沒網(wǎng)、機(jī)器也沒裝微軟的語音識別,那么你可以打包程序自動裝微軟自帶語音識別的安裝包或者其他插件異或組件,當(dāng)然,這個安裝包肯定比你的程序大很多,估計現(xiàn)在除了用xp的,win7的沒有幾個沒自動裝語音識別的吧,好了,下面就是代碼:
/// <summary>
/// 微軟語音識別
/// </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>
/// 百度語音合成(文檔網(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}, // 語速
{"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("百度語音合成異常", result.ErrorMsg);
}
}
總結(jié):這是一個簡單的備忘錄程序,歡迎初學(xué)者學(xué)習(xí),大神就隨便看看就行了,歡迎大家點贊轉(zhuǎn)發(fā)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用C#實現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550
本篇文章小編為大家介紹,使用C#實現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550,需要的朋友參考下2013-04-04
Unity3D Shader實現(xiàn)動態(tài)屏幕遮罩
這篇文章主要為大家詳細(xì)介紹了Unity3D Shader實現(xiàn)動態(tài)屏幕遮罩效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02
C#實現(xiàn)將字符串轉(zhuǎn)換成日期格式的方法
這篇文章主要介紹了C#實現(xiàn)將字符串轉(zhuǎn)換成日期格式的方法,涉及C#操作時間及字符串的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下2015-05-05
C#使用SqlSugarClient進(jìn)行數(shù)據(jù)訪問并實現(xiàn)了統(tǒng)一的批量依賴注入(示例代碼)
M為 BaseDto 請用C# 給出一個案例,支持不同表對應(yīng)不同的業(yè)務(wù)邏輯層,然后不同倉儲實例,不同表的業(yè)務(wù),都實現(xiàn)統(tǒng)一的批量依賴注入,下面通過示例給大家演示如何使用SqlSugarClient進(jìn)行數(shù)據(jù)訪問,并實現(xiàn)了統(tǒng)一的批量依賴注入,感興趣的朋友跟隨小編一起看看吧2024-05-05

