一、簡述
備忘錄,相信大家生活中都使用過,比如記筆記、手機備忘錄等等,這些都是記錄自己靈感時所想、定期內想做的事情,好像跑題了,說說我的備忘錄吧,我的備忘錄功能上也就是增刪改查的操作,另加到時提醒、語音播放內容,很簡單吧,但是實用,好了,想看設計點吧。
二、設計
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看看,當然我也貼出代碼,讓大家參考一下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//聲明一個委托 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的沒有幾個沒自動裝語音識別的吧,好了,下面就是代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/// <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); } } |
總結:這是一個簡單的備忘錄程序,歡迎初學者學習,大神就隨便看看就行了,歡迎大家點贊轉發
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/WeFly/archive/2017/11/16/7845622.html