于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
系统分为两大模块
1.进行人口信息管理;
2.进行人口信息用户查询;
第二章
怎样开发一个人口登记管理系统?
编程环境的选择
微软公司的VisualBasic6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。
现代计算机软硬件的发展使得本系统具有良好的操作界面,简单直接的操作界面,具有较强的人机对话能力,支持多种汉字输入方式,其适应性强,显示内容简单明了,使操作者不必具有较高高的计算机专业知识,也不必进行专门培训,稍一接触就可以上手进行所有操作。
系统开发阶段
人口登记管理管理系统开发大概可以分成五个阶段,各阶段工作如下:
第一阶段、系统调查分析阶段。密切与用户联系,通过走访、询问、查阅原始的图标和数据,获得原始资料,了解人口登记管理系统功能、作用、用户的需求以及人口登记管理系统应该包括的服务内容等。
第二阶段、数据库与表的建立阶段。此阶段主要任务是根据人口登记管理系统调查分析阶段的结果建立与人口登记管理系统相关的数据库和表,并且进行数据规范化。
第三阶段、表单生成阶段。这一阶段主要任务是在用户参与的情况下创建人口登记管理系统用户界面。主要使用VisualBasic作为开发工具,选用有关控件、设置控件属性、设计程序窗口布局、初始化界面等,其结果是建立一套友好的人口登记管理系统用户界面,方便使用者操作人口登记管理系统。
第四阶段、代码生成和文档生成。这一阶段要根据人口登记管理系统具体的需要编写软件程序代码,同时同步生成人口登记管理系统文档。
第五阶段、调试和发布。通过调试找到人口登记管理系统程序中不合理的操作和错误,并且改正。根据时间进度,安排人口登记管理管理人员试用人口登记管理系统软件,由使用者提出人口登记管理系统中存在的问题与修改意见,根据用户要求修订人口登记管理系统软件功能,重新调试人口登记管理系统。调试完毕系统正常可用,即可发布。
关系型数据库的实现
Access2000就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。另外,Access允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
从技术角度上来说,VisualBasic已经对上面的各个阶段的设计工作提供了非常完善的支持,所以使用VisualBasic辅助开发办公自动化管理系统是可行的。同时,软件开发人员的专业知识也完全可以胜任,不需太大的投资。
二者的结合(ADO)
微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及VisualBasic来访问数据库并对其进行各种操作。VisualBasic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。
ADO控件在数据库中的信息与将信息显示给用户看的VisualBasic程序之间架起了一座桥梁。我们可以设置ADO控件的各个属性,告诉它要调用那个数据库的哪个部分。缺省情况下,ADO控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。ADO控件还提供了用来浏览不同记录的各种跳转按钮。将ADO控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。
ADO(ActiveXDataObjects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统。本文主要介绍用ADO编程所需要注意的技巧和在VC下进行ADO编程的模式,并对C++Extensions进行了简单的讨论,希望对ADO开发人员有一定的帮助作用。因为ADO是一个和编程语言无关的COM组件系统,所以这里讨论的要点适用于所有的编程语言和编程环境,比如:VB、VBScript、VC、Java等等。
编程技巧
1.显式定义对象类型
实际上,这条准则不仅适用于ADO编程,也适用于其他的与COM对象相关的编程。因为如果一开始就定义变量类型,则编译器在编译的时候就可以知道变量的类型,此时编译器实际上是采用vtable偏移的方式来得到具体的COM对象包含的方法的地址(这一点和C++中虚函数的地址获取方式类似);但如果一开始不指定变量类型的话,比如简单地采用如下的语句:
DIMmyConasObject
或者是:
DIMmyCon
这样,编译器在编译的时候就不能得到变量的类型,而只能在运行的时候动态地得到方法的信息(通过使用接口IDispatch的Invoke方法来实现),如此为了得到方法的地址和相关的变量情况就需要在内部进行两次调用,无疑会降低程序的运行速度。
2.绑定列到具体的字段对象
在程序开始时就建立对字段对象的引用,可以避免在每次得到记录后,再在Recordset::Fields中进行查找而增加系统的开销。
例如,可以采用如下所示的代码:
PrivateSubTblBrowse_Click()
Dimfld1AsADODB.Field
Dimfld2AsADODB.Field
DimrsAsADODB.Recordset
setrs=g_cn.execute(...)
'g_cn为全局对象adodb.connection
Setfld1=rs.Fields("id")'数据表的字段
Setfld2=rs.Fields("name")'数据表的字段
Ifrs.BOF=FalseThen
Whilers.BOF=False
Debug.Printfld1.Value
Debug.Printfld2.Value
rs.MoveNext
Wend
EndIf
rs.Close
EndSub
3.用SQL语句和存储过程进行数据更新
尽管采用Recordset对象来更新数据是非常方便的,但是它的开销也大,通过数据源对象返回的查询集不仅包含了数据,而且也包含了元数据(metadata),在有些时候元数据可能比数据本身还要大,所以最好采用SQL语句来更新数据。还有要使用存储过程而不是单一的SQL语句来获取信息。因为存储过程是在服务器端执行的,只把结果返回到客户端,这样一方面可以降低网络进行数据交互的开销,另一方面使系统更加容易维护,并且能保持数据的一致性。
4.使用集合操作单条的SELECT语句
在使用游标时,最好使用集合的方法对单条的SELECT语句进行操作。Recordset::get_Collect方法和Recordset::put_Collect方法是Recordset对象的快捷方式,可以快速地得到一个字段的值而不需要获得关于一个字段的引用。例如,可以采用如下代码:
SubCollect()
DimrsAsNewRecordset
rs.ActiveConnection="..."
rs.Source="一条SQL查询语句"
rs.Open
Debug.Printrs.Collect(0),rs.Collect(1),rs.Collect(2)
Debug.Printrs!au_id,rs!au_fname,rs!au_lname
EndSub
5.只查询所需要的数据
尽管很多开发人员都习惯采用"SELECT*FROMTBL"的模式进行查询,但是为了提高系统的效率,如果只需要
上一篇:
vb人事资源管理系统+论文(论文和程序)
下一篇:
临床前药物安全性评价中毒性病理学新技术的应用