Visual FoxPro
及其应用系统开发
实习报告
学院: 经济管理学院 班级序号:xxxxx 学号: xxxxxx 姓名: xxxxx 指导老师:xxxxxx
1. 汽车修理管理系统 2. 实习总结
汽车修理管理系统
一、系统分析 1.需求分析:
某汽车修理长根据业务发展的需要,决定建立一个“汽车修理管理系统”,以取代人工管理,开发目的如下。
(1) 能对汽车修理有关的数据进行输入、修改与查询。 (2) 编制季度零件订货计划。
(3) 打印汽车修理发票和工资月报表。
数据分析:
在调研的过程,用户提供了该系统所需的输入、输出单据。输入单据包括修车登记表、汽车修理单、零件库存表、领料单、修理工登记表;输出单据包括季度零件订货计划单、汽车修理发票、修理工工资月报表。
2.功能分析:
(1) 数据登记
登记功能用于把各种手填单据中的数据及时登记到系统将要定义的表中,还要求能进行修改。这些单据包括修车登记单、汽车修理单、零件库存表。 (2) 查询
能查询登记单、修理单、汽车、车主、修理工、零件库存的有关数据。 (3) 编制并显示季度零件订货计划
Visual Fox 及其应用系统开发 实习报告- 2 -
编制零件订货计划需要找出要订货的零件,订货条件为:零件库存量<最低库存量,订货量可由用户输入或修改。 (4) 打印发票
发票中除了包含顾客、汽车及修理项目等数据外,还要算出修车费用。修车费用和零件费,按夏磊各式计算:
零件费=∑(零件价格*好用数量) 修理费=小时工资*修理工时*3 总计=零件费+修理费
(5) 打印修理工工资月报表
某修理工的月工资=∑修理小时*小时工资
二、数据库设计
数据库设计的任务是确定系统所需的数据库。数据库是表的集合,通常一个系统只需一个数据库。数据库设计可分为逻辑设计与物理设计两个步骤。第一步确定数据库所包含的表及其字段。第二步确定表的具体结构,即确定字段的名称、类型及宽度;此外还要确定索引,为建立表的关联准备条件。 逻辑设计
小型DBAS的逻辑设计可直接从分析输入数据着手,将输入数据着手,将输入数据中的各类相关数据归纳为不同的数据表。对查询时需要同时调用的若干表,应使它们符合关联要求。对初步设计好的数据表,可通过分析输出数据来验证其可用性。若发现有的输出数据不能从输入数据导出,须继续向用户征集数据。
(1)修理单:XLD(编号,牌号,工号,修理项目,修理小时,送修日期,完工日期) (2)汽车:QC(牌号,型号,生产厂,车主名) (3)车主:CZ(车主名,地址,电话)
(4)修理工:XLG(工号,姓名,地址,电话,出生日期,进场日期,小时工资) (5)零件用量:LJYL(编号,零件号,数量)
(6)零件库存:LJKC(零件号,零件名,成本,价格,库存量,最低库存,订货量)
三、应用程序设计
系统的总体结构可用层次图来表示。这种图自上而下进行分层:第一层为系统层,通常对应主程序;第二层为子系统层,一般起分类作用;第三层为功能层;第四层为操作层。下图为本例的总体结构:
Visual Fox 及其应用系统开发 实习报告- 3 -
修车登记 登 记 汽车修理 修理工管理 查 询 零件订货计划 零件入库 零件出库 发票 打 印
1封面设计:略
主文件(QCXL.PRG) set talk off clea all
set view to sjhj.vue public xldh,zljf xldh=space(4) do form fm keyb '{ctrl+f4}'
modify wind screen titl '汽车修理管理信息系统' clear
do qcxlcd.mpr read event quit
2、单程序结构
修理工工资月报
汽车修理管理系统 零件管理 在菜单设计器中分别设计“登记”、“零件管理”、“查询”、“打印”和“退出”菜单项,在“登记”、零件管理“、”打印“结果项选择”子菜单“项,“退出”的结果项选择“过程”项;编辑“登记”、“零件管理”、“打印“的”子菜单“,分别加入“修车登记”、“汽车修理“、“修理工管理”,同时对“修车登记”、“汽车修理”菜单项分别键入”do form xcdj”、”do form qcxl”;“零件订货计划”、“零件入库管理”、“零件出库管理”,同时对“零件订货计划”菜单项键入”do form ljdh”;“发票”、“修理工工资月报”,同时对“发票”菜单项键入”do form dyfp”;在“退出”的过程项中编辑“clear event”。从菜单文件生成菜单程序 QCXLCD.MPR
菜单程序命令
“退出”菜单项的命令Clear events
按结构设置调用各表单的命令
Visual Fox 及其应用系统开发 实习报告- 4 -
生成菜单程序Qcxlcd.mpr
过程如下:
1)往命令窗口键入 MODIFY FORM XCDJ,使出现标题为XCDJ.SCX的表单设计器窗口;属性设计:FORM1的CAPTION属性设置为“修车登记”,AUTOCENTER属性设置为.T.;用数据环境把xld 表的编号,送修日期,修理项目和牌号,qc表的型号,生产厂和车主名, cz表的地址和电话等字段拖拽到表单中相应位置。
2) 分别设置牌号和车主名两个文本框valid事件代码
sele qc
locate for 牌号=xld.牌号 if not found()
insert into qc(牌号) values (xld.牌号) endif select cz
Visual Fox 及其应用系统开发 实习报告- 5 -
locate for 车主名=xld.车主名 if not found()
insert into cz(车主名) values (qc.车主名) endif
设置commandgroup1的click事件 select xld do case
case this.value=1 if recn() case this.value=3 go top case this.value=4 go bottom case this.value=5 do form srxldh case this.value=6 zy=messagebox('是要增页么?',1+48+256,'确认增加修理单') if zy=1 go bottom insert into xld(编号) values (str(val(编号)+1,4)) endif case this.value=7 sy=messagebox('是要删页么?',1+48+256,'确认删除修理单') if sy=1 delete pack endif case this.value=8 select qc brow titl'汽车修改'+space(20)+'单击行首可打删除标记,退出就删去' pack case this.value=9 select cz brow titl'车主修改'+space(20)+'单击行首可打删除标记,退出就删去' pack case this.value=10 thisform.release endcase thisform.refresh 寻页按钮gotfocus事件代码 Visual Fox 及其应用系统开发 实习报告- 6 - select xld jlh=recn() loca for 编号=trim(xldh) if not found() wait window \"无此编号\" go jlh endif thisform.refresh 汽车修理表单qcxl.scx 按照简历表的结构 用往命令窗口键入 MODIFY FORM QCXL,使出现标题为QCXL.SCX的表单设计器窗口;数据环境把xld表的编号,送修日期,修理项目,牌号,修理小时和完工日期字段拖拽到表单窗口,产生各相应的标签和文本框,创建text1~text8等8个文本框;属性设置;为XLD表编号、送修日期、修理项目和牌号字段的文本框,text1~text8等文本框的READONLY属性都设置为.T.;在表单上创建COMBOL1组合框,并设置属性,创建COMMANDGROUP1命令按钮组,并编写CLICK代码。 (1) 创建组合框combol,按照课本P330页设置属性 (2) Form1的Refresh 事件代码编写如下: thisform.text1.value=\"\" thisform.text2.value=\"\" thisform.text3.value=\"\" thisform.text4.value=\"\" thisform.text5.value=0 thisform.text6.value=0 thisform.text7.value=0 thisform.text8.value=0 select ljyl Visual Fox 及其应用系统开发 实习报告- 7 - locate for 编号=xld.编号 if found() thisform.text1.value=零件号 thisform.text5.value=数量 endif cont if not eof() thisform.text2.value=零件号 thisform.text6.value=数量 endif cont if not eof() thisform.text3.value=零件号 thisform.text7.value=数量 endif cont if not eof() thisform.text4.value=零件号 thisform.text8.value=数量 endif 1) 创建命令按钮组并编写如下click代码。 select xld do case case this.value=1 if recn() thisform.refresh “零件订货计划”表单(LJDH.SCX) Visual Fox 及其应用系统开发 实习报告- 8 - 往命令窗口键入 MODIFY FORM LJDH,使出现标题为LJDH.SCX的表单设计器窗口;创建LABEL1标签和LIST1列表框,并设置属性;创建变量属性JD(表示“季度”);为LIST1的INIT事件和DBLCLICK事件编写代码。如下: (1) LIST1的LNIT事件代码编写如下: this.additem(\"1\") this.additem(\"2\") this.additem(\"3\") this.additem(\"4\") (2)LIST1的 DBLCLICK事件代码编写如下: select ljkc count for 库存量<最低库存 to jls if jls=0 messagebox('库存量均不小于最低库存,第'+jd+'季度不需订货') else set filt to 库存量<最低库存 browse fields 零件号:R,零件名:R,库存量:R,最低库存:R,订货量; title'第'+jd+'季度零件订货计划' set filt to endif “打印发票”表单(DYFP.SCX) Visual Fox 及其应用系统开发 实习报告- 9 - 往命令窗口键入 MODIFY FORM DYFP,使出现标题为DYFP.SCX的表单设计器窗口;创建LABEL1标签、TEXT1文本框和COMMAND1命令按钮,并设置属性;为TEXT1的LOSTFOCUS事件编写代码。建“发票”的报表(fp.frx) (1)TEXT1的lostfocus事件代码编写如下: xldh=thisform.text1.value (2)COMMAND1的CLICK事件代码编写如下: select xld locate for 编号==trim(xldh) if not found() wait window\"无此编号\" else select ljyl sum 数量*ljkc.价格 for 编号=trim(xldh) and 零件号=ljkc.零件号 to zljf repo form fp prev thisform.release endif 打印发票:dyfp.scx 创建“发票”的报表(fp.frx)。按照下图创建报表:命令窗中输入modi report fp Visual Fox 及其应用系统开发 实习报告- 10 - a) 创建报表变量ljf(零件费),xlf(修理费) Ljf要储存的值和初始值均为:zljf xlf要储存的值和初始值均为:xld.修理小时*xlg.小时工资*3 按照上图创建表达式控件,分别为:xld.完工日期,qc.车主名, cz.地址, Xld. 牌号 Xld.修理项目 Xld.送修日期 Ljf, ljf+xlf。 b) 3、运行调试 输入命令:DO C:\\QCXL\\QCXL,可以运行系统。经运行可以满足所需系统的各项功能,并调试通过。 实习总结 Visual Fox 及其应用系统开发 实习报告- 11 - 通过VFP上机实习,我对教师讲授的计算机知识、技术和程序都有了真切的体会、深刻的认识,个人都会有不同程度的收获。 一. 开发系统过程中的感受:在刚开始实习的时候,面对陌生的系统开发过程,我显得很是怯场,我觉得别说是给我4天时间,就是一个月,我也不可能开发出一个完整的极具挑战性的系统,再加上后面操作章节太多,我觉得根本我从下手,于是产生了一种焦躁之感。为了可以顺利的完成实习任务,我很认真的请教了助教,在她的指引下,我开始从第五、六、七、九章自学,从基础着手,在基本可以掌握以上章节的内容的基础之上,我开始了一步一步的系统开发过程。在整个系统开发过程当中,由于我的一些小失误使得在最后系统运行时问题不断,系统无法正常工作,所以,从中我的切身的体会和感受是:无论是小到命令的输入还是大到系统的完善,都不可以马虎,而且虽然是一步小工作,但却需要很扎实的工底支撑。 二. 开发系统过程当中遇到的困难和问题:1、实习的过程完全是自学的过程,在没有老师上课的传授和指点后,我觉得很是不习惯,在学习前面章节的过程中,效率太低,速度过慢。以至于耽误了整个系统开发的进度。2、在输命令的过程中,只注重速度而不注重质量,好段命令都出现了不同程度的错误,保存了以后最终在我运行整个系统的过程中系统老是提示:无法找到变量,文件路径错误等提示,使得我必须重返个表单、菜单来修改命令,之后在、重新在运行程序。3、为同时调用不同表中的数据,必须将他们关联,但是在上学期学习的过程中,表之间的关联建立我却没有学懂,以至于在建立表关联这一步骤花了我很大的功夫,浪费了很多时间。 三. 在整个实习之后的得到的启发:在整个实习过程完毕后,自己有一种十足的成就感,没想到经过这么多的困难,自己可以自学开发出如此完备的修理系统,让我对自己的自学能力有了很大的自信。同时我也对VF这门可有了更加升入的了解和认识,同时也对这门课产生了更加浓厚的兴趣。 通过几天的vf汽车管理系统的学习,我深深地领会到学好计算机的好处,你可以利用所学的知识把所给的条件串联成一个系统,从而可以方便企业在业务上的查询,管理,可以极大提高企业的工作效率,减少企业的生产成本,提高管理的准确性。 虽然在做这份系统时遇到了不少困难,但在老师同学的帮助下以及自己的努力下认真完成了这份系统,当中可能有些不足,希望老师批评指正。 在这几次上机实习的过程中,我领教了理论与实践相结合的过程,将平时学习的知识与做这个系统相结合,受益非浅,极大提高了我的计算机操作能力,总之,我还是很感谢学校这次给我们提供的这次实习机会的。 因篇幅问题不能全部显示,请点此查看更多更全内容