通讯录实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;}
此处是查找功能的代码: