基于WEB的MIS系统动态表单域设计与应用

时间:2022-06-20 11:59:10

基于WEB的MIS系统动态表单域设计与应用

摘要:基于WEB的MIS系统正在日益普及,本文叙述了基于WEB的MIS系统中表单域编辑的一种动态实现方案,讲述了该方案的设计原理,并与传统方式进行比较,特别针对该方案的实现程序进行了详细的分析和解释,文中还通过一个典型的例子阐述了该方案的应用。

关键词:WEB;MIS;动态表单域

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30393-04

Designation and Application of MIS Dynamic Form Domain on the Basis of WEB

LU Yue-hua, JIANG Hao, CHEN Zhong-ming

(Southeast University,Nanjing 210004,China)

Abstract: The MIS based on WEB is being used widely. This paper brings forward a scheme that can edit the MIS form based on WEB dynamically; explains the principle of the scheme thoroughly comparing with the traditional scheme and analyzing and demonstrating the program of realization; and at last explains the application of the scheme through a typical enxample.

Key words: WEB; MIS; dynamic form domain

1 引言

各机构、部门高层领导的决策依赖于大量信息,要求企业的各种业务信息能通过一个简单、一致的浏览器界面来收集和传送,这要求计算机管理信息系统(MIS)设计应基于B/S(Browse/Server)模式[3]。该模式的MIS系统还具有便捷安装、客户端零维护、方便移植等优势,越来越受到各单位的青睐。

通常意义上的MIS系统都包括两大方面内容:基础数据的管理和在基础数据上进行分析与挖掘。以满足单位基层人员的日常工作需要和提供对高层管理人员的辅助分析。

MIS系统中基础数据的管理往往是针对一堆业务表格的管理,实现业务表格的添加、修改、删除、查询功能,统称为表单域编辑。目前比较通用的基于WEB的一些开发框架、开发工具都提供了许多便捷性操作,方便表单编辑功能的开发,但都存在一个问题,各业务表格的编辑功能相似,但业务表格之间的关系、表格内容、表格各项格式不一样,因此,每个业务表格的管理都需要一套代码来实现。一般情况下,一个MIS系统中的基础表格数量比较大,这样就需要庞大的代码量,延长了系统的开发时间,也不利于将来代码的维护与功能的扩展。

如何克服上述弊端呢?本文就如何利用动态表单域技术,实现以一套代码管理所有业务表单操作,并基于数据表动态生成提交表单和动态生成处理表单的源程序作一些探讨。

2 设计原理

传统的提交表单是根据具体的业务内容来生成的,表单编辑的实现方式如图1所示,用户打开某个业务表格的录入页面录入数据并存入数据库时,系统提供该业务表格的具体录入页面给用户录入,然后再提交到数据库中存储。

通常每个表单的提交页面及处理程序是由熟悉网页设计的程序员事先编程实现,然后再上传的。这样的缺点是:第一,不能由非专业人员完成,必须由相关专业人员才能完成开发工作。第二,不同的提交内容需要设计不同的提交表单和处理程序,程序没有通用性[1]。

本文的设计原理是利用配置思想,动态实现表单域的提交。本文的动态表单域是指Web 页面中需要提交的表单域不是事先指定的而是动态可变的[2],是由配置信息来生成。

配置信息即需要提交的业务表格的内容项、各项格式、大小、默认值等信息。把配置信息做为参数信息存放在配置表中或配置文件中。如图2所示,当用户打开某个业务表格的录入页面录入数据并存入数据库时,系统根据用户的要求,从配置信息中读取该表单的配置参数,动态生成提交页面给用户使用。因此,不管用户需要录入哪个业务表格,实际都是针对同一个动态页面做提交操作。

这种动态表单提交方式,将大大缩短开发时间,维护起来也方便,当需要修改表格项或新增表格时,把表格项信息在配置表中重新配置即可。当新增加业务表格时,只需要按要求配置具体的信息即可,这些工作非专业人员都能完成,这种设计方式很好地弥补了传统方式的不足。

3 设计与实现

3.1 配置参数设计

配置参数的存储形式可以是数据库表、文本文件、XML格式的配置文件等,这里用数据库表来存储配置参数。

配置表类似数据库中的系统表,配置表ER图见图3所示,其中“表名”、“字段名”、“字段类型”、“字段长度”、“是否为必填项”必须与具体业务表格在数据库中建的表相一致;“表中文名”、“字段中文名”是指在通用编辑表单页面上显示的标题内容;“字段页面显示样式”是指字段在页面上的显示样式,这里用固定单词SELECT、TEXT、TEXTAREA、DATE等来区分下拉框、输入框、文本框、日期型样式,“在页面上显示的次序”表示通用编辑页面上各表格项的前后布局位置情况;“默认值”指通用编辑页面上各项初始化时的默认显示项。这些参数的使用都体现在下面算法中。

3.2 动态表单域设计

为方便描述,我们用最简单的JSP+JAVABEAN方式来实现WEB上的表单提交功能。

该设计方案需要一个数据库操作对象,这里命名为OpDBBean.java,需要一个动态表单提交页面,命名为PublicEdit.jsp,一个动态表单处理页面PublicEditPost.jsp,具体的实现方式见图4中的序列图所示。

3.3 程序实现

从上述序列图中可以看出,实现的关键是“5、生成动态提交页面”和“8、生成SQL处理语句”两段程序。

3.3.1 生成动态提交页面的程序

提交页面布局思路:用一个两列的表格来分别存放内容项的标题和输入框。为了页面的美观,隐藏表格的表格线。

页面提交时的输入内容校验可以有多种方法,如果使用struts、Spring等框架,还可以用这些框架定义的标签,这里使用了自定义标签,这样输入内容可以根据自定义标签用JS来实现校验。自定义标签说明:chname指输入域中文名,当输入内容出错时可以用中文来提示出错的输入域;maxsize指输入最大长度控制,避免存入数据库时的超长输入错误;isnull指是否可以不填,可校验页面是否是必填项;datatype指数据类型,可判断用户输入的数据类型是否正确,比如是否在文本框中输入了整数等。

另外一个值得一提的是,输入域中如果是下拉列表选择项或单选项的,这里我们把选择项另外存储(例如使用数据库表等),并且设计成可以通过表名和字段名来获取这些选择项,这样这些选择项即能独立管理又能方便编辑页面的获取,这里不详细描述了。

具体生成动态提交页面的程序如下所示:

<br>

<b><%=参数.表中文名%>录入页面</b> <br>

<table id="tab"width="98%" border="0"

align="center"> <br>

for(int i=0;i<参数个数;i++) //循环该表中每个参数对象 <br>

{  <br>

<tr > <br>

<td class="CSS中定义的标题样式"><%=当前参数对象.字段中文名%></td> <br>

<td> <br>

if(当前参数对象.字段页面显示样式.equalsIgnoreCase("text")) //输入域样式为text <br>

{ <br>

<input type="text" name="<%=当前参数对象.字段名%>" value="<%=当前参数对象.默认值%>" class="CSS中定义的文本框样式" chname="<%=当前参数对象.字段中文名%>" maxsize= "<%=当前参数对象.字段长度%>" isnull="<%=当前参数对象.是否为必填项%>" datatype="<%=当前参数对象.字段类型%>" >  <br>

}  <br>

else if(当前参数对象.字段页面显示样式.equalsIgnoreCase("select"))//输入域样式为下拉选择框 <br>

{ <br>

ArrayList theList = TypeBean.getTypeList(当前参数对象.表名,当前参数对象.字段名); <br>

//根据表名和字段名得到预设该下拉框中应该显示的输入信息列表 <br>

<select name="<%=当前参数对象.字段名%>" chname="<%=当前参数对象.字段中文名%>" size=1 isnull="<%=当前参数对象.是否为必填项%>"> <br>

<option value=>请选择</option> <br>

for(int j=0;j<theList.size();j++) //循环列表,输入在下拉选择框中 <br>

if(当前参数对象.默认值.equalsIgnoreCase(列表中当前项))//与默认值相同则选中 <br>

<option value=<%=列表中当前项%> selected><%=列表中当前项%></option> <br>

else  <br>

<option value=<%=列表中当前项%> ><%=列表中当前项%></option> <br>

</select> <br>

} <br>

elseif(当前参数对象.字段页面显示样式.equalsIgnoreCase("radio")) //输入域样式为单选项 <br>

{ <br>

ArrayList theList = TypeBean.getTypeList(当前参数对象.表名,当前参数对象.字段名); <br>

//根据表名和字段名得到预设该单选项的所有选择项 <br>

for(int j=0;j<theList.size();j++) //循环列表,生成各单选项 <br>

if(当前参数对象.默认值.equalsIgnoreCase(列表中当前项))//与默认值相同则选中 <br>

<input type="radio" chname="<%=当前参数对象.字段中文名%>" name="<%=当前参数对象.字段名%>" value="<%=列表中当前项%>"selected><%=列表中当前项%>  <br>

else <br>

<input type="radio" chname="<%=当前参数对象.字段中文名%>" name="<%=当前参数对象.字段名%>" value="<%=列表中当前项%>"><%=列表中当前项%>  <br>

} <br>

else if(当前参数对象.字段页面显示样式.equalsIgnoreCase("textarea")) //输入域样式为文本域 <br>

{ <br>

<TEXTAREAname="<%=当前参数对象.字段名%>" class="CSS中定义的文本框样式" chname="<%=当前参数对象.字段中文名%>" maxsize= "<%=当前参数对象.字段长度%>" isnull="<%=当前参数对象.是否为必填项%>" datatype="<%=当前参数对象.字段类型%>" ><%=当前参数对象.默认值%></TEXTAREA>

elseif(当前参数对象.字段页面显示样式.equalsIgnoreCase("date"))//输入域样式为日期

<scriptlanguage="javascript">

varmyDates=newdateSelector();

//使用一个公用的JS实现一个日期的选择控件,这里调用一下

myDates.inputName='<%=当前参数对象.字段名%>';

myDates.value=<%=当前参数对象.默认值%>;

myDates.display();

</script>

</td>

</tr>

</table>

3.3.2生成动态SQL处理语句的程序

在生成动态提交页面的程序中,我们可以看到页面中各输入域的名称都是以参数中的字段名命名,这是该程序的一个巧妙之处,这样该页面提交后各输入项内容就能很方便地通过表中各字段名来获取了,这样提交后SQL处理语句可以通过获取各输入项内容来动态生成。

表单提交的动态SQL处理语句的实现程序:

StringtmpFieldStr="";//表中字段名拼成的以逗号分隔的字符串

StringtmpValueStr="";//各输入项内容拼成的以逗号分隔的字符串

for(inti=0;i<参数个数;i++)//循环该表中每个参数对象

tmpFieldStr=tmpFieldStr+当前参数对象.字段名+",";

StringIntValue=request.getParameter(当前参数对象.字段名);//通过字段名获取输入值if((当前参数对象.字段类型.equalsIgnoreCase("integer"))

||(当前参数对象.字段类型.equalsIgnoreCase("real")))

if(intValue==null||intValue.equalsIgnoreCase(""))intValue="0";

elseif(intValue==null)intValue="";

tmpValueStr=tmpValueStr+intValue+",";

tmpFieldStr=tmpFieldStr.substring(0,tmpFieldStr.length()-1);//去掉最后一个多余的逗号

tmpValueStr=tmpValueStr.substring(0,tmpValueStr.length()-1);//去掉最后一个多余的逗号

Stringsql="";//最后生成的录入SQL语句

sql="insertinto"+参数.表名+"("+tmpFieldStr +")values("+tmpValueStr+")";

4应用

一般MIS系统都是针对机构、部门进行管理的,这里我们以物业管理系统中的“部门大事记”这样一个表单为例来说明如何应用本方案,不需添加多余代码即可实现这个表单管理。

假设部门大事记包含以下内容:部门名称、事件类型、标题、时间、内容、备注、记录日期、记录人。我们根据这些内容在数据库中创建一个表:部门大事表,并设该表的主关键字“流水号”为自动增量字段。

并在“表单编辑参数配置表”中配置如下记录:

然后调用通用编辑页面,传入参数,如:http://路径/PublicEdit.jsp?tablename=T_BMDS。即可显示如图6所示的编辑页面,在该页面上录入信息点击“确定”按钮,系统校验录入内容后把录入内容存入数据库中。

5结束语

这种利用配置思想实现的动态生成提交页面的方法使得MIS中的表单编辑的开发和维护费用降低,开发速度加快,开发人员减少,而配置方式不仅提高了程序的复用程度,而且其适应性、灵活性和可扩展性也增强了。这种应用配置思想的设计本身是一个循环迭代的过程,它在不断应用于实践的过程中得到更新和提高。下一步工作要在该方法上不断进行改进,对于多表单复杂编辑的配置方式还需要进一步探讨。

参考文献:

[1]刘友生,陈一平,胡浪.基于数据表的动态表单处理技术[J].计算机工程与应用,2004(34):199.

[2]张严林,胡战虎,张江洋.JAVAWEB框架动态表单域编程在物业管理中的应用[J].广东自云贵化与信息工程,2005(3).

[3]谢天保,李薇.基于WEB模式的管理信息系统的设计[J].湖南大学学报,2002,29(1).

上一篇:工学结合人才培养模式下的软件技术专业课程改... 下一篇:波束控制系统测试仿真平台设计研究