C#实现备忘录功能
一、简述
备忘录,相信大家生活中都使用过,比如记笔记、手机备忘录等等,这些都是记录自己灵感时所想、定期内想做的事情,好像跑题了,说说我的备忘录吧,我的备忘录功能上也就是增删改查的操作,另加到时提醒、语音播放内容,很简单吧,但是实用,好了,想看设计点吧。
二、设计
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); } }
总结:这是一个简单的备忘录程序,欢迎初学者学习,大神就随便看看就行了,欢迎大家点赞转发
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android ListView实现下拉加载功能
- Android 截图功能源码的分析
- Docker下搭建禅道管理系统
- Android如何通过Retrofit提交Json格式数据
- python-jsonpath 解析神器
- Android中自定义ImageView添加文字设置按下效果详解
- Android中使用Kotlin实现一个简单的登录界面
- Android编程实现webview将网页打包成apk的方法
- Android 实现代码混淆的实例
- Android中复制图片的实例代码
- Android 两种启动模式的实例详解
- Retrofit2.0 实现图文(参数+图片)上传方法总结
- Android中使用GridView实现仿微信图片上传功能(附源代码)
- Android下载进度监听和通知的处理详解
- Android上传多张图片的实例代码(RxJava异步分发)