C++课程设计简易通讯录.docx
《C++课程设计简易通讯录.docx》由会员分享,可在线阅读,更多相关《C++课程设计简易通讯录.docx(23页珍藏版)》请在冰豆网上搜索。
![C++课程设计简易通讯录.docx](https://file1.bdocx.com/fileroot1/2022-12/19/ade18b19-dfa8-4179-ad25-65b818fd2d8f/ade18b19-dfa8-4179-ad25-65b818fd2d8f1.gif)
C++课程设计简易通讯录
本程序用VS2013编写,所用语言为C++,为多文件程序,可将源代码复制到VS后简单处理,即可运行。
C++课程设计
设计题目:
简易通讯录管理程序
学院名称:
信息科学与技术学院
专业名称:
计算机科学与技术
学生姓名:
学生学号:
任课教师:
设计(论文)成绩
第1章问题描述
1、实现通讯录的基本功能:
录入、删除、查找和修改、显示。
2、联系人的基本属性包括姓名、性别、住址、联系电话、电子邮件等。
为了实现对所有联系人的分组管理,还需添加组别属性
3、查找功能的具体要求如下:
(1)能够根据姓名、电话精确查询人员信息;
(2)能够根据姓氏进行模糊查询人员信息;
(3)根据人员类别查询人员信息
4、文件存储通讯录
5、提供操作的选择菜单
第2章概要设计
开发环境
系统:
windows8.1中文版64位
处理器:
IntelCorei5-4200H
内存:
4G
开发软件:
VisualStudio2013
classPER//联系人类数组
{
public:
charname[NAM_LEN];
charsex[SEX_LEN];
charaddress[ADD_LEN];
chartel_no[TEL_LEN];
chare_mail[MAIL_LEN];
chargroup[GROUP_LEN];
};
第3章详细设计
3.1数据写入(添加到)文件的函数算法思想或步骤
(1)声明ofstream类成员函数,打开“message.txt”文件,如果文件有内容则清空,若没有该文件则创建。
(添加新数据到文件,将新数据添加到问价末尾)
(2)在文件打开正常的情况下,依次写入PER类数组数据。
关闭文件,显示“保存成功”。
若没有正常打开,显示“保存失败”。
3.2从文件读取内容到程序的函数算法思想或步骤
(1)声明ifstream类成员函数,打开“message.txt”文件。
(2)在文件打开成功(打开成功,说明文件有内容),读取正常并且没有到文件末尾的情况下,依次把文件内容传递给PER类数组。
(3)关闭文件,返回值i为原文件中保存的联系人个数。
第4章测试结果及分析
添加联系人
文件保存(仅供测试)
按姓名精确查找
按手机号码精确查找
按姓氏(名字第一个字)模糊查询
按组别查看
按性别查看
显示所有联系人
修改某人信息
删除某个联系人信息
参考文献
[1]C++语言程序设计(第4版)[郑莉董渊何江舟].2010年7月第四版
[2]C++程序设计教程(第二版)[钱能].2005年9月第二版
附录:
源代码
源程序要按照编写程序的规范来编写,结构清晰。
每个类、类成员函数、普通函数均需要在类名前、函数头前注释说明该类、函数的简要功能,函数中的关键语句需添加注释。
示例如下:
head.h头文件:
//头文件,包含PER类数组,每个项目的数组长度常量,所有元素的声明
#ifndefHEAD
#defineHEAD
#include
#include
#include
#include
#include
usingnamespacestd;
constintnum=200;
constintNAM_LEN=10;
constintSEX_LEN=4;
constintMAIL_LEN=20;
constintADD_LEN=18;
constintTEL_LEN=15;
constintGROUP_LEN=10;
classPER//联系人类数组
{
public:
charname[NAM_LEN];
charsex[SEX_LEN];
charaddress[ADD_LEN];
chartel_no[TEL_LEN];
chare_mail[MAIL_LEN];
chargroup[GROUP_LEN];
};
voidadd(PERper[],intn);//添加新联系人
intdel(PERper[],intn);//删除联系人
voidfind1(PERper[],intn);//按姓名查询联系人
voidfind2(PERper[],intn);//按手机号码查询联系人
voidfind3(PERper[],intn);//按姓氏(姓名第一个字)查询联系人
intreadfromper[]);//从文件中读取数据
voidchange(PERper[],intn);//编辑联系人信息
voidaddtoper[],intn);//添加新联系人到文件
voidwritetoper[],intn);//向文件中写入数据
voidshow1(PERper[],intn);//按组别显示联系人
voidshow2(PERper[],intn);//按性别显示联系人
voidshow3(PERper[],intn);//显示所有联系人
#endif
main.cpp文件
#include"head.h"
//主函数首页
intmain()
{
intk,m;
PERper[num];//声明PER类数组个数
charselect1;
cout<while
(1){
TOP:
system("cls");
cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<<"※15级计科1班薛皓※"<<<"※※"<<<"※简易通迅录※"<<<"※※"<<<"※1.添加联系人.※"<<<"※※"<<<"※2.查询(显示)联系人.※"<<<"※※"<<<"※3.编辑(删除)联系人.※"<<<"※※"<<<"※0.退出※"<<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<<"\t\t\t选择:
";
cin>>select1;
switch(select1)
{
case'1':
cout<<"输入添加的资料"<add(per,1);
cout<<"任意键以返回菜单";
addto,1);
system("pause");
break;
case'2':
TWO:
m=readfrom);
readfrom);
cout<<"
(1)根据姓名查找联系人"<cout<<"
(2)根据手机号码查找联系人"<cout<<"(3)根据姓氏模糊查询(姓名第一个字)"<cout<<"(4)显示同一组别的联系人"<cout<<"(5)显示同一性别的联系人"<cout<<"(6)显示所有联系人"<cout<<"(0)返回菜单"<charselectsearch;
cin>>selectsearch;
switch(selectsearch)
{
m=readfrom);
case'1':
find1(per,m-1);
system("pause");
break;
case'2':
find2(per,m-1);
system("pause");
break;
case'3':
find3(per,m-1);
system("pause");
break;
case'4':
show1(per,m-1);
system("pause");
break;
case'5':
show2(per,m-1);
system("pause");
break;
case'6':
show3(per,m-1);
system("pause");
break;
case'0':
gotoTOP;
default:
cout<<"输入错误请按任意键重新选择:
";
system("pause");
gotoTWO;
}
break;
case'3':
m=readfrom);
THREE:
cout<<"
(1)编辑某个人的信息"<cout<<"
(2)删除某个人的信息"<cout<<"(0)返回菜单";
charselectsearch3;
cin>>selectsearch3;
switch(selectsearch3)
{
case'1':
change(per,m-1);
writeto,m-1);
system("pause");
break;
case'2':
k=del(per,m-1);
writeto,m-2);
system("pause");
break;
case'0':
gotoTOP;
default:
cout<<"输入错误,请按任意键重新选择";
system("pause");
gotoTHREE;
}
break;
case'0':
gotobottom;
default:
cout<<"输入错误请重新输入,请按任意键返回菜单";
system("pause");
break;
}
}
bottom:
cout<<"★★★★★★★★★★★★欢迎使用本软件!
★★★★★★★★★★★"<return0;
}
add.cpp文件:
#include"head.h"
//添加联系人
voidadd(PERper[],intn)
{
for(inti=0;i{
cout<<"姓名:
";
cin>>per[i].name;
cout<<"性别:
";
cin>>per[i].sex;
cout<<"住址:
";
cin>>per[i].address;
cout<<"联系电话:
";
cin>>per[i].tel_no;
cout<<"电子邮箱:
";
cin>>per[i].e_mail;
cout<<"组别:
";
cin>>per[i].group;
}
}
addto文件
#include"head.h"
//添加到文件
voidaddtoper[],intn)
{
ofstreamoutfile;
out("message.txt",ios_base:
:
app);//向文件尾加入新数据
if(out())//判断文件是否正常打开
{
for(inti=0;i{
outfile<outfile<outfile<outfile<outfile<outfile<}
out();//关闭文件
cout<<"保存成功!
\n"<}
elsecout<<"保存失败";
}
find.cpp文件:
#include"head.h"
//按姓名查询联系人
voidfind1(PERper[],intn)
{
inti,find=0;
charName[NAM_LEN];
cout<<"输入要查询联系人的姓名:
";
cin>>Name;
for(i=0;i{
if(strcmp(per[i].name,Name)==0)
{
find=1;
break;
}
}
if(find)
{
cout<<"姓名:
"<cout<<"性别:
"<cout<<"住址:
"<cout<<"电话:
"<cout<<"电子邮箱:
"<cout<<"组别:
"<}
else
cout<<"不存在此联系人";
}
//按手机号码查找联系人
voidfind2(PERper[],intn)
{
inti,find=0;
charnumber[TEL_LEN];
cout<<"输入要查询联系人的电话:
";
cin>>number;
for(i=0;i{
if(strcmp(per[i].tel_no,number)==0)
{
find=1;
break;
}
}
if(find)
{
cout<<"姓名:
"<cout<<"性别:
"<cout<<"住址:
"<cout<<"电话:
"<cout<<"电子邮箱:
"<cout<<"组别:
"<}
else
cout<<"不存在此联系人";
}
//按姓氏模糊查询联系人
voidfind3(PERper[],intn)
{
inti,find=0;
charfirstname[NAM_LEN];
cout<<"输入要查询联系人的姓氏:
";
cin>>firstname;
cout<<"姓名性别住址电话电子邮箱组别"<for(i=0;i{
chars1[3];
memcpy(s1,per[i].name,2);//把per数组的前两个字符(即姓名第一个字)传递给mwmcpy
s1[2]='\0';
if(strcmp(s1,firstname)==0)
{
cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<}
}
}
show.cpp文件:
#include"head.h"
//显示同一组别联系人
voidshow1(PERper[],intn)
{
inti,find=0;
charGROUP[GROUP_LEN];
cout<<"输入要查询的组别:
";
cin>>GROUP;
cout<<"姓名性别住址电话电子邮箱组别"<for(i=0;i{
if(strcmp(per[i].group,GROUP)==0)
{
cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<}
}
}
//按性别显示联系人
voidshow2(PERper[],intn)
{
inti,find=0;
charSEX[SEX_LEN];
cout<<"输入要查询的性别:
";
cin>>SEX;
cout<<"姓名性别住址电话电子邮箱组别"<for(i=0;i{
if(strcmp(per[i].sex,SEX)==0)
{
cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<cout<:
left)<}
}
}
//显示所有联系人
voidshow3(PERper[],intn)
{
cout<<"姓名性别住址电话电子邮箱组别"<for(inti=0;i{
cout<cout<cout<cout<cout<cout<}
}
edit.cpp文件:
#include"head.h"
//删除联系人
intdel(PERper[],intn)
{
charName[NAM_LEN];
inti=0,j,find=0;
cout<<"请输入想删除记录中的名字:
";
cin>>Name;
for(i=0;i{
if(strcmp(per[i].name,Name)==0)
find=1;
if(find==1)
break;
}
if(find==1)
{
for(j=i;j{
per[j]=per[j+1];
}
cout<<"删除并";
}
else
cout<<"不存在此联系人";
returni;
}
//修改联系人
voidchange(PERper[],intn)
{
inti,find=0;
charj;
charName[NAM_LEN];
cout<<"请输入要修改的联系人姓名:
";
cin>>Name;
for(i=0;i{
if(strcmp(per[i].name,Name)==0)
find=1;
if(find==1)
break;
}
if(find==1)
{