个人名片管理系统文档格式.docx

上传人:聆听****声音 文档编号:934188 上传时间:2023-04-29 格式:DOCX 页数:20 大小:212.10KB
下载 相关 举报
个人名片管理系统文档格式.docx_第1页
第1页 / 共20页
个人名片管理系统文档格式.docx_第2页
第2页 / 共20页
个人名片管理系统文档格式.docx_第3页
第3页 / 共20页
个人名片管理系统文档格式.docx_第4页
第4页 / 共20页
个人名片管理系统文档格式.docx_第5页
第5页 / 共20页
个人名片管理系统文档格式.docx_第6页
第6页 / 共20页
个人名片管理系统文档格式.docx_第7页
第7页 / 共20页
个人名片管理系统文档格式.docx_第8页
第8页 / 共20页
个人名片管理系统文档格式.docx_第9页
第9页 / 共20页
个人名片管理系统文档格式.docx_第10页
第10页 / 共20页
个人名片管理系统文档格式.docx_第11页
第11页 / 共20页
个人名片管理系统文档格式.docx_第12页
第12页 / 共20页
个人名片管理系统文档格式.docx_第13页
第13页 / 共20页
个人名片管理系统文档格式.docx_第14页
第14页 / 共20页
个人名片管理系统文档格式.docx_第15页
第15页 / 共20页
个人名片管理系统文档格式.docx_第16页
第16页 / 共20页
个人名片管理系统文档格式.docx_第17页
第17页 / 共20页
个人名片管理系统文档格式.docx_第18页
第18页 / 共20页
个人名片管理系统文档格式.docx_第19页
第19页 / 共20页
个人名片管理系统文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

个人名片管理系统文档格式.docx

《个人名片管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《个人名片管理系统文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

个人名片管理系统文档格式.docx

关闭

其他

版权信息

三、功能需求

1、数据流图

第0层数据流图(DFD):

终端管理系统

名片处理信息 名片更改信息

名片存储系统

终端输入信息 终端输出信息

第1层数据流图:

名片存

储系统

查询结果

显示查询

结果

片资料

录入请求

询请求

确定用户请求

操作请求

身份验

输入密码

询结果

用户

更新名片存储系统

改请求

密码信息

用户信息

查找要求

2、输入输出需求

个人名片管理系统在进行名片管理时,用户利用终端机输入登陆密码,个人

名片管理系统通过终端输入系统获得该密码后,应该能够通过该密码,借助个人名片管理系统获得正确的用户登陆信息,确定登陆用户为系统管理员或普通用户,并最终通过终端管理系统将这些信息显示在用户终端上。

如果个人名片管理系统不能根据给出的密码得到与之对应的用户信息,系统则不允许该用户

登陆个人名片管理系统。

本系统可以有不同的用户使用,这些用户在实际的工作中可能具有不同的权限,所以我们的软件也应该根据他们的工作角色分配给他们不同的功能模块。

在个人名片管理系统中,我们提供多用户管理功能。

假设系统管理员可以使用系统中的所有功能模块,并且可以管理其它用户;

其它用户都作为普通用户,只能按照系统管理员分配的权限使用相应的功能模块。

为了实现多用户管理,我们着手实现了以下几个方面的功能:

(1)、主窗口打开时,同时打开登录窗口,让用户输入用户标识和登录口令。

(2)、如果用户正确登录,则读取用户的权限,根据权限进行界面的初始化。

(3)、我们通过菜单项是否可用来实现用户的权限。

3、性能需求

(1)、数据精确度

进行操作请求时,如:

名片录入、名片删除、名片修改、名片查询时,应保证输入数据与数据库数据的相匹配性。

而在满足用户请求时,系统应保证所响应数据的正确性和全面性。

(2)、时间特性

为满足用户高效要求,数据的响应时间、更新处理时间、数据转换与传输时间、运行时间都应在可接受范围之内。

四、后台数据库的设计

1、 该实例实现的是简单的名片管理功能,因此系统后台数据库比较简单,只有名片管理表和用户管理表2个数据表。

表mpgl(名片管理表)

序号

字段名

类型及长度

是否可空

含义

1

bh

Char(10)

Not

编号

2

xm

Yes

姓名

3

gs

Char(40)

公司

4

dh

电话

5

lxdz

联系地址

6

yzbm

邮政编码

7

email

电子邮件

8

ywfw

Char(200)

业务范围

9

bz

Char(400)

备注

10

zw

Char(20)

职务

userid

用户标志

password

口令

username

用户名称

privelege

权限

表名:

users, 主键:

mpgl, 主键:

表 users(用户管理表)

名称

终端输入信息

别名

用途

操作处理

描述

终端输入信息=用户标志+口令

更新电子名片管理系统

2、数据字典

操作请求=录入|修改|删除|查询

用户身份

身份信息

确认用户身份、确认用户操作权限

用户身份=系统管理员|普通用户

对用户操作进行响应、查询处理

查询结果=名片信息

确认用户身份

用户信息=用户登陆密码+用户身份

名片信息

名片资料

查找名片、更新名片

名片信息=编号+姓名+公司+电话+联系地址+

邮政编码+电子邮件+业务范围+备注+职务

3、数 据库的数

据采集

通过身份验证的并且具有名片录入权限的合法用户,采用键盘和鼠标

直接输入的方式将外部数据添加到数据库中。

五、本系统具体的实现步骤及过程

1、建立数据库及数据表

这部分工作是在MicrosoftSQLServer的企业管理器中进行的。

一部分的工作基本上都有一定的步骤可寻,在此就不做详细的介绍。

2、创建工作空间及应用程序

在PB中的工作必须是在一个工作空间中展开的,所以在开始所有

的工作前,要建立一个工作空间,选择File->

New菜单,打开如下界面,点击OK按纽,命名为mpgl.pbw并保存,即完成了工作空间的建立。

接下来,按照跟建立工作空间相同的步骤建立名为mpgl的应用程序。

Application对象是PB应用程序的起点。

通常在该对象的Open事件中打开整个应用程序的主操作窗口,初始化运行环境,建立数据库连接等工作。

在应用程序的open和close事件中都要加入相应的代码,以保证系统能够正常启动并运行。

Open事件的代码如下:

SQLCA.DBMS="

MSSMicrosoftSQLServer"

SQLCA.Database="

mpxt"

SQLCA.ServerName="

(local)"

SQLCA.LogId="

sa"

SQLCA.AutoCommit=FalseSQLCA.DBParm="

"

connect;

//连接数据库

ifsqlca.sqlcode=0 then //正确建立了连接open(w_main) //打开主程序窗口

Else

MessageBox('

错误'

'

不能和数据库建立连接.按任意键关闭系统.

....'

StopSign!

haltclose;

//直接关闭整个应用endif

close事件的代码如下:

Disconnect;

//断开和数据库的连接

3、数据窗口的建立

本系统中建立了四个数据窗口,它们分别是跟名片录入、名片修改、名片查询、用户信息有关的dw_mp_input、

dw_mp_modify、dw_mp_query、dw_mp_users。

下面,主要介绍其中的一个数据窗口dw_mp_input的创建过程。

选择窗口菜单File->

New,或者使用快捷键Ctrl+N,或者点击窗

口工具条中左侧第一个小图标按钮‘New’,打开‘New’对话框,点击上面的‘DataWindow’显示如图5-1所示的界面。

图1新建数据窗口

选择其中的‘Freeform’,然后点击窗口底部的命令按钮‘OK’。

图1

所示的窗口关闭,打开图2所示的对话框。

图2选择数据源

在图2所示的窗口中选择‘Quick Select’,然后点击窗口底部的命令按钮‘Next’,打开如图3所示的对话框。

在图3所示的对话框中,选择左侧‘Tables’中的表‘mpgl’,然后点击右侧的命令按钮‘AddAll’,然后点击窗口右上角的命令按钮‘OK’,显示如图4所示的对话框。

在该对话框中设置数据窗口的显示样式。

图4设置显示格式

在该对话框中,选择‘Background Color’为‘Button Face’,选择

‘Columns’组框中的‘Border’为‘Lowered’。

然后点击窗口底部的命令按钮‘Next>

’,打开如图5所示的对话框。

图5总结信息

图5-5所示的对话框是总结信息,显示我们在前面的选择。

点击窗口底

部的命令按钮‘Finish’即可完成数据窗口创建向导的工作,进入到

Datawindow画板中。

接下来我们需要进一步修改数据窗口的外观,至此,名片输入数据窗口创建完成。

保存该数据窗口,命名为

‘dw_mp_input’,并且在保存时为该数据窗口对象输入提示信息。

数据窗口dw_mp_modify和dw_mp_query的创建过程同上,并且数据

源也是数据表mpgl,而数据窗口dw_mp_users的数据源与它们不同,它的数据源是数据表users。

至此,我们所需要的数据窗口都已经建立完毕。

4、创建全局函数gf_getbh

使用全局函数,便于程序的重用和逻辑上的封装。

在创建数据表时,mpgl表中的字段bh定义为char(10)类型。

首先我们定义编码的规则如下:

(1)前6位为2位年、2位月、2位日;

(2)后4位为流水号,取当前最大值加1。

根据上面的规则我们创建一个全局函数。

函数定义如下:

/*-------------

----------------------------------------------------------------------

*函数名称:

Stringgf_getbh(stringas_bh)

*函数作用:

生成一个编号。

*返回值:

string类型的,编号。

*调用举例:

ls_new=gf_getbh(ls_old)

*其中,ls_old为数据窗口中已经存在的当天的最大编号。

*-----------------------------------------------------------------------------------*/

Stringls_Part1//用来保存编码的前6位Stringls_Part2//用来保存编码的后4位Stringls_DbSn//数据库中的当天最大流水号stringls_AgrSn//参数中的流水号

Stringls_sn//新生成的编号

ls_part1=Right(String(today(),'

yyyymmdd'

),6)ls_AgrSn=Right(as_bh,4)

//从数据库中选择当天最大的编号selectmax(bh)into:

ls_Dbsn

frommpgl

wheresubstring(bh,1,6)=:

ls_part1;

ifsqlca.sqlcode=0then//如果正确取出了数据ifIsNull(ls_Dbsn)orls_Dbsn='

'

then

ls_Dbsn='

0000'

else

ls_DbSn=Right(ls_DbSn,4)endif

ifIsNull(ls_Agrsn)orls_Agrsn='

thenls_Agrsn='

ifinteger(ls_Dbsn)<

integer(ls_AgrSn)then

ls_Part2=String(integer(ls_AgrSn)+1)else

ls_Part2=String(integer(ls_DbSn)+1)endif

ls_sn=ls_part1+Right('

+ls_Part2,4)else

ls_sn='

endifreturnls_sn

5、创建主菜单

菜单是一个非常不错的控件,在很多操作系统中随处可见。

菜单

占用空间很小,但是可以执行的命令却可以非常多。

建立所需要的菜单,并修改相应的属性,创建完后的效果图如下所示:

至此,菜单创建完毕。

保存我们的工作。

6、窗口的建立

6、1登陆窗口的建立

在没有输入合法的用户标志和口令之前,应该不允许用户操作软件中的其它任何部分。

所以,登录窗口采用Response类型的窗口。

在该窗口中放置2个StaticText控件、2个SingleLineEdit控件、2个

CommandButton控件。

然后按照表1设置控件及窗口的相关属性:

控件

属性

取值

st_1

Text

用户标志:

st_2

登录口令:

用户标志右侧的SingleLineEdit

Name

sle_userid

登录口令右侧的SingleLineEdit

sle_password

Password

选中该属性

取消

cb_cancel

&

C.取消

Cancel

确定

cb_ok

O.确定

窗口

Title

系统登录

WindowTyp

e

Response

设计完用户界面后,首先保存一下我们的工作,命名为w_login。

然后开始编写脚本。

为了控制用户尝试登录的次数,需要定义窗口实例变量,用来记录用户尝试的次数:

integerii_count=3

当用户在sle_userid中输入内容,并且回车之后,应该将焦点切换到

sle_password上,以便用户继续输入登录口令。

所以,在sle_userid的

Modified事件上编写如下脚本:

sle_password.SetFocus()

在命令按钮cb_cancel的Clicked事件上编写如下脚本:

close(parent)

在命令按钮cb_ok的Clicked事件上编写如下脚本:

Stringls_useridStringls_passwordintegerli_count

ls_userid=sle_userid.Textls_password=sle_password.Text

selectcount(*)into:

li_countfrom users

where userid=:

ls_useridandpassword=:

ls_password;

ifli_count>

0thengs_userid=ls_userid

selectusernameinto:

gs_usernamefromusers

whereuserid=:

ls_userid;

CloseWithReturn(parent,'

ok'

)else

ii_count--

ifii_count=0thenhaltclose;

sle_userid.text='

sle_password.text='

sle_userid.SetFocus()

endif

保存窗口。

至此,窗口w_login中的工作完全完成。

6、2主窗口的建立

主窗口w_main打开时,应该让用户输入登录信息,如果登录成功则根据用户的权限初始化用户界面。

所以,在窗口w_main的Open事件中编写如下程序:

this.PostEvent('

ue_open'

然后,我们为窗口w_main定义一个用户自定义事件ue_open。

ue_open事件中编写如下脚本:

stringls_temp

Open(w_login) //打开登陆窗口ls_temp=Message.stringParm //接受登陆窗口的返回信息

ifls_temp<

>

then //如果没有登陆成功haltclose;

//关闭系统

else //登陆成功,根据用户权限初始化界面

//选择用户的权限

selectprivelegeinto:

ls_tempfromusers

gs_userid;

ifMid(ls_temp,1,1)='

0'

then //没有录入权限m_menu.m_1.m_input.Enabled=False //名片录入菜单不可用

ifMid(ls_temp,2,1)='

then //没有修改权限m_menu.m_1.m_modify.Enabled=False //名片修改菜单不可用

ifMid(ls_temp,3,1)='

then //没有查询权限m_menu.m_2.m_query.Enabled=False //名片查询菜单不可用

ifLower(gs_userid)<

2004041168'

then //如果不是系统管理员

m_menu.m_3.m_users.text='

修改口令'

//只能修改自己的口令endif

idle(100) //设置触发Application对象idle事件的时限为100

6、3创建名片录入窗口w_mp_input

新建一个窗口,然后在窗口上放置1个DataWindow控件、6个

CommandButton控件,按照下图安排控件的布局并设置各个控件及窗

口的属性。

设计完界面后,保存窗口,命名为w_mp_input。

6、4创建名片修改窗口w_mp_modified

创建新窗口,在窗口中放置1个DataWindow控件、6个

CommandButton控件,按照下图所示的窗口布局安排控件的位置,然后设置控件及窗口的相关属性。

主要

脚本如下:

在窗口的Open事件中编写如下脚本:

dw_1.SetTransObject(SQLCA)

在窗口的CloseQuery事件中编写如下脚本:

integerli_flag

ifdw_1.ModifiedCount()+dw_1.DeletedCount()>

0then

li_flag = MessageBox('

提示'

数据已经修改,是否保存?

'

Question!

YesNoCancel!

1)

choosecaseli_flagcase1//保存

ifdw_1.Update()=1thencommit;

return0else

ifMessageBox('

数据错误,不能保存。

是否继续关闭?

&

Question!

YesNo!

2)=1then

return0elserollback;

return1endifendif

case2//不保存rollback;

return0

case3//取消

return1endchooseelse

return0endif

在命令按钮‘查找’的Clicked事件中编写如下脚本:

Stringls_rtn//保存查询条件窗口中的返回值

Stringls_sql//保存数据窗口dw_1对应的SQL语句Open(w_mp_Modify_filter)//打开查询条件窗口ls_rtn=Message.StringParm//保存返回的查询条件ifLen(ls_rtn)>

0then//返回了查询条件

ls_sql=dw_1.GetSqlSelect()//获取老的SQL语句

ifPos(lower(ls_sql),'

where'

)>

ls_sql=Left(ls_sql,Pos(Lower(ls_sql),'

)-1)endif

ls_sql=ls_sql+'

where'

+ls_rtndw_1.SetSqlSelect(ls_sql)//启用新的SQL语句dw_1.Retrieve()

6、5创建查询条件窗口w_mp_modify_filte

针对名片录入的内容,我们设计一个查询条件输入窗口,在该窗口中可以以名片的各个项目做查询条件。

窗口界面如下图所示:

主要脚本如下:

在‘查询’命令按钮的Clicked

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2