客户信息管理系统课程设计(非论文).docx
数据库及其应用 课程设计报告客户信息管理系统指导老师:报告撰写: 一、设计的主要目的1. 通过实践,使学生建立对数据库设计的认知; 2. 通过对某小型信息系统的数据库的设计,使学生掌握数据库设计的主要步骤和方法,提升学生解决实际问题的能力; 3. 使学生学会在一个实际的RDBMS软件平台上创建数据库; 4. 培养学生的团队合作精神。 二、主要内容和要求 1. 根据所选择题目,进行调查分析 2. 在调查分析的基础上,进行数据库设计 3. 在SQL Server 2000上创建数据库,并结合VB 6.0实现设计结果 4. 撰写数据库设计各个阶段的详细设计报告 5. 写出收获和体会,包括以解决和尚未解决的问题,进一步完善的设想与建议 三、设计组织安排 设计时间: 设计班级: 设计分组: 设计报告提交: 四、成员情况 五、数据库分析与设计需求说明要实现一个客户信息管理系统,在此系统中只涉及到对客户和管理员两个实体的管理,此系统要求能够记录客户的基本信息和信息的查询。通过对客户的具体数据的管理,这样能够更好地实现任何企业及活动单位VIP会员的加入并确保其身份的真实、安全性。其系统的具体要求如下: 1.客户基本信息的录入、添加或删去2.对客户基本信息任意条件查找3.客户基本信息表的打印4.系统用户的设置5.系统初始化数据库结构设计(1)概念结构设计现在对上述需求做进一步的分析,产生概念结构设计的ER模型。由于这个系统比较简单,因此就采用自顶向下的设计方法,就是首先确定系统的核心活动:查询功能。对于管理员和客户之间,便是通过查询发生联系的。至此,本系统包含的实体有:客户用于描述一名客户的基本信息,以姓名来标识管理员用于描述一名管理员的基本信息,以用户名来标识由于一名管理员能查找多名客户信息,并且一名客户信息能被多个管理员查找。因此,管理员和客户之间的联系是多对多的。其基本ER模型如下图:(2)逻辑结构设计根据转换规则,这个ER模型转换的关系模式为:客户(姓名,性别,生日,年龄,手机号码,职务,所在单位,家庭住址,固定电话,兴趣爱好)管理员(用户名、管理级别)最后根据关系模式建立相应的kh表和oper表(3)数据库行为设计1. 安全设置:其管理员具有操作系统的全部权限2. 数据操作功能:包括对数据的录入、删除、修改功能3. 生成报表:kh表(姓名,性别), oper表(用户名)六、设计答辩部分(1)系统结构流程图:(2)设计方法首先通过登录窗口主要代码部分:Private Sub Command1_Click() Dim mrc As Adodb.Recordset txtsql "select * from oper where 用户名='" & Trim$(Text1(0).Text) & "'" & "and 口令='" & Trim$(Text1(1).Text) + "'" Set mrc = exesql(txtsql) If mrc.RecordCount = 0 Then n = n + 1 If n < 3 Then MsgBox "没有这个用户,继续登录", vbOKOnly + vbExclamation, "信息提示" Text1(0).Text = "" Text1(1).Text = "" Text1(0).Set focus Else MsgBox "登录失败三次,退出系统", vbOKOnly + vbExclamation, "信息提示" mrc.Close Unload Me End IfElse userlevel = tram(mrc.Fields("级别") mrc.Close Unload Me main.Show vbModalEnd IfEnd Sub其中有不满足登录条件重新登录,失败三次退出系统的设计登录后即进入主菜单Private Sub Form_Load() If userlevel <> "系统管理员" Then Command3.Enabled = False Command4.Enabled = False End IfEnd SubPrivate Sub Command1_Click() edkh.Show vbModal “编辑客户按钮”连接edkh编辑窗体End SubPrivate Sub command2_click() qukh.Show vbModal “查询客户按钮”连接qukh查询窗体End SubPrivate Sub Command3_Click() setuser.Show vbModalEnd Sub 以下为“系统初始化”设计Private Sub Command4_Click() If MsgBox("本功能要清除系统中所有的数据,真的要初始化吗?", vbYesNo, "确认初始化操作") = vbYes Then Call deldata("khb") 清除客户表中全部信息 Call deldata("oper") 清除oper表中全部信息 MsgBox "系统初始化完毕,下次只能显示以1234/1234(用户名/口令)进入本系统", vbOKOnly, "信息提示" End IfEnd SubPrivate Sub Command5_Click() Unload MeEnd Sub编辑窗体设计以客户表为例进行说明,为了编辑其记录,设计了edkh(编辑客户)窗体,在DataGrid中显示所有以输入的客户记录。用户可以通过“设置记录”框查找相应的客户记录,然后单击“修改”或“删除”按钮,对客户记录进行修改或删除的操作,或单击“添加”按钮输入新的客户记录。点击“添加会员” 此部分由李健完成设计任意条件查询代码设计以qukh表为例,用户输入的客户部分信息对客户进行查找。只需在qukh窗体中输入个别通过构造条件表达式,实现在VB中输入的数据信息由Ado连接到数据库中的客户表进行查找,即Adodc1.RecordSourse = “ select * from khb where ” + str 输入查找条件并使用多次if语句完成对多重条件输入的选择查询;另外,若不需要任何条件的输入,则可直接调出所有客户的全部信息,即Adodc1.RecordSourse = “ select * from khb” 此部分由黄先恩完成设计主要代码如下:Private Sub Command3_Click(index As Integer) If Trim(Text3.Text) <> "" Then If Not IsDate(Trim(Text3.Text) Then MsgBox "出生日期错误,应为yyy-mm-dd型", vbOKOnly, "信息提示" Text3.Text SetFocus Exit Sub End If 此部分为规范日期格式 End Ifstr = ""If Trim(Text1.Text) <> "" Then If str = "" Then str = "姓名= '" + Trim(Text1.Text) + " '" Else str = str + "and 姓名='" + Trim(Text1.Text) + "'" End IfEnd If If Trim(Text3.Text) <> "" Then If str = "" Then str = "出生日期='" + Format(Trim(Text3.Text), "yyyy.mm.dd") + "'" Else str = str + " and 出生日期='" + Format(Trim(Text3.Text), "yyyy.mm.dd") + "'" End IfEnd If 将生日作为查询条件,以便在客户表中以select语句查找满足条件的客户信息 If Option1.Value = True Then If str = "" Then str = "性别='男'" Else str = str + "and 性别='男'" End IfElseIf Option2.Value = True Then If str = "" Then str = "性别='女'" Else str = str + "and 性别='女'" End If 此为将性别作查询条件进行查找End IfEnd Sub 此外还有很多其它条件的输入,这里就不再列举系统用户设计主要代码如下:Private Sub Command1_Click() If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Or Trim(Combo1.Text) = "" Then MsgBox "数据项不全,请重新设置", vbOKOnly, "信息提示" Text1(0).Text.SetFocus Exit Sub End If If flag = i Then '添加操作 If setuser.Adodc1.Recordset.RecordCount > 0 Then '源记录个数大于零 cond = "级别='" + Trim(Text1(0).Text) + "'" setuser.Adodc1.Recordset.MoveFirst '每次从头开始查找 setuser.Adodc1.Recordset.Find (cond) If Not setuser.Adodc1.Recordset.EOF() Then MsgBox "存在完全相同的记录", vbOKOnly, "信息提示" Text1(0).SetFocus Exit Sub End If 在此设计中,管理员只需在VB窗体中输入 End If 需要添加的其它注册人信息,此代码能将信息 setuser.Adodc1.Recordset.AddNew 直接录入数据库oper表中,过程如下 setuser.Adodc1.Recordset.Field("用户名") = Trim(Text1(0).Text) setuser.Adodc1.Recordset.Field("口令") = Val(Trim(Text1(1).Text) setuser.Adodc1.Recordset.Field("用户类型") = Trim(Combo1.Text) setuser.Adodc1.Recordset.Update recs = recs + 1 Else cond = "级别='" + Trim(Text1(0).Text) + "'" setuser.Adodc1.Recordset.MoveFirst '每次从头开始查找 setuser.Adodc1.Recordset.Find (cond) If Not setuser.Adodc1.Recordset.EOF() And setuser.Adodc1.Recordset.absolution <> n Then MsgBox "存在完全相同的记录", vbOKOnly, "信息提示" setuser.Adodc1.Recordset.MoveFirst setuser.Adodc1.Recordset.Move (n - 1) Text1(0).SetFocus Exit Sub End If setuser.Adodc1.Recordset.MoveFirst setuser.Adodc1.Recordset.Move (n - 1) setuser.Adodc1.Recordset.Field("用户名") = Trim(Text1(0).Text) setuser.Adodc1.Recordset.Field("口令") = Val(Trim(Text1(1).Text) setuser.Adodc1.Recordset.Field("用户类型") = Trim(Combo1.Text) setuser.Adodc1.Recordset.Update End If Unload Me End Sub Private Sub command2_click() Unload Me End Sub其它事件设计窗体上有两个事件过程load和activate,它们的执行过程是,在启动窗体时先执行load(尽执行一次)事件过程,然后执行activate事件过程。edkh窗体中,load事件过程用于设置全局变量和初始化工作,而activate事件过程中包含数据刷新语句。七课程设计的考核方式及评分方法 (略)