)
name='通讯录管理系统',
filename='d:\\数据库\\通讯录管理系统.ldf', size=20mb, maxsize=100mb, filegrowth=20%
4.2.2. 数据库表创建代码
4.2.2.1. 用户表
create table 用户 (
用户名 char(20) primary key, 密码 char(40) not null, )
4.2.2.2. 联系人表
create table 联系人 (
编号 char(10) primary key, 姓名 char(10),
性别 char(4) not null,
电话号码 char(10) not null, E_mail char(50), 地址 char(30),
分组类型 char(10), )
4.2.2.3. 分组表
create table 同学分组 (
同学编号 char(10)primary key FOREIGN KEY(同学编号)REFERENCES 联系人(编号),
姓名 char(10), ) go
create table 朋友分组 (
朋友编号 char(10)primary key FOREIGN KEY(朋友编号)REFERENCES 联系人(编号),
姓名 char(10), ) go
create table 同事分组 (
同事编号 char(10)primary key FOREIGN KEY(同事编号)REFERENCES 联系人(编号),
姓名 char(10), )
4.2.2.4. 视图创建代码
go
create view 朋友 as
select 朋友分组.朋友编号,朋友分组.姓名,电话号码,性别,E_mail,分组类型
from 朋友分组,联系人
where 朋友分组.朋友编号=联系人.编号 go
create view 同学 as
select 同学分组.同学编号,同学分组.姓名,电话号码,性别,E_mail,分组类型
from 联系人,同学分组
where 同学分组.同学编号=联系人.编号 go
create view 所有联系人 as
select 联系人.姓名,联系人.电话号码,联系人.性别,联系人.E_mail,分组类型
from 联系人 go
4.2.2.5. 存储过程代码创建
create procedure _朋友 as
select 朋友分组.朋友编号,朋友分组.姓名,电话号码,性别,E_mail,分组类型
from 联系人,朋友分组
where 朋友分组.朋友编号=联系人.编号 go
create procedure _同学 as
select 同学分组.同学编号,同学分组.姓名,电话号码,性别,E_mail,分组类型
from 联系人,同学分组
where 同学分组.同学编号=联系人.编号 go
create procedure _所有联系人
as
select * from 联系人 4.3.
程序设计 4.3.1.
主程序的设计
程序在运行期间要使用部分的变量来传递数据,所有这些变量都要在程序中定义。
在Visual FoxPro6.0中新建一个项目文件,以“个人通讯录管理系统”的名称保存。打开该项目的管理器,在管理器的“代码”选项卡中添加一个名为“MAIN”的代码文件,并在“MAIN”代码文件窗口中添加代码如下: SET TALK OFF &&关闭对话
SET ESCAPE OFF &&关闭ESCAPE键 SET EXACT ON &&打开完全匹配 SET EXCLUSIVE ON &&打开独占
SET CONSOLE ON &&将输出结果到发送到主窗口或当前窗口 SET DATE TO LONG &&设置长日期 SET SCORE OFF &&关闭分值栏 SET SAFETY OFF &&关闭安全提示
SET STATUS BAR OFF &&关闭系统提示栏 SET CENTURY ON &&打开世纪开关 SET DELETED ON &&屏闭删除项
SET SYSMENU OFF &&关闭系统菜单 SET NOTIFY OFF &&关闭提示 &&设置系统窗口属性
_SCREEN.MaxButton = .F. &&取消最大化按钮 _SCREEN.MaxWidth = 800 &&设置最大宽度 _SCREEN.MaxHeight = 600 &&设置最大高度
_SCREEN.Caption = \个人通讯录管理系统\设置窗口标题 _SCREEN.Picture = '6.jpg'&&设置窗口背景图片
_SCREEN.AutoCenter = .T. &&指定表单初次显示时,自动位于主窗口中央 public UserName, UserType &&定义全局变量 Do xtcd.mpr&&打开菜单 Do Form frmLogin.scx READ EVENTS Procedure On Quit
CLEAR EVENTS CLOSE ALL QUIT Endprocedure
4.3.2.
登录界面的设计
4.3.2.1. 用户登录模块
登录界面的作用是为了验证用户的合法性,只有合法的用户才能进入系统,并且要求使用者提供密码。设计完成的登录界面如图4.1所示。
图4.3.1 登录设计界面
在该界面中显示当前的操作时间,该时间为本系统从操作系统中取出的时间,而且不允许操作者进行修改,所以在表单执行时会自动显示该时间,并设置成只读状态。此外,该登录界面还设置了一些美化操作。采用动态效果,让“欢迎使用通讯录系统”动起来。密码错误将不许用户进入系统。上述功能的代码设计如下:
对象 cmdOK 过程:Click
IF ALLTRIM(thisform.txtUserName.Value) == ''
MessageBox(\请输入用户名\RETURN ENDIF
IF ALLTRIM(thisform.txtUserPwd.Value) == ''
MessageBox(\请输入密码\RETURN ENDIF
SELECT 用户表 &&查找指定用户名为的记录
Locate For Allt(用户名)=Allt(thisform.txtUserName.Value) If Found() == .T. &&如果找到
If Allt(密码) == Allt(thisform.txtUserPwd.Value) &&比较密码,成功则进入
MessageBox(\欢迎光临\提示信息\UserName = 用户名 UserType = 用户类型 release thisform
Else &&比较密码不成功
MessageBox(\密码不正确\错误提示\Endif
Else &&没有找到指定用户
MessageBox(\用户名不存在\错误提示\Endif
对象:Timer1 过程:Timer local i,j,k
i=int(rand()*255) j=int(rand()*255) k=int(rand()*255)
thisform.label3.forecolor=RGB(i,j,k) if thisform.label3.left+180>0
thisform.label3.left=thisform.label3.left-10 else
thisform.label3.left=360 Endif
4.3.2.2. 用户注册模块
设计完成的注册界面如图4.2所示。
图4.3.2 登录设计界面
对象:command(确定),过程:click
public mima1,mima2
mima1=trim(thisform.text2.value) mima2=trim(thisform.text3.value) if mima1==mima2
USE 用户表 APPEND BLANK
REPLACE 用户名 WITH ALLTRIM(THISFORM.TEXT1.VALUE) REPLACE 密码 WITH ALLTRIM(THISFORM.TEXT2.VALUE) messagebox('恭喜您,注册成功~') else
y=messagebox('两次输入的密码不一致~',16+0+0,'警告~')
if y=1
thisform.text2.value=\thisform.text3.value=\endif endif