为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

客户信息管理系统-设计报告

2017-09-19 12页 doc 181KB 29阅读

用户头像

is_882336

暂无简介

举报
客户信息管理系统-设计报告题    目:  客户信息管理系统    专    业:  .nte网页1班 学号:    1303110112 姓    名:        刘冰涛          指导教师:      胡迎久      1、 设计题目 客户信息管理系统 2、 设计目的和要求 目的:利用Visual Basic和Access实现客户信息管理系统。 要求:使系统能运行正确,完成基本的功能如客户类型的增加、删除、查询和修改等。 3、 设计内容(包括设计思路、设计实现) 3.1需求分析 客户信息系统需要完成的功能有:...
客户信息管理系统-设计报告
    目:  客户信息管理系统    专    业:  .nte网页1班 学号:    1303110112 姓    名:        刘冰涛          指导教师:      胡迎久      1、 题目 客户信息管理系统 2、 设计目的和要求 目的:利用Visual Basic和Access实现客户信息管理系统。 要求:使系统能运行正确,完成基本的功能如客户类型的增加、删除、查询和修改等。 3、 设计内容(包括设计思路、设计实现) 3.1需求分析 客户信息系统需要完成的功能有: 客户类型的建立与维护,包括客户类型的新建、修改和删除等。 客户信息的输入,详细全面记录并管理客户信息和联系人信息,客户信息包括客户的基本信息,一般的通讯方式及客户其他信息,如爱好、禁忌、生日等。 客户信息的修改和删除,包括启动与取消客户的生日提醒等。 方便实用的数据查询功能,根据不同条件查询客户,可以查看客户信息。 3.2 总体设计 本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑处理层采用ActiveX DLL实现,用户界面与业务逻辑分离,系统的安全性、可维护性、重要性和扩展性都大大提高。 本系统也采用面向对象的设计,系统中将客户类型、客户等都封装成相应的类,同时每个类都有自己对应的集合类,从而再次提高了对数据库操作系统的安全性和程序的可扩展性。 根据对系统功能的分析,我们可以把系统划分成客户类型管理模块、客户管理模块和提醒管理模块。 系统的物理结构也分为三层,即用户界面、组件和数据库。 3.3 程序界面及核心代码 3.1需求分析 客户信息系统需要完成的功能有: 1、客户类型的建立与维护,包括客户类型的新建、修改和删除等。 2、客户信息的输入,客户信息包括客户的基本信息,一般的通讯方式及客户其他信息,如爱好、禁忌、生日等。 3、客户信息的修改和删除,包括启动与取消客户的生日提醒等。 4、根据不同条件查询客户,可以查看客户信息。 3.2概念设计 本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑处理层采用ActiveX DLL实现,用户界面与业务逻辑分离,系统的安全性、可维护性、重要性和扩展性都大大提高。 本系统也采用面向对象的设计,系统中将客户类型、客户等都封装成相应的类,同时每个类都有自己对应的集合类,从而再次提高了对数据库操作系统的安全性和程序的可扩展性。 根据对系统功能的分析,我们可以把系统划分成客户类型管理模块、客户管理模块和提醒管理模块。 系统的物理结构也分为三层,即用户界面、组件和数据库。 系统功能模块图 各实体间关系的E-R图 客户类型信息实体E-R图 客户信息实体E-R图 3.3逻辑设计 (1)模式转换(E/R to Relational) ClientType: ClientInfo表: Cooperate表: WarnType表: Warning表: (2)模式规范化 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视图,用于显示每位客户的合作、提醒信息,语句如下: Create view Client as select CooperateId,ClientId,WarnId,ClientId,TypeName,Name from ClientType,ClientInfo,Cooperate,Warning where Cooperate.ClientId=ClientInfo.ClientId and Warning.TypeId=ClientType.TypeId (5)典型应用设计 客户类型管理模块:添加客户类型,修改客户类型,删除客户类型 客户管理模块:客户信息管理,客户评价管理,客户合作管理 提醒管理模块:查看今日提醒,提醒设置管理 3.4物理设计 内模式设计:主要包括索引、散列、簇集设计 ClientType表:索引字段为TypeId,索引表达式为TypeId,索引类型为主索引 ClientInfo表:索引字段为ClientId,索引表达式为ClientId,索引类型为主索引 Cooperate表:索引字段为CooperateId,索引表达式为CooperateId,索引类型为主索引 WarnType表:索引字段为WTypeId,索引表达式为WTypeId,索引类型为主索引 Warning表:索引字段为WarnId,索引表达式为WarnId,索引类型为主索引 3.5系统实现 主要模块及其核心代码如下: (1)客户类型管理模块: 添加客户类型界面: 核心代码: Public Function AddNew(Optional strName As String = "", _                       Optional lngSuperID As Long = -1) As gxcAddNew If ExistByName("ClientType", "TypeName", strName) Then     AddNew = DuplicateName_AddNew     Exit Function   End If If lngSuperID <> 0 Then     If ExistByID("ClientType", "TypeId", lngSuperID) = False Then       AddNew = SuperNotExist       Exit Function     End If      End If If 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 & "'"   strSQL = strSQL & ")"     If RunSql(strSQL, ErrMsg) Then     Me.ID = MaxID("ClientType", "TypeId")     AddNew = AddNewOK   Else     AddNew = AddNewFail   End If End Function (2)客户管理模块: 客户信息管理模块: 添加客户界面: 核心代码: Public Function AddNew(Optional ByVal strName As String = "", _                       Optional ByVal intAge As Integer = 0, _                       Optional varSex As gxcSex = -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   '开始一个事务,以免费得到的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, "   strSQL = 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) & "',"            '客户名称   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 & "'" & RealString(mvarHomePhone) & "',"      '宅电   strSQL = strSQL & "'" & RealString(mvarFax) & "',"            '传真   strSQL = strSQL & "'" & RealString(mvarHomeAdr) & "',"        '家庭住址   strSQL = strSQL & "'" & RealString(mvarMailAdr) & "',"        '通讯地址   strSQL = strSQL & "'" & RealString(mvarZipCode) & "',"        '邮编   strSQL = strSQL & "'" & mvarBirthday & "',"                    '生日   strSQL = strSQL & mvarBirthdayWarn & ","                      '是不启用生日提醒   strSQL = strSQL & "'" & RealString(mvarWork) & "',"            '职业   strSQL = strSQL & "'" & RealString(mvarPosition) & "',"        '职位   strSQL = strSQL & "'" & RealString(mvarCompany) & "',"        '公司   strSQL = strSQL & "'" & RealString(mvarCompanySite) & "',"    '公司网址   strSQL = strSQL & "'" & RealString(mvarSelfSite) & "',"        '个人网址   strSQL = strSQL & "'" & 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 strSQL   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 = "Select 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 '%" & RealString(strName) & "%' and "   End If   If lngTypeId <> 0 Then     strSQL = strSQL & "ClientInfo.TypeID=" & lngTypeId & " and "   End If   strSQL = strSQL & "ClientInfo.ClientId>0"     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     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 = 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 = 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       .Satisfaction = rs("Satisfaction").Value     End With     Me.Add objClient     Set objClient = Nothing     rs.MoveNext   Next i     Set rs = Nothing   Set Find = Me   Err.Clear End Function 客户评价管理模块: 客户合作管理模块: 添加合作信息界面: 核心代码: 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 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 gxcAddNew If lngClientId <> -1 Then Me.ClientID = lngClientId   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(" & 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)提醒管理模块: 查看今日提醒界面: 核心代码: Option Explicit Private mvarID As Long              '提醒信息ID Private mvarTypeId As Long          '提醒类型ID Private mvarTypeName As String      '提醒类型名称 Private mvarClientId As Long        '提醒客户ID Private mvarClientName As String    '提醒客户名称 Private mvarMsg As String          '提醒显示消息 Private mvarShowDate As Date        '提醒显示时间 Private mvarBirthdayWarn As Boolean '是否启用生日提醒 '启用生日提醒 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.ClientID & " AND TypeId = " & BirthdayWarn     g_Conn.Execute (strSQL)   End If End Property Public Property Get ShowBirthdayWarn() As Boolean   ShowBirthdayWarn = mvarBirthdayWarn End Property 设计小结 一开始听到要做课程设计时,就有一种畏难心理,认为要编写一个几百甚至上千行的代码似乎不可能。但是世上无难事,只怕有心人,经过我们的努力和探索,终于完成了这次课程设计。此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。 还是在高中接触的半个学期的VB知识,只是一点皮毛,现在远远不够用。所以我们通过图书馆借阅参考书籍、在网上查阅相关资料,等于是把VB从头学起。我们了解了VB和其他数据库开发工具的对比,知道了它在具体到数据库开发方面时的优势,即:快速、简单和功能完备;学习到了三层的C/S构架(客户端,组件层,数据库)的好处以及它的实现,如何通过用ADO来访问数据库,怎样把VB和数据库连接起来等等问题,在短期内让我对VB有了基础认识,也让我之后的课程设计可以少走弯路。 这次课程设计还有很重要的收获是,我学到了如何合作完成项目。这次的客户信息管理系统是两人一组合作完成的,也给了我们一个与他人合作的机会。我主要负责系统中一些如添加客户、查询客户的主要功能的设计和代码编写,徐幸同学负责对主窗体的设计和代码编写以及数据库的表设计。然后把两部分结合,生成了我们现在看到的课程设计。两个人的合作对完成课题更快捷可是也会有矛盾,可是我们会在商量和讨论后有一个更完美折中的方法。合作完成的成就感丝毫不亚于一个人的成功,反而因为多了一个人跟你分享快乐变得更能体会付出之后换来的喜悦。 当中也发生了一段小插曲,我们编译、调试都没问题,但在对exe文件的运行过程中,发现exe运行不了。后来查阅了资料,才知道ActiveX DLL在脱离了开发环境后,首次使用前必须注册。注册的命令虽然很简单,但是在这种找到错误,学习纠正的过程中,我们这次的课程设计也更具有了意义。 完成一个设计需要考虑很多方面,甚至是一些小细节也不能放过。通过这次的课程设计,我学到了很多,充实了自己的专业知识,为我以后的学习和设计增加了经验。
/
本文档为【客户信息管理系统-设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索