课 程 设 计 报 告
专 业 统计学 班 级 学 号 姓 名 指导教师
201 年 6 月 16 日
课程名称 visual foxpro数据管理系统
课题名称 库存商品查询系统
课 程 设 计 任 务 书
课程名称 visual foxpro数据管理系统
课 题 库存商品查询系统
专业班级 学生姓名 学 号 指导老师
任务书下达日期 2011 年 6 月 9 日
任务完成日期 2011 年6月 16 日
1
统计学 VFP数据库课程设计任务书
课程设计目的
数据库课程设计是集中实践性环节之一,是学习完《数据库应用与基础》课程后进行的一次全面的综合练习。其目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力。 课程设计的课题环境
环境:VFP数据库管理系统。
知识:VFP数据库的操作和程序设计。 课题题目
(0)通讯录查询系统 (1)图书查询系统
(2)库存商品查询系统 (3)飞机航班查询系统 (4)学生信息查询系统
课程设计工作项目
1、 设计任务:每位同学根据自己学号除以5所得的余数选择相应题号的课题。换题者不记成绩。
2、 不得抄袭他人程序,每个人应体现自己的个性设计。 3、 所建数据库中应有足够的用于测试程序的数据记录。
4、 各系统设计以查询功能为主,应提供多种方式的查询手段。同时可具有添加、删除、修改记录信息的功能。
5、 各系统数据库应具有的起码内容包括:
(0) 姓名、性别、住址、职务、电话、备注等信息; (1) 书号、书名、作者、出版社、关键词、摘要等信息;
(2) 货号、物品名、规格型号、生产厂家、数量、单价等信息;
(3) 航班号、机型、始发地、目的地、起飞时间、降落时间、票价等信息;
(4) 学号、班级、姓名、性别、平均成绩等级、家庭住址、照片、简历等信息。 6、 按规定格式完成课程设计报告书打印稿交老师存档。
2
Visual foxpro数据库课程设计报告
一、 需求分析
(凡括号中内容需用自己的撰写内容替代,字体一律采用宋体5号字。) (给出你所设计题目的功能需求和数据需求)
二、 概要设计
(提供课题的总体设计,如准备设计几个表单,每个表单要提供的功能等)
三、 详细设计
(给出课题的数据库及表的具体设计,依次列出对每个表单及表单所包含对象的属性和方法的主要设计内容。)
四、 结果分析
(给出表单运行的效果图,对表单的运行结果进行分析,总结自己独到的设计特点和不足之处。)
3
目 录
一、 需求分析
1)问题描叙……………………………………………….....4 2)功能及设计…………………………………………………4 3)程序要求…………………………………………………….4 二、 总体设计
1)程序的模块组成……………………………………………5 2)各模块的主要功能…………………………………… …..5 三、 详细设计
1)相关数据类型…………………………………………….7 2)设计流程图……………………………………….............8 四、 总结与体会„„„„„„„„„„„„„„„„„„„„13
4
一、 需求分析 1)问题描叙 1)问题描述
库存商品查询系统系统,如何在一个程序中查询库存商品信息。
开发环境
开发工具:Visual FoxPro 6.0
运行环境:Windows 2007 、Windows 2000、Windows XP
2)功能及设计
系统数据初始化 进入系统 用户登录 库存商品的查询 库存商品的添加 库存商品的删除 用户信息的修改 密码修改 系统退出
3)程序要求
创建一个库存商品查询系统,要求有输入库存商品信息,库存商品查询功能,库存商品添加功能,库存商品修改及删除,用户登录,用户密码修改等功能。库存商品的信息在运行时有人输入。具体实现功能要求如下:
1、 2、 3、
要求有输入功能,信息由使用者输入。
用户首先通过登录界面进入到查询系统,通过使用合格的用户名和对应的密码。 库存商品查询系统有查询功能,通过查询库存商品型号、类型、品牌等,可以得到库存商品的品牌、型号、类型、数量、进货时间、备注等信息。
4、
可以根据需要添加新的商品的信息。
5
5、 用户可进行密码修改。
6、 查询结束可以选择退出系统或返回主界面。
二、 总体设计 1)程序的模块组成
系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、修改。在系统功能分析的基础上,考虑Visual FoxPro 6.0程序编制的特点,得到如下所示的系统功能模块结构图。
2)各模块的主要功能
系统功能 欢 迎 模块结构图 登 陆 主 界 面 库存商品查询库存商品添加库存商品修改密码设置退出系统
6
三、 详细设计 1)相关数据类型
2)各模块的主要功能
1、首先创建项目管理器→数据库(ck)
2、创建库存商品表(spb)
7
3、创建密码表(mmb)
8
4、创建表单
3、设计流程图
主要模块的设计说明和程序代码 主程序代码 set talk off set stat off set dele on
set safe off
screen.windowstate = 2 set cent on
open database ck *do form yh *read events *do xtcd.mpr *read events clear windows close database
set sysmenu to default return
set default to i:\j090122 欢迎界面
9
“进入”按钮的“click”事件中添加代码如下: thisform.release
DO FORM i:\j090122\\登陆界面.scx 登录界面
10
在该表单的数据环境中添加密码表,使其与密码表内设置的用户名和密码联系。 “确定”按钮的“click”事件中添加代码如下: public yh set exact on
x1=allt(thisform.text1用户名.value) x2=allt(thisform.text2密码.value)
locate for allt(yh.yhm)==x1 if !found()
k= messageb(\"该用户不存在,请重新输入!\友情提示\") if k=1
thisform.text1用户名.value=\"\" thisform.text1用户名.setfocus endif
else
yh=allt(thisform.text1用户名.value)
if alltr(yh.mm)==alltr(thisform.text2密码.value) messageb(\"登录成功,欢迎使用!\") thisform.release do form 主界面.scx
else
k=messageb(\"密码有误,请重新输入!\警告\") if k=1
thisform.text2密码.value=\"\" thisform.text2密码.setfocus endif endif
endif
“退出”按钮的“click”事件中添加代码如下:
x=messagebox('确认退出系统吗?',1+32+256,'友情提示') if x=1
thisform.release
clear events else
thisform.text1用户名.value=\"\" thisform.text1用户名.setfocus endif 主界面
11
“退出系统”按钮的“click”事件代码如下: x=messagebox('确认退出系统吗?',1+32+256,'确认退出') if x=1
thisform.release clear events
endif
其余按钮“click”事件代码模板为 do form ****.scx thisform.release 查询
查询记录(以仓库信息查询为例)
12
对于仓库中的一些货物,有时需要按照型号、类型、品牌、仓库来查找对应的库存。该表单只需在选项按钮组中选择需要的查找方式,然后在文本框中输入查询条件,单击“查询”按钮就可以在表格中找到对应的记录。在该表单的数据环境中添加“ck”表。
“查询”按钮的“click”事件中添加的代码如下: do case
**选择按型号查询后的语句
case thisform.optiongroup1.value=3 sele spb
locate for alltr(spb.型号)==alltr(thisform.text1查询条件.value)
if found() sele *;
from spb order by 型号;
where alltr(spb.型号)==alltr(thisform.text1查询条件.value) into cursor temp with thisform.grdspb
.recordsourcetype=1
.recordsource=\"temp\" .columncount=6
.column1.header1.caption=\"品牌\" .column2.header1.caption=\"类型\"
.column3.header1.caption=\"型号\" .column4.header1.caption=\"数量\"
.column5.header1.caption=\"进货日期\"
13
.column6.header1.caption=\"备注\" endwith
thisform.refresh
thisform.grdspb.setfocus else
k=messageb(\"该型号无记录,请重新输入!\友情提示\") if k=1
thisform.text1查询条件.value=\"\" thisform.text1查询条件.setfocus endif
endif
**选择按类型查找代码
case thisform.optiongroup1.value=2 sele spb
locate for alltr(spb.类型)==alltr(thisform.text1查询条件.value) if found()
sele *;
from spb order by 类型;
where alltr(spb.类型)==alltr(thisform.text1查询条件.value) into cursor temp1 with thisform.grdspb
.recordsourcetype=1
.recordsource=\"temp1\" .columncount=6
.column1.header1.caption=\"品牌\" .column2.header1.caption=\"类型\"
.column3.header1.caption=\"型号\" .column4.header1.caption=\"数量\" .column5.header1.caption=\"进货日期\" .column6.header1.caption=\"备注\" endwith
thisform.refresh
thisform.grdspb.setfocus
else
k=messageb(\"该类型无记录,请重新输入!\友情提示\") if k=1
thisform.text1查询条件.value=\"\" thisform.text1查询条件.setfocus endif endif
**选择按品牌查找的代码
case thisform.optiongroup1.value=1
sele spb
locate for alltr(spb.品牌)==alltr(thisform.text1查询条件.value) if found()
14
sele *;
from spb order by 品牌 ;
where alltr(spb.品牌)==alltr(thisform.text1查询条件.value) into cursor temp2 with thisform.grdspb
.recordsourcetype=1 .recordsource=\"temp2\"
.columncount=6
.column1.header1.caption=\"品牌\" .column2.header1.caption=\"类型\" .column3.header1.caption=\"型号\" .column4.header1.caption=\"数量\" .column5.header1.caption=\"进货日期\" .column6.header1.caption=\"备注\" endwith
thisform.refresh
thisform.grdspb.setfocus
else
k=messageb(\"该品牌无记录,请重新输入!\友情提示\") if k=1
thisform.text1查询条件.value=\"\" thisform.text1查询条件.setfocus endif endif endcase
添加记录(以库存商品记录添加为例)
15
商家在进货后需要在系统中添加记录,该表单用于向仓库表中添加新的内容,使仓库表可以随着进货的产品不断添加。
表单中“添加”按钮的“click”事件添加代码如下: if empty(alltrim(thisform.text2.value)) messagebox(\"型号不能为空\错误\")
thisform.text2.setfocus &&如果未填写型号,则出现对话框提醒用户型号不能为空 else
**获取各输入值
pp1=alltrim(thisform.text1.value) lx1=alltrim(thisform.text6.value) xh1=alltrim(thisform.text2.value) sl1=val(alltrim(thisform.text3.value)) jhrq1=ctod(alltrim(thisform.text4.value)) bz1=alltrim(thisform.text5.value)
insert into spb value(pp1,lx1,xh1,sl1,jhrq1,bz1) messagebox(\"添加成功!\信息\") **添加完毕后清空各个文本框 thisform.text1.value='' thisform.text6.value=''
thisform.text2.value='' thisform.text3.value='' thisform.text4.value='' thisform.text5.value=''
endif
“取消”命令按钮的“click”事件中添加代码如下: thisform.text1.value=''
thisform.text2.value='' thisform.text3.value='' thisform.text4.value=''
thisform.text5.value='
thisform.text6.value=''
记录修改(以库存商品记录修改为例)
16
密码修改
17
“密码修改”按钮的“click”事件代码如下
sele mmb
locate for alltr(mmb.yhm)=yh &&yh是一个全局变量,系统登录时保存了当前用户名 if alltr(mmb.mm)<>alltr(thisform.text1.value) messageb(\"原密码有误,请重新输入!\") thisform.text1.value=\"\" thisform.text1.setfocus return else
if alltr(thisform.text2.value)<>alltr(thisform.text3.value) messageb(\"新密码输入不一致,请重新输入!\") thisform.text2.value=\"\" thisform.text3.value=\"\" thisform.text2.setfocus return
else
replace mmb.mm with alltr(thisform.text2.value) messageb(\"密码修改成功 ,请您记好新密码!\") thisform.release endif endif
四、 总结与心得
在VFP课程设计的整个过程中,经历了很多失败,也尝试了很多。从开始的一窍不通到后来的一个简单的库存商品查询系统的建立,心中感慨颇多,收获也不小。
在最初,我是对着课本知识一点一点的去仿着做。由于没有一个整体的概念,所以做起来还是非常困难。后来我们几个同学一起去机房边做边讨论。然后渐渐的从整体上把握了其轮廓,从而懂得了怎么去简历扁担及其之间的连接。
做好这个项目并运行之后,我学会了去润色它。字体、背景图片、文本框里的字体色彩等。当一个出自自己手里的美观的项目能自如的运行时,我的心理充满了喜悦。把学到的知识运用到实际中,还有什么比这更令人开心的呢?
18
计算机与通信学院课程设计评分表
课程名称:
评 项 目 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩
教师签名: 日 期:
(注:1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。)
19
因篇幅问题不能全部显示,请点此查看更多更全内容