项目简介:这是基于WinCE6.0系统的嵌入式开发,宿主机器是本公司自主开发一款小型智能终端。本程序主要解决小商户的分销管理。这也是一款定制系统。为了方便总部对代理商户的管理以及货物的调剂。项目分为前台和后台,前台部署在宿主机上,后台部署在总部服务器通过Web浏览。
功能简介:机器注册、系统自动更新、与服务器数据同步。前台功能:销售开单打印小票、销售退货、查询统计、订货、退货、盘点、会员管理、信息通知、系统管理、联机操作等。后台功能:订单管理、销售统计、设备注册、系统设置。当然这都是总部对各个门店的管理。详细功能不再讨论。
功能实现详解——公司代码不好透露,给出某个知识点的应用
机器注册:通过注册表与后台数据库进行注册。
RegistryKey rkLocalM =Registry.LocalMachine;
string strSubKey = @"\Init\BootVars";//根路径
RegistryKey rkSub =rkLocalM.OpenSubKey(strSubKey, true);//打开注册表
rkSub.SetValue("MaeID",this.textBox1.Text, RegistryValueKind.String);
系统自动更新:在程序运行时会进行版本号判断,版本过低就进行更新,更新方式:下载程序包,进行替换然后启动程序。
Web service获取版本号,进行对比。
通过Web service进行程序获取。
文件的压缩与解压缩公共类分享
销售开单打印小票:此功能的实现主要是流程分析,及通过串口对扫描枪、打印机的操作。
//定义一个委托
delegate void HandleInterfaceGetBarcodeDelegate(stringdata);
//读取扫描抢返回值。
HandleInterfaceGetBarcodeDelegate interfaceGetBarcodeDelegate;
//实例化委托对象
interfaceGetBarcodeDelegate = new HandleInterfaceGetBarcodeDelegate(GetBarCode);
//控件的接受数据事件。
private void serialPort1_DataReceived(objectsender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
//延时毫秒以避免一个条码读成两段的情况。
System.Threading.Thread.Sleep(50);
this.BeginInvoke(interfaceGetBarcodeDelegate,new string[] { serialPort1.ReadExisting() });
}
catch { }
}
//委托的方法。
private void GetBarCode(string txt)
{
try
{
string barcode = txt.Replace("\r\n","").Replace("\r", "").Replace("\n", "");
if (barcode != "TimeOut"&& barcode != "")
{
this.lblName.Focus();
this.ShowAddGoods(barcode,false);
SaleForm_KeyDown(null, new KeyEventArgs(Keys.Enter));//如果是通过条码扫描,直接添加到商品列表。
}
}
catch { }
}
此类软件最关键的不是使用技术的难易,而是对业务流程的了解程度,是否可能满足用户的需求,不要做出一个功能强大但不符合客户需求的软件。而且要注意代码的封装重用性。