个人名片管理系统.docx

上传人:聆听****声音 文档编号:699414 上传时间: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

数据库系统课程设计说明书

题目 个人名片管理系统

班级 计 044

学号 2004041168

姓名 董 玲 玲

指导老师原庆能

完成日期 2007-6-15

20

个人名片管理系统

一、 引言

随着计算机的普及,越来越多的管理系统应运而生。

同时,随着人们交往范围的不断扩大,我们需要同更多的人保持交流和联系,尤其是已经参加了工作的公司职员,除了熟悉的朋友,还有很多的客户,我们都要时不时的同他们保持联系,这时个人名片管理系统就可以派上用场了。

个人名片管理系统是用于辅助个人完成其名片有序管理的计算机软件系统,系统实施的目的旨在帮助用户完成其私人名片管理的数字化,以提供较手工方式下更高的效率和更低的出错率。

作为整个办公自动化系统的一部分,电子名片管理系统要实现的目标是:

将用户目前在处理名片管理工作时所采用的手工处理方式进行计算机化,从而与整个办公自动化系统的数字化趋势相协调,以求为用户提供更为专业和高效的个人管理服务。

二、 任务概述

1、待开发软件的一般描述

本软件旨在为商业人士及企事业单位中负责公共关系等社会交往频繁

的人士提供一个功能齐全、使用方便的个人社会关系数据库管理系统,以替代传统的手工通讯录。

从而提供一个高效快捷的工作环境。

使用本软件的用户群非常广泛,它非常适用于具有如下特点的人员:

(1)、工作中与外界联系非常频繁,需要和很大数目的人打交道。

(2)、与外界的联系成为开展工作的关键因素,相关信息丢失或损坏可能带来重大损失。

针对如上用户特点,本软件可以迅速、准确、方便地提供个人社会关系数据库管理系统的管理功能,同时力求为用户提供方便、高效、实用的功能。

用户只需掌握电脑录入功能即可。

2、开发环境及开发工具

本软件的开发环境是在WindowsXp操作系统环境中开发,应用的是当

前比较流行的PowerBuilder8.0和SQL。

PowerBuilder8.0是一款非常适合开发管理系统的工具,尤其是它强大的数据窗口功能省去了开发者很多的工作,可以让开发者有更多的精力致力于软件本身的设计,开发出更加简便实用的软件。

3、待开发软件的功能

本软件具有如下主要功能:

□ 身份验证功能

□ 添加、删除、修改、查询功能

□ 用户管理功能功能描述图如下:

l

管理主界面

名片修改

名片输入

名片录入

用户表

用户管理

系统维护

名片查询

名片查询

登录界面

名片表

关闭

其他

版权信息

三、功能需求

1、数据流图

第0层数据流图(DFD):

终端管理系统

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

名片存储系统

个人名片管理系统

名片存储系统

终端管理系统

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

第1层数据流图:

名片存

储系统

名片查询

查询结果

查询结果

显示查询

结果

片资料

名片录入

录入请求

询请求

确定用户请求

操作请求

身份验

输入密码

询结果

用户

更新名片存储系统

改请求

名片修改

密码信息

用户信息

查找要求

2、输入输出需求

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

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

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

登陆个人名片管理系统。

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

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

假设系统管理员可以使用系统中的所有功能模块,并且可以管理其它用户;其它用户都作为普通用户,只能按照系统管理员分配的权限使用相应的功能模块。

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

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

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

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

3、性能需求

(1)、数据精确度

进行操作请求时,如:

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

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

(2)、时间特性

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

四、后台数据库的设计

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

表mpgl(名片管理表)

序号

字段名

类型及长度

是否可空

含义

1

bh

Char(10)

Not

编号

2

xm

Char(10)

Yes

姓名

3

gs

Char(40)

Yes

公司

4

dh

Char(40)

Yes

电话

5

lxdz

Char(40)

Yes

联系地址

6

yzbm

Char(40)

Yes

邮政编码

7

email

Char(40)

Yes

电子邮件

8

ywfw

Char(200)

Yes

业务范围

9

bz

Char(400)

Yes

备注

10

zw

Char(20)

Yes

职务

序号

字段名

类型及长度

是否可空

含义

1

userid

Char(10)

Not

用户标志

2

password

Char(10)

Not

口令

3

username

Char(20)

Yes

用户名称

4

privelege

Char(200)

Yes

权限

表名:

users, 主键:

userid

表名:

mpgl, 主键:

bh

表 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='0000'ifinteger(ls_Dbsn)

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

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

ls_sn=ls_part1+Right('0000'+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

Text

登录口令:

用户标志右侧的SingleLineEdit

Name

sle_userid

登录口令右侧的SingleLineEdit

Name

sle_password

Password

选中该属性

取消

Name

cb_cancel

Text

&C.取消

Cancel

选中该属性

确定

Name

cb_ok

Text

&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<>'ok'then //如果没有登陆成功haltclose; //关闭系统

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

//选择用户的权限

selectprivelegeinto:

ls_tempfromusers

whereuserid=:

gs_userid;

ifMid(ls_temp,1,1)='0'then //没有录入权限m_menu.m_1.m_input.Enabled=False //名片录入菜单不可用

endif

ifMid(ls_temp,2,1)='0'then //没有修改权限m_menu.m_1.m_modify.Enabled=False //名片修改菜单不可用

endif

ifMid(ls_temp,3,1)='0'then //没有查询权限m_menu.m_2.m_query.Enabled=False //名片查询菜单不可用

endif

ifLower(gs_userid)<>'2004041168'then //如果不是系统管理员

m_menu.m_3.m_users.text='修改口令'//只能修改自己的口令endif

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

endif

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')>0then

ls_sql=Left(ls_sql,Pos(Lower(ls_sql),'where')-1)endif

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

endif

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

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

窗口界面如下图所示:

主要脚本如下:

在‘查询’命令按钮的Clicked

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

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

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

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