注意:因问题复杂,为了描述清楚,写了很多,麻烦大家耐心看完,拜谢!
目前准备开发一个GIS领域地质环境的数据库管理系统,实现数据的录入、导入、编辑、管理、浏览、查询和导出等功能。我刚参加工作没多久,经验不足,第一次承担此重任,但领导很重视这个项目,也信任我,给予我足够多的支持,因此特向各位朋友寻求一些帮助:不涉及细节的问题,只请大家说说我的观点和方案有没有方向性的错误,或者大家又有哪些更好的解决思路。该管理系统是一个桌面程序,使用SQL Server数据库。开发语言计划首选Qt,其次是VC++。我要开发的程序中的页面布局类似下图的效果,这是别人开发的同类型管理系统中的一个页面。标签对应的控件可以填充内容,如文字、数字、图片等等。
这个“泉点野外调查表”在各位看来是不是很像一个报表?类似以下的excel表格。
我要开发的程序中,类似这样的调查表有300~400个,每个表上的各种类型的控件都有很多,我第一个遇到的问题就是页面的布局!如果完全用在IDE中拖控件的方式进行页面布局,效率太低了,做出来也不美观。我数过了,别人开发的管理系统中也有150个左右这样的表。我认为这些表的布局都是用“报表开发工具”之类的程序设计出来的,于是我查找了报表这一类的资料后,从程序员的角度出发,综合自己的理解,得出以下的观点。
这里的报表布局文件类似于Qt中的.ui或者vc++中的.rc资源文件,专门用于描述一个页面上所有控件的布局信息,然后在可执行文件内支持库根据原先的约定进行布局解析,把每一个控件按照原始的设计位置和尺寸给还原出来,这样当初设计是什么效果就能还原得到什么效果。
请大家说说,这个观点是否正确?特别是那些做过类似报表开发的朋友。另外我用spy++探测过“泉点野外调查表”中的控件,发现都是由一个叫做Ehlib的组件设计生成的,它是Delphi平台上第三方的开发组件,专门用于设计各种表格、报表的。
我查过资料了,像报表之类的开发需求一直都存在,无论是基于C/S架构还是B/S架构,所以我认为在软件行业内针对不同平台的“报表开发工具”一定存在有很多。
如果我上面的观点大体上是正确的,那么我这300~400个表的页面布局也肯定可以用合适的“报表开发工具”来设计生成,我第二个遇到的问题就是有针对Qt平台的“报表开发工具”吗?如果没有的话,有VC++平台上的吗?我比较熟悉VC++,使用时间5年左右,曾编写过不少作品,但领导说从项目的长期维护角度考虑,以及现在Qt开发很热门,此次开发优先选择Qt平台。
所以如果大家知道有对应的工具存在,无论是开源的、还是免费的、或者是付费的,都可以告诉给我。
以前我遇到过太多编程上的问题,习惯于单兵作战,但限于能力,耗费了好多代价才能解决。现在第一次独立负责一个项目,在我看来还是工作量很大的项目,我不得不寻求一切可以寻求的帮助,少走弯路,争取把事情办好。尤其是一开始,就绝不能犯方向性的错误,南辕北辙的教训一直都是很残酷的。
预想的步骤是先寻找合适的“报表开发工具”,设计一个表的页面布局出来,然后用Qt或VC++实现在窗口上展示布局。最起码先做一个样板出来,证明方案的可行性,至于其他的功能需求,留待一步步实现。
或者说,我完全抛开“报表开发工具”之类的想法,寻找其他的技术方案去实现“泉点野外调查表”的页面布局,可以做到吗?用HTML+CSS?
其实仔细想一想,如果我的观点正确并且能够解决本问题的话,自己要做的事情还真多:要学习设计器的使用,要设计表的布局,要学习“报表开发工具”提供的API的使用,要从头开始学习Qt编程(好在有VC++功底,听说能省些学习成本),还有SQL Server数据库的设计以及实现管理系统各个功能的实际编码开发,另外就是对其他人的任务分配(还好领导给我分配了两个人协助),整个项目的进度控制与质量控制也都要着手处理。
也许有些朋友会认为这个任务对这样条件的我来说真的很重,其实我也大概明白这个任务的分量到底是怎么样的,我只是想拼尽全力的去尝试一番。因为我没有任何后路可退。
PS
之前在搜索“报表”时,找到的多数是用于展示已有数据的报表以及相关解决方案,但我这里肯定涉及到数据录入的步骤。在http://www.finereporthelp.com/help/5/0.html页面上找到的资料,让我知道自己要实现的报表类型是什么了:
1.填报报表概念
传统意义上的报表,我们称为普通报表,是解决数据呈现的问题,即把数据从数据库中取出来,然后以各种格式展现出来,对展示的结果可以进行导出、打印等。
CRM、ERP、OA等基础信息化系统中都会包含一些页面,提供给业务人员或者用户对数据库进行增加、修改、删除等操作。这样的页面我们就叫做填报报表。
填报表与普通表的区别是能否录入数据,普通报表只能浏览、汇总数据不能录入数据,而填报表不仅可以浏览数据,还能录入数据。
2.填报表制作流程
------解决思路----------------------
我做过报表的程序,你的思路是对的,应为报表种类繁多,针对每种报表,由于页面大小和控件位置都是不一样的,所以每张报表都会有一个配置文件,配置文件里面记录了报表图片的信息和实际打印纸张的信息,当然最终要的,记录了当前报表图片里面每个控件的信息,当你需要加载报表的时候,就要读取相应的配置文件,通常是xml,然后根据xml里面的控件描述,在报表图片对应位置动态生成控件,最后用户会直接在报表的控件上填写信息,然后再打印出来,一切都是实时的,而报表配置文件通常是通过一个报表设计器来生成的,最终就是生成一个xml文件记录控件等信息,设计器需要你单独开发,遇到新报表时,你先扫描出报表图片,导入设计器,然后实时的拖控件,最后再根据控件在图片上的位置导出xml
说这么多,不知道是否中你下怀?
我做的东西是这样的,感觉和你的东西差不多:
------解决思路----------------------
因为你的配置文件最终要在exe加载的,不要css+html了,解析很麻烦,毕竟不是用于展现的目的,Qt这个框架就做UI好做,但目前就你的工程来看,并不涉及到什么UI重绘的东西,用Qt实在没这个必要,vc和Qt现成的报表什么的我不清楚,反正报表编辑器的开发量还是很大的
------解决思路----------------------
不用什么解析引擎,就是xml,解析器很多,我用的tinyxml
编辑器是自主开发的,插件什么的我也不知道有什么现成的
这个东西是完成了的,最终导出的是一个zip压缩文件,用作生成网页,用户填写了之后是可以直接在对应单据上打印的
这个东西属于公司的东西,我也不敢私自拷给你
现成的东西不总是那么多的,都是要投入人力财力去开发的
------解决思路----------------------
编辑器就是生成一个xml,里面记录你拖进去的控件的位置等信息,无论用于网页生成控件还是客户端生成控件,都是去解析xml拿出坐标信息而已,这个没什么区别,编辑器的编写并不难,只是需要配合客户端来编写,制定好协议,xml应该怎样的格式,编辑器按协议格式生成,客户端按协议格式解析xml生成控件,当然你也可以不写编辑器,那么每张表单,你要手动去量每个控件的位置,再手写配置文件给客户端解析,你这样工作量很大,没有编辑器方便
------解决思路----------------------
编辑器就是生成一个xml,里面记录你拖进去的控件的位置等信息,无论用于网页生成控件还是客户端生成控件,都是去解析xml拿出坐标信息而已,这个没什么区别,编辑器的编写并不难,只是需要配合客户端来编写,制定好协议,xml应该怎样的格式,编辑器按协议格式生成,客户端按协议格式解析xml生成控件,当然你也可以不写编辑器,那么每张表单,你要手动去量每个控件的位置,再手写配置文件给客户端解析,你这样工作量很大,没有编辑器方便
我想你几乎都理解我的观点以及面临的处境了吧。即使没有帮到我很多,但有思想上共鸣都是好事情。
另外好羡慕你有现成的工具可以使用,我再顶顶贴,好让有缘人看到。
工具全是我一个人开发的