资源描述
1.实验内容
1) 通过对某个商用数据库管理系统的安装使用,初步认识DBMS的工作环境和系统架构。
2) 熟悉对DBMS的安装,熟悉通过Sql对数据库进行操作,实现包括基本的创建,添加,删除,修改,查询等操作。建立一个数据库,完成实验所要求的各种操作,所有的操作均在此建立的数据库中进行。
3) 通过ODBC访问数据库。学会配置ODBC数据源。熟悉使用ODBC来进行数据库应用程序的设计,熟悉通过ODBC接口访问数据库并对数据库进行操作。
2.实验环境
1) Microsoft Visual C++ 6.0开发环境。
MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软VC++开发工具发布。
2) Microsoft Sql Server 2008 R2数据库。
Microsoft SQL Server 2008 R2 提供完整的企业级技术与工具,帮助您以最低的总拥有成本获得最有价值的信息。
3) 安装的RDBMS及其交互查询工具操作SQL语言。
4) 安装的RDBMS及其ODBC Driver。
5) Windows7旗舰版操作系统。
3.问题描述
3.1 问题概述
客户信息管理系统是企业管理新系统的重要组成部分,利用客户信息管理系统,企业能够有效的管理自己的客户,实现对客户信息的维护。客户便于对自己的消费情况进行查询,对产品进行购买并了解购买价格和个人信息。便于企业管理并了解客户信息。
3.2 系统功能简介
客户信息管理系统主要是对企业的客户信息进行详细的管理,并方便的对客户信息进行创建,添加,删除,修改,查询等操作。
a) 查询客户信息:
输入要查询的客户账号,查询已有的客户信息到客户表,可查询到客户信息包括:客户账号、客户姓名、客户性别、客户单位、客户住址、客户电话等。
b) 添加客户信息:
添加新的客户信息到客户表,可添加包括:客户账号、客户姓名、客户性别、客户单位、客户住址、客户电话等基本信息。
c) 修改客户信息:
用户可以在浏览客户信息时修改客户信息,并将修改后的客户信息更新到客户表中。
d) 删除客户信息:
删除客户表中已有的客户信息,可以逐个删除。
4.需求分析
4.1 可行性分析
通过客户信息进行详细的管理使企业管理员能方便的管理客户日常信息以及方便客户对自己的个人信息的进行查询。由此系统的开发,可以节省大量的时间,使得管理人员对客户信息清晰明了,此外客户关系管理不再是局部的,可视化的工作流程,实现对客户日常消费记录,使客户信息规范化,大大提高了管理人员的工作效率,开发一个这样的客户关系管理系统对于企业长期来说是基本可行的,可实施。
4.2 功能需求
客户信息管理系统,主要包括客户与商品之间的关系。主要功能需求如下。
(1)在客户信息管理部分,要求:
a) 可以查询客户信息。
b) 可以对客户信息进行查询、添加、删除以及修改等操作。
(2)在商品信息管理部分,要求:
a.可以查看商品信息。
b.对商品信息进行维护,包括查询、添加、删除以及修改等操作。
(3)在消费信息管理部分,要求:
a.可以浏览客户消费信息,查询客户消费情况。
b.可以对客户消费信息进行维护,包括查询、添加、删除以及修改等操作。
4.3 性能需求
a) 数据的精确度
应保证查询的准确率为100%,所有在相应区域中包含查询关键字的都可以查到,不在相应域中或不包含查询关键字的都不能查到。
b) 系统响应时间
系统性能高反应速度快,1、2秒之内找到特定的客户信息。
c) 适应性
满足运行环境在允许操作系统之间的安全转换和与其他应用软件的独立运行要求。
4.4 系统设计基础
4.4.1 系统业务流图
图4-1系统业务流图
4.4.2 系统数据流图
图4-2系统数据流图
5.概要设计
5.1 功能描述
该课程设计的数据结构是线性的数据存储结构,采用的是单链表类型的存 储结构。客户信息管理系统主要是对企业的客户信息进行详细的管理,并方便的对客户信息进行创建,添加,删除,修改,查询等操作。
客户信息管理系统结构分为基础信息维护,客户信息管理,商品信息管理,客户消费管理。管理人员可以浏览客户的信息,可以对客户信息进行维护。商品管理可以浏览商品的信息,可以对商品信息进行维护。客户消费管理可以显示当前数据库中客户的消费情况,可以对客户的消费信息进行维护。简单而有效的发挥出它的效力,资源配置比较突出,这就是管理信息系统的开发的基本环境。
5.2 系统功能模块图
图5-1 系统功能模块图
6.数据库设计
6.1 数据库简介
数据库是指存放在计算机内、有组织的、可共享的数据集合;对数据库的管理是通过数据库管理系统(DBMS)实现的。数据库技术使准确、批量、高效的管理数据成为可能。随着管理需求的提高,数据库技术也得到了飞速发展,应用较为广泛的是分布式数据库和数据仓库技术。数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。我们这本书主要学的是关系型数据库。数据结构又分为数据的逻辑结构和数据的物理结构。
数据库系统三级模式和两层映像的系统结构保证了数据库系统中能够具有较高的逻辑独立性和物理独立性。
6.2 概念结构设计
ER图是用来描述某一组织(单位)的概念模型,提供了表示实体、属性和联系的方法构成ER图的基本要素是实体、属性和关系。实体是指客观存在并可相互区分的事特;属性指指实体所具有的每一个特性。
本系统的E-R模型如下图所示:
图6-1关系图
a) 客户信息E-R图:
图6-2客户信息图
b) 商品信息E-R图:
图6-3商品信息图
c) 消费信息E-R图:
图6-4消费信息图
d) 客户信息管理之间的关系图:
一个商品可以被多个客户购买,它们之间是一对多的联系。
图6-5关系图
6.3 逻辑结构设计
该数据库符合3NF 由E-R图得出关系模式如下:
客户信息(客户账号、客户单位名称、客户联系地址、客户联系电话、联系姓名、性别等)
商品信息(商品编号、商品名称、商品种类、商品总量、商品进价、商品售价等。)
消费信息(客户账号、商品编号、购买商品量、商品售价、消费总额等。)
数据库的设计在一个管理系统中起着重要的作用,一个设计合理、结构清晰的数据库能减少数据冗余,提高查询速度,方便更新修改,可以减轻程序的负担,提高程序的执行效率,本系统主要由一个表组成:客户信息表,客户信息表用于保存客户的基本信息,字段包括账号,单位名称,联系地址,联系电话,联系姓名,性别等。
a) 客户信息表:
字段
字段名
属性含义
数据类型
是否为空
1(主键)
CID
客户账号
Varchar(50)
不可以
2
Cname
客户姓名
Varchar(50)
不可以
3
Csex
客户性别
Varchar(50)
可以
4
Cadd
客户住址
Varchar(50)
可以
5
Cunit
客户单位
Varchar(50)
可以
6
Cphone
客户电话
Varchar(50)
不可以
b) 商品信息表:
字段
字段名
属性含义
数据类型
是否为空
1(主键)
PID
商品编号
Varchar(50)
不可以
2
Pname
商品名称
Varchar(50)
不可以
3
Pkind
商品种类
Varchar(50)
可以
4
Psum
商品总量
Varchar(50)
不可以
5
Pout_price
商品进价
Varchar(50)
不可以
6
Pin_price
商品售价
Varchar(50)
不可以
c) 客户消费表:
字段
字段名
属性含义
数据类型
是否为空
1(主键)
CID
客户账号
Varchar(50)
不可以
2(主键)
PID
商品编号
Varchar(50)
不可以
3
Psum
商品售量
Varchar(50)
可以
4
Pprice
商品售价
Varchar(50)
可以
5
Cconsume
消费总额
Varchar(50)
不可以
7.详细设计
7.1 项目创建
1. 单击“Office 按钮” ,然后单击“新建”。或者,在“开始使用 Microsoft Office Access”页上的“新建空白数据库”下,单击“空白数据库”。
在默认文件位置中创建 Access 项目
在“空白数据库”下,在“文件名”框中键入项目名称(使用 .adp 文件扩展名)。-或-在另一个文件位置中创建 Access 项目
a) 在“空白数据库”下,单击“浏览” ,以确定保存数据库的位置。
b) 在“文件新建数据库”对话框中,浏览到想保存项目的位置,或接受默认位置。
c) 在“文件名”框中键入项目的文件名。
d) 在“保存类型”列表中,选择“Microsoft Office Access 项目(*.adp)”,然后单击“确定”。
2. 连接数据源的过程。
a) 单击“开始”按钮,选择“程序”→“管理工具”→“数据源(ODBC)”命令,打开“ODBC数据源管理器”对话框,打开“系统DSN”选项卡。
b) 单击“添加”按钮,打开“创建新数据源”对话框,选择安装数据源的驱动程序,这里选择“Microsoft Access Driver (*.mdb)”,如图2.6所示。
c) 单击“完成”按钮,打开“ODBC Microsoft Access 安装”对话框,填写“数据源名”及相关“说明”,并指定所要连接数据库的路径,如图2.7所示。
d) 单击“确定”按钮,完成配置系统DSN的操作。
3. 在VC6.0中创建界面的过程。
打开VC6.0—>文件—>新建—>选择工程中的MFC AppWizard[exe]—>填写工程名点击确定按钮后—>选择单文档点击下一步—>选择没有文件支持的数据视图—>点击数据源—>在ODBC中选择数据源名—>选择Dynaset后点击确定—>选择你要选择的表即可
7.2 建表模块
创建表的语句:
a.客户信息表的创建
create table Customer(
CID Varchar(50) primary key, /*在列级定义主键*/
Cname Varchar(50),
Csex Varchar(50),
Cadd Varchar(50),
Cunit Varchar(50),
Cphone Varchar(50)
);
客户信息表如下:
b. 客户消费信息表的创建
create table Product(
CID Varchar(50) primary key, /*在列级定义主键*/
PID Varchar(50) primary key, /*在列级定义主键*/
Psum Varchar(50),
Pprice Varchar(50),
Cconsume Varchar(50),
);
客户消费信息表如下:
c.商品信息表的创建
create table Consume(
PID Varchar(50) primary key, /*在列级定义主键*/
Pname Varchar(50),
Pkind Varchar(50),
Psum Varchar(50),
Pout_price Varchar(50),
Pin_price Varchar(50)
)
商品信息表如下:
7.3 功能模块
1)查询语句:查询customer表的所有内容,输入要求查询的客户账号,且要查询的账号不能为空,显示所要查询的客户基本信息。
a) 查询代码:
void CShenyajing1View::OnQuerybyCID()
{
// TODO: Add your control notification handler code here
UpdateData();
m_queryCID.TrimLeft();
if(m_queryCID.IsEmpty())
{
MessageBox("要查询的帐号不能为空:");
return;
}
if(m_pSet->IsOpen())
m_pSet->Close();
m_pSet->m_strFilter.Format("CID='%s'",m_queryCID);
m_pSet->m_strSort="Cname";
m_pSet->Open();
if(!m_pSet->IsEOF())
UpdateData(FALSE);
else
MessageBox("没有查到指定账号对应的客户");
}
b) 查询的界面
图7-1查询界面
2)添加语句:将一个新客户信息插入到客户信息表中。
a) 添加的代码:
void CShenyajing1View::OnAdd()
{
// TODO: Add your control notification handler code here
CcuDlg dlg;
if(dlg.DoModal()==IDOK)
{
m_pSet->AddNew();
m_pSet->SetFieldNull(&(m_pSet->m_CID),FALSE);
m_pSet->m_CID=dlg.m_CID;
m_pSet->m_Cname=dlg.m_Cname;
m_pSet->m_Csex=dlg.m_Csex;
m_pSet->m_Cadd=dlg.m_Cadd;
m_pSet->m_Cunit=dlg.m_Cunit;
m_pSet->m_Cphone=dlg.m_Cphone;
m_pSet->Update();
m_pSet->Requery();
}
}
b) 添加的界面:
图7-2添加界面
3)修改语句:将一个已有客户信息进行修改并保存到客户信息表中。
a) 修改的代码
void CShenyajing1View::OnEdit()
{
// TODO: Add your control notification handler code here
CcuDlg dlg;
dlg.m_CID=m_pSet->m_CID;
dlg.m_Cname=m_pSet->m_Cname;
dlg.m_Csex=m_pSet->m_Csex;
dlg.m_Cadd=m_pSet->m_Cadd;
dlg.m_Cunit=m_pSet->m_Cunit;
dlg.m_Cphone=m_pSet->m_Cphone;
if(dlg.DoModal()==IDOK)
{
m_pSet->Edit();
m_pSet->m_CID=dlg.m_CID;
m_pSet->m_Cname=dlg.m_Cname;
m_pSet->m_Csex=dlg.m_Csex;
m_pSet->m_Cadd=dlg.m_Cadd;
m_pSet->m_Cunit=dlg.m_Cunit;
m_pSet->m_Cphone=dlg.m_Cphone;
m_pSet->Update();
UpdateData(FALSE);
}
}
b) 修改的界面:
图7-3修改界面
图7-4修改界面
4)删除语句:将一个已存在的客户信息进行删除到客户信息表中。
a) 删除的代码
void CShenyajing1View::OnDelete()
{
// TODO: Add your control notification handler code here
CRecordsetStatus status;
m_pSet->GetStatus(status);
m_pSet->Delete();
if(status.m_lCurrentRecord==0)
m_pSet->MoveNext();
else
m_pSet->MoveFirst();
UpdateData(FALSE);
}
b) 删除的界面
图7-5删除界面
图7-6已删除
8.调试分析
在数据库系统运行过程中必须不断地对其进行评价、调整与修改。数据库试运行合格后,数据库即可投入正式运行。数据库投入运行标志着开发任务的基本完成和维护工作的开始。对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。应用环境在不断变化,数据库运行过程中物理存储会不断变化。在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,包括: 数据库的转储和恢复;数据库的安全性、完整性控制数据库性能的监督、分析和改进;数据库的重组织和重构造。
9.实验总结
通过这次实验,我对数据库这门课有了更深的理解和认识,为了做好本次实验,我综合运用了老师上课所讲部分内容,并查阅了很多相关资料,受益非浅,增长了很多方面的见识,使我深刻认识到以前所学的基础课程的重要性,也使我掌握了很多新的知识,特别是一些课本之外的知识,体会到了理论知识和实践相结合的重要性。
本次实验对要处理的对象和系统的要求都有较明确的阐述,在对该系统进行测试时,实现了各个表上的各种查询、添加、删除、修改建立了相关视图等。功能相对比较完善,一些操作必须是有相关权限的人员可以执行,增加系统安全性,在本次实验中,很好地培养了我分析问题、解决问题的能力。同时,独立工作能力也得到了很好的提高。
在学习过程中,我也借鉴了上网不少资料,看了一些别人设计的客户信息管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。在不断分析后明确并改正了错误和疏漏,使我的程序有了更高的质量。
展开阅读全文