数据库及其应用Ⅱ课程设计报告客户信息管理系统指导老师:报告撰写:一、设计的主要目的1.通过实践,使学生建立对数据库设计的认知;2.通过对某小型信息系统的数据库的设计,使学生掌握数据库设计的主要步骤和方法,提升学生解决实际问题的能力;3.使学生学会在一个实际的RDBMS软件平台上创建数据库;4.培养学生的团队合作精神。二、主要内容和要求1.根据所选择题目,进行调查分析2.在调查分析的基础上,进行数据库设计3.在SQLServer2000上创建数据库,并结合VB6.0实现设计结果4.撰写数据库设计各个阶段的详细设计报告5.写出收获和体会,包括以解决和尚未解决的问题,进一步完善的设想与建议三、设计组织安排设计时间:设计班级:设计分组:设计报告提交:四、成员情况五、数据库分析与设计需求说明要实现一个客户信息管理系统,在此系统中只涉及到对客户和管理员两个实体的管理,此系统要求能够记录客户的基本信息和信息的查询。通过对客户的具体数据的管理,这样能够更好地实现任何企业及活动单位VIP会员的加入并确保其身份的真实、安全性。其系统的具体要求如下:1.客户基本信息的录入、添加或删去2.对客户基本信息任意条件查找3.客户基本信息表的打印4.系统用户的设置5.系统初始化数据库结构设计(1)概念结构设计现在对上述需求做进一步的分析,产生概念结构设计的E—R模型。由于这个系统比较简单,因此就采用自顶向下的设计方法,就是首先确定系统的核心活动:查询功能。对于管理员和客户之间,便是通过查询发生联系的。至此,本系统包含的实体有:客户——用于描述一名客户的基本信息,以姓名来标识管理员——用于描述一名管理员的基本信息,以用户名来标识由于一名管理员能查找多名客户信息,并且一名客户信息能被多个管理员查找。因此,管理员和客户之间的联系是多对多的。其基本E—R模型如下图:(2)逻辑结构设计根据转换规则,这个E—R模型转换的关系模式为:客户(姓名,性别,生日,年龄,手机号码,职务,所在单位,家庭住址,固定电话,兴趣爱好)管理员(用户名、管理级别)最后根据关系模式建立相应的kh表和oper表(3)数据库行为设计1.安全设置:其管理员具有操作系统的全部权限2.数据操作功能:包括对数据的录入、删除、修改功能3.生成报表:kh表(姓名,性别……),oper表(用户名……)六、设计答辩部分(1)系统结构流程图:(2)设计方法首先通过登录窗口主要代码部分:PrivateSubCommand1_Click()DimmrcAsAdodb.Recordsettxtsqlselect*fromoperwhere用户名='&Trim$(Text1(0).Text)&'&and口令='&Trim$(Text1(1).Text)+'Setmrc=exesql(txtsql)Ifmrc.RecordCount=0Thenn=n+1Ifn3ThenMsgBox没有这个用户,继续登录,vbOKOnly+vbExclamation,信息提示Text1(0).Text=Text1(1).Text=Text1(0).SetfocusElseMsgBox登录失败三次,退出系统,vbOKOnly+vbExclamation,信息提示mrc.CloseUnloadMeEndIfElseuserlevel=tram(mrc.Fields(级别))mrc.CloseUnloadMemain.ShowvbModalEndIfEndSub其中有不满足登录条件重新登录,失败三次退出系统的设计登录后即进入主菜单PrivateSubForm_Load()Ifuserlevel系统管理员ThenCommand3.Enabled=FalseCommand4.Enabled=FalseEndIfEndSubPrivateSubCommand1_Click()edkh.ShowvbModal“编辑客户按钮”连接edkh编辑窗体EndSubPrivateSubcommand2_click()qukh.ShowvbModal“查询客户按钮”连接qukh查询窗体EndSubPrivateSubCommand3_Click()setuser.ShowvbModalEndSub以下为“系统初始化”设计PrivateSubCommand4_Click()IfMsgBox(本功能要清除系统中所有的数据,真的要初始化吗?,vbYesNo,确认初始化操作)=vbYesThenCalldeldata(khb)清除客户表中全部信息Calldeldata(oper)清除oper表中全部信息MsgBox系统初始化完毕,下次只能显示以1234/1234(用户名/口令)进入本系统,vbOKOnly,信息提示EndIfEndSubPrivateSubCommand5_Click()UnloadMeEndSub编辑窗体设计以客户表为例进行说明,为了编辑其记录,设计了edkh(编辑客户)窗体,在DataGrid中显示所有以输入的客户记录。用户可以通过“设置记录”框查找相应的客户记录,然后单击“修改”或“删除”按钮,对客户记录进行修改或删除的操作,或单击“添加”按钮输入新的客户记录。点击“添加会员”此部分由李健完成设计任意条件查询代码设计以qukh表为例,用户输入的客户部分信息对客户进行查找。只需在qukh窗体中输入个别通过构造条件表达式,实现在VB中输入的数据信息由Ado连接到数据库中的客户表进行查找,即Adodc1.RecordSourse=“select*fromkhbwhere”+str‘输入查找条件并使用多次if语句完成对多重条件输入的选择查询;另外,若不需要任何条件的输入,则可直接调出所有客户的全部信息,即Adodc1.RecordSourse=“select*fromkhb”此部分由黄先恩完成设计主要代码如下:PrivateSubCommand3_Click(indexAsInteger)IfTrim(Text3.Text)ThenIfNotIsDate(Trim(Text3.Text))ThenMsgBox出生日期错误,应为yyy-mm-dd型,vbOKOnly,信息提示Text3.TextSetFocusExitSubEndIf此部分为规范日期格式EndIfstr=IfTrim(Text1.Text)ThenIfstr=Thenstr=姓名='+Trim(Text1.Text)+'Elsestr=str+and姓名='+Trim(Text1.Text)+'EndIfEndIfIfTrim(Text3.Text)ThenIfstr=Thenstr=出生日期='+Format(Trim(Text3.Text),yyyy.mm.dd)+'Elsestr=str+and出生日期='+Format(Trim(Text3.Text),yyyy.mm.dd)+'EndIfEndIf将生日作为查询条件,以便在客户表中以select语句查找满足条件的客户信息IfOption1.Value=TrueThenIfstr=Thenstr=性别='男'Elsestr=str+and性别='男'EndIfElseIfOption2.Value=TrueThenIfstr=Thenstr=性别='女'Elsestr=str+and性别='女'EndIf此为将性别作查询条件进行查找EndIfEndSub此外还有很多其它条件的输入,这里就不再列举系统用户设计主要代码如下:PrivateSubCommand1_Click()IfTrim(Text1(0).Text)=OrTrim(Text1(1).Text)=OrTrim(Combo1.Text)=ThenMsgBox数据项不全,请重新设置,vbOKOnly,信息提示Text1(0).Text.SetFocusExitSubEndIfIfflag=iThen'添加操作Ifsetuser.Adodc1.Recordset.RecordCount0Then'源记录个数大于零cond=级别='+Trim(Text1(0).Text)+'setuser.Adodc1.Recordset.MoveFirst'每次从头开始查找setuser.Adodc1.Recordset.Find(cond)IfNotsetuser.Adodc1.Recordset.EOF()ThenMsgBox存在完全相同的记录,vbOKOnly,信息提示Text1(0).SetFocusExitSubEndIf在此设计中,管理员只需在VB窗体中输入EndIf需要添加的其它注册人信息,此代码能将信息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.Updaterecs=recs+1Elsecond=级别='+Trim(Text1(0).Text)+'setuser.Adodc1.Recordset.MoveFirst'每次从头开始查找setuser.Adodc1.Recordset.Find(cond)IfNotsetuser.Adodc1.Recordset.EOF()Andsetuser.Adodc1.Recordset.absolutionnThenMsgBox存在完全相同的记录,vbOKOnly,信息提示setuser.Adodc1.Recordset.MoveFirstsetuser.Adodc1.Recordset.Move(n-1)Text1(0).SetFocusExitSubEndIfsetuser.Adodc1.Recordset.MoveFirstsetuser.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.UpdateEndIfUnloadMeEndSubPrivateSubcommand2_click()UnloadMeEndSub其它事件设计窗体上有两个事件过程load和activate,它们的执行过程是,在启动窗体时先执行load(尽执行一次)事件过程,然后执行activate事件过程。edkh窗体中,load事件过程用于设置全局变量和初始化工作,而activate事件过程中包含数据刷新语句。七.课程设计的考核方式及评分方法(略)