C课程设计《通讯录管理系统》Word格式.docx
《C课程设计《通讯录管理系统》Word格式.docx》由会员分享,可在线阅读,更多相关《C课程设计《通讯录管理系统》Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
![C课程设计《通讯录管理系统》Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/c3905c90-e8d5-4aac-99ab-c610cc1cf7a0/c3905c90-e8d5-4aac-99ab-c610cc1cf7a01.gif)
5功能测试11
5.1添加功能11
5.2显示功能12
5.3删除功能12
5.4查询功能13
5.5排序功能13
5.6保存到文件的功能13
5.7从文件中读出模块14
6总结15
参考文献15
指导教师评语:
成绩:
指导教师(签字):
年月日
1设计要求
1.1设计题目
通信录管理系统
1.2设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C++课程的基本知识的理解和掌握;
(2)掌握C++编程和程序调试的基本技能;
(3)利用C++进行简单软件设计的基本思路和方法;
(4)提高运用C++解决实际问题的能力;
(5)掌握书写程序设计说明文档的能力。
1.3设计内容
以本班同学的具体数据为背景,设计一个本班同学通讯录。
实现功能:
1)?
通讯录编辑(添加、删除)。
2)?
按不同的项进行查找。
3)?
对已存在的通讯录按不同的项排序。
4)?
将通讯录写入文件
5)?
从文件读入通讯录
备注:
通讯录至少应该有以下数据项:
姓名,地址,电话,邮编,E-mail。
2设计原理和技术
在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VisualC++,在程序设计,采用C++编程语言编写程序,实现各项功能。
3模块设计与分析?
3.1添加模块?
主要功能是用来添加联系人资料。
如果系统有保存联系人资料的情况下,想查看的话,可以直接从系统文件中调用输出,在成功添加联系人资料后,就可以对该联系人进行以上的操作。
?
3.2显示模块在程序运行中,通过输入相应选择项,把联系人信息显示在屏幕上。
3.3删除模块主要功能是用来删除联系人资料。
在系统保存联系人资料的前提下,想删除某联系人的资料,可以输入该联系人姓名查找该联系人资料后,就可以删除了。
及时对系统进行更新,删除一些没用的信息,可以使系统更加优化?
。
3.4查询模块主要功能是用来查找联系人资料。
在系统保存了某联系人资料的前提下,想要查找该联系人资料,可以输入该联系人姓名,这样系统就会显示该联系人资料等信息,若系统中不存在则提示用户该联系人不存在。
3.5排序模块主要功能是用来对联系人的资料按姓名进行排序。
便于用户在拨打电话时易于查找一些联系人。
3.6读入文件模块?
主要功能是用来将联系人资料读入文件中保存起来进行备份,防止以后丢失。
3.7从文件中读出模块主要功能是用来将联系人资料从文件中直接读取到屏幕上,便于查看。
4程序源代码
#include<
iostream>
fstream>
usingnamespacestd;
string>
#defineN100
#defineSIZE20
structstudent//定义结构体来存储联系人的信息
{
charname[SIZE];
chartel[SIZE];
charadd[SIZE];
charpos[SIZE];
charEmail[SIZE];
};
intcreat(structstudent*p,intn)//创建通讯录
intm,i=0;
cout<
<
"
添加前的记录,共有:
n<
个"
endl;
记录号"
\t"
姓名"
电话"
地址"
邮编"
邮箱"
while((i<
n)&
&
(strcmp(p->
name,"
"
)!
=0))
{
cout<
i+1<
\t\t"
p->
name<
tel<
add<
pos<
Email<
i++;
p++;
}
请输入要添加的学生人数:
;
cin>
>
m;
i=0;
while(i<
m)
**********************"
请输入第"
个记录"
姓名:
name;
电话:
tel;
地址:
add;
邮编:
pos;
邮箱:
Email;
\
endl<
returnm+n;
}
voidprint(structstudent*p,intn)//输出通讯录的信息
inti=0;
if(i==n)
************通信录中无联系人***********"
else
while(i<
n)
{
cout<
i++;
p++;
}
intadd(structstudent*p,intn)//增加新的联系人
charc;
structstudentt,*q;
添加前的记录:
q=p;
{
q->
q++;
do{
请输入新记录的姓名:
t.name;
请输入新记录的电话:
t.tel;
请输入新记录的地址:
t.add;
请输入新记录的邮编:
t.pos;
请输入新记录的邮箱:
t.Email;
for(i=0;
i<
n;
i++)
if(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;
添加后的记录为:
for(i=0;
n+1;
{
cout<
(p+i)->
}
}while(c=='
y'
Y'
);
returnn+1;
intdel(structstudent*p,intn)//删除联系人
inti=0,x;
charname[10];
请输入要删除的联系人的姓名:
if(strcmp(name,(p+i)->
if(i<
for(x=i;
x<
N-1;
x++)
p[x]=p[x+1];
//依次将后面的联系人资料往前移
删除后的记录:
n-1;
p[i].name<
p[i].tel<
p[i].add<
p[i].pos<
p[i].Email<
returnn-1;
********无此联系人*********"
returnn;
voidsearch(structstudent*p,intn)//查找联系人
charname[20];
else
请输入要查找的联系人的姓名:
for(i=0;
if(strcmp(name,(p+i)->
break;
if(i==n)
voidsort(structstudent*p,intn)//对联系人排序
structstudenttemp;
inti=0,j;
*******通信录中没有联系人可排序*******"
for(j=0;
j<
n-i;
j++)
if(strcmp(p[j].name,p[j+1].name)>
0)
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
排序后的结果为:
voidoutput_datafile(structstudent*p,intn)//输出到文件
fstreamiofile;
iofile.open("
D:
\\student.txt"
ios:
:
out);
for(inti=0;
iofile<
iofile.close();
outputfilesuccess!
!
voiddatafile_screen(structstudent*p,intn)//从文件输出到屏幕
in|ios:
binary);
iofile>
while(!
iofile.eof())
iofile>
tel>
add>
pos>
voidfunction(void)
structstudentrecord[N];
inttotal=0;
intx;
\t\t************************************"
\t\t欢迎登陆通信录管理系统"
\t\t1创建联系人2输出通信录"
\t\t3增加联系人5查找联系人"
\t\t4删除联系人"
\t\t6排序"
\t\t7输入到文件"
\t\t8从文件输出到屏幕"
\t\t9退出"
******************"
请输入你的选择:
x;
switch(x)
case1:
total=creat(record,total);
break;
case2:
print(record,total);
break;
case3:
total=add(record,total);
case4:
total=del(record,total);
case5:
search(record,total);
case6:
sort(record,total);
case7:
output_datafile(record,total);
case8:
datafile_screen(record,total);
case9:
\t\t谢谢使用通信录管理系统"
\t\t再见!
exit(0);
}while
(1);
voidmain()
function();
5功能测试
5.1添加功能
。
5.2显示功能
5.3删除功能
5.4查询功能
5.5排序功能
5.6保存到文件的功能
5.7从文件中读出模块
实验中遇到的问题及解决方法
在实现添加功能的过程中由于用户可能输入相同的人名,经过一个判断语句后,如果输入了相同的人名则提示用户联系人已存在,是否要重新输入,体现一个人性化的通讯录管理系统。
在实现删除的过程中由于没有注意删除联系人后会出现一个空的,导致后面的输出时会出现乱码,经过将后面的依次向前移动,使得该问题得到解决。
在实现查找的过程中由于采用的名字查询,而附设的一个名字数组只有10个大小的空间,本来存在的联系人在查询时系统提示所要查询的联系人信息不存在,经过修改之后成功查询。
6总结
本学生通信录管理系统由7个模块组成,每个模块相互联系又相互独立。
这个通信录管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。
只能实现通信录管理系统最基本的功能,可以进行简单的输入、输出联系人资料,查询和修改联系人信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。
在做之前就看了一些这方面的书,多多少少有一定的了解,使自己在进行的过程中没有胆怯,没有遇到太大的麻烦。
这次课程设计,我感到书本上的东西还是很重要的,课程设计,就是离不开书本。
在设计过程中,我运用了很的循环、排序,这就要求自己要熟练的掌握for,switch语句,以及各种排序,包括冒泡、选择排序。
另外,通过这次课程设计,我发现文件自己掌握的还不是很熟练,但是随着课程设计的深入,我发现文件对今后的设计十分有用,因此自己一定要对文件多做深入的研究。
这次课程设计,自己熟悉了很多的东西,在编写程序的过程中,自己发现了很多的问题,并通过查阅资料