技术创新及困难.doc_第1页
技术创新及困难.doc_第2页
技术创新及困难.doc_第3页
技术创新及困难.doc_第4页
技术创新及困难.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.技术创新在进行软件开发时,我们发现民爆行业网上综合购销系统在后期要用到大量的报表,而每张表都很复杂,格线、表头、比上期、比去年同期、填报等等,加上打印时五花八门的要求,做一张报表要花很多时间,通过研究,我们在报表模型上进行了创新,提出了强关联语义模型,以通俗易懂的方式描述了数据库的物理表信息,配合以非线性报表模型,使我们可以在不了解数据库表结构的情况下,不需要编辑表达式,仅仅鼠标拖拽,就可以制作出相应的报表,技术人员可以直接基于业务术语,随时按自己的需要直接完成各种复杂的报表,对数据进行灵活的分析、比较、计算,大大改进了报表分析的方法。 其次,在数据填报方面也进了创新。数据是软件系统的关键。民爆行业网上综合购销系统通过日常的业务处理就能积累业务数据,是不是一定需要建立业务系统才能拥有数据呢?经过一些技术手段处理过的中间结果,很有必要保存在数据库中以备再次使用,如何将数据再写回数据库呢?针对这些问题,我们提供了多数据源填报功能,基于动态库表关联技术的填报功能,通过B/S的报表,能将离/在线填报的数据,即时写入数据库中,完美解决了数据入库的难题。同时,填报功能对二次处理后的统计数据具有保存回填的作用,在实际业务处理中,极大提高填报表单的处理效率,扩展了Web 报表工具的应用方式。第三,我们提供了外围的OLAP 分析功能、通用查询、即时报表和报表分析等数据模块。尽管我们认为现阶段民爆行业网上综合购销系统的需求还停留在报表展现,但在用户未来业务和数据大量增加的情况下,会有很多对分析和数据挖掘的要求。我们通过采用最新的技术,实现了纯HTML 模式的OLAP 分析功能,可以选择拖拽维、指标字段、统计方式,进行旋转、切片、钻取,并根据结果数据生成统计图,更加适应B/S 架构下的应用。2开发过程中遇到的部分技术难题及解决方法2.1 WEB打印B/S架构下的打印一直是一个比较复杂的问题,不像C/S架构下的打印容易控制,方便操作,一直是一个不易解决的问题。民爆行业网上综合购销系统不仅要求打印页面的特定部分,还要求有后台的批量打印,打印各种数据报表。WEB打印的实现思路,使用IE内置的WebBrowser控件,无需用户下载和安装,直接完成页面打印和后台打印,主要实现方法如下:(1)、首先引入一个WebBrowser在需要打印的页面,直接添加: 到页面,或者使用JavaScript在需要的时候临时添加也可以:document.body.insertAdjacentHTML(beforeEnd, );(2)、页面设置和打印预览直接调用:document.all.WebBrowser.ExecWB(6,6) 直接打印document.all.WebBrowser.ExecWB(8,1) 页面设置document.all.WebBrowser.ExecWB(7,1) 打印预览或者:execScript(document.all.WebBrowser.ExecWB 7, 1,VBScript);(3)、 隐藏不打印的页面元素和分页CSS 有个Media 属性,可以分开设置打印和显示的格式。如 中间的格式将只在打印时起作用,不会影响显示界面。所以可以设定 .Noprintdisplay:none; .PageNextpage-break-after: always; 然后给不想打印的页面元素添加: class=Noprint ,那就不会出现在打印和打印预览中了。想分页的地方添加: 就可以了。(4)、打印页面的特定部分通过将需要打印的特定部分另建一个页面,然后装入主页面的一个IFrame中,再调用IFrame的打印方法,只打印IFrame中的内容来实现。如:下面的pringFrame js函数将只打印Iframe中的内容,可以直接引用使用,如printFrame(FrameId);window.print = printFrame;function printFrame(frame, onfinish) if ( !frame ) frame = window; function execOnFinish() switch ( typeof(onfinish) ) case string: execScript(onfinish); break; case function: onfinish(); if ( focused & !focused.disabled ) focused.focus(); if ( frame.document.readyState != complete) &( !frame.document.confirm(The document to print is not downloaded yet! Continue with printing?) ) execOnFinish(); return; var eventScope = printGetEventScope(frame); var focused = document.activeElement; window.printHelper = function() execScript(on error resume next: printWB.ExecWB 6, 1, VBScript); printFireEvent(frame, eventScope, onafterprint); printWB.outerHTML = ; execOnFinish(); window.printHelper = null; document.body.insertAdjacentHTML(beforeEnd, ); printFireEvent(frame, eventScope, onbeforeprint); frame.focus(); window.printHelper = printHelper; setTimeout(window.printHelper(), 0);function printIsNativeSupport() var agent = window.navigator.userAgent; var i = agent.indexOf(MSIE )+5; return parseInt(agent.substr(i) = 5 & agent.indexOf(5.0b1) 0;function printFireEvent(frame, obj, name) var handler = objname; switch ( typeof(handler) ) case string: frame.execScript(handler); break; case function: handler(); function printGetEventScope(frame) var frameset = frame.document.all.tags(FRAMESET); if ( frameset.length ) return frameset0; return frame.document.body;Iframe中所装载页面的打印效果在所装载页面设置就可以了,如分页等。(5)、后台打印通过建一个隐藏Iframe实现。下面的函数创建Iframe装载页面并打印。function printHidden(url) document.body.insertAdjacentHTML(beforeEnd, ); var doc = printHiddenFrame.document; doc.open(); doc.write(); doc.write(); doc.write(); doc.close();function onprintHiddenFrame() function onfinish() printHiddenFrame.outerHTML = ; if ( window.onprintcomplete ) window.onprintcomplete(); printFrame(printHiddenFrame.printMe, onfinish);2.2网上销售订单上传的安全控制2.2.1保密性/私密性的安全措施(1)以用户名/密码方式辨别用户身份。(2)用户的权限由其所属机构及角色决定,并指定由管理员统一对用户权限进行设置,用户可对其自身属性进行设置。(3)用户名/密码采用加密存储。(4)按照业务流程控制用户的访问,可控制浏览、下载、打印等。2.2.2订单数据的加密存储数据加密算法的采用,因为所传递的是销售订单信息,所有订单数据要真实可靠。网络上销售订单数据存储加密采用MD5的加密算法进行数据加密。MD5是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。 MD5CyptoServiceProvider类是System.Security.Cryptography名字空间的一个类,提供专门用于MD5单向数据加密的解决方法,也是本文中我们用来加密数据库中存储信息的类。在真正进行数据加密之前,我们首先来了解MD5CyptoServiceProvider类中的主要方法:ComputeHash,它将输入的明文数据数组使用MD5加密以后输出加密后的密文数据数组。具体数据加密过程:import java.security.*;import java.security.spec.*; class MD5_Testpublic final static String MD5(String s)char hexDigits = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d,e, f;try byte strTemp = s.getBytes();MessageDigest mdTemp = MessageDigest.getInstance(MD5);mdTemp.update(strTemp);byte md = mdTemp.digest();int j = md.length;char str = new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论