




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告题目: 基于VC+的客户资料管理系统的设计与实现 数据库的设计 班 级: 10计科 姓 名: 学 号: PB10202812 院 系: 人 武 学 院 组 员: 2011年06 月9日26摘要客户资料管理系统是典型的客户信息管理系统,其主要的功能是把客户管理过程信息化,自动化以减轻人工的重复繁琐劳动。其开发主要包括后台数据库的建立维护以及前台应用程序的开发两个方面。对于后台数据库要求建立一个稳定的数据库,保持数据的一致性,完整性,安全性也是必要的。对于前台要求稳定,实用,易用。本系统是为公司客户资料管理的各种工作而设计的。根据需求分析,需要实现对系统用户,基本信息(客户姓名、单位名称、联系电话相关信息等)的管理。经过分析,本系统使用SQL SERVER做为其后台数据库,采用ADO数据库链接技术;Visual C+做为开发工具, 提供了相当齐备的类库、友好的编程界面和多种多样的数据库访问技术。其中ADO使得编写数据库应用程序变得简单容易。公司客户资料管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性,完整性,安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。关键词: VC+ + 数据库; 客户资料管理系统; ADO技术目录第1章 需求分析2第2章 系统分析3第3章 数据库设计43.1 建立E-R图4 3.2 SQL建立数据库及查询53.3 ADO方式连接数据库的类实现83.4 ADO控件访问数据库23第4章 总结23第5章 参考文献241第1章 需求分析客户管理是一个企业在经营管理中不可缺少的部分,它的成功与否对于企业的发展来说都是至关重要的,所以公司客户管理系统应该能够为用户提供充足的信息和快捷的查询手段。但如果使用传统的人工直接统计的话,工作量十分的庞大,存在许多的缺点,如:效率低,保密性差,且如果客户多,时间一长,将产生大量的文件及数据,对于查找,更新和维护带来困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对客户进行管理,可使人们从繁重而又单调的统计运算中解脱出来,仅用一些简单的操作便可及时准确地获得需要得信息。使企业实现科学化,正规化管理,与世界接轨。因此,开发这样一套管理软件成为很必要的事情。此设计主要实现的功能有实现对系统用户,基本信息(客户姓名、单位名称、联系电话相关信息等)的管理。需求分析阶段的工作结果是开发软件的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件的质量,确保软件开发成功,降低软件的开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般来说,应从下面四个方面进行验证: a. 一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。 b. 完整性 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。 c现实性 指定的需求应该是用现有的硬件技术和软件技术基础上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步很难做些预测,只能从现有的技术水平出发判断需求的现实性。 d 有效性 必须证明需求是正确有效的,确保能解决用户面对的问题。通过用户和设计者对上述需求分析所得到的管理系统功能的复查,并且对照上面几点要求进行验证,客户信息管理系提出的基本满足需求分析验证的要求。2第2章 系统分析1. Visual C+Visual C+是运行于Windows平台上的交互式的可视化集成开发环境,它是美国Microsoft公司开发的Microsoft Visual Studio 套件中的一部分。像其他可视化集成开发环境一样,Visual C+集程序的代码编辑、编译、连接和调试等功能于一体,给编程人员提供了一个完整方便的开发界面和许多有效的辅助开发工具。Visual C+的应用程序向导可以以很大一部分类型的程序提供框架代码,用户不用书写程序代码,只需按几个按钮就可以生成一些完整的可以运行的程序。Visual C+具有以下优点:1)面向对象、可视化开发。提供了面向对象的应用程序框架MFC(Microsoft Foundation Class:微软基础类库),大大简化了程序员的编程工作,提高了模块的可重用性。Visual C+还提供了基于CASE技术的可视化软件自动生成和维护工具AppWizard、ClassWizard、Visual Studio、WizardBar等,帮助用户直观的、可视地设计程序的用户界面,可以方便的编写和管理各种类,维护程序源代码,从而提高了开发效率。用户可以简单而容易地使用C/C+编程。2)众多的开发商支持以及业已成为工业标准的MFC类库。MFC类库已经成为事实上的工业标准类库,得到了众多开发商和软件开发工具的支持;另外,由于众多的开发商都采用Visual C+进行软件开发,这样用Visual C+开发的程序就与别的应用软件有许多相似之处,易于学习和使用。 3)Visual C+封装了Windows的API(应用程序接口)函数、USER、KERNEL、GDI函数,帮助我们弄清了许多函数的组织方法,隐去了创建、维护窗口的许多复杂的例行工作,简化了编程。2)ADO(ActiveX Data Object)ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。32. SQL主要语法 SQL SERVER 提供了关系数据库的查询语言SQL(Structured Query Language),是一种非常口语化、既易学又易懂的语法。此一语言几乎是每个资料库系统都必须提供的,包含了资料的定义(DDL)以及资料的处理(DML)。SQL原来拼成SEQUEL,这语言的原型以“系统 R“的名字在 IBM 圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统R 的技术基础发展出来 IBM 的产品。而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以 IBM SQL 为基础的标准关连式资料语言定义。第3章 数据库设计3.1 建立E-R图 E-R图提供了表示实体性、属性和联系的方法:l 实体性:用矩形表示,矩形框内写实体名。l 属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来。l 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系连接起来。客户资料E-R图如图3-1所示备注客户姓名性别身份证号户口手机号办公电话邮箱图3-1 客户实体及属性4 3.2 SQL建立数据库及查询3.2.1 数据规范化问题 当把数据库收集在一个二维表中,往往有很多重复的数据,即冗余度大。像这样的二维表是不宜作为数据库管理的,必须进行规范化后才能使用。数据规范化理论是研究如何将一个不好的关系模型转化成为好的关系模型。规范化理论认为,关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可分为五个等级,分别称为第一范式(1NF),第二范式(2NF)第五范式(5NF),通常解决一般性问题时,只要把数据规范到第三范式(3NF)标准就可满足需要,不是规范化等级越高越好。下面给出第一、第二和第三范式的条件:第一范式(1NF):如果关系R的所有属性都是不可再分的数据项,则称该关系为第一范式。记作R属于1NF。第二范式(2NF):若关系R属于1NF,且它的每一非主属性都完全依赖与关键字,则称R属于第二范式。记作R属于2NF。第三范式(3NF):若关系R属于2NF,且每一非主属性都不传递依赖于关键字,则称R属于第三范式。记作R属于3NF。运用SQL server 2000新建一个数据库,客户管理所有客户信息的数据都保存在这个数据库中。53.2.2设计表的结构表customs 3-2列名列名数据类型宽度是否为空客户姓名(主键)Cus_namevarchar50No性别Cus_Sexvarchar4Yes身份证号Cus_IDvarchar20Yes户口所在地Hukouvarchar100Yes手机号码Mobilevarchar30Yes办公电话Office_phonevarchar30Yes邮箱Emailvarchar20Yes备注信息Remarkvarchar200Yes 4.2.3 SQL建立数据库和表:create database Customcreate table customs( Cus_name Varchar(50) primary key, Cus_Sex Varchar(4),Cus_ID Varchar(20),Hukou Varchar(100),Mobile Varchar(30),Office_phone Varchar(30),Email Varchar(20),Remark Varchar(200), );insert into 6customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(欧阳丽,女,52240119809231217,毕节0857-8222222,bijiexj,com,NULL);insert into customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(吴维相,男,522425198892318188,毕节0857-8266666,bijiewwx,com,NULL);insert into customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(徐进,男,522401198892312176,毕节0857-8888888,bijiexj,com,NULL);insert into customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(陈云春,男,52240198992312122,六盘水0858-8666666,,NULL);insert into customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(陈真秀,女,52240198992377100,六盘水0858-86686866,,NULL);insert into customs(Cus_name,Cus_Sex,Cus_ID,Hukou,Mobile,Office_phone,Email,Remark)values(张成明,男,52240198992522222,贵阳0857-8899999,,NULL);73.2.4 SQL查询及结果:select Cus_name 客户名,Cus_Sex 性别,Cus_ID 身份证号,Hukou 户口所在地,Mobile 手机号码,Office_phone 办公电话E,Email 邮箱,Remark 备注 from customs3.3 ADO方式连接数据库的类实现#include StdAfx.h#importF:VC+.6.0.SP6VC6CNSHAREDADOmsado15.dllno_namespace rename(EOF,adoEOF)rename(EOF,adoEOF)class ADOConnpublic:_ConnectionPtr m_pConnection;/指向Connection对象的指针_RecordsetPtr m_pRecordset;/指向Recordset对象的指针public:ADOConn()virtual ADOConn()void OnInitADOConn();/初始化连接数据库8_RecordsetPtr&GetRecordset(_bstr_t bstrSQL);/执行查BOOL ExecuteSQL(_bstr_t bstrSQL);/执行SQL语句Insert Update_variant_tvoid ExitConnect();void ADOConn:OnInitADOConn()/初始化一个连接数据库:CoInitialize(NULL);/初始化OLE/COM库环境try/创建Connection对象m_pConnection.CreateInstance(ADODB.Connection);/设置连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False; Initial Catalog=Custom; Data Source=local;m_pConnection-Open(strConnect,adModeUnknown); catch(_com_error e)/捕捉异常9AfxMessageBox(e.Description();/显示错误信息_RecordsetPtr& ADOConn:GetRecordset(_bstr_t bstrSQL)/执行数据库查询try /连接数据库,如果Connection对象为空,则重新连接数据库if(m_pConnection=NULL)OnInitADOConn();m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error e)AfxMessageBox(e.Description();return m_pRecordset;/返回记录集 10BOOL ADOConn:ExecuteSQL (_bstr_t bstrSQL)/执行SQL语句tryif(m_pConnection=NULL)OnInitADOConn();/Connection对象的Execute方法:/(_bstr_tCommandText,VARIANT*RecordsAffected,longOptions)/其中CommandText是命令字符串,通常是SQL命令/参数RecordsAffected是操作完成后所影响的行数/参数Options表示CommandText的类型:adCmdText文本/命令,adCmdTable表名;adCmdProc存储过程;/adCmdUnkown未知m_pConnection-Execute (bstrSQL,NULL,adCmdText);return true; catch(_com_error e)AfxMessageBox(e.Description();return false; 11void ADOConn:ExitConnect()/断开与数据库的连接if(m_pRecordset!=NULL)m_pRecordset-Close();m_pConnection-Close();:CoUninitialize();/关闭OLE/COM库并释放资源class customs/创建对象客户customs类private: int Cus_ID;CString Cus_name;CString Cus_Sex;CString Hukou;CString Mobile;int Office_phone;CString Email;CString Remark;public:customs();virtual customs()/设置和读取成员变量值 12int GetCus_ID();void SetCus_ID(int vCusId);CString GetCus_name();void SetCus_nam(CString vCusname);CString GetCus_Sex();void SetCus_Sex(CString vSex);CString GetEmail();void SetEmail(CString vEmail);CString GetRemark();void SetRemark(CString vRemark);int GetOffice_phone();void SetOffice_phone(int vphone);CString GetHukou();void SetHukou(CString vHukou);CString GetMobile();void SetMobile(CString vMobile);void SetCus_name(CString vcusName);/数据库操作void sql_insert();void sql_update(CString cCus_name);void sql_delete(CString Cus_name);13void GetData(CString cCus_name);/根据客户名字读取所有字段;customs:customs()Cus_ID=0;Cus_name=;Cus_Sex=;Hukou=;Office_phone=0;Mobile=;Email=;Remark=;/设置和读取成员变量值int customs:GetCus_ID() return Cus_ID;void customs:SetCus_ID(int vcusId)Cus_ID=vcusId; 14CString customs:GetCus_name()return Cus_name;void customs:SetCus_name(CString vCusName)Cus_name=vCusName;CString customs:GetCus_Sex()/获取Sex(性别)变量return Cus_Sex;void customs:SetCus_Sex(CString vSex)Cus_Sex=vSex;CString customs:GetHukou()/获取HuKou(户口)变量return Hukou;15void customs:SetHukou(CString vHukou)Hukou=vHukou; int customs:GetOffice_phone()/获取Office_phone(办公电话)变量return Office_phone;void customs:SetOffice_phone(int vOffice_phone)Office_phone=vOffice_phone;CString customs:GetEmail()/获取Email(邮箱)变量return Email;void customs:SetEmail(CString vEmail)Email=vEmail; 16CString customs:GetRemark()/获取Remark(备注)变量return Remark;void customs:SetRemark(CString vRemark)Remark=vRemark;CString customs:GetMobile()/获取Mobile(手机号)变量return Mobile;void customs:SetMobile(CString vMobile)Mobile=vMobile;void customs:sql_insert()/函数sql_insert的实现ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/设置查询语句 17CString strRemark;strRemark.Format(%s,Remark);_bstr_t vSQL;vSQL=INSERT INTO customs(Cus_ID,Cus_name,Hukou,Cus_Sex,Mobile,Remark,Office_phone,Email) VALUES(1,+Cus_name+,+Hukou+,+Cus_Sex+,+Mobile+,+strRemark+,1,+Email+);/执行INSERT语句m_AdoConn.ExecuteSQL(vSQL);m_AdoConn.ExitConnect();/断开与数据库的连接void customs:sql_update(CString cCus_name)/函数sql_update的/实现ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();CString strRemark;strRemark.Format(%s,strRemark);_bstr_t vSQL;char sql100;18strcpy(sql, );strcpy(sql, UPDATE customs SET Cus_ID=);char temp10;itoa(Cus_ID, temp, 10);strcat(sql, temp);strcat(sql, ,Hukou=);strcat(sql, Hukou);strcat(sql, ,Cus_Sex=);strcat(sql, Cus_Sex);strcat(sql, ,Mobile=);strcat(sql, Mobile);strcat(sql, ,Remark=);strcat(sql, Remark);/strcat(sql, ,Office_phone=);/strcat(sql, Office_phone);itoa(Office_phone,temp,10);strcat(sql, ,Email=);strcat(sql, Email);/itoa(Cus_name, temp, 10); strcat(sql,Cus_name=); strcat(sql,Cus_name);19strcat(sql, WHERE Cus_name =);strcat(sql, temp);/vSQL=UPDATECustoms SETCus_ID=+Cus_ID+,Hukou=+Hukou+,Cus_Sex=+Cus_Sex+,Mobile=+Mobile+,Remark=+Remark+,Cus_name=+Cus_name+,Email=+Email+WHERE Office_phone=+Office_phone;m_AdoConn.ExecuteSQL(vSQL);m_AdoConn.ExitConnect();void customs:sql_delete(CString cCus_name) /函数sql_delete的/实现ADOConn m_AdoConn;m_AdoConn.OnInitADOConn(); /设置DELETE语句_bstr_t vSQL;vSQL=DELETE FROM customs WHERE Cus_name=+cCus_name;/执行DELETE语句m_AdoConn.ExecuteSQL(vSQL); 20m_AdoConn.ExitConnect();void customs:GetData(CString cCusID)/函数GetData的实现ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();_bstr_t vSQL;vSQL=SELECT * FROM customs WHERE Cus_ID=+cCusID;/执行SELETE语句_RecordsetPtr m_pRecordset;m_pRecordset=m_AdoConn.GetRecordset(vSQL);if(m_pRecordset-adoEOF=1)customs();elseCus_ID=atoi(cCusID);Cus_name=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(Cus_name);21Cus_Sex=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect( Cus_Sex);Hukou=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(Hukou);Mobile=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(Mobile);Email=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(Email);Remark=(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乌鲁木齐拆迁工程合同范本
- 装修时拆除合同范本
- 移栽树木合同(标准版)
- 广东租房合同范本
- 景区布置租赁合同范本
- 安全工程师特种作业安全试题和答案
- 承包消防安保合同范本
- 土地股份合同范本
- 保洁服装购置合同范本
- 销售粉煤合同范本
- 八年级数学平面直角坐标系测试题
- GB/T 5453-1997纺织品织物透气性的测定
- GB/T 28575-2020YE3系列(IP55)三相异步电动机技术条件(机座号63~355)
- 储油罐有限空间作业安全技术措施表
- 传媒公司员工劳动合同(标准版)
- 缺血性肠病完整版本课件
- 《室内空间设计》第三章课件
- 学习《北方民族大学学生违纪处分规定(修订)》课件
- 设备出厂检验报告
- Matlab-Simulink模型检查验证与测试
- 单位减少存档人员表
评论
0/150
提交评论