清华大学出版社 TSINGHUA UNIVERSITY PRESS 第10章系统开发实例
第10章 系统开发实例
清华大学出版社 TSINGHUA UNIVERSITY PRESS 10.1开发ⅤFP数据库应用系统的一般步骤 需求分析 充分调研 需求分析 写出需求规范说明书 数据分 功能分 数据库设计 逻辑设计 数据库设计 应用程序设计 物理设计 数据代码设计 系统试运行联调」 应用程序设计 创建子类 满意否? 用户界面设计与编码 数据输出设计 系统运行与维护 数据库维护功能 构造VFP应用程序 软件测试 图101以处理为中心的数据库应用系统开发示意图 应用程序发布 系统运行与维护
需求分析 充分调研 写出需求规范说明书 数据库设计 逻辑设计 物理设计 数据代码设计 应用程序设计 创建子类 用户界面设计与编码 数据输出设计 数据库维护功能 构造VFP应用程序 软件测试 应用程序发布 系统运行与维护 图10.1 以处理为中心的数据库应用系统开发示意图 10.1 开发VFP数据库应用系统的一般步骤
清华大学出版社 10.2一个实例:“汽车修理管理系统”的开发 需求分析 开发目的: (1)能对汽车修理有关的各类数据进行输入、修改与查询。 (2)编制季度零件订货计划。 (3)打印汽车修理发票和工资月报表 数据需求 输入单据包括修车登记单、汽车修理单、零件入库单和零件出库单等4种 输出单据包括季度零件订货计划、汽车修理发票和工资月报表等3种 功能需求 1.数据登记 登记功能用于把各种手填单据中的数据及时登记到系统将要定义的表中,还要求能进行修改。这些单据包 括修车登记单、汽车修理单、零件入库单和零件出库单 2、查询 能査询登记单、修理单、汽车、车主、修理工、零件库存的有关数据。 3.编制并显示季度零件订货计划 编制零件订货计划需要找出要订货的零件,订货条件为:零件库存量<最低库存量。 订货量可由用户输入或修改 4.打印发票 发票中除包含顾客、汽车及修理项目等数据外,还要计算出修车费,修车费包括修理费和零件费,按下列各 式计算: 零件费=∑(零件价格×耗用数量) 修理费=小时工资×修理工时×3 总计=零件费+修理费 5,打印修理工工资月报表 某修理工的月工资=∑修理小时×小时工资
10.2 一个实例:“汽车修理管理系统”的开发 需求分析 开发目的: (1) 能对汽车修理有关的各类数据进行输入、修改与查询。 (2) 编制季度零件订货计划。 (3) 打印汽车修理发票和工资月报表。 数据需求 输入单据包括修车登记单、汽车修理单、零件入库单和零件出库单等4种 输出单据包括季度零件订货计划、汽车修理发票和工资月报表等3种。 功能需求 1. 数据登记 登记功能用于把各种手填单据中的数据及时登记到系统将要定义的表中,还要求能进行修改。这些单据包 括修车登记单、汽车修理单、零件入库单和零件出库单。 2. 查询 能查询登记单、修理单、汽车、车主、修理工、零件库存的有关数据。 3. 编制并显示季度零件订货计划 编制零件订货计划需要找出要订货的零件,订货条件为:零件库存量<最低库存量。 订货量可由用户输入或修改。 4. 打印发票 发票中除包含顾客、汽车及修理项目等数据外,还要计算出修车费,修车费包括修理费和零件费,按下列各 式计算: 零件费=(零件价格×耗用数量) 修理费=小时工资×修理工时×3 总计=零件费+修理费 5. 打印修理工工资月报表 某修理工的月工资=修理小时×小时工资
数据库设计 TSINGHUA UNIVERSITY PRESS 逻辑设计 (1)修理单:ⅫD(编号,牌号,工号,修理项目,修理小时,送修日期,完工日期) (2)汽车:QC(牌号,型号,生产厂,车主名) (3)车主:CZ(车主名,地址,电话) (4)修理工:ⅪG(工号,姓名,地址,电话,出生日期,进厂日期,小时工资) (5)零件用量:LJYL(编号,零件号,数量 (6)零件库存:LJKC(零件号,零件名,成本,价格,库存量,最低库存,订货量) 汽车 车主名「车主 修理单 工号修理工 编号 零件用量 零件号 零件库存 图109表间关联的设计
数据库设计 逻辑设计 (1) 修理单: XLD(编号,牌号,工号,修理项目,修理小时,送修日期,完工日期) (2) 汽车: QC(牌号,型号,生产厂,车主名) (3) 车主: CZ(车主名,地址,电话) (4) 修理工: XLG(工号,姓名,地址,电话,出生日期,进厂日期,小时工资) (5) 零件用量: LJYL(编号,零件号,数量) (6) 零件库存: LJKC(零件号,零件名,成本,价格,库存量,最低库存,订货量) 图10.9 表间关联的设计
华大学出版社 物理设计 TSINGHUA UNIVERSITY PRESS 1.修理单(C:\QCXL\ XLDDBI xld(编号c(4,牌号c(⑧)修理项目c(12,送修日期d完工日期d,工号c(4普通索引,修理小时 n(41) 2.汽车 C:\QCXL\QC. DBF qc(牌号c⑧)普通索引,型号c(,生产厂c(20),车主名c(⑧) 3.车主 C:\QCXL\ CZ. DBF) cz(车主名c(⑧)普通索引,地址c(16,电话c() 4修理工(C\QCXL\ XLG.DBF) xg(工号c(4普通索引,姓名c(8),地址c(16,电话c(⑦,出生日期d,进厂日期d小时工资n(5.2) 5零件用量(C: QCXL\LJYLDBF ljJ(编号c(A普通索引,零件号c(,数量n(2) 6零件库存(C: QCXL\ LJKC DBF lkc(零件号c(6普通索引,零件名c(10,成本n(8.2)价格n(8.2,库存量n(3),最低库存n(3),订货 量n(3) 7.零件入库表为 JRK.DBF,其结构与 LJKC.DBF相同 8.零件出库表 C: QCXL (LJCK DBF ik(零件号c(6,数量n(2)
物理设计 1. 修理单(C:\QCXL\XLD.DBF) xld(编号 c(4), 牌号 c(8), 修理项目 c(12), 送修日期 d, 完工日期 d, 工号 c(4) 普通索引, 修理小时 n(4.1)) 2.汽车(C:\QCXL\QC.DBF) qc(牌号 c(8) 普通索引, 型号 c(6), 生产厂 c(20), 车主名 c(8)) 3.车主(C:\QCXL\CZ.DBF) cz(车主名 c(8) 普通索引, 地址 c(16), 电话 c(7)) 4. 修理工(C:\QCXL\XLG.DBF) xlg (工号 c(4) 普通索引, 姓名 c(8), 地址 c(16), 电话 c(7), 出生日期 d, 进厂日期 d, 小时工资 n(5.2)) 5. 零件用量(C:\QCXL\LJYL.DBF) ljyl(编号 c(4) 普通索引, 零件号 c(6), 数量 n(2)) 6. 零件库存(C:\QCXL\LJKC.DBF) ljkc(零件号 c(6) 普通索引, 零件名 c(10), 成本 n(8.2), 价格 n(8.2), 库存量 n(3), 最低库存 n(3), 订货 量 n(3)) 7. 零件入库表为LJRK.DBF,其结构与LJKC.DBF相同 8. 零件出库表(C:\QCXL\LJCK.DBF) ljck(零件号 c(6), 数量 n(2))
应用程序设计 TSINGHUA UNIVERSITY PRESS 总体设计 初始用户界面设计 模块设计与编码 1.主文件( QCXL PRG) SET TALK OFF SET DEFA TO c\ qcl&&设置文件默认路径,本例所有文件都应装在该目录中 CLEA ALI SETⅥ IEW TO jhj. vue&&统一设置数据环境,自动关闭所有的工作区后打开视图文件 PUBLIC xlh;f&&xhh用于存储输入的修理单号;zf存储总零件费打印发票时用 xHh=SPACE(4) DO FORM fm &&显示封面(参阅例7-1,并事先将m表单复制到Cqgx KEYB'{CTRL+F4}&&关闭 Command窗口 MODI WIND SCREEN TITI汽车修理管理系统&&打开VFP主窗口并设置窗口标题 CLEA *以上为初始化环境代码 DO gcxld mpr&&菜单文件名定为 QCXLCD汽车修理菜单) READ EVENT &&建立事件循环 QUIT &&退出VFP 登记 零件管理 查询 印 命令 汽车修理管理系统 缘车登记 登记 零件管理 查询打印 汽车修理零 理 修理工工资月报 修车登记汽车修理修理工管理零件订货计划零件λ库零件岀库发票修理工工资月报 修理工管理零件出库管理 图10.10总体结构图 图10.11汽车修理管理系统的菜单
应用程序设计 总体设计 初始用户界面设计 模块设计与编码 1.主文件(QCXL.PRG) SET TALK OFF SET DEFA TO c:\qcxl && 设置文件默认路径,本例所有文件都应装在该目录中 CLEA ALL SET VIEW TO sjhj.vue && 统一设置数据环境,自动关闭所有的工作区后打开视图文件 PUBLIC xldh,zljf && xldh用于存储输入的修理单号;zljf存储总零件费,打印发票时用 xldh=SPACE(4) DO FORM fm && 显示封面(参阅例7-1,并事先将fm表单复制到C:\qcxl) KEYB '{CTRL+F4}' && 关闭Command窗口 MODI WIND SCREEN TITL '汽 车 修 理 管 理 系 统' && 打开VFP主窗口并设置窗口标题 CLEA * 以上为初始化环境代码 DO qcxlcd.mpr && 菜单文件名定为QCXLCD(汽车修理菜单) READ EVENT && 建立事件循环 QUIT && 退出VFP 图 10.10 总体结构图 图 10.11 汽车修理管理系统的菜单
清华大学出版社 S =数据工作期 口区 当前工作期 默认(1) 别名 关系 属性吧) Lurk tLjkc 浏览① aLlyl 打开 关闭c tQc 关系) 对多 工作区:1 记录 图10.12汽车修理管理系统的数据环境 2.菜单程序( QCXLCD.MPR) 往命令窗口键入命令 MODI MENU QCXLCD,就会出现菜单设计窗口,此时可按图10.11建立 菜单 (1)“退出”菜单项的命令 CLEAR EVENTS &&停止事件循环,转去执行 READ EVENT后的命令 (2)按图10.11设置调用各表单的命令,例如对“修车登记”菜单项可键入命令D0FORM (3)从菜单文件 QCXLCD.MNX生成菜单程序 QCXLCD.MPR
2. 菜单程序(QCXLCD.MPR) 往命令窗口键入命令MODI MENU QCXLCD,就会出现菜单设计窗口,此时可按图10.11建立 菜单。 (1) “退出”菜单项的命令 CLEAR EVENTS && 停止事件循环,转去执行READ EVENT后的命令 (2) 按图10.11设置调用各表单的命令,例如对“修车登记”菜单项可键入命令DO FORM xcdj。 (3) 从菜单文件QCXLCD.MNX生成菜单程序QCXLCD.MPR。 图 10.12 汽车修理管理系统的数据环境
3.“修车登记”表单(XCD.SCx) GHUA UNIVERS/ Y PRESS 表单设计器-xcdj,scx 口区 修车登记 口区 编号」txt 送修日期txt送修日具 修理项目txt修理项目 车牌号txt牌号型号txt型号生 车主名:「txt车主地址-十txt地址 电话:txt电话 下页士页首页未页寻页地页翻页汽车|车主确定 表单输入修理单号 图10.13“修车登记”表单窗口 DHSO 表单设计器- srl dh.scx口 请输入修理单号:「Text1 确定 图1014“输入修理单号”表单窗口
3. “修车登记”表单(XCDJ.SCX) 图 10.13 “修车登记”表单窗口 图 10.14 “输入修理单号”表单窗口 4.“输入修理单号” 表单 (SRXLDH.SCX)
清华大学出版社 TSINGHUA UNIVERSITY PRESS 5、“汽车修理”表单(QCXL.SCX) 6.“零件订货计划”表单(LJDH.SCX) 表单设计器-q1lse □口区 g汽车修理修理情况 口区 修理单编号|txt 送修日期tx送修日 修理项目txt修理项目 汽车牌号txt牌号 件用量 零件号rext1ret2rext31rext4 表单设计器-1jdh.scx 口区 季度订货计划 口区 数量rext5|rext6 Text7Texta8 请选季度双击有效):st] 修理小时「txt 修理工 Combo1 完工日期txt完工日其 下页上页首页末页寻页确定 图10.16“零件订货计划”表 图10.15“汽车修理”表单窗口 单窗口
5.“汽车修理”表单(QCXL.SCX) 6. “零件订货计划”表单(LJDH.SCX) 图10.16 “零件订货计划”表 图 10.15 “汽车修理”表单窗口 单窗口
7.“打印发票”表单① YFPSCX)NGHUA UNIVERSITY PRESS 8.“发票”报表(PFRX 回表单设计器↓ fp.sex回区 报表设计器-印fx 区 打印发票 口区 汽车修理发票 请输入修理单号:「Text1 日[庑工日期二 确定 客姓名匡主名地址画址三 汽车牌号号二 態理项目億理项目 送億日期億日期 备 零件费i 理费|区1f二 图10.17“打印发票”表单窗口 汪 总金额卫+z1f ▲页标头 图10.18“发票”报表设计器
7. “打印发票”表单(DYFP.SCX) 8. “发票”报表(FP.FRX) 图 10.17 “打印发票”表单窗口 图 10.18 “发票”报表设计器