艾伟_转载:WinForm界面开发之酒店管理系统--开篇

  星移斗转,时光似箭,不知不觉中,酒店管理系统的开发从开始到现在的结束,已经2个月了,2个月的业余时间,2个月的生活情趣,都寄托在这个软件当中,经历了各种艰苦和困惑,终于得以修成正果---深田之星酒店管理系统的顺利发布。

  技术的历程是一个开拓进取、攻克难题的历程,其中有困惑也有兴奋,有苦涩也有甜蜜, 在这个过程中,再一次检阅了我的Database2Sharp代码自动生成的开发工具的,再一次从“深田之星送水管理系统”进行升华,技术从来没有尽头,只有不断完善,以及不断的超越和创新。在这个过程中,总会产生一系列的Q&A,碰到了一个难题,如何寻找相应的解决方法,就是非常有趣的问题了。

  写这个随笔的初衷主要不是宣传我做的软件,而是有感而发,感随物现,介绍在其中历程的一些思考和解决方法,介绍做这个酒店管理系统的一些界面和非界面,代码和非代码的东西,和大家做一个交流,希望大家能我从言之无物、略表空洞的文章中捡趣拾遗,略受启发。言毕,晒上所做东西,在继续.......

 

  整个系统的界面布局还是沿用我的“送水管理系统网络版”的界面样式,采用了OutlookBar + Wenfenluo停靠控件,客房状态视图、KTV状态视图、茶室状态视图等都是动态展示相关的房间信息的,因此需要做成控件,整个控件结合了菜单操作,以及公布一些接口给界面调用显示的,封装这块总的还是花费了不少功夫,因为很多时间花费在寻找合适的控件上,寻找是否有人家造好的轮子,以免重复制造轮子。不过再好的轮子,要想用的好,都是需要修改和调整的。由于没有找到很合适的,基本上这个界面都是自己封装控件来实现的。下面几篇文章我会详细介绍一些这方面的知识,为读者,也为自己在技术方面做一个到此一游的标记,N月之后,回头看看,希望仍觉得有用,呵呵。

  下面介绍一下另外一个部分,就是下图左边部分的显示,它是一个很好的开源控件,给我进行了适当的封装,里面的显示内容,可以随意定制,因此在客服、KTV、茶室中公用一个状态显示窗口,但是显示的内容不同,界面效果还是不错的。左边的状态那块用的是一个ExploreBar的控件,另外一个比普通按钮好看的是一个不错的按钮类,功能比较强大方便,可以设置 很多种效果,包括各种图片的设置还是很方便的,我这里只是用了它的最原始效果。

  下面这个是报表模块中的一部分了,整个系统很多报表,报表都脱不了打印啊、导出啊的功能了,开始想利用ActiveReport做为报表打印的,可是发现为每个不同的报表设计一个报表窗口,实在是消受不起,而且这些内容又是重复再重复的了,因此利用我原先封装好的分页GridView控件就可以了,由于很多报表不需要分页功能,因此再封装一个不用分页,但是有导出、打印功能的GridView控件就可以了。封装后的控件,既能解析类似List的格式数据源,也可以解析DataTable的数据格式,还可以对字段的显示名称随意设置,感觉省了很多麻烦。

  另外一个就是小票打印了,很多基本上采用了GP5860这种POS打印机进行小票打印了,这种如果是串口的打印,那么很方便,我原来的送水系统中就实现了,而且网上也有POS打印的C#代码,可是如果我偏偏碰到了USB口的小票打印机,那么采用那个就不行了,而且那个没有预览功能,另外USB口的小票打印机和普通的打印机很容易弄错乱,不知道是否他们的打印原理差不多?因此必须解决小票打印机和普通打印机的打印问题,即多个并存,互不影响。这个问题可能是做进销存问题,如果碰到打印机冲突,需要解决的问题之一吧。

  主要碰到的问题,基本上就是上面这些,其他的很多事苦力活,界面的设计需要耐心细致,功能的开发调试,更需要一份清晰的开发思路。

  在开发这个系统的过程中,越来越感觉积累是很重要的东西(前面开发的软件经验和代码积累),开发的辅助工具(如我的Database2Sharp代码生成工具)也是必不可少,每次能够在已有资源上有所创新,有所超越,是一个非常有趣的心理体验。

时间: 2024-10-22 13:51:23

艾伟_转载:WinForm界面开发之酒店管理系统--开篇的相关文章

WinForm界面开发之酒店管理系统--开篇

星移斗转,时光似箭,不知不觉中,酒店管理系统的开发从开始到现在的结束,已经2个月了,2个月的业余时间,2个月的生活情趣,都寄托在这个软件当中,经历了各种艰苦和困惑,终于得以修成正果---深田之星酒店管理系统的顺利发布. 技术的历程是一个开拓进取.攻克难题的历程,其中有困惑也有兴奋,有苦涩也有甜蜜, 在这个过程中,再一次检阅了我的Database2Sharp代码自动生成的开发工具的,再一次从"深田之星送水管理系统"进行升华,技术从来没有尽头,只有不断完善,以及不断的超越和创新.在这个过程

艾伟_转载:如何开发绚丽、高效率的界面(Windows嵌入式系统)

上篇文章中提到用户体验(UE),并且说到国内有专门去做UE的团队也很少.据我了解Microsoft.Nokia.Google等,还有国内的Baidu是有比较专业的UE团队.对于我们这样的普通团队.普通开发者来说,这样的经验实在太少了.而且普遍更认为UE是UI Designer的事情,与我们这样的Developer没有太多关系. 当然不是,UE远超过UI.很多因素造成了UE差,比如一份不正确的数据表明17%的用户认为手机运行速度慢,Windows Mobile手机开机漫长的等待就十分的让我受不了.

艾伟_转载:Socket开发探秘--基类及公共类的定义

Socket开发是属于通信底层的开发,.NET也提供了非常丰富的类来实现Socket的开发工作,本篇不是介绍这些基础类的操作,而是从一个大的架构方面阐述Socket的快速开发工作,本篇以TCP模式进行程序的开发介绍,以期达到抛砖引玉的目的. 要掌握或者了解Socket开发,必须了解下面所述的场景及知识. 1.TCP客户端,连接服务器端,进行数据通信 2.TCP服务器端,负责侦听客户端连接 3.连接客户端的管理,如登陆,注销等,使用独立线程处理 4.数据接收管理,负责数据的接受,并处理队列的分发,

艾伟_转载:Socket开发探秘--数据封包和拆包

在上篇<Socket开发探秘--基类及公共类的定义 >中介绍过,所有受到的数据包,经过系统的预处理后,都会得到一个PreData的数据实体,该实体包含了协议头.协议内容和所属用户的ID.PreData是定义了一个标准的协议数据格式,包含了协议关键字.协议内容.用户标识的内容.前面说了,我们数据是通过实体类作为载体的,我们知道,收到的Socket数据经过粗略的解析后,就是PreData类型的数据,这个是通用的数据格式,我们需要进一步处理才能转化为所能认识的数据对象(实体类对象),同样,我们发送数

WinForm界面开发之布局控件&quot;WeifenLuo.WinFormsUI.Docking&quot;的使用

本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking". 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的.先看看控件使用的程序界面展示效果. 配电网络可视化管理系统的界面截图: 深田之星送水管理系统网络版的界面截图: 我在几个共享软件都使用了该布局控

WinForm界面开发之模块化分合

大千世界,合久必分,分久必合,分合之道,利之所趋. 开发过程,积少成多,聚沙成塔,模块之理,必经之路. 本文继续WInform界面开发系列的介绍,主要针对性介绍Winform开发过程中,经常用到的模块:数据字典模块.参数配置模块.权限管理模块的模块化应用,以及各模块的分合之道. 1.数据字典模块 我们知道,一般程序基本上都涉及到了一个是数据参考用途的数据字典模块,不管是Web还是Winform的,这个模块基本上是必不可少的,Winform的界面效果大致如下所示: 本模块的数据字典支持无限级树形分

艾伟_转载:C# WinForm开发系列 - TextBox

包含金额/日期输入框,带弹出数字面板的计算输入框,安全密码输入等控件(文章及相关代码搜集自网络,仅供参考学习,版权属于原作者! ).   1.CalculatorBox    CalculatorBox.rar 2.带行号+自定义颜色显示的TextBox 3.金额输入框   currency_textbox.zip   CurrencyBox.rar   NumberPicker_src.zip   NumericTextBox_src.zip   NumberedTextbox.rar 4.日

艾伟_转载:WinForm二三事(二)

监视消息循环 在上一篇文章中,我们讨论了消息循环是响应用户输入的根本,还提到了在WinForm中执行耗时操作是因为这个耗时操作与消息循环在同一个UI Thread上,导致不能处理用户的后续响应,造成程序假死.除此之外,还说到了Form中的WndProc方法,说这个方法就是Win32时代那个处理消息的方法的.Net版. 那么今天这篇文章我们就来编个小程序来模拟一下这个耗时操作,看看是不是如上一篇所说:耗时操作造成消息循环的临时中断不能响应用户后续输入. 程序很简单,就是一个简单的窗体,上面放置一个

艾伟_转载:WinForm二三事(一)

在进入正文之前,想请大家先欣赏下面两段代码: 1: //这是一个控制台程序,请先添加System.Windows.Form.dll的引用 2: using System.Windows.Form; 3:  4: public class ConsoleApplicationShowDialog 5: { 6: static void Main() 7: { 8: Form frm = new Form(); 9: frm.ShowDialog(); 10: } 11: } 1: //这是一个控制