一.需求提出

客服小妹跟我说,每天要统计新加好友数,得先记下昨天的数目,然后查看今天的数目,还要相减,打字,记录——好麻烦!

又说,客户多的时候,忙起这头忘了那头,文字记录备忘又太费劲!

我说,赐你一个软件!于是有了下面这个东西。

二.主要界面

      

三.主要功能简介

1 .可定时弹出主界面,输入今日好友数,计算出新加好友数,并将今日好友数存盘。

2.统计信息显示在界面上,并且写入word文件中以备查看,并自动拷贝至剪切板,方便复制。

3.可语音备忘,录制语音消息,并保存在文件夹中。

4.可下拉列表查看文件,并选中播放。

5.可将原始文件转录成MP3文件。

四.编码实现

1.好友统计功能相关实现

先设计两个属性,直接对应于两个文件,这样一来,既能以字段的风格来操作文件,又能将变量持久化到硬盘上,以保存状态。

        public int TodayFriendsCount
        {
            get
            {
                if (!File.Exists("todayFriendsCount.dat"))
                {
                    File.WriteAllBytes());
                }
                );
            }
            set { File.WriteAllBytes("todayFriendsCount.dat", BitConverter.GetBytes(value)); }
        }

        public bool IsHandled
        {
            get
            {
                if (!File.Exists("HandledSign.dat"))
                {
                    File.WriteAllBytes("HandledSign.dat", BitConverter.GetBytes(false));
                }
                );
            }
            set
            {
                File.WriteAllBytes("HandledSign.dat", BitConverter.GetBytes(value));
                this.toolStripLabel_isHandled.Text = this.IsHandled ? "今日已处理" : "今日未处理";
                this.toolStripLabel_isHandled.ForeColor = this.IsHandled ? Color.Red : Color.Blue;
            }
        }

计算按钮事件处理方法

        private void button1_Click(object sender, EventArgs e)
        {
            //已经处理过
            if (this.IsHandled)
            {
                DialogResult dialogResult = MessageBox.Show("今日已经执行过,是否还要继续操作?", "提醒", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.No)
                {
                    this.ReFocusInput();
                    return;
                }
            }

            if (String.IsNullOrEmpty(this.textBox_todayCount.Text.Trim()))
            {
                MessageBox.Show("输入不能为空!");
                this.textBox_todayCount.Focus();
                return;
            }          

            int todayFriendsCountNew = int.Parse(this.textBox_todayCount.Text.Trim());
            int incremeFriendsCount = todayFriendsCountNew - this.TodayFriendsCount;
            this.richTextBox_ShowNewCount.Text = string.Format("今日新加好友:{0} - {1} = {2}",
                                                                todayFriendsCountNew,
                                                                this.TodayFriendsCount,
                                                                incremeFriendsCount);
            Clipboard.SetText(this.richTextBox_ShowNewCount.Text);          

            string text = string.Format("{0}   {1}\r\n", DateTime.Now.ToShortDateString(), this.richTextBox_ShowNewCount.Text);
            this.AppendFriendsDiary(text);

            //重置基础参数
            this.ReSetInitialParameter(todayFriendsCountNew, true);
            //重聚焦输入框
            this.ReFocusInput();
        }

2.语音备忘功能相关实现

设计一个byte数组用于存放语音数据

 ];

采集发生时,将声音数据数组拼接到字段数组上。

        void microphoneCapturer_AudioCaptured(byte[] data)
        {
            this.audioData = BufferJointer.Joint(this.audioData, data);
            this.decibelDisplayer1.DisplayAudioData(data);
        }

停止录制时写入文件

        private void button_stop_Click(object sender, EventArgs e)
        {
            this.microphoneCapturer.Stop();//停止采集
            this.originalFileManager.WriteFile(this.audioData);//写文件
            this.LoadAduioFileList();
            this.ShowWorkStatus(false);
        }

播放选中文件

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (this.ExamineSelectNull())
            {
                return;
            }
            this.audioPlayer.Play(this.originalFileManager.ReadFile(this.toolStripComboBox1.SelectedText));
        }

转录为MP3文件

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (this.ExamineSelectNull())
            {
                return;
            }

            this.MakeAudioFile();

            DialogResult dialogResult = MessageBox.Show("转存成功,是否打开目录查看?", "提醒", MessageBoxButtons.YesNo);
            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                this.mP3FileManager.OpenDirectory();
            }
        }

五.源码下载

下载: 客服备忘系统(包含语音备忘功能、语音播放功能、并能将语音文件转录成MP3)

客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo源码——倾情奉献!的更多相关文章

  1. 用SignalR 2.0开发客服系统[系列1:实现群发通讯]

    前言 交流群:195866844 先说一下我为什么会写这个博客吧,(首先说一下,我是一个小菜鸟,讲的不好请指导 - -,)  前段时间公司的项目涉及到在B/S上使用即时通讯,(其实就是做一个B/S的客 ...

  2. 用SignalR 2.0开发客服系统[系列2:实现聊天室]

    前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...

  3. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

  4. 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

  5. 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

  6. C#开发微信门户及应用(7)-微信多客服功能及开发集成

    最近一直在弄微信的集成功能开发,发现微信给认证账户开通了一个多客服的功能,对于客户的咨询,可以切换至客服处理的方式,而且可以添加多个客服进行处理,这个在客户咨询比较多的时候,是一个不错的营销功能.微信 ...

  7. 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)

    近段时间利用业余时间开发了一套在线客服系统,期间遇到过大大小小不少问题,好在都一一解决,最终效果也还可以,打算写一个系列的文章把开发过程详细的记录下来. 希望能够和更多的开发人员互相交流学习,也希望有 ...

  8. 微信小程序客服消息使用指南

    客服消息使用指南 为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通. 功能介绍 用户可使用小程序客服消息功能,与小程序的客服人 ...

  9. wpf 客户端 添加qq客服咨询

    使用qq推广 站点:http://shang.qq.com/v3/widget.html 复制里面的html代码: <a target=" src="http://wpa.q ...

随机推荐

  1. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  2. ASP.NET Core 之 Identity 入门(三)

    前言 在上一篇文章中,我们学习了 CookieAuthentication 中间件,本篇的话主要看一下 Identity 本身. 最早2005年 ASP.NET 2.0 的时候开始, Web 应用程序 ...

  3. CoreCRM 开发实录——想用国货不容易

    昨天(2016年12月29日)发了开始开发的文章.本来晚上准备在 Coding.NET 上添加几个任务开始搞起了.可是真的开始用的时候才发现:Coding.NET 的任务功能只针对私有的任务开放.我想 ...

  4. Linux 添加新磁盘,在线扩充空间

    CentOS 7开发环境中的home 目录空间满了,需要增加空间 到虚拟机上执行"ls /sys/class/scsi_host",然后重新扫描SCSI总线来添加设备.如右图.然后 ...

  5. echarts+php+mysql 绘图实例

    最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...

  6. 关于Visual Studio 未能加载各种Package包的解决方案

    问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...

  7. C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)

    问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...

  8. Android中Fragment和ViewPager那点事儿(仿微信APP)

    在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...

  9. Spring异步功能

    使用 Spring 的异步功能时,实质是使用的 Servlet3 及以上版本的异步功能. Spring 的异步处理机制需要在 web.xml 中全部的 servlet 和 filter 处配置 < ...

  10. ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析

    我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的.在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表 ...