通讯录设计.docx

上传人:b****5 文档编号:29862386 上传时间:2023-07-27 格式:DOCX 页数:35 大小:28.06KB
下载 相关 举报
通讯录设计.docx_第1页
第1页 / 共35页
通讯录设计.docx_第2页
第2页 / 共35页
通讯录设计.docx_第3页
第3页 / 共35页
通讯录设计.docx_第4页
第4页 / 共35页
通讯录设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

通讯录设计.docx

《通讯录设计.docx》由会员分享,可在线阅读,更多相关《通讯录设计.docx(35页珍藏版)》请在冰豆网上搜索。

通讯录设计.docx

通讯录设计

设计一个实用的小型通讯录程序,具有添加,查询和删除功能。

由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。

电话号码可由字符和数字组成。

实现功能:

(1)系统以菜单方式工作

(2)信息录入功能

(3)信息浏览功能

(4)信息查询功能

(5)信息修改功能

(6)系统退出功能

推荐答案

#include"iostream.h"

#include"windows.h"

#include"fstream.h"

#include"string.h"

#include"iomanip.h"

classdirectories

{

public:

charname[50];

longinttell;

longintphont;

};

intcount()

{

intn=0,i,k,j,m=0,z=0,c;

longintTell;

ints=1,b,choc,add;

charnam[20];

directoriesstr[100],temp;

cout<<"创建通讯录输入1,修改通讯录输入2"<

cin>>choc;

if(choc==1)

{

cout<<"通讯录"<

cout<<"请输入通讯录人数"<

cin>>n;

s=n;

cout<<"请输入同学的名字,家庭电话,公司电话"<

cout<<"************************************"<

for(i=1;i<=n;i++)

{

cout<<"请输入第"<

cin>>str[i].name>>str[i].tell>>str[i].phont;

}

cout<<"名字家庭电话公司电话"<

for(i=1;i<=n;i++)

cout<<""<

}

if(choc==2)

{

cout<<"请输入修改通讯录的名字!

"<

cin>>nam;

ifstreamin_file(nam);

if(!

in_file)

{

return0;

}

in_file.ignore(1000,'\n');

in_file.ignore(7);

in_file>>m;

in_file.ignore(1000,'\n');

in_file.ignore(1000,'\n');

for(i=1;i<=m;i++){

in_file>>str[i].name>>str[i].tell>>str[i].phont;

n++;

}

}

while

(1)

{

cout<<"增加联系人信息1,修改联系人2,排序3,删除联系人4,按条件查找5,输出结果6,退出7"<

cin>>s;

switch(s)

{

case1:

cout<<"请输入增加通讯录人数"<

cin>>m;

for(i=n+1;i<=m+n;i++)

{

cout<<"请输入第"<

cin>>str[i].name>>str[i].tell>>str[i].phont;}

cout<

n+=m;

for(i=1;i<=n;i++)

cout<

break;

case2:

cout<<"输入要修改同学的名字"<

cin>>nam;

for(i=1;i<=n;i++)

{

k=strcmp(nam,str[i].name);

if(k==0)

{

cin>>str[i].name>>str[i].tell>>str[i].phont;

break;}

}

break;

case3:

//对对象排序

for(i=1;i

{

for(j=i+1;j<=n;j++)

{

if(str[i].name>str[j].name)

{

temp=str[i];

str[i]=str[j];

str[j]=temp;

}

}

}

cout<<"按首字母输出:

"<

cout<

for(i=1;i<=n;i++)

cout<

break;

case4:

cout<<"输入要删除同学的名字"<

cin>>nam;

for(i=1;i<=n;i++)

{k=strcmp(nam,str[i].name);

if(k==0)

{str[i]=str[i+1];

n--;}}

break;

case5:

cout<<"按姓名查找请按1,按电话号码查找按2"<

cin>>b;

switch(b)

{

case1:

c=1;

while(c==1)

{

cout<<"输入您要查找的姓名"<

cin>>nam;

for(i=1;i<=n;i++)

{

k=strcmp(nam,str[i].name);

if(k==0)

{

cout<<"名字家庭电话公司电话"<

cout<<""<

cout<<"想继续查找请输入1,俺0推出";

cin>>c;

}

}

}

break;

case2:

c=1;

while(c==1)

{

cout<<"输入您要查找的电话"<

cin>>Tell;

for(i=1;i<=n;i++)

{

if(Tell==str[i].tell||Tell==str[i].phont)

{

cout<

cout<

cout<<"想继续查找请输入1,俺0推出"<

cin>>c;

}

}

}

break;

}

case6:

cout<

for(i=1;i<=n;i++)

cout<

break;

case7:

intchos;

cout<<"保存通讯录?

1/2"<

cin>>chos;

if(chos==1)

{

cout<<"输入通讯录的名字(.txt)!

"<

cin>>nam;

ofstreamout_file(nam);

if(!

out_file)

{

return0;

}

out_file<

out_file<<"总人数"<

out_file<<"名字"<

for(i=1;i<=n;i++)

out_file<

}

return0;

}

}

return0;

}

intchange(int*p)

{

intp1;

while

(1)

{

cout<<"输入新密码"<

cin>>*p;

cout<<"请再次输入密码"<

cin>>p1;

if(*p==p1)

{

cout<<"密码修改成功"<

ofstreamout_file("c:

\\key.txt");

out_file<<*p<

out_file.close();

return0;

break;

}

else

cout<<"输入错误"<

}

}

intmain()

{

ifstreamin_file("c:

\\key.txt");

if(!

in_file)

{

return1;

}

intkey;

in_file>>key;

intkey1=000000;

intn=0;

intm;

while

(1)

{

cout<<"请输入密码"<

cin>>key1;

if(key==key1)

{

cout<<"密码输入正确"<

break;

}

else

{

cout<<"密码输入错误"<

n++;

}

if(n==3)

{

cout<<"你输入的次数已超过三次,自动退出!

"<

Sleep(3000);

exit(0);

}

}

Sleep(1000);

count();

cout<<"修改密码请输入1,推出输入2"<

cin>>m;

if(m==1)

change(&key);

in_file.close();

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

系统功能

1建立一个学生通讯录,并实现对通讯录的插入修改删除排序和查询等操作

2设计简单的字符菜单将上述功能组装起来,形成一个完整的系统

3最好可以将通讯录的信息用文件方式保存,每次运行程序时可以直接读取

问题补充:

哥们有三个错麻烦你帮我全部搞定。

我赶作业。

c学的很不扎实现在自己实在做不来

谢谢

我用的tc3.0

最佳答案

给,已经编译运行确认了:

#include

#include

#include

#include

structrecord

{

charid[10];

charname[20];

charphone[20];

charadress[40];

charpostcode[10];

chare_mail[30];

}student[500];

intnum=0;//外部变量num为文件中的纪录数

FILE*fp;

voidmainmenu();//主菜单

voidnewrecord();//新添纪录

voidsearchmenu();//查询菜单

voidsearchbyid();//按学号查询

voidsearchbyname();//按姓名查询

voidsearchbyphone();//按电话查询

voiddeletemenu();//删除菜单

voiddeleteall();//删除所有

voiddeleteone();//删除单个

voidshowall();//显示所有

voidreadfromfile();//读取文件

voidwritetofile();//写入文件

voiddeletebyid();//按学号删除

voiddeletebyname();//按姓名删除

voidlistbyid();//按学号排序

voidlistbyname();//按姓名排序

voidlistmenu();//排序菜单

voidmain()

{

readfromfile();

while

(1)

{

mainmenu();

}

}

voidreadfromfile()//从文件导入

{

if((fp=fopen("student.bin","rb"))==NULL)

{

printf("\n\t\t通讯录文件不存在");

if((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t建立失败");

exit(0);

}

else

{

printf("\n\t\t通讯录文件已建立");

printf("\n\t\t按任意键进入主菜单");

getch();

return;

}

exit(0);

}

fseek(fp,0,2);/*文件位置指针移动到文件末尾*/

if(ftell(fp)>0)/*文件不为空*/

{

rewind(fp);/*文件位置指针移动到文件开始位置*/

for(num=0;!

feof(fp)&&fread(&student[num],sizeof(structrecord),1,fp);num++);

printf("\n\t\t文件导入成功");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

printf("\n\t\t文件导入成功");

printf("\n\t\t通讯录文件中无任何纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

voidmainmenu()//主菜单

{

charchoic;

system("cls");

printf("\n\t\t********************主菜单********************");

printf("\n\t\t***********1-新添纪录2-查询菜单************");

printf("\n\t\t***********3-删除菜单4-记录排序************");

printf("\n\t\t***********5-保存退出6-不保存退出***********");

printf("\n\t\t************************************************");

printf("\n\t\t请选择:

");

choic=getch();

switch(choic)

{

case'1':

newrecord();break;

case'2':

searchmenu();break;

case'3':

deletemenu();break;

case'4':

listmenu();break;

case'5':

writetofile();break;

case'6':

exit(0);

default:

mainmenu();

}

}

voidsearchmenu()//查询菜单

{

charchoic;

system("cls");

printf("\n\t\t*******************查询菜单*******************");

printf("\n\t\t**********1-显示所有2-按学号查询************");

printf("\n\t\t**********3-按姓名查询4-按电话查询************");

printf("\n\t\t**********5-返回主菜单************");

printf("\n\t\t************************************************");

printf("\n\t\t请选择:

");

choic=getch();

switch(choic)

{

case'1':

showall();break;

case'2':

searchbyid();break;

case'3':

searchbyname();break;

case'4':

searchbyphone();break;

case'5':

mainmenu();break;

}

}

voiddeletemenu()//删除菜单

{

charchoic;

if(num==0)

{

printf("\n\t\t对不起,文件中无任何纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

system("cls");

printf("\n\t\t*******************删除菜单*******************");

printf("\n\t\t***********1-删除所有2-删除单个***********");

printf("\n\t\t***********3-返回主菜单***********");

printf("\n\t\t************************************************");

printf("\n\t\t请选择:

");

choic=getch();

switch(choic)

{

case'1':

deleteall();break;

case'2':

deleteone();break;

case'3':

mainmenu();break;

default:

mainmenu();break;

}

}

voiddeleteall()//删除所有

{

printf("\n\t\t确认删除?

(y/n)");

if(getch()=='y')

{

fclose(fp);

if((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t不能打开文件,删除失败");

readfromfile();

}

num=0;

printf("\n\t\t纪录已删除,按任意键返回主菜单");

getch();

return;

}

else

return;

}

voiddeletebyname()//按姓名删除

{

inta=0;

intfindmark=0;

intj;

intdeletemark=0;

inti;

charname[20];

printf("\n\t\t请输入要删除学生姓名:

");

scanf("%s",name);

for(i=a;i

{

if(strcmp(student[i].name,name)==NULL)

{

printf("\n\t\t以下是您要删除的学生纪录:

");

findmark++;

printf("\n\t\t________________________________");

printf("\n\t\t学号:

%s",student[i].id);

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\te-mail:

%s",student[i].e_mail);

printf("\n\t\t________________________________");

printf("\n\t\t是否删除?

(y/n)");

if(getch()=='y')

{

for(j=i;j

student[j]=student[j+1];

num--;

deletemark++;

printf("\n\t\t删除成功");

if((i+1)

{

printf("\n\t\t是否继续删除相同姓名的同学信息?

(y/n)");

if(getch()=='y')

{

a=i;

continue;

}

}

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyname();

return;

}

if((i+1)

{

printf("\n\t\t是否继续删除相同姓名的同学信息?

(y/n)");

if(getch()=='y')

{

a=i;

continue;

}

}

}

else

continue;

}

if((deletemark==0)&&(findmark==0))

{

printf("\n\t\t没有该同学的纪录");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyid();

return;

return;

}

elseif(findmark!

=0)

{

printf("\n\t\t没有重名信息");

printf("\n\t\t没有该同学的纪录");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyid();

return;

return;

}

}

voiddeletebyid()//按学号删除

{

inti,j;

intdeletemark=0;

char

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1