前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇可行性报告模板范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
可行性报告模板范文第1篇
企业从事建设项目投资活动之前由可行性研究主体一般是专业咨询机构对市场收益技术法规等项目影响因素进行具体调查研究分析确定有利和不利的因素分析项目必要性项目是否可行评估项目经济效益和社会效益为项目投资主体提供决策支持意见或申请项目主管部门批复的文件这种报告可以涵盖整个项目的前期中期后期的整个建设过程在工程项目可行性报告总就体现的淋漓尽致所以可行性研究报告要考虑的知识应该是全面性的
防雷设施
应根据项目区雷电活动情况结合生产生活用房水文缆道各类钢塔支架等水文设施防雷要求确定防雷设施型式尺寸材料及布设情况
其他设施
应根据工程形状与占地面积测算围墙长度庭院绿化与地面硬化面积按需要确定测站标志大门消防防盗等其他附属设施的型式材料选择与布设情况
技术装备应符合下列要求
1 . 水位信息采集仪器设备主要包括超声波水位计雷达水位计气泡式水位计压力式水位计浮子式水位计电子水尺等仪器设备性能指标确定和选型
2. 流量泥沙信息采集仪器设备主要包括水文测验缆道设备水文绞车测验控制系统吊箱铅鱼浮标投掷器等桥测车流量泥沙信息采集处理分析仪器和防雷接地设备等仪器设备性能指标确定和选型
3. 降水蒸发等气象信息采集处理仪器设备主要包括蒸发皿蒸发器遥测蒸发器雨量器雨量计雨雪量遥测采集系统等仪器设备性能指标确定和选型
4. 水质监测分析仪器设备主要包括水质监测分析仪器设备水质自动监测站仪器设备移动实验室等仪器设备的性能指标确定及选型
5 . 实时水文图像监控设备主要包括视频捕获单元设备视频信号传输单元设备视频编码单元设备云台控制等仪器设备性能指标确定和选型
相关设备
1. 测绘仪器设备主要包括GPS全站仪经纬仪水准仪工程绘图仪平板(淘宝平板热卖)仪工程复印机工程扫描仪等仪器的性能指标确定及选型
2. 通信与水文信息传输处理设备主要包括计算机及其外围设备网络通信设备程控电话电台中继站GSM终端卫星传输设备数据采集终端RTU无线对讲机基地台电源设备防雷接地等的仪器设备性能指标确定及选型
3. 生产交通工具主要包括巡测车交通车水质采样车采样船水质分析船等交通工具的性能指标确定及选型
4. 供电供水供暖设备主要包括变压器供电箱发电机水泵采暖等设备的性能指标确定和选型
5. 防雷设备主要包括生产生活用房水文缆道各类钢塔支架信息采集通信网络等防雷接地设备的性能指标确定和选型
6. 其他设备主要包括防暑安全等设备的性能指标确定和选型
【工程项目可行性研究报告】——【模板】
工程项目可行性研究报告通过对项目的市场需求资源供应建设规模工艺路线设备选型环境影响资金筹措盈利能力等方面的研究从技术经济工程等角度对项目进行调查研究和分析比较并对项目建成以后可能取得的经济效益和社会环境影响进行科学预测为项目决策提供公正可靠科学的投资咨询意见[1]
第一部分 工程项目总论
总论作为可行性研究报告的首要部分要综合叙述研究报告中各部分的主要问题和研究结论并对项目的可行与否提出最终建议为可行性研究的审批提供方便
第二部分 工程项目建设背景可行性
第三部分 工程项目产品市场分析
市场分析在可行性研究中的重要地位在于任何一个项目其生产规模的确定技术的选择投资估算甚至厂址的选择都必须在对市场需求情况有了充分了解以后才能决定而且市场分析的结果还可以决定产品的价格销售收入最终影响到项目的盈利性和可行性在可行性研究报告中要详细研究当前市场现状以此作为后期决策的依据
第四部分 工程项目产品规划方案
第五部分 工程项目建设地与土建总规
第六部分 工程项目环保与劳动安全方案
在项目建设中必须贯彻执行国家有关环境保护能源节约和职业安全方面的法规法律对项目可能造成周边环境影响或劳动者健康和安全的因素必须在可行性研究阶段进行论证分析提出防治措施并对其进行评价推荐技术可行经济且布局合理对环境有害影响较小的最佳方案按照国家现行规定凡从事对环境有影响的建设项目都必须执行环境影响报告书的审批制度同时在可行性研究报告中对环境保护和劳动安全要有专门论述
第七部分 工程项目组织和劳动定员
在可行性研究报告中根据项目规模项目组成和工艺流程研究提出相应的企业组织机构劳动定员总数及劳动力来源及相应的人员培训计划
第八部分 工程项目实施进度安排
项目实施时期的进度安排是可行性研究报告中的一个重要组成部分项目实施时期亦称投资时间是指从正式确定建设项目到项目达到正常生产这段时期这一时期包括项目实施准备资金筹集安排勘察设计和设备订货施工准备施工和生产准备试运转直到竣工验收和交付使用等各个工作阶段这些阶段的各项投资活动和各个工作环节有些是相互影响的前后紧密衔接的也有同时开展相互交叉进行的因此在可行性研究阶段需将项目实施时期每个阶段的工作环节进行统一规划综合平衡作出合理又切实可行的安排
第九部分 工程项目财务评价分析
可行性报告模板范文第2篇
1、项目建设的必要性。分析建设项目在实现企业自身发展,满足社会需求,促进国家、地区经济和社会发展等方面的必要性;从国民经济和社会发展层次进一步在资源配置、区域规划、行业发展规划、城市规划的符合性论证;从环境保护、可持续发展、国家产业政策和技术政策的符合性方面进行论证。
2、市场分析。通过对拟建项目的产品(或劳务产出品)在国际、国内市场的供需、销售、价格、竞争对手、产能分布的调查研究,建立在科学的市场调查的基础数据上,利用规定的数据处理方法,确定目标市场、市场份额、营销策略和市场风险识别、评估。
3、建设方案。包括产品方案、建设规模、工艺方案、建设标准、设备、厂址、原燃材料供应方案和辅助生产条件的确定。总平面布置和建筑、公用工程、环保、节能、节水措施。
4、投资估算。分项目测算投资、利息和流动资金。
5、融资方案。资金筹措方案、资本金构成、融资成本分析。
6、财务分析。主要预测项目可实现的财务成果、判断项目的财务可行性。
7、经济分析。主要是对现金流量不能真实反映其经济价值的建设项目(如交通运输、水利等项目),从社会经济资源有效配置的角度,对项目的直接和间接经济价值全面识别和分析,分析项目对经济建设所作的贡献和项目消耗的资源的合理性。
8、资源利用效率分析。主要是对高耗能、水、自然资源的项目,分析能源、水、自然资源的合理利用效率。提出节能降耗的措施。
9、土地利用及移民安装搬迁方案分析。
10、环境影响评价。(环科所做好后引用其结论)
11、社会评价。主要是外部效应大、公众关注度高的项目,必须站在社会和公众的角度,对项目的合理性进行评价。
12、风险分析与不确定分析。
可行性报告模板范文第3篇
版本号:1.0.0
学生选课系统
可行性分析报告
项目名称:学生选课系统
项目负责人:路景
项目开发小组:软三四组
修改记录:
学生选课系统可行性分析报告
1. 引言
当今社会是一个讲求效率的社会,时间就是金钱。开发简单,易于操作的 管理软件不仅可以节省时间,还可以避免浪费人力,物力,提高效率。
待开发系统是一个学生选课的管理系统,该系统软件非常容易被接受,它具有简单易学性,便于管理等功能。它是对学校选课管理的一种工具。
1.1编写目的
由于教学制度的改革,现在大部分高等院校实行的是学生的自主选课模式,传统的学生按照学校安排好的课程上课的教学模式已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。此选课系统就是为了解决这个问题。
1.2项目背景
随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现选课系统势在必行。对于一个学校来说,用计算机进行选课管理所无法比拟的优点是检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校选课的效率。
工程名称:学生选课系统
工程组织者:威海职业学院
产品设计者: 软三四组开发小组
产品生产者:软三四组开发小组 产品所有权:软三四组开发小组拥有
产品用户: 具有一定特权的管理人员、老师和学生
1.3定义
学生选课系统是一个功能实用、操作方便、简单明了、使用方便的选课的系
统,能实现老师对课程的添加,删除,更改,浏览,查询等功能,并能对每门课程成绩进行评定,学生可对相关信息有查询和修改功能的系统。
1.4参考资料
魏志华. 《软件工程》. 北京:清华大学出版社,2005
张海藩. 《软件工程》. 北京:人民邮电出版社,2002
2. 可行性研究的前提
2.1基本要求
(1)该软件的功能为:学生选课信息更新、选课查询、成绩查询、密码管理、以及学生选课信息的导入/导出。
学生选课信息更新:添加选课学生、删除选课学生、修改选课学生信息。 查询功能:记录浏览和条件查询。
密码管理功能允许合法用户对密码进行修改。
(2)性能
方便数据的录入,使查询速度大大提高。
(3)系统的输入
选课学生所包含的信息。
(4)系统的输出
查询结果和各类报表。
(5)数据安全和保密
系统对不同权限的用户提供不同的功能模块,有一定权限的用户可以进行操作,一般的用户只能进行查询的操作。
2.2开发目标
(1)开发此学生选课管理系统软件,使教学人员及操作者进行选课管理,方便操作者随时添加、查询、修改,使工作人员从繁琐的填表,查表工作中解放出来,使得人力和设备减少;
(2)使供需双方都获得满意的结果;
(3)促进报表、统计数字的规范化;
(4)处理速度高,提高工作效率;
(5)降低选课管理维护费用,提高行政工作效率,改善服务质量,为学校领导决策提供支持 ,该软件的设计目标尽量达到人力与设备的节省, 并且处理数据的速度提高。
2.3条件、假定和限制
硬件条件:PC 机
运行环境:Windows XP
开发环境:SQL Server、Eclipse 等
限制条件:设备简单,人员少,时间紧,而且对信息的来源不充分,经费不足。
2.4进行可行性研究的方法
(1)学生信息模块完成学生的登陆,然后根据各位同学所在的系不同,调用相应的选课模块。其中学生登录模块的功能是验证登录人员确实是本院的学生,学生启动本系统后,系统提示输入学生学号码和密码,验证后进入主控操作界面。
(2)教师信息模块完成教师的登陆, 然后根据各位教师所在的系不同, 教师所教的课程不同, 调用所选的课程. 其中教师登陆模块的功能是验证登录人员确实是本院的教师,教师启动本系统后,系统提示输入教师工号和密码,验证后进入主控操作界面。
(3)课程信息管理包括必修课程和选修课程, 学生必需先登陆才能进行对课程的选课否则不能进入选课系统.
(4)系信息管理中学生必需选重所在的系号和系名才能进行选课, 否则并不能进行选课.
2.5评价尺度
学生选课系统应该简单易操作,方便同学选课,能让初次使用的人就能够轻 弄懂,方便操作。
3. 对现有系统的分析
3.1处理流程和数据流程
现有系统的数据处理与流程基本为学生数据的录入与查询等操作,系统的安
全性不高。
3.2工作负荷
由于数据量越来越大,现有的系统已明显不能适应目前的庞大数据量,系统工作负荷过大,数据处理缓慢,而且对计算机硬件的要求比较高。
3.3费用支出
在系统上投入的人力,设备,空间,材料,等等与其他的一系列支持性服务越来越大,导致开发费用支出巨大,严重影响系统的可用性,急需改进。
3.4人员、设备
鉴于原有系统的技术性含量比较低,故不需要多少高技术人员的操作,只是由于数据量的日益扩大,所需要的操作人员数量不断增大。这一点已不再适应目前信息化时代的步伐。设备的科技含量也比较低,没有达到大量的计算机普及程度,更难以实现网络化办公。
3.5局限性
经过严谨的分析,可知原有的系统存在很大的局限性,比如技术的过于陈旧,人员工作负荷大,系统维护及费用支出巨大,人员与设备技术含量低等等一系列缺点,所有这些都明确了需要一个新的适应新的信息化时代的高科技的系统。所以开发这样一个系统还是很有必要的。
4. 所建议的系统
4.1对所建议系统的说明
本系统是一个功能实用、操作方便、简单明了、使用方便的选课的系统,能实现老师对课程的添加,删除,更改,浏览,查询等功能,并能对每门课程成绩进行评定,学生可对相关信息有查询和修改功能的系统,,而且基于对系统安全性的考虑我们特别加了一个功能健全的管理者登陆验证机制,能让系统的管理者方便的进行管理更能帮助学校安全高效的管理,为现代教学管理提供了安全的保障。
4.2数据流程各处理流程
4.3改进之处
很明显,在以上几点中已可以看出新系统的性能与功能上与现有系统的差别,首先新系统克服了原来系统的资金投入大,人员设备技术含量低,系统工作负担重等缺点。而且加入了对数据的安全性保护等功能,使原有系统在可用性与稳健性方面有了很大的进步。
4.4采用建议系统可能带来的影响
4.4.1对象设备的影响
采用建议系统后,改进了原有系统的性能所以对设备要求自然高,建议系统使用了最先进的技术使设备也必须跟着升级。
4.4.2对软件的影响
由于建议系统采用了先进的数据库技术以及一系列高技术含量软件,使得原来系统上的一些软件无法继续使用,不过在新系统开发过程中将尽量考虑到对现有软件的兼容性
4.4.3对用户单位机构的影响
本产品面向学校,以应用为主,人员数量不受任何限制,只要操作人员懂得基本操作即可。
4.5技术条件方面的可行性
当前开发人员对其一般性的软件和操作环境都比较熟悉,系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以学生管理系统的技术上是完全可行的。
5. 投资及收益分析
5.1支出
5.1.1 基本建设投资
基础投资:学校在实施网上选课系统的时候,已经配备了各硬件设备、数据通信设备、数据库管理软件和系统开发的工具等。因此,基础建设投资不大。
5.1.2 其他一次性支出
本系统运行所需要的服务器软件和客户软件学校均已具备,无须再进行购买。
5.1.3 非一次性支出
1)人员费用
2)系统维护费
3)服务器维护费
4)设备维护费
5.2收益
本系统非收益性质开发,重要是为解决学校现行网上选课的需要。安装学生选课系统后,将减少人员数量,从而减少为此付出的工资;将减少纸张的使用,因此提高学生管理信息的准确率,从而提高工作效率。
6. 社会因素可行性分析
6.1法律方面的可行性
安装学生选课系统,需要使用正版操作系统软件及应用软件平台,避免为此发生法律纠纷;学生选课系统的开发完全为自主设计,将不会侵犯他人、集体和国家的利益,不会违犯国家政策和法律,不存在任何侵权问题,因此可以放心使用。
6.2使用方面的可行性
学生选课系统使用简单,速度快,准确度高,现有人员只需经过简单培训即可熟练掌握其使用方法;系统管理人员可使用动手能力较强的人员,经过短期培
训就能解决常见问题。
可行性报告模板范文第4篇
关键词:Word;数据提取;报告生成;VSTO
中图分类号:TP317.2
Word是一种应用广泛的文字处理系统,随着汽车检测行业的发展,越来越多的Word检测文档需要生成,然而这些检测报告格式不统一,存在文档管理混乱、数据提取困难、数据查询不便、数据无法进行二次加工和分析等问题。本文利用VBA(Visual Basic For Application)和VSTO(Visual Studio Tools for Office)相关技术,对Word2010进行二次开发,通过定制Word文档模板和Word外接程序的开发,对Word输入数据有效性的验证、Word数据自动化提取以及Word检测报告的生成。实现了检测报告统一、集成管理,便于对检测报告数据进行分析,挖据数据背后潜在的应用价值。
1 系统的总体框架设计
系统选用Microsoft Visual Studio 2010作为主要开发平台,选用C#为编程语言对微软的Word 2010软件进行定制,同时借助Word内嵌的VBA对数据有效性进行验证。系统的总体框图如图1所示,分为三部分,第一部分Word报告信息的自动化提取,该部分首先对现有报告进行分析,然后进行Word模板的设计以及外接程序的开发,实现数据自动化提取。第二部分是数据库的设计,本系统的数据库一方面是存储Word文档提取的数据,另一方面为Word报告的生成提供数据来源。第三部分是检测报告的生成,根据数据库中的数据和检测报告模板,生成相应的检测报告。
2 Word二次开发技术分析
软件二次开发,主要指的是对现有的某个软件进行功能扩展、定制,用户根据自身需求在该软件平台上进行第二次有针对性的开发,一般来说都不会改变软件原有的内核。Word二次开发,即是对Word办公软件进行二次开发,主要的技术是VBA和VSTO。
VBA是一种完全面向对象体系结构的编程语言,Word办公软件内嵌了VBA,为用户提供Word应用中的自定义功能。在Word 2010版本中,在开发工具菜单栏中,可以实现对宏的基本操作,如录制、编辑和运行宏等。
VSTO对Word二次开发是一种全新的跨越,它基于Visual Studio开发平台,将Word文档或程序作为对象进行定制。在Visual Studio中,可以对常用Office组件进行文档和外接程序的开发。
3 数据自动化提取
数据自动化提取模块是系统的核心模块,包括Word模板的定制和数据自动化提取程序的开发。其中模板定制使Word文档格式统一,确保模板填写数据的规范性和有效性。数据自动化提取程序根据需要从模板的特定位置上提取出数据。
3.1 Word模板的设计
Word模板设计的好坏关系到后续功能的实现,因为数据自动化提取和检测报告的生成,都是以模板为依托。Word模板的设计在现有检测报告的基础上完成的,它主要分为以下几个步骤:
(1)分析现有的检测报告,确定报告中那个位置上的数据需要被提取,然后用符号进行标记,如{R_001}、{R_002}等。
(2)将文档保存为XML格式的文档,然后用正则表达式相关技术对XML格式文档中的特殊标记位置进行替换,使相应的位置转换为书签,后续文档录入实际上是对书签文字进行编辑。
(3)将上一步骤的XML文件转换为Doc文件,然后在利用VSTO的Word文档定制功能,对Doc模板增加相应控件,如时间控件、图片控件以及数据校验按钮。
(4)对特定要求的数据需要进行校验,采用Office内置的VBA编程技术对数据的有效性进行校验,校验的流程如图2所示。
3.2 数据自动化提取程序设计
数据自动化提取程序是对设计模板上固定位置上的数据进行提取,是对Word程序功能的定制,在Word原有菜单栏项增加数据提取菜单栏,这里用到VSTO的外接程序的开发。为了降低程序的耦合性,提高代码的重用性,程序在开发过程中采用了基于MVC三层架构设计,包括模型层、视图层、逻辑控制层,其中模型层是对Word底层模型进行重新组合与设计。逻辑控制层主要是对数据提取的逻辑模块功能进行划分,包括用户管理模块、数据提取模块、数据上传模块。表示层主要是界面展示。
对于文字格式的信息可以直接根据位置进行提取,而对于图片格式的数据,需要进行转换,因为在Word中图片采用的是Base64的编码格式,要想对Word中的图片数据进行提取,首先要查找定位图片对应的Base64编码,然后将Base64编码进行解码转换为图片格式。主要代码如下:
//将Base64编码转化为字节
Byte[] arr=convernt.FromBase64String(str);
//将字节保存到内存流
MemoryStream ms = new MemoryStream(arr);
//转化为Bitmap对象
Bitmap bmp = new Bitmap(ms);
//保存图片
bmp.Save(txtFileName+".jpg",ImageFormat.Jpeg);
4 报告自动生成
目前汽车行业检测机构的专家在查看检测报告时,往往要经过很多流程,如向检测人员提出申请,申请通过后通过邮件或者其它方式接受检测结果,这种方式不仅流程繁琐、操作不便,而且检测报告也不便管理。通过报告自动生成技术可有效的解决上述问题,实现检测报告的统一化、一站式的管理。
报告生成的流程如图3所示,首先根据用户选择检测报告生成的方式,按照时间顺序或者用户生成检测报告,然后选择报告编号和报告模板进行数据填充,并对错误信息进行提示。
5 总结
本文设计了基于VSTO的Word数据自动化提取及报告生成的系统,实现了Word 文档的数据自动、准确、规范采集及报告实时生成,实现了检测报告数据统一化、规范化管理。
参考文献:
[1]叶明,张铮.基于的Word报告生成功能开发[J].计算机工程与应用,2008,44(9):104-106.
[2]鲁保玉,杨新芳.用Delphi生成Word报告及动态结构表格[J].计算机软件与应用,2007,4(3):180-183.
[3]王二暖.基于C#的Word2010文档自动生成系统[J].电脑开发与应用,2011,05.
[4]罗许练.基于C#.NET的动态Word文档生成及数据填充研究[J].惠州学院学报,2009,6(29).
[5]闫新珠,王秀芹.在VC中利用Word生成测量报告[J].地矿测绘,2006,22(1):32-33.
作者简介:惠怡静(1975-),女,天津人,副主任,工程师,学士学位,研究方向:汽车行业信息平台建设、汽车行业政策研究;邵学彬(1986-),男,山东菏泽人,职员,工程师,硕士,研究方向:数据挖掘、软件开发技术、汽车行业数据服务平台开发与建设;程旭(1978-),男,天津人,项目经理,工程师,硕士,主要研究领域:数据挖掘、企业信息化等。
可行性报告模板范文第5篇
关键词:FreeMarker;模板技术;Word自动生成;毕业设计管理
DOIDOI:10.11907/rjdk.162232
中图分类号:TP319
文献标识码:A文章编号:1672-7800(2016)012-0109-04
0 引言
随着教育信息化的发展,众多高校将计算机技术应用于日常教学管理中[1]。毕业设计(论文)是高校实现人才培养目标的重要实践教学环节,应充分利用先进的信息技术提高管理效率,从而提高毕业设计质量。笔者为天津理工大学中环信息学院设计开发了一个基于B/S架构的毕业设计管理信息系统[2],系统使用Java Web技术实现,采用基于组件式开发的MVC(Model View Controller)设计模式[3],高效实现了毕业设计信息化、规范化管理。系统中涉及的所有基础性数据(如学生信息、指导教师信息、题目信息等)以及毕业设计过程中师生在线填写的各类文档都持久化存储在对应的MySQL数据库表中。但是,诸如选题审批表、任务书、开题报告、提交审核表等文档仍需要打印纸质版后由学生或指导教师签字,这些纸质版文档或者要求院系存档,或者需要装订在毕业设计说明书(论文)中。如何将MySQL中的相关数据导出并生成符合格式规范要求的Word文档,成为毕业设计管理信息系统必须实现的一项功能。本文选用基于FreeMarker模板引擎技术构建了一种模板样式与模型数据相互分离的Word文档动态生成方案,通过较少的代码量就可以满足毕业设计管理信息系统中的文档导出需求。
1 相关技术介绍
1.1 FreeMarker
FreeMarker是使用纯Java编写的一款模板引擎,即一种基于模板、用于生成输出文本(HTML、XML、RTF、Java源代码等)的通用工具[4]。FreeMarker不是面向最终用户的,而是一个Java类库,适合作为嵌入其它开发产品中的一个组件,其最初设计被用来在MVC模式的Web开发框架中生成HTML页面,但它不依赖于 Servlet、HTML或Web环境,仅仅专注于展示数据,与具体的程序逻辑相分离。它的核心原理是模板+数据模型=输出。首先,FreeMarker拥有功能强大的模板语言(FreeMarker Template Language,简称FTL),包含了诸如include、if/elseif/else、循环结构等常用指令,在模板中创建和改变变量,并且能够在任何地方使用复杂表达式来指定值。其次,FreeMarker具有通用的数据模型,它不是直接反射到Java对象,而是通过插件式对象封装,以变量方式在模板中显示Java对象。
1.2 Word对XML的支持
微软从Office Word 2003就开始针对XML进行了完整设计,支持称为Word 标记语言的原生XML词汇,使Word文档可以和XML文档相互转换[5]。开发者可建立这种XML和可编程代码来增强Word文档,并帮助用户建立和修改文档。
常见的WordXML格式标签示例如下:表示Word文档中的段落,和html中的
标签类似;表示一个样式串,指明它包括的文本显示样式,如文本属性加粗、下划线等;表示Word里的字符串,即文字内容;Word段落属性包含在标签中;标签中定义文本格式。
2 系统数据模型
在毕业设计管理信息系统中,具有固定结构和格式规范要求的文档有封皮、扉页、选题审批表、任务书、开题报告、中期检查表、中英文摘要、提交审核表和装订审批表等。这些文档结构和格式固定,其中有一部分文档内容由用户在毕业设计中通过网络在线提交并持久化至系统数据库。本文简要介绍系统数据库,然后以开题报告为例说明如何准备模型数据。
2.1 系统数据库
系统使用MySQL数据库,主要涉及的数据库表有adminuser(管理员表)、teacher(教师表)、stu(学生表)、syear(学年表)、dept(部门表)、major(专业表)、rank(职称表)、ttask(教师任务表)、project(题目信息表)等,其中毕业设计相关文档数据主要来源于project表,结构如表1所示(限于篇幅,仅列出project表中的部分字段)。
2.2 准备模型数据
数据模型并不是文本文件,它来自于Java对象。图1为开题报告的一个Word示例,其中使用矩形方框标出的是生成开题报告需要的动态模型数据。不难发现,这些数据均来源于project关系表,系统与project关系表对应的JavaBean实体类为project,对project关系表进行查询得到的记录将通过ORM(对象关系映射)转换为一个project类的对象实例,该对象的成员变量分别对应project表中各字段。
数据模型是树形的,可以通过HashMap类构建简单的数据模型,例如将某个题目信息对象project以map映射数据("project", project)存入数据模型,在flt模板中则可以通过${project.ptitle}获取毕业设计(论文)标题,通过${project.sname}获取学生姓名,其访问模型数据方式类似于EL表达式。
3 FreeMarker模板准备
在确定了模型数据对象名称、结构和语义之后,才能准确无误地使用模板语言构建动态可变内容。下面以创建开题报告模板为例说明如何准备FreeMarker模板。
3.1 准备Word模板
准备一个如图1所示的Word 2003版本开题报告,需要注意的是开题报告内容比较多,可能会跨页,为保证表格跨页正常显示,需要将开题报告内容所在的单元格设置为允许跨页断行。
3.2 转换为XML并保存为ftl文件
将准备好的开题报告模板另存为Word 2003 XML文档,然后将其后缀名修改为flt即可。
3.3 修改ftl文件,完成数据填充
修改flt文件,将如图1所示的需要动态填充的零散数据替换为ftl语言表达式。文献[6-8]中通过类似${project.sname}方式取出模型数据,完成对模板的填充,但在实际应用中有可能产生两个问题:①当模型数据对象为NULL或者不存在的情况下会抛掉异常;②当模型数据中含有“”、“&”、单引号、双引号这些XML本身的标记符号时,可能造成XML文件解析错误,使最终生成的Word文档打不开。为保证程序的健壮性,在应用实践中采用如下方法解决这两个问题:
(1)针对问题①,对可能为NULL的模型数据在引用前先使用ftl语言条件表达式“”进行判断。
(2)针对问题②,将所有对模型数据的引用置于CDATA区段,由“”结束,因为处在CDATA 区段中的文本不会被XML解析器解析。
以毕业设计(论文)题目为例,题目不可能为NULL,但子标题可能为NULL。另外,题目和子标题中可能存在XML本身使用的标记符号,在模板中对毕业设计(论文)题目可按照以下ftl语言表达式进行替换: 。
3.4 对多个段落内容的特殊处理
以开题报告内容为例说明。开题报告内容由许多段落组成,由学生在页面中通过textarea文本域填写并提交。学生在填写开题报告内容时通过回车换行进行分段,可能会在换行后输入多个空格来实现类似Word段落首行缩进的效果。最终开题报告内容被提交并存储至数据库project表ktbgnr字段中,其中的回车换行被保存为不可见字符“\\r\\n”(或者“\\n”,或者“\\r”,由不同的操作系统而定)。如果按照前述方法使用进行数据填充,只能生成一个段落。为保证能够生成多个格式统一段落,可按下述方法分析符合指定格式要求的段落在XML中如何表示。
在一个空白的Word文档中按照论文段落格式要求(宋体、小四号、多倍行距1.25、段落首行缩进2字符)编写一段内容,然后将其另存为Word 2003 XML格式文档,打开该文档并找到对应段落的XML代码,如图2所示。为叙述方便,将图2中阴影部分对应的XML字符串简记为,矩形方框内对应的XML字符串简记为,那么在ftl模板文件中对应一个指定格式要求的完整段落就由+段落内容+组成。 根据多个段落内容存储特点以及固定格式Word段落的xml结构,设计对多个段落内容的特殊处理方案:
(1)将回车换行符(“\\r\\n”、 “\\n”或“\\r”)替换为统一的分隔字符串,生成一个uuid作为分隔字符串,保证分隔字符串在开题报告内容中不会出现,否则会产生错误的分段信息。
(2)去除分隔字符串前后所有连续的空白字符。
(3)多段内容替换填充,采用如下两种策略:①按照分隔字符串将多个段落内容分隔为一个字符串数组,数组元素表示一个个段落,按照图2所示格式使用ftl循环指令依次输出每个段落,段落内容置于CDATA 区段中;②将分隔字符串替换为“]] >
4 程序实现
4.1 创建工具类并初始化FreeMarker配置实例
首先导入版本号为2.3.24的freemarker.jar包,并在com.bs.util包下创建WordUtil.java工具类。使用FreeMarker的第一步是创建配置实例,由于FreeMarker的configuration配置对象全局只需要维护一个,因此在WordUtil.java类中将configuration定义为静态变量并通过静态代码初始化:
private static Configuration configuration;
static {
configuration = new Configuration(Configuration.getVersion());
configuration.setDefaultEncoding("UTF-8");
}
接着在该类中封装对多个段落进行预处理的stringFilter()方法和生成Word文档的creatWord()方法,下面分别对这两个方法进行介绍。
4.2 对多个段落内容的预处理
对多个段落内容的处理采用前述的替换填充策略。在生成选题理由、开题报告内容等包含多个段落内容文档时,需要使用该方法对数据进行预处理,代码如下:
public static String stringFilte(String source) {
String uuid = UUID.randomUUID().toString();
return source.replaceAll("\\r\\n", uuid) //
.replaceAll("\\r|\\n", uuid) //
.replaceAll("\\s*"+uuid+"\\s*", uuid) //
.replace(uuid, "]] >
}
4.3 生成Word文档方法
生成Word的方法封装如下,其中省略了try…catch语句块。
public static void createWord(ServletContext servletContext, Map dataMap, String templateName, String filePath, String fileName){
configuration.setServletContextForTemplateLoading(servletContext, "/templates/");
Template template = configuration.getTemplate(templateName);
File outFile = new File(filePath + fileName);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
template.process(dataMap, out);
out.flush();
out.close();
}
需要说明的是,ftl模板文件设置为统一存放在站点根目录的“/templates/”路径下,方法调用时需要提供参数为:当前的servletContext上下文、模型数据Map、使用的模板名称、生成Word文档的存放目录以及Word文档名称。若指定的Word文档存放目录不存在,程序会自动创建该目录。
4.4 应用示例
毕业设计各类文档内容提交时间不同,生成对应Word文档的时机也不同。以生成开题报告Word为例,按照系统设计,学生提交开题报告内容后,由指导教师填写审批意见,当提交审批意见成功后自动生成开题报告Word,此后只有指导教师可以修改开题报告相关内容。指导教师在线修改开题报告内容并提交成功后自动重新生成开题报告Word。生成开题报告Word文档的核心代码如下:
String basepath = this.getServletContext().getRealPath("/");
dataMap.put("project", project);
dataMap.put("ktbgnr", WordUtil.stringFilte(project.getKtbgnr()));
dataMap.put("ktbgyj", WordUtil.stringFilte(project.getKtbgyj()));
WordUtil.createWord(this.getServletContext(), dataMap, "ktbg.ftl", basepath + stu.getFpath(), stu.getSno() + "_KaiTiBaoGao.doc");
代码说明:①当前题目project对象和对应学生stu对象已经通过查询得到;②开题报告内容(ktbgnr字段)和开题报告意见(ktbgyj字段)包含多个段落内容,需要进行预处理;③系统最初导入学生信息时,会根据一定的规则自动生成一个唯一的服务器相对路径并保存在fpath字段,此路径下对应存储该学生的所有相关文档,因此生成的Word文档路径由服务器绝对路径basepath + stu.getFpath()指定。
5 结语
本文基于FreeMarker模板引擎构建了Word文档动态生成方案,不仅代码量非常少,而且解决了零散数据填充时容易被忽略的两个问题,增强了程序的健壮性。与此同时,对应用中可能出现的多个段落内容数据填充问题提出了有效的解决方案。在毕业设计管理信息系统的应用实践中,实现了数据导出并生成完全符合特定格式要求的Word文档功能,满足了具有统一格式规范的各类文档导出需求。
参考文献:
[1] 夏松竹.基于B/S结构的本科毕业设计管理信息系统设计与实现[J].工业和信息化教育,2016(1):82-86.
[2] 周建锋,付延友.毕业设计管理信息系统的设计与实现[J].软件导刊, 2016(8):96-98.
[3] ROD JOHNSON.J2EE设计开发编程指南[M].魏海萍,于晓菲,毛选,译.北京:电子工业出版社,2003.
[4] 刘全飞,周相兵.基于FreeMarker的站群系统模板设计实现[J].信息技术, 2015(7):36-39.
[5] 肖斌,李超,汪敏.基于C#快速生成Word报告[J].计算机系统应用,2012,21(7):232-235.
[6] 王庆喜,李源.基于freemarker和XML技术的Word生成方案[J].电脑与信息技术,2012,20(2):31-33.