数据库应用系统开发.docx
- 文档编号:28648944
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:37
- 大小:176.31KB
数据库应用系统开发.docx
《数据库应用系统开发.docx》由会员分享,可在线阅读,更多相关《数据库应用系统开发.docx(37页珍藏版)》请在冰豆网上搜索。
数据库应用系统开发
第9章 数据库应用系统开发
本章将介绍开发数据库应用系统的基本步骤,然后以一个比较简单的学生管理系统为例,较为详细地介绍设计一个VisualFoxPro应用系统的开发过程,通过对数据库系统的开发实践来达到对所学知识的综合应用。
9.1 数据库应用系统开发步骤
一个完整的数据库应用系统的设计开发应该包括两个方面:
一是结构设计,即设计数据库框架和数据库结构;二是行为设计,即设计具体的应用程序。
为了完成上述的设计目标,需要规范的设计方法和步骤。
一般来说,数据库应用系统的开发包括以下几个步骤:
需求分析、数据库设计、应用程序设计、软件测试、应用程序发布以及系统的运行和维护。
9.1.1 需求分析
数据库应用系统的开发从系统的需求分析开始,它是整个开发过程的起点和基础。
需求分析的目标是明确用户的具体要求,包括应用系统的功能结构、信息要求、处理要求、安全性与完整性的要求等具体的指标,并以需求分析报告的形式表达出来。
一般来说,需求分析需要从以下两个方面着手:
数据分析和功能分析。
数据分析是指通过合适的数据模型来描述系统所要处理的各种对象,建立关于对象的概念模型,再将概念模型转换为关系数据模型。
功能分析是指确定系统边界,了解系统功能,确定哪些功能由计算机完成,哪些活动由人工完成。
由计算机完成的功能就是系统应该实现的功能。
进行需求分析时应该注意以下一些问题:
首先,需求分析必须建立在调查研究的基础上,包括访问用户,了解人工系统模型,采集相关资料等。
为确保调查的客观性和正确性,系统调查工作应该严格按照自顶向下的系统化观点全面展开,逐层分析和了解。
其次,在需求分析阶段就要建立基于用户需求的观念,主动和用户进行沟通,了解他们的需求和偏好,在系统实施的过程中也要及时接受用户的反馈信息,对系统进行适当的修正。
9.1.2 数据库设计
数据库设计的任务主要包括概念结构的设计、逻辑结构的设计和物理结构设计。
数据库的概念结构是现实世界与机器世界的中介,它一方面能够充分地反映现实世界,包括实体和实体之间的联系,同时又易于向关系数据模型转换。
在概念结构设计阶段,设计人员通过对现实世界的抽象,对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特性,并把这些特性用各种概念精确地加以描述,从而形成一个具体的独立于数据库管理系统的概念模型。
数据库的逻辑结构设计是指将概念模型转化为关系数据库模型,根据系统分析的结果来确定该数据库中需要存储哪些信息,以及如何利用字段来合理地表示这些信息,从而定义出数据库中每个表所需的字段和数据类型。
并在此基础上对数据进行优化,排除数据冗余,弥补数据漏洞,完善数据结构。
最后完成数据库的逻辑结构设计,设计表的结构、字段约束关系、字段间的约束关系、表间的关系及索引等。
数据库的物理结构设计是为逻辑数据模型选取一个最适合应用环境的包括存储结构和存储方法的物理结构。
由于数据库的物理结构依赖于所选的数据库管理系统,也依赖于计算机硬件环境,设计时主要考虑以下几方面内容:
确定数据的存储结构,需要综合考虑存储时间、存储空间利用率和维护代价3方面的因素;设计数据的存取路径,如如何建立索引,建立单索引还是复合索引;确定数据的存储位置,对不同数据的存放进行适当的安排;最后的工作是确定系统配置。
9.1.3 应用程序设计
在实际的应用系统开发中,应用程序设计和数据库设计两方面的需求是相互制约的。
具体地说,应用程序设计受到数据库当前结构的约束,而设计数据库时也必须考虑应用程序设计实现的需要。
数据库系统的应用程序设计包括以下内容。
(1)用户界面设计
第9章 数据库应用系统开发
VisualFoxPro数据库及其应用界面是用户和系统的输入/输出接口,界面设计用于控制数据的输入/输出,它包括欢迎界面、登录表单、数据输入表单、系统菜单等用户界面的设计。
(2)功能模块设计
完成具体的数据处理工作,一般按照数据的输入、修改、编辑、查询与统计、报表输出等功能模块划分,并通过控件的事件代码来实现。
(3)控件属性设计
通过对控件属性的设计完成系统的特定功能,包括表单集、表单和表单中各种控件的属性设置,通过属性设置来改变窗体或控件运行时的功能和外观。
(4)主程序设计
设置应用程序系统运行环境和程序起始点,显示初始的用户界面,控制事件的循环,组织主程序文件。
具体的内容将通过后面的案例来说明。
(5)调试程序
应用程序编写完成之后,要对它进行编译和运行,以发现程序中的语法错误,反复修改,直至程序完善为止。
9.1.4 软件测试
应用程序设计完成之后,应对软件进行测试,以检验系统各个组成部分的正确性,验证软件的运行是否符合系统的设计要求。
测试又可以分为模块测试和综合测试。
一般来说,模块测试在编码阶段就同时进行了,主要检查模块的功能结构方面的问题。
在测试阶段主要进行综合测试,也就是将各模块组件组装起来,按系统设计的要求,逐项进行测试,检验系统是否满足实际的功能要求。
9.1.5 应用程序发布
软件测试完毕后,就可以发布应用程序了,在VisualFoxPro中发布工作主要包括以下几个方面的内容。
①备份源程序代码:
在制作安装盘之前,应当备份应用系统的所有源程序代码,以备将来使用。
②创建发布树目录:
发布树目录用于存放整个应用系统所需的全部文件,目录中的文件和子目录将被压缩到磁盘镜像文件中,并通过安装程序安装到用户机器上。
创建发布树目录可按如下步骤进行。
创建目录,目录名为应用程序安装在用户机器上出现的名称。
把发布目录分成适合于应用程序的子目录。
把应用程序项目中的文件复制到相应目录中,应用程序(.exe)必须放到该树的根目录下。
③创建发布盘:
创建发布盘时,通过安装向导压缩发布目录树中的文件,并把这些压缩过的文件复制到磁盘映射目录,每个磁盘放置在一个独立的子目录中。
创建了应用程序磁盘映射之后,就把每个磁盘映射目录的内容复制到一张独立的磁盘上。
在发布盘生成后,运行“Setup.exe”程序,就可以在用户机器上安装应用程序的所有文件了。
9.1.6 系统运行和维护
在系统正式投入使用后,就进入了系统运行和维护阶段。
事实证明,系统运行和维护的工作更加繁多和琐碎,也牵涉到更多的人力和物力。
系统运行的主要内容有:
日常的例行工作,它包括数据的录入、存储、更新、复制及统计分析、报表生成等数据处理工作;临时性的信息服务,如临时性的信息检索和报表生成;运行情况的记录,如工作量记录、工作效率记录、系统维护情况记录和系统故障记录。
系统维护的主要内容有:
硬件维护,包括定期的预防性维护和突发性故障维护;软件维护,主要是对程序的维护,它是系统维护中最重要的、工作量最大和耗时最多的一项维护;数据维护,主要是指数据有较大的变化时,安装或转换新的数据库文件,或在数据库容量太大而出现数据溢出时采取重写文件的工作。
9.2 数据库应用系统开发实例
开发一个数据库应用系统,应该首先进行需求分析,绘出系统的功能结构图,根据功能结构进行数据库设计和应用程序设计。
下面较为详细地介绍一个比较简单的学生管理系统的开发过程,旨在抛砖引玉,希望有兴趣的读者可以在此基础上,开发出功能更加完善的信息管理系统。
9.2.1 学生管理系统需求分析
为了尽可能完善学生管理系统的各项功能,必须进行系统的功能分析,绘出系统的功能结构图。
1.系统功能分析
本系统主要用于学生的信息管理,它包括学生的基本信息、成绩信息、课程信息等。
系统的主要任务是用计算机对上述信息进行日常管理,如数据录入、维护、查询,报表输出等。
这里为了简便起见,省略班级和系别信息,以及学生选课的功能。
从学生管理角度考虑,学生管理系统应包括以下几个主要功能。
①系统登录动能:
要求系统登录时有密码管理功能,用户要输入正确的用户名和密码才能进入系统。
②数据录入功能:
系统要具有学生成绩信息、学生基本信息等录入功能。
③数据维护功能:
系统要能够对学生的各种信息进行数据维护,主要是维护学生、课程和成绩等方面的基本信息,包括增加、删除、修改等功能。
④数据查询功能:
系统要具有学生班级信息、学生基本信息等查询功能。
⑤报表打印:
实现各种所需报表的预览和打印功能,这里主要包括学生基本信息和成绩信息的打印功能。
⑥退出:
用来实现退出本管理系统。
2.系统功能图
由前面的分析我们得到系统功能图如图91所示。
学生管理系统包括4个主要功能:
数据录入功能,含有学生基本信息的录入和成绩信息的录入;数据维护功能,含有学生基本信息的维护和成绩信息的维护;数据查询功能,含有学生基本信息的查询、成绩信息的查询以及课程信息的查询;数据输出功能,含有学生基本信息的输出和成绩信息的输出。
图91 学生管理系统功能结构图
9.2.2 数据库设计
数据库设计主要涉及3方面的内容:
系统的数据对象分析、数据库的逻辑结构设计和项目文件的建立。
1.系统的数据对象分析
从系统功能分析可以看出,用户的需求具体体现在学生管理的各种信息的提供、保存、查询和输出上,这就要求系统的数据结构能充分表示学生管理的各种信息。
通过系统需求分析,总结出系统的数据对象应包含如下的信息。
①用户信息:
包含用户名和密码。
②学生信息:
包含学号、姓名、性别、出生日期、奖学金、籍贯、简历等,其中“学号”字段唯一。
③课程信息:
包含课程号、课程名、学时数和学分,其中“课程号”字段唯一。
④成绩信息:
包含学号、课程号和成绩。
2.数据库的逻辑结构设计
由于系统的概念结构相对简单,因此可以直接开始数据库的逻辑结构设计。
采用VisualFoxPro开发,系统中使用的各个数据表的字段设计如表91~表94所示。
表91 管理员表(pass.dbf)
字 段
字段名
类 型
宽 度
小数位
索 引
注 释
1
用户名
字符型
10
普通索引
2
密码
字符型
10
表92 学生基本信息表(学生表.dbf)
字 段
字段名
类 型
宽 度
小数位
索 引
注 释
1
学号
字符型
12
主索引
2
姓名
字符型
8
3
性别
字符型
2
男,女
4
出生日期
日期型
8
5
奖学金
数值型
4
6
籍贯
字符型
16
7
简历
备注型
4
表93 课程信息表(课程表.dbf)
字 段
字段名
类 型
宽 度
小数位
索 引
注 释
1
课程号
字符型
8
主索引
数字
2
课程名
字符型
20
3
学时数
数值型
3
4
学分
数值型
4
表94 成绩信息表(成绩.dbf)
字 段
字段名
类 型
宽 度
小数位
索 引
注 释
1
学号
字符型
12
普通索引
数字
2
课程号
字符型
4
普通索引
数字
3
成绩
数值型
5
3.项目文件的建立
为了便于管理该系统中的各种文件,需要建立一个学生信息管理的项目文件,另外再建立一个“D:
\学生管理”文件夹来存储该项目生成的所有文件,今后系统的详细设计也均在该项目下进行操作。
9.2.3 应用程序设计
图92 “登录”表单
本节介绍各表功能模块的详细设计。
1.系统登录表单
本系统一般供管理人员使用。
系统涉及学生信息、成绩信息和课程信息等,这些信息不能受到随意的修改,因此,系统设置登录表单,要求用户输入正确的用户名和密码。
为了方便使用,系统自动将管理员表中已有的用户名添加到列表框Combo1中,由用户选择。
(1)登录表单的设计
“登录”表单如图92所示,共有7个控件对象,其中包括3个标签控件、1个组合框控件(利用生成器将“pass.dbf”中的“用户名”字段设为组合框的数据源)、1个文本框控件和2个命令按钮控件。
表单及控件的属性如表95所示。
表95 “登录”表单中各控件及其属性值
控件名称
属 性
属性值
Form1
Caption
登录
Height
250
Width
375
ShowWindow
1在顶层表单中
Label1
Caption
学生管理系统
ForeColor
0,0,255(蓝色)
FontName
楷体
FontSize
20
Label2
BackStyle
0透明
Caption
用户名
FontName
宋体
FontSize
16
Label3
Caption
密码
其他同Label2
Command1
Caption
确定
Command2
Caption
取消
Combo1
RowSourceType
6字段
Text1
全部属性
默认值
(2)事件代码的编写
①“确定”按钮的Click事件代码:
SETDEFAULTTOD:
\学生管理
OPENDATABASE学生数据
USEPASS
LOCATEFORALLTRIM(密码)=ALLTRIM(THISFORM.TEXT1.VALUE);
AND用户名=THISFORM.COMBO1.VALUE &&查找用户名和密码均符合的记录
IFNOTEOF()
THISFORM.RELEASE
DOFORMMAINFORM.SCX
ELSE
?
MESSAGEBOX(″密码错误,请重新输入!
″,0+48+0+0,″确定″)
THISFORM.REFRESH
ENDIF
②“取消”按钮的Click事件代码:
QUIT
2.学生信息输入表单
“学生信息输入”表单界面如图93所示,具体设计和操作步骤如下。
图93 “学生信息输入”表单
(1)创建表单界面
①打开表单设计器,生成一空白表单。
②打开数据环境设计器,将“学生表”添加到其中。
③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小。
④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。
(2)设置对象属性
该表单所用的部分对象及其属性值如表96所示。
表96 “学生信息输入”表单中各控件及其属性值
控件名称
属 性
属性值
Form1
AutoCenter
.T.
Caption
学生信息输入
Label1
Caption
学生信息输入
ForeColor
0,0,255(蓝色)
FontName
楷体
FontSize
20
Command1
Caption
上一个
Command2
Caption
下一个
Command3
Caption
添加
Command4
Caption
放弃
Command5
Caption
返回
(3)事件代码的编写
5个命令按钮的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP-1
IFBOF()
MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)
THISFORM.COMMAND1.ENABLED=.F.
SKIP
ELSE
THISFORM.COMMAND1.ENABLED=.T.
ENDIF
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.REFRESH
②“下一个”命令按钮的Click事件代码:
SKIP
IFEOF()
MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)
THISFORM.COMMAND2.ENABLED=.F.
SKIP-1
ELSE
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.REFRESH
③“添加”命令按钮的Click事件代码:
APPENDBLANK
GOBOTT
THISFORM.REFRESH
④“放弃”命令按钮的Click事件代码:
BX=MESSAGEBOX(″放弃添加?
″,4+32+0+0,″确认!
″)
IFBX=6
GOBOTT
DELETE
PACK
THISFORM.REFRESH
ENDIF
⑤“返回”命令按钮的Click事件代码:
THISFORM.RELEASE
3.成绩输入表单
“成绩输入”表单界面如图94所示,具体设计和操作步骤如下。
图94 “成绩输入”表单
(1)创建表单界面
①打开表单设计器,生成一空白表单。
②打开数据环境设计器,将“成绩表”添加到其中。
③将“成绩表”中的全部字段分别拖放到表单上,并调整其位置和大小。
④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。
(2)设置对象属性
该表单所用的部分对象及其属性值如表97所示。
表97 “成绩输入”表单中各控件及其属性值
控件名称
属 性
属性值
Form1
AutoCenter
.T.
Caption
成绩输入
Label1
Caption
成绩信息输入
ForeColor
0,0,255(蓝色)
FontName
楷体
FontSize
20
Command1
Caption
上一个
Command2
Caption
下一个
Command3
Caption
添加
Command4
Caption
放弃
Command5
Caption
返回
(3)事件代码的编写
5个命令按钮的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP-1
IFBOF()
MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)
THISFORM.COMMAND1.ENABLED=.F.
SKIP
ELSE
THISFORM.COMMAND1.ENABLED=.T.
ENDIF
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.REFRESH
②“下一个”命令按钮的Click事件代码:
SKIP
IFEOF()
MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)
THISFORM.COMMAND2.ENABLED=.F.
SKIP-1
ELSE
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.REFRESH
③“添加”命令按钮的Click事件代码:
APPENDBLANK
GOBOTT
THISFORM.REFRESH
④“放弃”命令按钮的Click事件代码:
CX=MESSAGEBOX(″放弃添加?
″,4+32+0+0,″确认!
″)
IFCX=6
GOBOTT
DELETE
PACK
THISFORM.REFRESH
ENDIF
⑤“返回”命令按钮的Click事件代码:
THISFORM.RELEASE
4.学生信息维护表单
“学生信息维护”表单主要用来对“学生表”中的数据进行修改和删除。
当表单启动后系统自动将所有学生的学号添加到列表框Combo1中,由用户选择,当选择其中一个学号时,表单上相应地显示出该同学的具体信息。
“学生信息维护”表单界面如图95所示,具体设计和操作步骤如下。
图95 “学生信息维护”表单
(1)创建表单界面
①打开表单设计器,生成一空白表单。
②打开数据环境设计器,将“学生表”添加到其中。
③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小,同时将所有文本框的ReadOnly属性设置为“.T.”。
④在表单上添加2个标签控件、5个命令按钮控件和1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为组合框的数据源),并调整其位置和大小。
(2)设置对象属性
该表单所用的部分对象及其属性值如表98所示。
表98 “学生信息维护”表单中各控件及其属性值
控件名称
属 性
属性值
Form1
AutoCenter
.T.
Caption
学生信息维护
Label1
Caption
学生信息维护
ForeColor
0,0,255(蓝色)
FontName
楷体
FontSize
20
Label2
Caption
请选择学号
Command1
Caption
上一个
Command2
Caption
下一个
Command3
Caption
修改
Command4
Caption
删除
Command5
Caption
返回
Combo1
RowSourceType
6字段
RowSource
学生表.学号
(3)事件代码的编写
5个命令按钮和1个组合框的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP-1
IFBOF()
MESSAGEBOX(″已是第一条记录″,48,″信息窗口″)
THISFORM.COMMAND1.ENABLED=.F.
SKIP
ELSE
THISFORM.COMMAND1.ENABLED=.T.
ENDIF
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.REFRESH
THISFORM.COMBO1.VALUE=学号
②“下一个”命令按钮的Click事件代码:
SKIP
IFEOF()
MESSAGEBOX(″已是最后一条记录″,48,″信息窗口″)
THISFORM.COMMAND2.ENABLED=.F.
SKIP-1
ELSE
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.REFRESH
THISFORM.COMBO1.VALUE=学号
③“修改”命令按钮的Click事件代码:
THISFORM.TXT学号.READONLY=.F.
THISFORM.TXT姓名.READONLY=.F.
THISFORM.TXT籍贯.READONLY=.F.
THISFORM.TXT出生日期.READONLY=.F.
THISFORM.TXT奖学金.READONLY=.F.
THISFORM.TXT性别.READONLY=.F.
THISFORM.EDT简历.READONLY=.F.
THISFORM.REFRESH &&当单击“修改”按钮后,所有文本框变为可读写状态
④“删除”命令按钮的Click事件代码:
DX=MESSAGEBOX(″确实要删除?
″,4+32+0+0,″确认!
″)
IFDX=6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 系统 开发