C课程设计简易通讯录.doc
《C课程设计简易通讯录.doc》由会员分享,可在线阅读,更多相关《C课程设计简易通讯录.doc(17页珍藏版)》请在冰点文库上搜索。
![C课程设计简易通讯录.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/46d83c91-0173-4766-9762-f364a6732295/46d83c91-0173-4766-9762-f364a67322951.gif)
本程序用VS2013编写,所用语言为C++,为多文件程序,可将源代码复制到VS后简单处理,即可运行。
C++课程设计
设计题目:
简易通讯录管理程序
学院名称:
信息科学与技术学院
专业名称:
计算机科学与技术
学生姓名:
学生学号:
任课教师:
设计(论文)成绩
目录
第1章问题描述 1
第2章概要设计 1
第3章详细设计 3
3.1数据写入(添加到)文件的函数算法思想或步骤 3
3.2从文件读取内容到程序的函数算法思想或步骤 3
第4章测试结果及分析 3
参考文献 6
附录:
源代码 7
-1-
第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);//按姓氏(姓名第一个字)查询联系人
intreadfromFile(PERper[]);//从文件中读取数据
voidchange(PERper[],intn);//编辑联系人信息
voidaddtoFile(PERper[],intn);//添加新联系人到文件
voidwritetoFile(PERper[],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<<"任意键以返回菜单";
addtoFile(per,1);
system("pause");
break;
case'2':
TWO:
m=readfromFile(per);
readfromFile(per);
cout<<"
(1)根据姓名查找联系人"< cout<<"
(2)根据手机号码查找联系人"< cout<<"(3)根据姓氏模糊查询(姓名第一个字)"< cout<<"(4)显示同一组别的联系人"< cout<<"(5)显示同一性别的联系人"< cout<<"(6)显示所有联系人"< cout<<"(0)返回菜单"< charselectsearch;
cin>>selectsearch;
switch(selectsearch)
{
m=readfromFile(per);
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=readfromFile(per);
THREE:
cout<<"
(1)编辑某个人的信息"< cout<<"
(2)删除某个人的信息"< cout<<"(0)返回菜单";
charselectsearch3;
cin>>selectsearch3;
switch(selectsearch3)
{
case'1':
change(per,m-1);
writetoFile(per,m-1);
system("pause");
break;
case'2':
k=del(per,m-1);
writetoFile(per,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;
}
}
addtoFile.cpp文件
#include"head.h"
//添加到文件
voidaddtoFile(PERper[],intn)
{
ofstreamoutfile;
outfile.open("message.txt",ios_base:
:
app);//向文件尾加入新数据
if(outfile.is_open())//判断文件是否正常打开
{
for(inti=0;i {
outfile< outfile< outfile< outfile< outfile< outfile< }
outfile.close();//关闭文件
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<