数据库原理与应用-Visual FoPro(第2版)第16章_第1页
数据库原理与应用-Visual FoPro(第2版)第16章_第2页
数据库原理与应用-Visual FoPro(第2版)第16章_第3页
数据库原理与应用-Visual FoPro(第2版)第16章_第4页
数据库原理与应用-Visual FoPro(第2版)第16章_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16章 数据库应用系统设计实例

16.1 需求分析16.2 数据库设计16.3 应用程序设计与实现16.4 报表16.5应用程序连编与发布本章介绍一个小型数据库应用系统实例——“小书店经营管理信息系统”的设计与实现。16.1需求分析系统功能:实现超市型小书店的日常经营管理,具体功能如下:(1)进书登记(2)售书登记(3)查询统计与报表(4)购书咨询开发目标:开发一个运行于单台微机环境、基于Windows系统的小型数据库应用系统——“小书店经营管理信息系统”16.2数据库设计(一)1.数据库概念结构设计

开单人总金额购书单位开单日期单据号库存书数量售书单据售书nm书号书名出版社作者定价进书日期进价备注库存数封面16.2数据库设计(二)2.数据库逻辑结构设计

由3个关系组成:(1)库存(书号,书名,作者,出版社,进书日期,定价,进价,库存数,备注,封面)主键是书号。(2)单据(单据号,开单日期,购书单位,开单人,总金额)主键是单据号。(3)售书(单据号,书号,数量)主键是(单据号,书号)。外键是单据号、书号。

16.2数据库设计(三)3.表结构设计

“库存”表的结构

“单据”表的结构“售书”表的结构(2)自由表(1)数据库表“temp库存”表的结构:与“库存”表相同“售书”表的结构16.2数据库设计(四)4.创建数据库与表(2)在项目中创建数据库“书店信息”。在数据库中创建3个表“库存”、“单据”和“售书”。以“库存”表为父表、以“售书”表为子表、按“书号”字段建立一对多永久关系;以“单据”表为父表、以“售书”表为子表、按“单据号”字段建立一对多永久关系。(1)建立“书店管理”项目,建立项目文件夹“f:\书店管理”(3)在项目中创建自由表“temp库存”和“temp销售”。16.3应用程序设计与实现

16.3.1应用程序的逻辑结构(一)“进书登记”表单“售书”表单“购书咨询”表单“库存查询”表单“销售查询统计”表单退出系统“主窗口”表单,显示本系统菜单“欢迎”表单主文件(main.prg)16.3.1应用程序的逻辑结构(二)1.项目主文件(main.prg)代码

2.菜单

SETTALKOFFDOFORM欢迎READEVENTS16.3.2“欢迎”表单

“欢迎”表单是本系统运行时执行的第一个表单,它显示“欢迎使用”的字样。当定时时间到、按下任意键或用鼠标双击表单时将关闭该表单。当该表单释放时转向执行“主窗口”表单。表单设计的主要技巧:采用顶层表单:Caption设置为“欢迎使用书店管理信息系统”,表单分两步释放(1)设置“Form1”的KeyPress事件和DblClick事件、Timer1的Timer事件代码,相同为:thisform.release

(2)设置“Form1”的Destroy事件代码

thisform.hidedoform主窗口

16.3.3“主窗口”表单

“主窗口”表单是本系统的主界面,它显示本系统的菜单。使用关闭按钮或菜单中“退出”菜单项可以关闭该表单,并结束本系统的执行。表单设计的主要技巧:采用顶层表单:Caption设置为“书店管理信息系统”在“Form1”的Init事件代码调用菜单do菜单.mprwiththis,.t.“Form1”的Destroy事件代码:quit16.3.4“进书登记”表单

如果单击“登记下一本”按钮,就可以在各个文本框中输入新到书的信息。表单上的表格中能显示输入记录,但不能编辑记录。表单设计的主要技巧:数据环境的InitialSelectedAlias属性设置为“temp库存”表,各控件的数据源也是“temp库存”表或其中字段属性设置与代码与12.5节实例表单完全类似在“退出”按钮的Click事件代码中将检查数据输入有无错误,若有错误,则提示用户核对数据。若无错误,将查找是不是现存书。若是现存书,则增加“库存”表的该书数量,否则,将该书添加到“库存”表中16.3.5“售书”表单(一)

操作:当该表单运行时,会自动生成单据号和开单日期。该表单是销售图书界面若单击“增加”按钮,则会在表格中增加一个空行。此时若单击书号列的单元格,就可以从当前存书列表中选择一个书号。当选择书号之后,该书号对应图书的书名和单价就会显示出来,用户只需输入售书数量即可。单击“数据核对与金额合计”按钮,随时进行金额合计16.3.5“售书”表单(二)

表单设计的主要技巧:将“Dataenvironment”对象的InitialSelectedAlias属性设置为“temp销售”

从数据环境中拖动“temp销售”表到表单上,形成表格对象。将表格的DeleteMark设置为.F.将一个组合框添加到表格中的第一列中,并将它设置为该列的CurrentControl属性,该列的Sparse设置为.T.。将组合框的RowSource设置为“库存”表的“书号”字段,ControlSource为“temp销售”表的“书号”字段。“Combo1”的Click事件代码replace书名

with库存.书名replace单价

with库存.定价thisform.refresh在“数据核对与金额合计”按钮与“打印预览单据”按钮的Click事件代码中都将检查有在该销售中某书的数量合计是否大于库存,即数据输入错误。在“退出”按钮的Click事件代码中首先询问该单据是否有效,无效即表示放弃本次销售,若有效,则向下进行Fprint的值用于检查是否已核对数据,要求必须已核对;将本次销售信息记录在“单据”表和“售书”表中,并修改库存书的数量。

16.3.6“库存清单”表单

该表单显示所有库存图书列表及统计信息。若单击“打印预览”按钮,可以预览(打印)“库存清单”报表。先设计“库存清单”报表。表单设计的要点:数据环境中添加“库存”表,将表的Order属性设置为“书号”。从数据环境中拖动“库存”表到表单上,形成表格对象,设置为只读状态。将各文本框设置为只读。总金额为:sum(库存数*进价)16.3.7“购书咨询”表单

该表单用于为用户提供购书咨询,可以按书号、书名、作者或出版社查询书店中有无符合查询条件的图书,也可以实现这四种条件的组合查询。表单设计的要点:数据环境中添加“库存”表,将表的Order属性设置为“书号”。从数据环境中拖动“库存”表到表单上,形成表格对象。将表格的DeleteMark设置为.F.,ReadOnly设置为.T.“Form1”的Init事件代码thisform.grd1.recordsource=""在“查询”按钮的Click事件代码中,根据4个复选框的选中状态,将各个条件拼成一条select语句,保存在s1中,然后执行该语句,结果在表格中显示,代码如下:&s1thisform.grd1.recordsource='书信息'16.3.8“销售查询统计”表单(一)

该表单用于对销售情况做查询统计。

由2个页面组成页面1

页面2

16.3.8“销售查询统计”表单(二)

在“查询”按钮的Click事件代码中,判断单选按钮的选中状态,然后执行相应的查询语句,结果在表格中显示。其中计算利润最高的前10种图书的语句中的主要内容是:selecttop10sum(售书.数量)*(库存.定价-库存.进价)as利润;groupby库存.书号;orderby1descintocursor查询结果表单数据环境:页面1的设计要点:

16.3.8“销售查询统计”表单(三)(2)创建“销售视图”:用于和细节视图形成1:N关系的1方CREATESQLVIEW销售视图

ASSELECT售书.书号,SUM(售书.数量)AS销售数量,库存.书名,库存.作者,;库存.出版社,库存.进书日期,库存.定价,库存.进价,库存.库存数;FROM书店信息!库存

INNERJOIN书店信息!售书

INNERJOIN书店信息!单据;ON单据.单据号=售书.单据号

ON库存.书号=售书.书号;WHERE单据.开单日期>="d1"AND单据.开单日期<="d2";GROUPBY售书.书号;ORDERBY2DESC(1)创建“细节视图”:用于和销售视图形成1:N关系的N方CREATESQLVIEW细节视图

ASSELECT售书.单据号,售书.数量,单据.开单日期,单据.购书单位,单据.开单人,;单据.总金额,售书.书号;FROM书店信息!单据

INNERJOIN书店信息!售书

ON单据.单据号=售书.单据号;ORDERBY售书.书号(3)创建“销售总视图”:用做销售报表的数据源CREATESQLVIEW销售总视图

ASSELECT售书.单据号,售书.书号,库存.书名,售书.数量,单据.开单日期,;单据.购书单位,单据.开单人;FROM书店信息!库存

INNERJOIN书店信息!售书

INNERJOIN书店信息!单据;ON单据.单据号=售书.单据号

ON库存.书号=售书.书号;WHERE单据.开单日期>="d1"AND单据.开单日期<="d2";ORDERBY售书.书号页面2的设计要点:

1.创建三个视图16.3.8“销售查询统计”表单(四)页面2的设计要点:

2.在“查询”按钮的Click事件代码中,如下代码用于关闭细节视图和销售视图。控制同一个表或视图以多个别名在多个工作区同时打开ifused('细节视图')select细节视图use

endififused('销售视图')select销售视图use3.在“查询”按钮的Click事件代码中,在销售视图和细节视图间建立1:N临时关系,并分别将销售视图和细节视图作为两个表格的数据源,这样当选择左边表格的一行时,右边表格中显示该书在那些单据中卖过“退出”按钮的Click事件代码中用命令关闭数据库,是为了关闭视图closedatabasethisform.release16.4报表

16.4.1“库存清单”报表“库存清单”报表预览结果

设计“库存清单”报表16.4.2“单据”报表“单据”报表预览结果

设计“单据”报表说明:在运行“售书”表单时,单击“打印预览单据”按钮,才可以预览(打印)该报表;报表中域控件“pa单据号”、“pa开单人”、“pa开单日期”、“pa购书单位”和“pa总金额”的值由“售书”表单提供。16.4.3“销售报表”报表“销售报表”报表预览结果

设计“销售报表”报表说明:报表数据环境中是“销售总视图”;报表中域控件“d1”、“d2”、“zje”和“lr”的值由“销售查询统计”表单提供。16.5应用程序连编与发布(一)1.项目连编连编之前,需要将程序代码中使用文件绝对路径的地方进行修改,改为使用相对路径。这样便于以后发布和安装应用程序。为该应用程序附加图标单击项目管理器中的“连编按钮”对“书店管理”项目进行连编,形成可执行文件“书店管理.e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论