版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题 目: 客户信息管理系统 专 业: .nte网页1班学号: 1303110112姓 名: 刘冰涛 指导教师: 胡迎久 21、 设计题目客户信息管理系统2、 设计目的和要求目的:利用Visual Basic和Access实现客户信息管理系统。要求:使系统能运行正确,完成基本的功能如客户类型的增加、删除、查询和修改等。3、 设计内容(包括设计思路、设计实现)3.1需求分析客户信息系统需要完成的功能有:客户类型的建立与维护,包括客户类型的新建、修改和删除等。客户信息的输入,详细全面记录并管理客户信息和联系人信息,客户信息包括客户的基本信息,一般的通讯方式及客户其他信息,如爱好、禁忌、生日等。客户信
2、息的修改和删除,包括启动与取消客户的生日提醒等。方便实用的数据查询功能,根据不同条件查询客户,可以查看客户信息。3.2 总体设计本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑处理层采用ActiveX DLL实现,用户界面与业务逻辑分离,系统的安全性、可维护性、重要性和扩展性都大大提高。本系统也采用面向对象的设计,系统中将客户类型、客户等都封装成相应的类,同时每个类都有自己对应的集合类,从而再次提高了对数据库操作系统的安全性和程序的可扩展性。根据对系统功能的分析,我们可以把系统划分成客户类型管理模块、客户管理模块和提醒
3、管理模块。系统的物理结构也分为三层,即用户界面、组件和数据库。3.3 程序界面及核心代码3.1需求分析客户信息系统需要完成的功能有:1、客户类型的建立与维护,包括客户类型的新建、修改和删除等。2、客户信息的输入,客户信息包括客户的基本信息,一般的通讯方式及客户其他信息,如爱好、禁忌、生日等。3、客户信息的修改和删除,包括启动与取消客户的生日提醒等。4、根据不同条件查询客户,可以查看客户信息。3.2概念设计本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑处理层采用ActiveX DLL实现,用户界面与业务逻辑分离,系统的
4、安全性、可维护性、重要性和扩展性都大大提高。本系统也采用面向对象的设计,系统中将客户类型、客户等都封装成相应的类,同时每个类都有自己对应的集合类,从而再次提高了对数据库操作系统的安全性和程序的可扩展性。根据对系统功能的分析,我们可以把系统划分成客户类型管理模块、客户管理模块和提醒管理模块。系统的物理结构也分为三层,即用户界面、组件和数据库。系统功能模块图各实体间关系的E-R图客户类型信息实体E-R图客户信息实体E-R图3.3逻辑设计(1)模式转换(E/R to Relational)ClientType表:ClientInfo表:Cooperate表:WarnType表:Warning表:(2
5、)模式规范化ClientType表、ClientInfo表、Cooperate表、WarnType表、Warning表均已经为BCNF范式(3)完整性约束设计实体完整性约束:ClientType表主键为TypeId ClientInfo表主键为ClientId Cooperate表主键为CooperateId WarnType表主键为WTypeId Warning表主键为WarnId参照完整性约束:Cooperate表的ClientId参照ClientInfo表主键ClientId Warning表的TypeId参照ClientType表主键TypeId(4)外模式设计建立了一张Client视
6、图,用于显示每位客户的合作、提醒信息,语句如下:Create view Clientasselect CooperateId,ClientId,WarnId,ClientId,TypeName,Namefrom ClientType,ClientInfo,Cooperate,Warningwhere Cooperate.ClientId=ClientInfo.ClientId and Warning.TypeId=ClientType.TypeId(5)典型应用设计客户类型管理模块:添加客户类型,修改客户类型,删除客户类型客户管理模块:客户信息管理,客户评价管理,客户合作管理提醒管理模块:查看
7、今日提醒,提醒设置管理3.4物理设计内模式设计:主要包括索引、散列、簇集设计ClientType表:索引字段为TypeId,索引表达式为TypeId,索引类型为主索引ClientInfo表:索引字段为ClientId,索引表达式为ClientId,索引类型为主索引Cooperate表:索引字段为CooperateId,索引表达式为CooperateId,索引类型为主索引WarnType表:索引字段为WTypeId,索引表达式为WTypeId,索引类型为主索引Warning表:索引字段为WarnId,索引表达式为WarnId,索引类型为主索引3.5系统实现 主要模块及其核心代码如下:(1)客户类
8、型管理模块:添加客户类型界面:核心代码:Public Function AddNew(Optional strName As String = , _ Optional lngSuperID As Long = -1) As gxcAddNewIf ExistByName(ClientType, TypeName, strName) Then AddNew = DuplicateName_AddNew Exit Function End IfIf lngSuperID 0 Then If ExistByID(ClientType, TypeId, lngSuperID) = False The
9、n AddNew = SuperNotExist Exit Function End If End IfIf strName Then Me.TypeName = strName If lngSuperID -1 Then Me.SuperID = lngSuperID Dim strSQL As String Dim ErrMsg As String strSQL = INSERT INTO ClientType(SuperId, TypeName) strSQL = strSQL & VALUES( & lngSuperID strSQL = strSQL & , & strName &
10、strSQL = strSQL & ) If RunSql(strSQL, ErrMsg) Then Me.ID = MaxID(ClientType, TypeId) AddNew = AddNewOK Else AddNew = AddNewFail End IfEnd Function(2)客户管理模块:客户信息管理模块:添加客户界面:核心代码:Public Function AddNew(Optional ByVal strName As String = , _ Optional ByVal intAge As Integer = 0, _ Optional varSex As gx
11、cSex = -1, _ Optional lngTypeId As Long = 0) As Boolean On Error Resume Next如果参数为缺省值,即未传入,则直接调用类中的参数,否则调用传入的参数 If strName Then Me.Name = strName If intAge 0 Then Me.Age = intAge If varSex -1 Then Me.Sex = varSex If lngTypeId 0 Then Me.TypeID = lngTypeId Dim strSQL As String g_Conn.BeginTrans 开始一个事务,
12、以免费得到的ID值已被其它客户端所使用 此处调用NextID方法,得到该类对应的数据表的下一个ID,即最大ID+1 Me.ID = NextID(ClientInfo, ClientId) Me.TypeName = GetValueByID(ClientType, TypeId, Me.TypeID, TypeName) 构造SQL语句,注意需调用RealString去除字符串中的单引号,以及一些SQL语法的关键词加 strSQL = Insert into ClientInfo(Name, Age, Sex, TypeId, Mobile, Email, OfficePhone, strS
13、QL = strSQL & HomePhone, Fax, HomeAddress, MailAddress, ZipCode, Birthday, strSQL = strSQL & BirthdayWarn, Work, Position, Company, CompanySite, SelfSite, strSQL = strSQL & Likes, Hate, Remark, Importance, Friendly, Satisfaction) strSQL = strSQL & VALUES( strSQL = strSQL & & RealString(mvarName) & ,
14、 客户名称 strSQL = strSQL & mvarAge & , 客户年龄 strSQL = strSQL & mvarSex & , 性别 strSQL = strSQL & mvarTypeId & , 客户类型Id strSQL = strSQL & & RealString(mvarMobile) & , 手机 strSQL = strSQL & & RealString(mvarEmail) & , E-mail strSQL = strSQL & & RealString(mvarOfficePhone) & , 办公室电话 strSQL = strSQL & & RealS
15、tring(mvarHomePhone) & , 宅电 strSQL = strSQL & & RealString(mvarFax) & , 传真 strSQL = strSQL & & RealString(mvarHomeAdr) & , 家庭住址 strSQL = strSQL & & RealString(mvarMailAdr) & , 通讯地址 strSQL = strSQL & & RealString(mvarZipCode) & , 邮编 strSQL = strSQL & & mvarBirthday & , 生日 strSQL = strSQL & mvarBirthd
16、ayWarn & , 是不启用生日提醒 strSQL = strSQL & & RealString(mvarWork) & , 职业 strSQL = strSQL & & RealString(mvarPosition) & , 职位 strSQL = strSQL & & RealString(mvarCompany) & , 公司 strSQL = strSQL & & RealString(mvarCompanySite) & , 公司网址 strSQL = strSQL & & RealString(mvarSelfSite) & , 个人网址 strSQL = strSQL &
17、& RealString(mvarLikes) & , 喜好 strSQL = strSQL & & RealString(mvarHate) & , 厌恶 strSQL = strSQL & & RealString(mvarRemark) & , 备注 strSQL = strSQL & mvarImportance & , 重要度 strSQL = strSQL & mvarFriendly & , 友好度 strSQL = strSQL & mvarSatisfaction 满意度 strSQL = strSQL & ) 执行SQL语句,并提交事务 g_Conn.Execute str
18、SQL g_Conn.CommitTrans 如果发生错误,则返回FALSE,表示未成功添加 AddNew = (Err.Number = 0)End Function查找客户界面:核心代码:按条件查找客户,以集合类的方式返回Public Function Find(Optional ByVal lngID As Long = 0, _ Optional ByVal strName As String = , _ Optional ByVal lngTypeId As Long = 0) As CClients 构造查询SQL Dim strSQL As String strSQL = Sel
19、ect ClientInfo.*,ClientType.TypeName from ClientInfo left outer join ClientType strSQL = strSQL & ON ClientType.TypeID=ClientInfo.TypeID Where If lngID 0 Then strSQL = strSQL & ClientInfo.ClientID= & lngID & and 如果是按名称查询,则采用“包含”的查询方法 If strName Then strSQL = strSQL & ClientInfo.Name like % & RealStr
20、ing(strName) & % and End If If lngTypeId 0 Then strSQL = strSQL & ClientInfo.TypeID= & lngTypeId & and End If strSQL = strSQL & ClientInfo.ClientId0 On Error Resume Next 将查询结果加入集合类 Dim rs As Recordset Set rs = g_Conn.Execute(strSQL) Dim i As Long Dim objClient As cClient For i = 1 To rs.RecordCount
21、Set objClient = New cClient With objClient .ID = rs(ClientID).Value .Name = Trim(rs(Name).Value) .TypeName = Trim(rs(TypeName).Value) .TypeID = rs(TypeID).Value .Sex = rs(Sex).Value .Mobile = Trim(rs(Mobile).Value) .Email = Trim(rs(Email).Value) .OfficePhone = Trim(rs(OfficePhone).Value) .HomePhone
22、= Trim(rs(HomePhone).Value) .Fax = Trim(rs(Fax).Value) .HomeAdr = Trim(rs(HomeAddress).Value) .MailAdr = Trim(rs(MailAddress).Value) .ZipCode = Trim(rs(ZipCode).Value) .Birthday = rs(Birthday).Value .Age = rs(Age).Value .BirthdayWarn = rs(BirthdayWarn).Value .Work = Trim(rs(Work).Value) .Position =
23、Trim(rs(Position).Value) .Company = Trim(rs(Company).Value) .CompanySite = Trim(rs(CompanySite).Value) .SelfSite = Trim(rs(SelfSite).Value) .Likes = Trim(rs(Likes).Value) .Hate = Trim(rs(Hate).Value) .Remark = Trim(rs(Remark).Value) .Importance = rs(Importance).Value .Friendly = rs(Friendly).Value .
24、Satisfaction = rs(Satisfaction).Value End With Me.Add objClient Set objClient = Nothing rs.MoveNext Next i Set rs = Nothing Set Find = Me Err.ClearEnd Function客户评价管理模块:客户合作管理模块:添加合作信息界面:核心代码:Public Function AddNew(Optional datDate As Date = #1/1/1900#, _ Optional lngClientId As Long = -1, _ Optional
25、 intSatify As Integer = -1, _ Optional strRemark As String = ) As gxcAddNew Public Function AddNew(Optional datDate As Date = #1/1/1900#, _ Optional lngClientId As Long = -1, _ Optional intSatify As Integer = -1, _ Optional strRemark As String = ) As gxcAddNewIf lngClientId -1 Then Me.ClientID = lng
26、ClientId If intSatify -1 Then Me.Satisfaction = intSatify 上级合作信息的ID If strRemark Then Me.Remark = strRemark If datDate #1/1/1900# Then Me.CooperateDate = datDate Dim strSQL As String Dim ErrMsg As String strSQL = INSERT INTO Cooperate(ClientId, Date, Satisfaction, Remark) strSQL = strSQL & VALUES( &
27、 Me.ClientID strSQL = strSQL & , & Me.CooperateDate & strSQL = strSQL & , & Me.Satisfaction strSQL = strSQL & , & RealString(Me.Remark) & strSQL = strSQL & ) If RunSql(strSQL, ErrMsg) Then Me.ID = MaxID(Cooperate, CooperateId) AddNew = AddNewOK Else AddNew = AddNewFail End If End Function(3)提醒管理模块:查
28、看今日提醒界面:核心代码:Option ExplicitPrivate mvarID As Long 提醒信息IDPrivate mvarTypeId As Long 提醒类型IDPrivate mvarTypeName As String 提醒类型名称Private mvarClientId As Long 提醒客户IDPrivate mvarClientName As String 提醒客户名称Private mvarMsg As String 提醒显示消息Private mvarShowDate As Date 提醒显示时间Private mvarBirthdayWarn As Bool
29、ean 是否启用生日提醒启用生日提醒Public Property Let ShowBirthdayWarn(ByVal vData As Boolean) mvarBirthdayWarn = vData Dim strSQL As String If mvarBirthdayWarn Then strSQL = SELECT * FROM Warning WHERE ClientId = _ & Me.ClientID & AND TypeId = & BirthdayWarn Dim rs As Recordset Set rs = g_Conn.Execute(strSQL) If rs.RecordCount = 0 Then AddNew Me.ShowDate, Me.ClientID, 1, 今天是 & Me.ClientName & 的生日,请做好准备。 End If Set rs = Nothing Else strSQL = DELETE FROM Warning WHERE ClientId = _ & Me.Client
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论