c++通讯管理系统.docx
- 文档编号:24434643
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:23
- 大小:17.32KB
c++通讯管理系统.docx
《c++通讯管理系统.docx》由会员分享,可在线阅读,更多相关《c++通讯管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
c++通讯管理系统
体和函数声明*/
#include
#include
#include
#include
#include
#defineN100
structstudent
{
charpost[10];
charname[50];
chartel[20];
charaddr[100];
};
/*一下是函数原型说明,被调函数的定义在主调函数后面,故要加此部分*/
voidmyprint();
voidmycreate();
voidmydisplay();
voidmysearch();
voidsch_post(FILE*fp);
voidsch_name(FILE*fp);
voidmymodify();
voidmyadd();
voidmydelete();
voiddel_post(FILE*fp);
voiddel_name(FILE*fp);
voidmysort();
voidsort_post();
voidsort_name();
/*主函数*/
voidmain()
{
charchoose,yes_no;
do
{
myprint();//显示主菜单
printf("");
choose=getch();
switch(choose)
{
case'1':
mycreate();break;//创建
case'2':
mydisplay();break;//显示
case'3':
mysearch();break;//查询
case'4':
mymodify();break;//修改
case'5':
myadd();break;//添加
case'6':
mydelete();break;//删除
case'7':
mysort();break;//排序
case'0':
break;
default:
printf("\n%c为非法选项!
\n",choose);
}
if(choose=='0')
break;
printf("\n要继续选择吗(Y/N)?
\n");
do
{
yes_no=getch();
}while(yes_no!
='Y'&&yes_no!
='y'&&yes_no!
='N'&&yes_no!
='n');
}while(yes_no!
='Y'||yes_no!
='y');
}
voidmyprint()//显示菜单的函数
{
printf("\n\n\n\n\n\n\n\n");
printf("|----------------|\n");
printf("|请输入选择编号(-7):
|\n");
printf("|----------------|\n");
printf("|1--创建信息管理系统|\n");
printf("|2--显示信息管理系统|\n");
printf("|3--查询信息管理系统|\n");
printf("|4--修改信息管理系统|\n");
printf("|5--添加信息管理系统|\n");
printf("|6--删除信息管理系统|\n");
printf("|7--排序信息管理系统|\n");
printf("|0--退出|\n");
}
voidmycreate()//创建通讯录的函数
{
inti=1;
structstudenttemp;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.txt","w");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return;
}
printf("\n请输入第个记录:
\n");
printf("邮编(用#号结束输入):
");
do
{
gets(temp.post);
}while(strcmp(temp.post,"")==0);
printf("姓名(用#号结束输入):
");
gets(temp.name);
printf("电话号码(用#号结束输入):
");
gets(temp.tel);
printf("地址(用#号结束输入):
");
gets(temp.addr);
while(temp.post[0]!
='#'&&temp.name[0]!
='#'&&temp.tel[0]!
='#'&&temp.addr[0]!
='#')
{
fprintf(fp,"%23s%15s%15s%15s\n",temp.post,temp.name,temp.tel,temp.addr);
i++;
printf("\n输入第%d个记录:
\n",i);
printf("邮编(用#号结束输入):
");
do
{
gets(temp.post);
}while(strcmp(temp.post,"")==0);
printf("姓名(请用#号结束输入):
");
gets(temp.name);
printf("电话号码(用#号结束输入):
");
gets(temp.tel);
printf("地址(用#号结束输入):
");
gets(temp.addr);
}
fclose(fp);
}
voidmydisplay()//显示信息管理系统的函数
{
intn=0;
structstudenttemp;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.txt","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return;
}
voidclrscr();
printf("邮编姓名电话号码地址\n");
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s%15s\n",&temp.post,&temp.name,&temp.tel,&temp.addr);
printf("%23s%15s%15s%15s\n",temp.post,temp.name,temp.tel,temp.addr);
n++;
}
if(n==0)
printf("\n文件中无记录!
\n");
else
printf("\n文件中共有%d个记录!
\n",n);
fclose(fp);
}
voidmysearch()//查询信息管理系统的函数
{
charc;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.txt","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return;
}
printf("\n按邮编查询(h),还是按姓名查询(m)?
");
c=getch();
if(c=='h'||c=='H')
sch_post(fp);//按邮编查询
if(c=='m'||c=='M')
sch_name(fp);//按姓名查询
else
printf("\n非法字符!
\n");
fclose(fp);
}
voidsch_post(FILE*fp)//定义按邮编查询信息管理系统的函数
{
intflag=0,n=0;
chartemppost[10];
structstudenttemp;
printf("\n请输入要查询记录的邮编:
");
gets(temppost);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s%15s\n",&temp.post,&temp.name,&temp.tel,&temp.addr);
if(strcmp(temppost,temp.post)==0)
{
if(flag==0)
printf("邮编姓名电话号码地址\n");
printf("%23s%15s%15s%15s\n",temp.post,temp.name,temp.tel,temp.addr);
flag=1;
}
n++;
}
if(n==0)
printf("文件中无记录!
\n");
else
if(flag==0)
printf("\n文件中无此人!
\n");
}
voidsch_name(FILE*fp)//定义按姓名查询信息管理系统的函数
{
intflag=0,n=0;
chartempname[10];
structstudenttemp;
printf("\n请输入要查询记录的姓名:
");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s%15s\n",&temp.post,&temp.name,&temp.tel,&temp.addr);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf("邮编姓名电话号码地址\n");
printf("%23s%15s%15s%15s\n",temp.post,temp.name,temp.tel,temp.addr);
flag=1;
}
n++;
}
if(n==0)
printf("文件中无记录!
\n");
else
if(flag==0)
printf("\n文件中无此人!
\n");
}
voidmymodify()//修改信息管理系统的函数
{
charc;
intn=0;
structstudent*find,temp,record[100],*p;//最多个记录
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.txt","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr);
p++;
n++;
}
fclose(fp);
if(n==0)
{
printf("\n文件中无记录!
\n");
return;
}
printf("\n请输入要修改记录的邮编:
");
gets(temp.post);
for(p=record;p if(strcmp(temp.post,p->post)==0) { find=p;//*find记住要修改的位置 break; } if(p==record+n) { printf("\n无此人! \n"); return; } do { printf("\n请输入正确的邮编: "); do { gets(temp.post); }while(strcmp(temp.post,"")==0); printf("请输入正确的姓名: "); gets(temp.name); printf("请输入正确的电话号码: "); gets(temp.tel); for(p=record;p if((strcmp(temp.post,p->post)==0)&&(p! =find)) { printf("\n邮编重复,要重新输入吗(Y/N)? "); do { c=getch(); }while(c! ='Y'&&c! ='y'&&c! ='N'&&c! ='n'); putchar('\n'); break; } if(p==record+n) { *find=temp;//*find指向要修改记录的位置 break; } }while(c=='Y'||c=='y'); fp=fopen("d: \\lbh\\guanli.txt","r+"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } for(p=record;p fprintf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); fclose(fp); } voidmyadd()//添加信息管理系统的函数 { charc; intn=0; structstudenttemp,record[N],*p; FILE*fp; fp=fopen("d: \\lbh\\guanli.txt","r+"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } p=record; while(feof(fp)==0) { fscanf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); p++; n++; } fclose(fp); do { printf("\n请输入新记录的邮编: "); do { gets(temp.post); }while(strcmp(temp.post,"")==0); printf("请输入新记录的姓名: "); gets(temp.name); printf("请输入新记录的电话号码: "); gets(temp.tel); for(p=record;p if(strcmp(temp.post,p->post)==0) { printf("\n邮编重复,要重新输入吗(Y/N)? "); do { c=getch(); }while(c! ='Y'&&c! ='y'&&c! ='N'&&c! ='n'); putchar('\n'); break; } if(p==record+n) { *p=temp; break; } }while(c=='Y'||c=='y'); fp=fopen("d: \\lbh\\guanli.txt","r+"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } for(p=record;p fprintf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); fclose(fp); } voidmydelete()//删除信息管理系统的函数 { charc; FILE*fp; fp=fopen("d: \\lbh\\guanli.txt","r+"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } printf("\n按邮编删除(h),还是按姓名删除(m)? "); c=getch(); if(c=='h'||c=='H') del_post(fp); if(c=='m'||c=='M') del_name(fp); else printf("\n非法字符! \n"); fclose(fp); } voiddel_post(FILE*fp)//按邮编删除的函数 { intn=0; chartemppost[10]; structstudentrecord[N],*p,*k; p=record; while(feof(fp)==0) { fscanf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); p++; n++; } fclose(fp); printf("\n请输入要删除记录的邮编: "); gets(temppost); for(k=record;k if(strcmp(temppost,k->post)==0) break;//找到要删除记录结束循环 if(k for(p=k;p *p=*(p+1); else printf("\n无此人! \n"); fp=fopen("d: \\lbh\\guanli.txt","w"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } for(p=record;p fprintf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); } voiddel_name(FILE*fp)//按姓名删除信息管理系统的函数 { intn=0; chartempname[10]; structstudentrecord[N],*p,*k; p=record; while(feof(fp)==0) { fscanf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); p++; n++; } fclose(fp); printf("\n请输入要删除记录的姓名: "); gets(tempname); for(k=record;k if(strcmp(tempname,k->name)==0) break; if(k for(p=k;p *p=*(p+1); else printf("\n无此人! \n"); fp=fopen("d: \\lbh\\guanli.txt","w"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } for(p=record;p fprintf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); } voidmysort()//定义排序信息管理系统的函数 { charc; FILE*fp; fp=fopen("d: \\lbh\\guanli.txt","r+"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } fclose(fp); printf("\n按邮编排序(h),还是按姓名排序(m)? "); c=getch(); if(c=='h'||c=='H') sort_post(); if(c=='m'||c=='M') sort_name(); else printf("\n非法字符! \n"); } voidsort_post()//定义按邮编排序的函数 { inti,j,k,n=0; charc; structstudentrecord[N],*p,temp; FILE*fp; fp=fopen("d: \\lbh\\guanli.txt","r"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } p=record; while(feof(fp)==0) { fscanf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->tel,p->addr); p++; n++; } fclose(fp); printf("\n按升序(s),还是按降序(j)? "); c=getch(); if(c=='s'||c=='S') for(i=0;i { k=1; for(j=i+1;j if(strcmp((p+k)->post,(p+j)->post)>0) k=j; temp=*(p+k); *(p+k)=*(p+i); *(p+i)=temp; } else if(c=='j'||c=='J') for(i=0;i { k=1; for(j=i+1;j if(strcmp((p+k)->post,(p+j)->post)<0) k=j; temp=*(p+k); *(p+k)=*(p+i); *(p+i)=temp; } else { printf("\n非法字符! \n"); return; } fp=fopen("d: \\lbh\\guanli.txt","w"); if(fp==NULL) { printf("\n打开文件失败! \n"); return; } for(p=record;p { fprintf(fp,"%23s%15s%15s%15s\n",p->post,p->name,p->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 通讯 管理 系统