数据结构课程设计 2.docx
《数据结构课程设计 2.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计 2.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构课程设计2
安徽省巢湖学院计算机与信息工程学院
课程设计报告
课程名称:
《数据结构》
课题名称:
通讯录的制作
专业:
计算机科学与技术
班级:
学号:
姓名:
联系方式:
指导教师:
2011年11月21日
目录
1、数据结构课程设计任务书1
1.1、题目1
1.2、要求1
2、总体设计1
2.1、功能模块设计1
2.2、所有功能模块的流程图1
3、详细设计1
3.1、程序中所采用的数据结构及存储结构的说明1
4、调试与测试:
2
5、源程序清单和执行结果4
6、C程序设计总结8
7、参考文献8
1、数据结构课程设计任务书
1.1、题目
通讯录的制作
1.2、要求
【模块要求】
第一个模块——主函数main()的功能是:
根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:
显示英文提示选单。
第三个模块——Quit()的功能是:
退出选单。
第四个模块——Create()的功能是:
创建新的通讯录。
第五个模块——Add()的功能是:
在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块——Delete()的功能是:
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块——List()的功能是:
显示通讯录中的所有记录。
;
【设计要求】
1)每条信息至包含:
姓名(NAME)、性别(GENDER)、电话(TEL)、城市(CITY)邮编(EIP)几项。
2)作为一个完整的系统,应具有友好的界面和较强的容错能力;
2、总体设计
2.1、功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如下:
2.2、所有功能模块的流程图
3、详细设计
模块功能说明:
如函数功能、入口及出口参数说明,函数调用关系描述等;
3.1、程序中所采用的数据结构及存储结构的说明
classBASEDATA
{
public:
HRESULTCreateData(void);
friendclassADDRESSBOOK;
private:
INTCode;//邮政编码
BOOLbGender;//性别
INTTel;//电话号码
stringsName;//姓名
stringsCity;//城市
};//BaseData
子存储结构:
classADDRESSBOOK
{
public:
ADDRESSBOOK(VOID);//constructor
VOIDMenu(VOID);
VOIDQuit(VOID);
HRESULTCreate(VOID);
HRESULTAdd(VOID);
vector:
:
size_typeFind(VOID);
HRESULTAlter(VOID);
HRESULTDelete(VOID);
VOIDList(VOID);
private:
vectorData;//基本存储结构容器
};//AddressBook
3.2、算法的设计思想
BASEDATA为基本的存储结构,包含最为基本的数据类型。
子存储结构通过友元访问基本存储结构的私有成员,调用接口修改该和创建元素。
4、调试与测试:
F10启动调试,编译器开始编译源码,编译成功,排除语法错误,现逐块执行语句。
显示<>DataBasehasbeeninitialized!
表明数据结构已经创建完毕,自动窗口显示变量为:
继续逐块执行,输出菜单选项;
逐个功能测试,查看是否有中断出现。
4.2、测试结果的分析与讨论:
追加功能:
查找功能:
修改功能:
列表功能:
删除功能:
4.3、测试过程中遇到的主要问题及采取的解决措施:
本人逻辑很好,已在写码前构思完整,基本没有测试问题(语法/逻辑)。
对于本程序速度会较慢的问题,本人已经使用Release优化,并设置多线程(/MT)将需要的DLL编译至exe文件中,使得不含开发环境的计算机可以执行本程序。
5、源程序清单和执行结果
//--------------------------------------------------------
//项目(ITEM):
通讯录AddressBook
//时间(TIME):
2011/11/21
//作者(WIRTER):
赵洋(ElanChao),方圆
//环境(COMPILEENVIRONMENT):
MicrosoftVisualStudio2010,
//Windows7ProfessionalServicePark1x64
//--------------------------------------------------------
#include
#include
#include
#include
usingnamespacestd;
classBASEDATA
{
public:
HRESULTCreateData(void)
{
stringtmp;
cout<<"<>Enterthedatayouwant"<cout<<"<>Order:
Name,Gender,Tel,City,Code;"<cin>>sName>>tmp>>Tel>>sCity>>Code;
if(tmp=="man")
bGender=1;
else
bGender=0;
cout<<returnS_OK;
}
friendclassADDRESSBOOK;
private:
INTCode;
BOOLbGender;
INTTel;
stringsName;
stringsCity;
};//BaseData
classADDRESSBOOK
{
public:
ADDRESSBOOK(VOID)//constructor
{cout<<"<>DataBasehasbeeninitialized!
"<VOIDMenu(VOID);
VOIDQuit(VOID);
HRESULTCreate(VOID);
HRESULTAdd(VOID);
vector:
:
size_typeFind(VOID);
HRESULTAlter(VOID);
HRESULTDelete(VOID);
VOIDList(VOID);
private:
vectorData;
};//AddressBook
VOIDADDRESSBOOK:
:
Menu(VOID)
{
cout<<"<>Enterthekeys:
"<cout<<"-------------------------------------------"<cout<<"->CREATE
(2);"<cout<<"->ADD(3);"<cout<<"->FIND(4);"<cout<<"->ALTER(5);"<cout<<"->DELETE(6);"<cout<<"->LIST(7);"<cout<<"->QUIT(8);"<cout<<"-------------------------------------------"<}
VOIDADDRESSBOOK:
:
Quit(VOID)
{
exit(0);
}
HRESULTADDRESSBOOK:
:
Create(VOID)
{
cout<<"->Warning:
Clearallthedata!
"<Data.clear();
cout<<"->Information:
Createnewdata
(2)!
"<returnS_OK;
}
HRESULTADDRESSBOOK:
:
Add(VOID)
{
BASEDATATmp;
if(SUCCEEDED(Tmp.CreateData()))
{
Data.push_back(Tmp);
returnS_OK;
}
else
returnE_FAIL;
}
vector:
:
size_typeADDRESSBOOK:
:
Find(VOID)
{
stringtmp;
cout<<"->PleaseEnterthename:
"<cin>>tmp;
for(vector:
:
size_typei=0;
i!
=Data.size();++i)
{
if(tmp==Data[i].sName)
{
cout<<<","<if(Data[i].bGender==1)
cout<<"man"<else
cout<<"womam"<returni;
}
}
cout<<"->Warning:
Don'texist!
"<returnData.size();
}
HRESULTADDRESSBOOK:
:
Alter(VOID)
{
vector:
:
size_typeiter=Find();
if(iter==Data.size())
returnE_FAIL;
else
{
BASEDATAtmp;
tmp.CreateData();
Data[iter]=tmp;
returnS_OK;
}
}
HRESULTADDRESSBOOK:
:
Delete(VOID)
{
vector:
:
size_typeiter=Find();
if(iter==Data.size())
returnE_FAIL;
else
{
Data[iter].bGender=1;
Data[iter].Code=0;
Data[iter].sCity="default";
Data[iter].sName="default";
Data[iter].Tel=0;
}
cout<<"->Delete!
"<returnS_OK;
}
VOIDADDRESSBOOK:
:
List(VOID)
{
if(Data.size()==0)
{
cout<<"Warning->NoData!
"<}
else
for(vector:
:
size_typei=0;i!
=Data.size();++i)
{
cout<
";
cout<<<","<if(Data[i].bGender==1)
cout<<"man"<else
cout<<"womam"<}
}
//--------------------------------------------------------
//DESC:
GlobalVariable
//--------------------------------------------------------
ADDRESSBOOKtest;
VOIDKeyDown(VOID)
{
INTtmp;
cin>>tmp;
switch(tmp)
{
case1:
test.Menu();break;//one
case2:
test.Create();break;//two
case3:
test.Add();break;//three
case4:
test.Find();break;//four
case5:
test.Alter();break;//five
case6:
test.Delete();break;//six
case7:
test.List();break;//seven
case8:
test.Quit();break;//eight
}
}
VOIDOperation(VOID)
{
for(;;)
{
KeyDown();
cout<<"-------------------------------------------"<cout<<"<>Operationcompleted!
\n<>Now,gotothemanu:
"<cout<<"-------------------------------------------"<cout<<"<>Enterthekeys:
"<}
}
//---------------------------------------------------------
//DESC:
Main
//---------------------------------------------------------
INTmain(INTargc,CHAR**argv)
{
test.Menu();
Operation();
system("pause");
return0;
}
6、C程序设计总结
时代的发展使得程序更加多用途化,而良好的编译代码习惯将有助于程序开发的进度。
编写代码只是程序设计的一小部分,关键在于前期的思维。
良好的数据结构使得程序效率极大提高和适应多种数据类型,缜密的思考方式有助于减少程序本身的bug,而熟悉debug调试和断点以及监视,将协助开发人员快速找到错误所在。
对于程序在不同windows平台的运行,理解程序和各种DLL之间的关系至关重要。
7、参考文献
[1][US]KennethA.Reek,PointersonC,北京:
人民邮电出版社
[2][US]StanleyB.Lippman,JoséeLajoie,BarbaraE.Moo,C++Primer,北京:
人民邮电出版社
[3]GOOGLESEARCH