通讯录实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安徽理工大学

数据库系统概论课程设计说明书

题目: 通讯录系统

院系:计算机科学与工程学院

专业班级:电子信息技术及仪器11-1班

学号: 2011302807

学生姓名:周松林

指导教师:胡胜利

2013年 06月 10日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

2013年03月20日安徽理工大学课程设计(论文)成绩评定表

目录

1 需求分析 (1)

2 总体设计 (2)

2.1数据库设计 (2)

2.1.1通讯录系统的数据字典 (2)

2.1.2概念结构设计 (2)

2.1.3通讯录数据库逻辑结构设计 (3)

2.2通讯录数据库实现 (3)

3 详细设计 (4)

3.1建立数据库 (4)

3.2进行数据库连接 (5)

3.3程序代码 (9)

4 总结 (15)

参考文献 (16)

1 需求分析

设计通讯录系统的总体目标:利用所学的VC++和数据库系统的相关知识,设计出具有一定功能的通讯录系统。在本次程序设计,我是在SQLsever中建立相应的表,然后应用ODBC将数据库与VC++链接起。

通讯录的基本功能如下:

(1)具有查找功能。编写查找程序代码,用户根据自己需要,通过VC++功能界面查找所需内容。

(2)具有删除功能。编写删除程序代码,通过VC++功能界面删除数据库中的记录。

(3)具有编辑功能。编写相应编辑程序代码,实现对数据库中的记录的修改,达到用户目的。

(4)具有插入功能。编写相应插入程序代码,实现对数据库进行插入记录功能。

2 总体设计

2.1数据库设计

2.1.1通讯录系统的数据字典

由于本次课程设计的内容是设计通讯录系统,根据用户需求,建立以下联系人基本信息表,如下表所示。

表2-1联系人基本信息

2.1.2概念结构设计

通过需求分析构造基本表,确定了通讯录的数据项。然后将需求分析得到的用户需求抽象为信息结构,画出E-R图。如下图所示:

图2-1联系人基本信息

2.1.3通讯录数据库逻辑结构设计

构造通讯录系统模块的逻辑结构如图2-2下:

联系人(姓名,性别,年龄,手机号码,家庭住址)

图2-2联系人属性

2.2通讯录数据库实现

根据上述我先在SQL sever中建立好数据库,然后以VC++(6.0)为开发平台,利用ODBC将数据库与VC++链接起来,在VC++(6.0)MFC中设计功能界面,通过功能键对数据库进行查找,删除,编辑,添加操作。实现通讯录系统的基本操作,满足用户的基本要求。

3 详细设计

3.1建立数据库

在本次课程设计,我应用SQL server2005软件建立通讯录数据库,通讯录数据库包含联系人基本信息表。首先先建立数据库,如下图3-1所示。

图3-1 在SQL server2005中建立通讯录数据库

接着在此通讯录数据库上建立一个联系人信息基本表,其表为people表,并录入信息。具体操作如下图所示。

图3-2 在SQL server2005中用CREATE建立联系人基本信息表

图3-3 在数据库中形成people基本表

图3-4 正在将联系人“三三”录入数据库。

图3-5 数据库中存有的联系人

3.2进行数据库连接

建好数据库后,用ODBC进行链接数据库。在控制面板里找管理工具,双击管理工具,在里面找数据源(ODBC)进行数据库的链接,如下图3-6所示。

图3-6采用ODBC进行与数据库链接

然后在VC++平台上设计功能界面,编写相应的程序。在这次课程设计中我选用MFC基本对话框来完成相应功能。具体步骤如图所示。

1.在VC++平台上,选用MFC基本对话框,建好基本对话框,要手动新建一个类,它是由CRecordSet派生而来。CRecordset类封装了大量操作数据库的函数,支持查询,存取,更新数据库操作。因此要新建一个继承CRecordset的类。如图3-7所示。

图3-7 新建继承CRecordSet的类

2.设计功能界面,进行功能测试,如图3-8,图3-9,图3-10,图3-11,图3-12所示。

图3-8 设计登陆主界面

图3-9含有添加,编辑,删除,查找基本操作的功能主界面

图3-10 删除功能主界面

图3-11进行联系人信息修改操作

图3-12对通讯录系统的记录进行查询

3.3程序代码

初始化,将数据库打开的代码:

BOOL CSongDlg::OnInitDialog() {

CDialog::OnInitDialog();

p->Open(AFX_DB_USE_DEFAULT_TYPE);

CBitmap hbmp;

HBITMAP hbitmap;

CStatic *pStaic;

pStaic=(CStatic*)GetDlgItem(IDC_BITMAP);

hbitmap=(HBITMAP)::LoadImage

(::AfxGetInstanceHandle(),p->m_Stujing,IMAGE_BITMAP,0,0,LR_LOADFROMFI LE|LR_CREATEDIBSECTION);

hbmp.Attach(hbitmap);

BITMAP bm;

hbmp.GetBitmap(&bm);

CDC dcMem;

dcMem.CreateCompatibleDC(GetDC());

CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(&hbmp);

CRect lRect;

pStaic->GetClientRect(&lRect);

lRect.NormalizeRect();

pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRec t.Height(),

&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

dcMem.SelectObject(&poldBitmap);

m_name=p->m_Sname;

m_age=p->m_Sage;

m_place=p->m_Splace;

m_phone=p->m_Sphone;

m_sex=p->m_Ssex;

UpdateData(FALSE);

return TRUE;}

此处是查找功能的代码:

相关文档
最新文档