隧道刚开发的仓库准备进什么商品借出仓库管理流程

种子贮藏仓库及入库准备_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
种子贮藏仓库及入库准备
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢从开发的软件《备件仓库管理系统》总结的一些经验 - 伍华聪 - 博客园
随笔 - 489, 文章 - 20, 评论 - 7193, 引用 - 20
最近做了一个备件仓库管理软件,虽然只是一个不太复杂的仓库管理业务的软件,附带产出一些相关的报表,而且有之前做过的送水管理系统、酒店管理系统等软件的基础及技术储备,不过做起来发现还是有很多细节及新的东西,在客户不断提出修改意见以及改进建议的同时,逐步吸收优化新的知识,现大概总结一些相关的开发心得,以飨读者。
首先来看看整个软件的主体界面,如下所示,软件的功能主要集备件信息管理、备件入库、备件出库、库存查询、库房管理、业务报表、权限管理、数据字典管理、备件及库存导入等功能于一体。
&现大致就主体界面介绍一些相关的知识:1、使用OutLook样式的工具栏,提高界面的美观及易用性,这个在我的早期文章中已经有介绍,该控件集成美观的图标,可能很好提高界面的友好性及可操作性,可以令界面增色不少,详细请查看《》&在此不再赘述,只是介绍下并略为带过即可。&2、使用“WeifenLuo.WinFormsUI.Docking”控件来设计多文档界面效果,可以方便多个界面进行操作,这个控件也有相关的文章进行介绍使用了,请参考《》&和《》。&3、 尽可能使用已经在共享软件中广泛性使用我自己的分页控件,该分页控件集成了数据分页、内容提示、数据打印、数据导出、表头中文转义等很多功能,由于集成性很好,省却很多功夫,专注客户的业务及变化即可,否则一项表头的中文转换就够呛,还不说数据的分页,由于整合性、一致性、稳定性等特点,客户使用感觉比较好。最新的版本整合了优秀的Aspose.Cell控件来进行Excel数据的导出,速度非常快,而且默认表头冻结,非常方便。&4、 使用Apose.Cell控件的强大功能,实现自定义模板报表的定制导出。使用普通的二维表,虽然能满足大多数的情况,不过在一般的业务中,自定义模板的报表根据贴近实际,符合客户的要求,虽然自定义模板的报表,比普通的二维报表复杂一些,不过利用Apose.Cell控件,并在预设模板中预设变量,可以生成很复杂的报表。详细历程可以参考我介绍Apose.Cell控件的使用文章,《》、《》。利用Apose.Cell可以生成下面几类自定义模板的报表:&&&&其他设计模板如下所示:&&实际生成的报表如下所示:&&5、利用现成独立的数据字典模块代码。由于一般复杂一点的系统,都需要有数据字典的模块,由于我在较早已经在这块已经做了一些开发,因此直接拿过来使用即可,该数据字典模块功能相对比较独立,因此是一个非常使用的模块,数据通过字典排序可以实现合理的排序,支持无限多级字典分类。&&实际使用的时候,也是非常方便,首先我们封装一下获取字典项目的方法如下所示:&&&&&&&&&///&&summary&&&&&&&&&///&根据字典类型获取对应的CListItem集合&&&&&&&&///&&/summary&&&&&&&&&///&&param&name="dictTypeName"&&/param&&&&&&&&&///&&returns&&/returns&&&&&&&&&public&static&CListItem[]&GetDictByDictType(string&dictTypeName)&&&&&&&&{&&&&&&&&&&&&List&CListItem&&itemList&=&new&List&CListItem&();&&&&&&&&&&&&Dictionary&string,&string&&dict&=&BLLFactory&DictData&.Instance.GetDictByDictType(dictTypeName);&&&&&&&&&&&&foreach&(string&key&in&dict.Keys)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&itemList.Add(new&CListItem(key,&dict[key]));&&&&&&&&&&&&}&&&&&&&&&&&&return&itemList.ToArray();&&&&&&&&}&然后再窗体初始化的时候,添加字典的初始化代码即可,如下所示:&& & & &private&void&InitDictItem()&&&&&&&&{&&&&&&&&&&&&this.txtManufacture.Items.Clear();&&&&&&&&&&&&this.txtManufacture.Items.AddRange(DictItemUtil.GetDictByDictType("供货商"));&&&&&&&&&&&&this.txtBigType.Items.Clear();&&&&&&&&&&&&this.txtBigType.Items.AddRange(DictItemUtil.GetDictByDictType("备件属类"));&&&&&&&&&&&&this.txtItemType.Items.Clear();&&&&&&&&&&&&this.txtItemType.Items.AddRange(DictItemUtil.GetDictByDictType("备件类别"));&&&&&&&&&&&&this.txtUnit.Items.Clear();&&&&&&&&&&&&this.txtUnit.Items.AddRange(DictItemUtil.GetDictByDictType("单位"));&&&&&&&&&&&&this.txtSource.Items.Clear();&&&&&&&&&&&&this.txtSource.Items.AddRange(DictItemUtil.GetDictByDictType("来源"));&&&&&&&&&&&&this.txtUsagePos.Items.Clear();&&&&&&&&&&&&this.txtUsagePos.Items.AddRange(DictItemUtil.GetDictByDictType("使用位置"));&&&&&&&&&&&&this.txtUsagePos.SelectedIndex&=&0;&&&&&&&&&&&&this.txtBelongDept.Items.Clear();&&&&&&&&&&&&this.txtBelongDept.Items.AddRange(DictItemUtil.GetDictByDictType("部门"));&&&&&&&&&&&&this.txtBelongWareHouse.Items.Clear();&&&&&&&&&&&&this.txtBelongWareHouse.Items.AddRange(Portal.gc.ManagedWareHouse.ToArray());&&&&&&&&&&&&this.txtBelongWareHouse.SelectedIndex&=&0;&& & & }&通过数据字典大类无限级分类以及对字典内容的管理,基本上可以满足绝大多数的需要。6、使用独立又具整合性的权限管理系统,既相互独立,有相互整合,方便重用,又不需重新开发,非常方便、更提高效率。 由于权限系统精简而又能满足日常绝大多数的需要,不会复杂的难于管理,而且也是基于角色的授权访问机制(RBAC),最重要是非常适合软件的整合使用。&用户角色功能维护界面如下:&编辑角色对应的权限界面如下:如果我们在开发的系统中要集成现有的权限系统,操作代码如下所示:&& & & &///&&summary&&&&&&&&&///&从数据库中列出相关用户&&&&&&&&///&&/summary&&&&&&&&&private&void&InitLoginName()&&&&&&&&{&&&&&&&&&&&&User&userBLL&=&new&User();&&&&&&&&&&&&List&UserInfo&&userList&=&userBLL.GetAll();&&&&&&&&&&&&this.cmbzhanhao.Items.Clear();&&&&&&&&&&&&foreach&(UserInfo&info&in&userList)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&this.cmbzhanhao.Items.Add(info.Name);&&&&&&&&&&&&}&& & & &}&登录的时候,只需要把该客户能操作的功能点放到内存列表中,如下所示:&& & & & & & &&string&loginName&=&this.cmbzhanhao.Text.Trim();&&&&&&&&&&&&&&&&User&userBLL&=&new&User();&&&&&&&&&&&&&&&&string&identity&=&userBLL.VerifyUser(loginName,&this.tbPass.Text,&Guid.NewGuid().ToString());&&&&&&&&&&&&&&&&if&(!string.IsNullOrEmpty(identity))&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&UserInfo&info&=&userBLL.GetUserByName(loginName);&&&&&&&&&&&&&&&&&&&&#region&获取用户的功能列表&&&&&&&&&&&&&&&&&&&&Function&functionBLL&=&new&Function();&&&&&&&&&&&&&&&&&&&&List&FunctionInfo&&list&=&functionBLL.GetFunctionsByUser(info.ID,&"WareMis");&&&&&&&&&&&&&&&&&&&&if&(list&!=&null&&&&list.Count&&&0)&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&foreach&(FunctionInfo&functionInfo&in&list)&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(!Portal.gc.FunctionDict.ContainsKey(functionInfo.ControlID))&&&&&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Portal.gc.FunctionDict.Add(functionInfo.ControlID,&functionInfo);&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&#endregion&& & & & & & & }&&用户对某个功能点授权判断,只需要判断某功能点是否在已有集合中即可,如下所示:&&&&&&&&&///&&summary&&&&&&&&&///&根据权限屏蔽功能&&&&&&&&///&&/summary&&&&&&&&&private&void&InitAuthorizedUI()&&&&&&&&{&&&&&&&&&&&&this.tool_Report.Enabled&=&Portal.gc.HasFunction("Report");&&&&&&&&&&&&this.tool_Dict.Enabled=&Portal.gc.HasFunction("Dictionary");&&&&&&&&&&&&this.tool_ItemDetail.Enabled&=&Portal.gc.HasFunction("ItemDetail");&&&&&&&&&&&&this.tool_Purchase.Enabled&=&Portal.gc.HasFunction("Purchase");&&&&&&&&&&&&this.tool_StockSearch.Enabled&=&Portal.gc.HasFunction("StockSearch");&&&&&&&&&&&&this.tool_TakeOut.Enabled&=&Portal.gc.HasFunction("TakeOut");&&&&&&&&&&&&this.menu_WareHouse.Enabled&=&Portal.gc.HasFunction("WareHouse");&&&&&&&&&&&&this.menu_Dictionary.Enabled&=&Portal.gc.HasFunction("Dictionary");&&&&&&&&&&&&this.menu_run_systemLog.Enabled&=&Portal.gc.HasFunction("LoginLog");&&&&&&&&&&&&this.menu_Parameters.Enabled&=&Portal.gc.HasFunction("Parameters");&&&&&&&&&&&&this.menu_MonthlyStatistic.Enabled&=&Portal.gc.HasFunction("MonthlyStatistic");&&&&&&&&&&&&this.menu_AnnualStatistic.Enabled&=&Portal.gc.HasFunction("AnnualStatistic");&&&&&&&&&&&&this.menu_ClearAll.Enabled&=&Portal.gc.HasFunction("ClearAllData");&&&&&&&&&&&&this.menu_ImportItemDetail.Enabled&=&Portal.gc.HasFunction("ImportItemDetail");&&&&&&&&}&因此,文章到这里先小结一下,就是利用现有成熟、稳定、集成性好的控件或者模块,或者利用合适易用的控件,既能事半功倍的完成任务,又能快速响应客户的需求变化 ,还能在界面整体上给客户留下好的印象,一举三得,何乐不为?&欢迎与大家一起探讨Winform开发的点点滴滴或者相互合作交流。&

我要回帖

更多关于 仓库商品管理 的文章

 

随机推荐