技术资料综合管理系统应用开发项目Word格式.docx
- 文档编号:22720462
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:28
- 大小:380.98KB
技术资料综合管理系统应用开发项目Word格式.docx
《技术资料综合管理系统应用开发项目Word格式.docx》由会员分享,可在线阅读,更多相关《技术资料综合管理系统应用开发项目Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
收集基本数据、数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的设计打下基础。
通过上述系统功能分析,正对一般客户管理信息系统的需求,总结出如下的需求信息。
●技术资料信息涉及产品信息和客户信息。
●产品信息和客户信息中需要存在唯一字段。
●产品信息和客户信息可以按几种常用的信息查询。
●产品信息、客户信息、技术资料信息应该可以增加、修改、删除和打印输出。
●用户信息中的用户名必须是唯一的。
●用户信息中必须包含权限信息。
经过上述系统功能分析和需求总结,我们考虑到将来功能上的扩展,涉及如下面所示的数据项和数据结构。
⏹产品信息,包含编号、品名、单位、单价、类别、产地以及说明等。
⏹客户信息,包含编号、名称、联系人、电话、地址、邮编等。
⏹技术资料信息,包含技术资料编号、产品编号、产品数量、客户编号、联系人、联系电话、送货地址、下单日期以及说明等。
⏹用户信息,包含账号、密码、姓名、部门以及管理等。
(三)数据库概念结构设计
得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础,这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
本项目中,根据上面的设计规划处的实体有:
技术资料信息实体、客户信息实体、产品信息实体,以及用户信息实体,各实体具体的描述E-R图如下。
“技术资料信息”、“客户信息”和“产品信息”实体之间的E-R图如图1-2
“技术资料信息”实体的E-R图如图1-3所示
“产品信息”实体的E-R图如图1-4所示
“客户信息”实体的E-R图如图1-5所示
“用户信息”实体的E-R图如图1.6所示
(四)数据库逻辑结构设计
数据库的概念结构设计完毕后,就可以将上面的数据库概念结构转化为实际数据模型,也就是数据库的逻辑结构。
使用VisualFoxPro开发直接使用其自带的数据库,技术资料管理系统中使用的各个数据表的字段设置如下。
用户信息表(UserInfo)的字段设置如表1-1所示。
产品信息表(ProductInfo)的字段设置如表1-2所示
客户信息表(ClientInfo)的字段设置如表1-3所示
技术资料信息表(OrderInfo)的字段设置如表1-4所示
(五)创建技术资料管理信息系统项目
在VisualFoxPro项目主窗口中选择【文件】中新建命令,选择新建项目OFA。
项目创建后即可打开项目管理器,如表单1-1所示。
四、程序设计
(一)创建可视化类
信息管理模块中所使用的表单中都使用到了移动记录工具栏和命令按钮工具栏,若分别添加,其属性和代码将是一件很繁琐的事,因此在本项目中将首先创建可视类,然后在表单中添加创建的可视化类,就减少了工作量,又保证了组员间风格的一致。
在本次试验中共需创建“移动记录工具栏”类和“命令按钮工具栏”这两个类。
1、创建“移动记录工具栏”类
(1)创建可视类
打开项目管理器,切换到“类”选项卡,单击该选项卡的新建,在“新建类”对话框的“类名”文本框中输入可视化类的名称“MOVERECORD”,在“派生于”下拉列表框中选择要新建的基类“COMMANDGROUP”,单击“存储于”文本框右侧的按钮,打开“另存为”对话框,选择存储位置,以及可视类库的名称,并将可视类库命名为“ADMINBUTTON”设置完毕后,单击“确定”就完成了可视类的创建,打开了类设计器。
在可视化类中设置类的“BUTTONCOUNT属性值为4,并修改类及类中按钮的属性如表1-5所示。
“移动记录工具栏”类的属性设置
控件名称
属性
属性取值
moverecord
Button
4
Height
40
Width
320
按钮
Frontbold
.T.
Forecolor
0,0,255
30
65
cmdtop
Caption
首记录
tooltiptext
到第一条记录
cmdpre
上一个
到上一条记录
Cmdnxt
下一个
到下一条记录
cmdbtm
末记录
到最后一条记录
可视化类“移动记录工具栏”及其中的控件后,可视类的效果如下图1-7
(2)添加代码
在本次实例中当鼠标移动到按钮上方时鼠标指针变为自定义形状,这需要在按钮的“MOUSEMOVE”事件中添加代码来指定鼠标的指针形状,代码如程1.1所示
LPARAMETERSnButton,nShift,nXCoord,nYCoord
This.MousePointer=99&
&
鼠标指针为自定义形状
This.MouseIcon=SYS(5)+"
h_point.cur"
&
指定鼠标的指针
“首记录”按钮的click代码
GOTOP&
到首记录
THISFORM.REFRESH&
刷新表单
“移动记录工具栏”类中的“上一个”按钮的click代码如程1.2所示
*如果到了数据表首部
IFBOF().OR.RECNO()=1
MessageBox("
已到首记录"
48,"
移动记录"
)
ELSE
*如果数据指针不位于数据表首部
SKIP-1
ENDIF
*刷新表单
THISFORM.REFRESH
“移动记录工具栏”类中的“下一个”按钮的click代码如程1.3所示
*如果记录指针位于数据表末尾
IFEOF()orRecNO()=RecCount()
已到末记录"
*如果记录指针不位于数据表末尾
ELSE&
记录指针下移
SKIP
THISFORM.REFRESH()
“末记录”按钮的click代码如程1.4所示
GOBUTTOM&
到数据末尾
THISFORM.REFRESH&
“移动记录工具栏”类中的4个按钮设定是,根据表单中数据记录指针的位置不同,禁用或者启用不同的按钮,所以需将判断及操作代码添加到“移动记录工具栏”类的“refresh”事件中,具体代码如程1.5所示
*如果数据表为空或者只有一条记录
IFBOF().AND.EOF().OR.RECCOUNT()=1
THIS.Cmdtop.ENABLED=.F.
THIS.Cmdpre.ENABLED=.F.
THIS.Cmdnxt.ENABLED=.F.
THIS.Cmdbtm.ENABLED=.F.
*如果在记录指针在数据表的末尾
IFRECNO()=RECCOUNT().OR.EOF()
THIS.Cmdtop.ENABLED=.T.
THIS.Cmdpre.ENABLED=.T.
*如果记录指针在数据表的首部
IFRECNO()=1.OR.BOF()
THIS.Cmdnxt.ENABLED=.T.
THIS.Cmdbtm.ENABLED=.T.
ELSE
*如果记录指针不在数据表的首部也不在尾部
ENDIF
这样,“移动记录工具栏”类就创建完毕!
2、创建“命令按钮工具栏”类
由于前面已详细介绍了“移动记录工具栏”类的创建,这里就不再一一介绍了,按照之前我们设想设置好类及按钮的属性后,“命令按钮工具栏”类的效果如图1-8
与“移动记录工具栏”类相同,当鼠标移动到按钮上方时,鼠标指针要使用自定义鼠标指针,所以也要添加该类中的按钮的“mousemove”事件代码如上。
由于“命令按钮工具栏”类在各个表单中的效果相同,即可首先弹出一个确认话框,如果确认则退出当前表单,所以退出按钮的“click”事件代码如程1.6所示
LOCALYN&
声明本地变量
*确认对话框
YN=MESSAGEBOX("
确定退出"
4+32,"
技术资料管理系统"
IFYN=6&
如果确认
THIS.PARENT.PARENT.RELEASE
至此,“命令按钮工具栏”类创建完成。
(二)创建系统主表单
本项目中,使用.PRG程序作为主程序,由该程序设置运行的环境,并调用系统登录表单,系统通过后显示系统LOGO表单,然后再试系统主表单,再由系统主表单调用其他表单完成系统提供的各个功能。
1、创建系统主程序
主程序是所编写的程序的入口,其作用是设置程序的运行环境,定义变量、常量,然后调用其他的表单,其代码如程1.7所示
*——系统环境设置
CLEAR
CLEARALL
SETESCAPEOFF&
禁止运行的程序在按ESC键被中断
SETTALKOFF&
关闭命令显示
SETSAFETYOFF&
覆盖时不要确认
SETSTATBAROFF&
将状态栏关闭
SETSYSMENUOFF&
可关掉VFP系统菜单区域
SETSYSMENUTO&
关闭系统菜单
SETCENTURYON&
显示四位年代
SETDATEANSI&
指定日期表达式的显示格式为yy.mm.dd
*——避免多次运行程序
*——声明API函数“FindWindow”
DECLAREIntegerFindWindowINUSER32.DLLStringlpClassName,StringlpWindowName
lpWindowName="
IF.NOT.FindWindow(0,lpWindowName)==0&
寻找窗口标题
=MESSAGEBOX("
程序已经运行了"
QUIT
_Screen.Caption=lpWindowName
*——声明全局变量
PUBLICcUser,IsAdmin&
声明全局变量,用来保存系统中的登录用户
*——调用登录表单
DOFORMLogon&
显示登录表单
*——进入事物处理
READEVENTS
2、创建系统主菜单
打开项目管理器,切换到“其他”选项卡,在选项卡的类表框中选择“菜单”选项,新建菜单如下:
由于菜单不是单独运行,而是内置在系统主表单中运行,所以还需要设置菜单的常规选项。
打开菜单设计器,选择显示中常规选项命令,打开“常规选项”对话框,在此对话框中选中“顶层表单”复选框,这样菜单就可以与顶层表单一起运行了。
菜单设计完成后,还需要生成可执行的菜单文件(.mpr文件),在菜单设计器中选择菜单生成命令,打开“生成菜单”对话框,在此对话框中的“输出文件”文本框中输入生成的可执行的菜单文件位置,单击确定按钮即可。
3、创建用户管理模块
“技术资料管理系统”中设计的用户管理模块包括系统登录、密码修改、添加用户、修改用户和删除用户5项功能,其中修改和删除用户功能在集成在一个表单中,下面分别介绍:
(1)创建“系统登录”表单
设置表单一些基本属性之后,创建好的表单效果如下
把用户信息表(userinfo)添加到数据环境中,之后便添加代码。
“确定”按钮的“click”事件代码如程1.8所示
*——改为精确比较
SETEXACTON
*——试图登录次数自动加1
THISFORM.i=THISFORM.i+1
IFEMPTY(ALLTRIM(账号))
MESSAGEBOX("
请输入账号名称"
THISFORM.txt账号.SetFocus
ELSE
SELECTUserInfo
LOCATEFORALLTRIM(账号)=ALLTRIM(THISFORM.txt账号.VALUE)&
查找用户
*——用户名和密码正确
IFFOUND().AND.ALLTRIM(密码)=ALLTRIM(THISFORM.txt密码.VALUE)
CUser=账号&
将登录用户的姓名存储到全局变量中
IsAdmin=管理
THISFORM.RELEASE()
DOFORMLOGO&
执行Logo表单
*——用户名和密码错误
IFTHISFORM.i<
3&
如果次数小于3
MESSAGEBOX("
账号或密码错误,请重新输入"
THISFORM.txt账号.VALUE="
"
THISFORM.txt密码.VALUE="
THISFORM.txt账号.SETFOCUS
ELSE&
如果已登录3次
密码错误三次,系统无法启动"
THISFORM.RELEASE&
退出表单
CLEAREVENTS&
结束事件循环
QUIT&
退出VisualFoxPro
ENDIF
*——改为模糊比较
SETEXACTOFF
“取消”按钮的“click”事件代码如程1.9所示
*——声明本地变量
LOCALYN
*——确认对话框
*——如果确认
IFYN=6
THISFORM.RELEASE&
退出当前表单
CLEAREVENTS&
结束事务处理
QUIT&
(2)创建“修改密码”表单
将“用户信息表”添加到表单数据环境中,其代码添加介于篇幅就不详细介绍了。
同上“修改用户表单与删除用户表单”也不一一介绍了。
(3)创建“修改密码”表单
将“用户信息表”添加到表单数据环境中,其代码添加介于篇幅就不详细了。
4、创建信息浏览表单
(1)创建“产品信息浏览”表单
命名为“proselect”将“产品信息”表添加到表单的数据环境中,
IF.NOT.EMPTY(ALLTRIM(THISFORM.txt产品编号.Value))
SelTJ=SelTJ+"
AND'
+ALLTRIM(THISFORM.txt产品编号.Value)+"
'
$编号"
IF.NOT.EMPTY(ALLTRIM(THISFORM.txt产品名称.VALUE))
+ALLTRIM(THISFORM.txt产品名称.Value)+"
$品名"
SELECTProductInfo
SETFILTERTO
SETFILTERTO&
SelTJ添加“产品信息浏览”表单的“init”事件代码如程2.1所示
PARAMETERScFormMode
THISFORM.FormMode=cFormMode
PUBLICSelTJ
SelTJ="
.T."
IFTHISFORM.FormMode="
cBrowse"
THISFORM.Grid1.Column1.Header1.Caption="
编号"
THISFORM.CmdPrint.Visible=.T.
THISFORM.CAPTION="
产品信息浏览"
IFTHISFORM.FormMode="
cSelect"
THISFORM.Grid1.Column1.Header1.Caption="
编号(双击选择)"
THISFORM.CmdPrint.Visible=.F.
THISFORM.CmdExit.Left=THISFORM.CmdExit.Left-35
THISFORM.CAPTION="
产品信息选择"
THISFORM.Refresh
当“产品信息浏览”表单作为“产品信息选择”表单时在表单推出是要向调用的该表单的表单返回值,即添加一个“return”语句,添加“产品信息浏览”表单的“unload”事件代码如程2.2所示
ReturnTHISFORM.SelectedPro
当“产品信息浏览”表单作为“产品信息选择”表单时,在表格控件的第一列中双击时即可选择该条记录,并将该记录的“编号”字段值返回给调用表单,添加“产品信息浏览”表单的表格控件的第一列文本框的“dblclick”事件,代码如程2.3所示
Ifthisform.formmode=”cselect”
thisform.selectedpro=alltrim(this.value)
thisform.release
endif
查看按钮的“click”代码如程2.4所示
SelTJ="
“打印”按钮的“click”代码如程2.5所示
REPORTFORMProductInfoPreviewFOR&
SelTJ
“退出”按钮的“click”代码如程2.6所示
THISFORM.SelectedPro="
0000000000"
THISFORM.Release
至此,“产品信息管理”表单创建完毕。
(2)创建“产品信息浏览”表单
由于它与上“产品信息管理”相似,这里就不再介绍了。
5、创建信息管理模块
(1)创建产品信息管理表单
将“产品信息”表添加到表单数据环境中,把之前创立的两个类控件添加到表单中,由于在这里还使用了一个自定义方法“modecontrol”,其代码如程2.7
LocalBeModify,BeBrowse
BeModify=THISFORM.bModify
BeBrowse=THISFORM.bBrowse
THISFORM.txt编号.ReadOnly=.NOT.BeModify
THISFORM.txt品名.ReadOnly=.NOT.BeModify
THISFORM.txt单位.ReadOnly=.NOT.BeModify
THISFORM.txt单价.ReadOnly=.NOT.BeModify
THISFORM.txt类别.ReadOnly=.NOT.BeModify
THISFORM.txt产地.ReadOnly=.NOT.BeModify
THISFORM.txt说明.ReadOnly=.NOT.BeModify
THISFORM.ProMoveRec.Enabled=.NOT.BeModify
THISFORM.ProAdminButton.CmdAdd.Enabled=.NOT.BeModify
THISFORM.ProAdminButton.CmdMod.Enabled=.NOT.BeModify
THISFORM.ProAdminButton.CmdDel.Enabled=.NOT.BeModify
THISFORM.ProAdminButton.CmdPri.Enable
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 技术资料 综合 管理 系统 应用 开发 项目