那么它就是一个类型

时间:2022-01-31 09:05:52

标签:

一、简述

备忘录,相信大家生活中都使用过,好比记条记、手机备忘录等等,这些都是记录本身灵感时所想、按期内想做的工作,仿佛跑题了,说说我的备忘录吧,我的备忘录成果上也就是增删改查的操纵,另加到时提醒、语音播放内容,很简单吧,但是实用,好了,想看设计点吧。

二、设计

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>提示内容</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> /// 百度语音合成(文档网站:) /// </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); } }

 总结:这是一个简单的备忘录措施,欢迎初学者学习,大神就随便看看就行了,欢迎大家点赞转发

标签: