C++课程设计《通讯录管理系统》.docx
《C++课程设计《通讯录管理系统》.docx》由会员分享,可在线阅读,更多相关《C++课程设计《通讯录管理系统》.docx(15页珍藏版)》请在冰豆网上搜索。
![C++课程设计《通讯录管理系统》.docx](https://file1.bdocx.com/fileroot1/2023-2/6/bb9678ac-320d-4f8e-864b-bf21f6bb0835/bb9678ac-320d-4f8e-864b-bf21f6bb08351.gif)
C++课程设计《通讯录管理系统》
课程设计说明书〔论文〕
课程名称C++程序设计实践
题目通信录管理系统
专业软件工程班级
学号姓名xx
起止日期2013.12.23--2013.27
指导教师赵新慧成绩
某某石油化工大学计算机与通信工程学院
摘要
本次课程设计任务是通过编写一个通信录管理系统,学习用Visual C++ 6.0开发简单的管理系统。
采用Visual C++ 6.0软件为主要开发工具。
巩固和加深学生对C++课程的根本知识的理解和掌握,掌握C++编程和程序调试的根本技能,利用C++进展简单软件设计的根本思路和方法,提高运用C++解决实际问题的能力,掌握书写程序设计说明文档的能力使用计算机进展信息管理。
实现通信录的管理功能〔添加、删除、排序〕、按某某查询的功能,以与把联系人资料保存在文件中,将文件中内容读出来。
使用计算机进展系统管理,不仅提高了工作效率,而且大大提高了其安全性,尤其对于复杂的信息管理,计算机能充分地发挥它的优越性,通信录管理系统是每个人不可缺少的局部,在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VisualC++,在程序设计中,运用了面向对象解决问题的方法。
程序通过调试运行,初步实现了设计目标。
Abstract
Thecurriculumdesigntaskisthroughthepreparationofastudentachievementrankingmanagementsystem,learningmanagementsystemwithVisualC++6todevelopsimple.UsingVisualC++6softwareasthemaindevelopmenttool.ToconsolidateanddeepenthestudentsthebasicknowledgeofC++courseofunderstandingandmaster,masterthebasicskillsofC++programming,thebasicideaandmethodofsoftwaredesignusingC++,toimprovetheabilitytouseC++tosolvepracticalproblems,tomastertheabilitytowriteprogramdesignexposition.Theuseofputerinformationmanagement.Realizationgrademanagementfunctions(add,delete,sort),statisticalfunctions(thehighestscore,thelowestscore,averagescore,passrate),studentID,name,orthenameofcoursequeryresultsfunction,aswellasthestudents'scoresarestoredinthefile.Theuseofputermanagementsystem,notonlyimprovetheworkefficiency,butalsogreatlyimprovesthesafety,particularlyfortheplicatedinformationmanagement,putercangivefullplaytoitsadvantages,studentachievementmanagementsystemisanindispensablepartofaneducationunit,itscontentbutforthepolicymakersandschoolmanagersimportant.Inthecurriculumdesign,systemdevelopmentplatformforWindowsXP,theprogramminglanguageusingVisualC++,intheprogramdesign,usingobjectorientedmethodtosolvetheproblem.Programbydebuggingandrunning,initiallytoachievethedesigngoals.
指导教师评语:
成绩:
指导教师〔签字〕:
年月日
1设计要求
通信录管理系统
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进展的一次全面的综合练习。
本课程设计的目的和任务:
〔1〕巩固和加深学生对C++课程的根本知识的理解和掌握;〔2〕掌握C++编程和程序调试的根本技能;〔3〕利用C++进展简单软件设计的根本思路和方法;〔4〕提高运用C++解决实际问题的能力;〔5〕掌握书写程序设计说明文档的能力。
以本班同学的具体数据为背景,设计一个本班同学通讯录。
实现功能:
1) 通讯录编辑〔添加、删除〕。
2) 按不同的项进展查找。
3) 对已存在的通讯录按不同的项排序。
4) 将通讯录写入文件
5) 从文件读入通讯录
备注:
通讯录至少应该有以下数据项:
某某,地址,,,。
2设计原理和技术
在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VisualC++,在程序设计,采用C++编程语言编写程序,实现各项功能。
3模块设计与分析
3.1添加模块 主要功能是用来添加联系人资料。
如果系统有保存联系人资料的情况下,想查看的话,可以直接从系统文件中调用输出,在成功添加联系人资料后,就可以对该联系人进展以上的操作。
3.2显示模块在程序运行中,通过输入相应选择项,把联系人信息显示在屏幕上。
3.3删除模块主要功能是用来删除联系人资料。
在系统保存联系人资料的前提下,想删除某联系人的资料,可以输入该联系人某某查找该联系人资料后,就可以删除了。
与时对系统进展更新,删除一些没用的信息,可以使系统更加优化 。
3.4查询模块主要功能是用来查找联系人资料。
在系统保存了某联系人资料的前提下,想要查找该联系人资料,可以输入该联系人某某,这样系统就会显示该联系人资料等信息,假如系统中不存在如此提示用户该联系人不存在。
3.5排序模块主要功能是用来对联系人的资料按某某进展排序。
便于用户在拨打时易于查找一些联系人。
3.6读入文件模块 主要功能是用来将联系人资料读入文件中保存起来进展备份,防止以后丢失。
3.7从文件中读出模块主要功能是用来将联系人资料从文件中直接读取到屏幕上,便于查看。
4程序源代码
#include
#include
usingnamespacestd;
#include
#defineN100
#defineSIZE20
structstudent//定义结构体来存储联系人的信息
{
charname[SIZE];
chartel[SIZE];
charadd[SIZE];
charpos[SIZE];
charEmail[SIZE];
};
intcreat(structstudent*p,intn)//创建通讯录
{
intm,i=0;
cout<<"添加前的记录,共有:
"<cout<<"记录号"<<"\t"<<"某某"<<"\t"<<""<<"\t"<<"地址"<<"\t"<<""<<"\t"<<""<while((iname,"")!
=0))
{
cout<<""<name<<"\t\t"<tel<<"\t\t"<add<<"\t\t"<pos<<"\t\t"<Email<i++;
p++;
}
cout<<"请输入要添加的学生人数:
";
cin>>m;
i=0;
while(i{
cout<<"**********************"<cout<<"请输入第"<
cout<<"某某:
";cin>>p->name;
cout<<":
";cin>>p->tel;
cout<<"地址:
";cin>>p->add;
cout<<":
";cin>>p->pos;
cout<<":
";cin>>p->Email;\
cout<<"**********************"<cout<p++;
i++;
}
returnm+n;
}
voidprint(structstudent*p,intn)//输出通讯录的信息
{
inti=0;
if(i==n)
cout<<"************通信录中无联系人***********"<else
{
cout<<"记录号"<<"\t"<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<while(i{
cout<<""<name<<"\t"<tel<<"\t"<add<<"\t"<pos<<"\t"<Email<i++;
p++;
}
}
}
intadd(structstudent*p,intn)//增加新的联系人
{
inti=0;
charc;
structstudentt,*q;
cout<<"添加前的记录:
"<cout<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<q=p;
while(i{
cout<name<<"\t"<tel<<"\t"<add<<"\t"<pos<<"\t"<Email<i++;
q++;
}
do{
cout<<"请输入新记录的某某:
";cin>>t.name;
cout<<"请输入新记录的:
";cin>>t.tel;
cout<<"请输入新记录的地址:
";cin>>t.add;
cout<<"请输入新记录的:
";cin>>t.pos;
cout<<"请输入新记录的:
";cin>>t.Email;
for(i=0;iif(strcmp(t.name,(p+i)->name)==0)
{
cout<<"某某已存在,要重新输入吗(Y/N)?
"<cin>>c;
if(c=='n'||c=='N')//当用户输入N时,跳出增加操作
break;
}
if(i==n)
{
*(p+i)=t;
cout<<"添加后的记录为:
"<cout<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<for(i=0;i{
cout<<(p+i)->name<<"\t"<<(p+i)->tel<<"\t"<<(p+i)->add<<"\t"<<(p+i)->pos<<"\t"<<(p+i)->Email<}
}
}while(c=='y'||c=='Y');
returnn+1;
}
intdel(structstudent*p,intn)//删除联系人
{
inti=0,x;
if(i==n)
cout<<"************通信录中无联系人***********"<else
{
charname[10];
cout<<"请输入要删除的联系人的某某:
";cin>>name;
for(i=0;iif(strcmp(name,(p+i)->name)==0)
break;
if(i{
for(x=i;xp[x]=p[x+1];//依次将后面的联系人资料往前移
cout<<"删除后的记录:
"<cout<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<for(i=0;icout<
returnn-1;
}
else
cout<<"********无此联系人*********"<}
returnn;
}
voidsearch(structstudent*p,intn)//查找联系人
{
inti=0;
charname[20];
if(i==n)
cout<<"************通信录中无联系人***********"<else
{
cout<<"请输入要查找的联系人的某某:
";cin>>name;
for(i=0;iif(strcmp(name,(p+i)->name)==0)
{
cout<
break;
}
if(i==n)
cout<<"********无此联系人*********"<}
}
voidsort(structstudent*p,intn)//对联系人排序
{
structstudenttemp;
inti=0,j;
if(i==n)
cout<<"*******通信录中没有联系人可排序*******"<else
{
for(i=0;i{
for(j=0;j{
if(strcmp(p[j].name,p[j+1].name)>0)
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
cout<<"排序后的结果为:
"<cout<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<for(i=0;icout<
}
}
voidoutput_datafile(structstudent*p,intn)//输出到文件
{
fstreamiofile;
iofile.open("D:
\\student.txt",ios:
:
out);
for(inti=0;iiofile<
iofile.close();
cout<<"outputfilesuccess!
!
!
!
!
!
"<
}
voiddatafile_screen(structstudent*p,intn)//从文件输出到屏幕
{
fstreamiofile;
iofile.open("D:
\\student.txt",ios:
:
in|ios:
:
binary);
cout<<"某某"<<"\t"<<""<<"\t\t"<<"地址"<<"\t"<<""<<"\t"<<""<iofile>>p->name;
while(!
iofile.eof())
{
iofile>>p->tel>>p->add>>p->pos>>p->Email;
cout<name<<"\t"<tel<<"\t"<add<<"\t"<pos<<"\t"<Email<p++;
iofile>>p->name;
}
iofile.close();
}
voidfunction(void)
{
structstudentrecord[N];
inttotal=0;
intx;
cout<<"\t\t************************************"<cout<<"\t\t欢迎登陆通信录管理系统"<cout<cout<<"\t\t1创建联系人2输出通信录"<cout<<"\t\t3增加联系人5查找联系人"<cout<<"\t\t4删除联系人"<cout<<"\t\t6排序"<cout<<"\t\t7输入到文件"<cout<<"\t\t8从文件输出到屏幕"<cout<<"\t\t9退出"<cout<<"\t\t************************************"<do{
cout<<"******************"<cout<<"请输入你的选择:
";
cin>>x;
cout<<"******************"<switch(x)
{
case1:
total=creat(record,total);break;
case2:
print(record,total);break;
case3:
total=add(record,total);break;
case4:
total=del(record,total);break;
case5:
search(record,total);break;
case6:
sort(record,total);break;
case7:
output_datafile(record,total);break;
case8:
datafile_screen(record,total);break;
case9:
cout<<"\t\t************************************"<cout<<"\t\t谢谢使用通信录管理系统"<cout<<"\t\t再见!
!
!
!
!
"<cout<<"\t\t************************************"<exit(0);
}
}while
(1);
}
voidmain()
{
function();
}
5功能测试
。
从文件中读出模块
实验中遇到的问题与解决方法
在实现添加功能的过程中由于用户可能输入一样的人名,经过一个判断语句后,如果输入了一样的人名如此提示用户联系人已存在,是否要重新输入,表现一个人性化的通讯录管理系统。
在实现删除的过程中由于没有注意删除联系人后会出现一个空的,导致后面的输出时会出现乱码,经过将后面的依次向前移动,使得该问题得到解决。
在实现查找的过程中由于采用的名字查询,而附设的一个名字数组只有10个大小的空间,本来存在的联系人在查询时系统提示所要查询的联系人信息不存在,经过修改之后成功查询。
6总结
本学生通信录管理系统由7个模块组成,每个模块相互联系又相互独立。
这个通信录管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。
只能实现通信录管理系统最根本的功能,可以进展简单的输入、输出联系人资料,查询和修改联系人信息,能直接从文件中读入数据,能对系统所作的修改、操作进展保存等。
在做之前就看了一些这方面的书,多多少少有一定的了解,使自己在进展的过程中没有胆怯,没有遇到太大的麻烦。
这次课程设计,我感到书本上的东西还是很重要的,课程设计,就是离不开书本。
在设计过程中,我运用了很的循环、排序,这就要求自己要熟练的掌握for,switch语句,以与各种排序,包括冒泡、选择排序。
另外,通过这次课程设计,我发现文件自己掌握的还不是很熟练,但是随着课程设计的深入,我发现文件对今后的设计十分有用,因此自己一定要对文件多做深入的研究。
这次课程设计,自己熟悉了很多的东西,在编写程序的过程中,自己发现了很多的问题,并通过查阅资料,反复实践予以解决,这就使得自己发现问题、解决问题的能力得到了提升。
参考文献
《C++程序设计实践指导书》