C语言【微项目01】—电话号码管理系统(文件操作实现)
【TDTX】
【通过文件进行增、删、查、改,在文件中增、删、查、改】
【本微项目的精髓在于在文件写入后再读取时不发生格式错误,并且准确找到每条记录的开头处,返回当前位置】
【本微项目实现了核心的增、删、查、改】
【总共1400余行代码】
【注意】输入数据格式:1到5个字符(敲空格)1个字符(敲空格)11个字符(敲空格)1到3个字符
例如:jerry m 13648712503 22
【!样例中出现的电话号码均为随意打字,如有雷同纯属巧合!】
TelSeaSys.h
struct mytel
{
char xm[6];
char xb[2];
char dh[12];
char nl[4];
}kk;
void tratxt(void);
void rootmenu(void);
void abA1(void);
void abA2(void);
void abA3(void);
void abA4(void);
void abB1(void);
void abB2(void);
void abB3(void);
void abB4(void);
void abC1(void);
void abC2(void);
void abC3(void);
void abC4(void);
void abD1(void);
void abD2(void);
void abD3(void);
void abD4(void);
void menuA(void);
void menuB(void);
void menuC(void);
void menuD(void);
TelSeaSys.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "TelSeaSys.h"
void tratxt(void)
{
printf("\n==================遍历检查表==================\n");
FILE* fp;
fp=fopen("./tell.txt","r");clearerr(fp);
int i,ch,co=0,coo=0;
printf("序号\t姓名\t性别\t电话\t\t年龄\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='>')
{
coo=0;
printf("\n");
}
else
{
if(ch=='<')
{
co++;
printf("%d\t",co);
}
else
{
if(ch=='+')
{
printf("\t");
}
if(ch!='+'&&ch!='*')
{printf("%c",ch);}
if(ch=='*')
{printf(" ");}
}
}
// getch();
}
printf("==================检查表完成==================\n\n");
printf("按任意键继续:");
getch();
putchar('\n');
fclose(fp);
}
void rootmenu(void)
{
system("cls");
printf("\n<---------------【电话号码管理系统version1.0_designed by TDTX】--------------->\n\n");
printf("*********************************主菜单选项**********************************\n""| A:存信息\tB:查信息\tC:改信息\tD:删信息\tE:编历检查 |\n");
printf("*****************************************************************************\n");
printf("请输入要操作的主菜单选项(A,B,C,D,E),退出系统请按Q:");
return;
}
/*下面是分功能函数*/
void abA1(void)
{
system("cls");
FILE* fp;
printf("请输入一条信息,以空格分隔项目:");
scanf("%s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("\n自动返回选项功能A!");
sleep(2);
return;
}
void abA2(void)
{
system("cls");
FILE* fp;
printf("请输入第一条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第二条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("\n自动返回选项功能A!");
sleep(2);
return;
}
void abA3(void)
{
system("cls");
FILE* fp;
printf("请输入第一条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第二条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第三条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("\n自动返回选项功能A!");
sleep(2);
return;
}
void abA4(void)
{
system("cls");
FILE* fp;
printf("请输入第一条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第二条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第三条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("请输入第四条信息,以空格分隔项目:");
scanf(" %s %s %s %s",kk.xm,kk.xb,kk.dh,kk.nl);
switch(strlen(kk.xm))
{
case 1:kk.xm[1]='*',kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 2:kk.xm[2]='*',kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 3:kk.xm[3]='*',kk.xm[4]='*',kk.xm[5]='\0';break;
case 4:kk.xm[4]='*',kk.xm[5]='\0';break;
default:break;
}
switch(strlen(kk.nl))
{
case 1:kk.nl[2]=kk.nl[0],kk.nl[0]='*',kk.nl[1]='*',kk.nl[3]='\0';break;
case 2:kk.nl[2]=kk.nl[1],kk.nl[1]=kk.nl[0],kk.nl[0]='*',kk.nl[3]='\0';break;
default:break;
}
fp=fopen("./tell.txt","a");
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
fprintf(fp,"<%s+%s+%s+%s>\0",kk.xm,kk.xb,kk.dh,kk.nl);
fclose(fp);
tratxt();
printf("\n自动返回选项功能A!");
sleep(2);
return;
}
void abB1(void)
{
system("cls");
FILE* fp;
char xmm[6];
printf("请输入要查询的姓名(5):");
scanf(" %s",xmm);
fp=fopen("./tell.txt","r");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
// puts(t);
for(co=0,j=1;t[j]!='+';j++)
{
// printf("j=%d:%c,j-1=%d:%c\n",j,t[j],j-1,xmm[j-1]);
if(t[j]==xmm[j-1])
{
co++;//printf("co=%d\n",co);
}
}
if(co==strlen(xmm))
{
puts(t);f=1;k=0;break;
}
else
{
k=0;continue;
}
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abB2(void)
{
system("cls");
FILE* fp;
char xbb[2];
printf("请输入要查询的性别(男-m,女-w):");
scanf(" %s",xbb);
fp=fopen("./tell.txt","r");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,co=0,k=0,f=0;
char ch,t[29];
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
for(j=5;j<10;j++)
{
if(j>0&&t[j-1]=='+'&&(t[j]=='m'||t[j]=='w')&&t[j+1]=='+')
{
// printf("进来了2,t[%d]:%c\n",j,t[j]);
if(t[j]==xbb[0])
{
co=1;puts(t);f=1;k=0;continue;
}
else
{
k=0;break;
}
}
}
continue;
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此性别,非法性别查找!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abB3(void)
{
system("cls");
FILE* fp;
char dhh[12];
printf("请输入要查询的电话:");
scanf(" %s",dhh);
fp=fopen("./tell.txt","r");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,m=0,co=0,f=0;
char ch,t[29],th[12];
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
for(co=0,j=8;j<22;j++)
{
// printf("进来了1");
if(t[j]>='0'&&t[j]<='9')
{
// printf("找到数字了!");
if(t[j]==dhh[m++])
{
co++;
}
else
{
m=0;break;
}
}
}
if(co==strlen(dhh))
{
puts(t);f=1;k=0;m=0;break;
}
else
{
k=0;m=0;continue;
}
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此电话,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abB4(void)
{
system("cls");
FILE* fp;
char nll[4];
printf("请输入要查询的年龄:");
scanf(" %s",nll);
fp=fopen("./tell.txt","r");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,m=0,co=0,f=0,dhhlen=0;
char ch,t[29],th[12];
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
for(m=strlen(nll)-1,co=0,j=strlen(t)-1-1;t[j]!='+';j--)
{
// printf("t[%d]=%c,nll[%d]=%c\n",j,t[j],m,nll[m]);
if(t[j]==nll[m]&&m>=0)
{
// printf("进来了1,t[%d]=%c\n",j,t[j]);
co++;m--;
}
else
{
break;
}
}
if(co==strlen(nll))
{
puts(t);f=1;k=0;continue;
}
else
{
k=0;continue;
}
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此年龄,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abC1(void)
{
system("cls");
FILE* fp;
char xmm[6];
printf("请输入要被修改的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名,请输入要改为的姓名:");
f=1;k=0;
scanf(" %s",xmm);
switch(strlen(xmm))
{
case 1:t[1]=xmm[0],t[2]='*',t[3]='*',t[4]='*',t[5]='*';break;
case 2:t[1]=xmm[2],t[2]=xmm[1],t[3]='*',t[4]='*',t[5]='*';break;
case 3:t[1]=xmm[0],t[2]=xmm[1],t[3]=xmm[2],t[4]='*',t[5]='*';break;
case 4:t[1]=xmm[0],t[2]=xmm[1],t[3]=xmm[2],t[4]=xmm[3],t[5]='*';break;
case 5:t[1]=xmm[0],t[2]=xmm[1],t[3]=xmm[2],t[4]=xmm[3],t[5]=xmm[4];break;
default:break;
}
//t[1]=xmm[0];t[2]=xmm[1];t[3]=xmm[2];t[4]=xmm[3];t[5]=xmm[4];
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abC2(void)
{
system("cls");
FILE* fp;
char xmm[6],xbb[2];
printf("请输入要被修改性别的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名,请输入要改为的性别:");
f=1;k=0;
scanf(" %1s",xbb);
t[7]=xbb[0];
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abC3(void)
{
system("cls");
FILE* fp;
char xmm[6],dhh[12];
printf("请输入要被修改电话的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名,请输入要改为的电话:");
f=1;k=0;
int tellen=0;
while(tellen!=11)
{
scanf(" %11s",dhh);
tellen=strlen(dhh);
if(tellen!=11)
{
printf("输入电话应该是11位,请重新输入要改为的电话:");
}
}
t[9]=dhh[0];t[10]=dhh[1];t[11]=dhh[2];
t[12]=dhh[3];t[13]=dhh[4];t[14]=dhh[5];
t[15]=dhh[6];t[16]=dhh[7];t[17]=dhh[8];
t[18]=dhh[9];t[19]=dhh[10];
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abC4(void)
{
system("cls");
FILE* fp;
char xmm[6],nll[4];
printf("请输入要被修改年龄的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名,请输入要改为的年龄(3):");
f=1;k=0;
scanf(" %s",nll);
if(strlen(nll)==1)
{
t[21]='*';t[22]='*';t[23]=nll[0];
}
if(strlen(nll)==2)
{
t[21]='*';t[22]=nll[0];t[23]=nll[1];
}
if(strlen(nll)==3)
{
t[21]=nll[0];t[22]=nll[1];t[23]=nll[2];
}
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abD1(void)
{
system("cls");
FILE* fp;
char xmm[6];
printf("请输入要被删除的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名,开始删除!");
f=1;k=0;
xmm[0]='*';xmm[1]='*';xmm[2]='*';xmm[3]='*';xmm[4]='*';xmm[5]='\0';
t[1]=xmm[0];t[2]=xmm[1];t[3]=xmm[2];t[4]=xmm[3];t[5]=xmm[4];
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
printf("已经删除该姓名!");
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abD2(void)
{
system("cls");
FILE* fp;
char xmm[6],xbb[2];
printf("请输入要被删除性别的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名的性别,开始删除!");
f=1;k=0;
t[7]='*';
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
printf("已删除该姓名的性别!");
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abD3(void)
{
system("cls");
FILE* fp;
char xmm[6],dhh[12];
printf("请输入要被删除电话的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名的电话,开始删除!");
f=1;k=0;
t[9]='*';t[10]='*';t[11]='*';
t[12]='*';t[13]='*';t[14]='*';
t[15]='*';t[16]='*';t[17]='*';
t[18]='*';t[19]='*';
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
printf("已经删除该姓名的电话!");
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
void abD4(void)
{
system("cls");
FILE* fp;
char xmm[6],nll[4];
printf("请输入要被删除年龄的姓名:");
scanf(" %5s",xmm);
fp=fopen("./tell.txt","r+");clearerr(fp);
if(fp==NULL)
{
printf("fail\n");
}
else
{
printf("OK\n");
}
int i,j,k=0,co=0,f=0;
char ch,t[29];
int ft=0;
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
if(ch=='\n'||ch=='\r'||ch=='>')
{
if(ch=='>')
{
t[k]='>';
t[k+1]='\0';
}
puts(t);
for(co=0,j=0;t[j]!='+';j++)
{
// printf("进来了,t[%d]:%c\n",j,t[j]);
if(t[j+1]==xmm[j])
{
// putchar(t[j]);
co++;
}
}
if(co==strlen(xmm))
{
clearerr(fp);
printf("已找到该姓名的年龄,开始删除!");
f=1;k=0;
t[21]='*';t[22]='*';t[23]='*';
puts(t);
system("pause");
printf("找到后ft=%ld",ft);
fseek(fp,ft,SEEK_SET);
fprintf(fp,"%s\0",t);
printf("已删除该姓名的年龄!");
fclose(fp);
system("pause");
return;
}
else
{
k=0;continue;
}
}
if(i==0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(i!=0&&k==0&&ch!='\n')
{
ft=ftell(fp)-1;//名字的第一个字符所在的位置锚定
printf("ft=%ld\n",ft);
}
if(ch!=' '&&ch!='\n')
{
t[k++]=ch;
}
}
if(f==0)
{
printf("\n通讯录没有此姓名,可以存入其信息!\n\n");
}
fclose(fp);
system("pause");
return;
}
/*下面是主功能函数*/
void menuA(void)
{
while(1)
{
system("cls");
printf("*************************选项A功能*************************\n""| A1:存一次 A2:存两次 A3:存三次 A4:存四次 |\n");
printf("***********************************************************\n");
printf("请输入要操作的选项A功能(1,2,3,4),返回主菜单请按R:");
getchar();
switch(getchar())
{
case 'R':return;
case 'r':return;
case '1':abA1();break;
case '2':abA2();break;
case '3':abA3();break;
case '4':abA4();break;
}
}
}
void menuB(void)
{
while(1)
{
system("cls");
printf("*************************选项B功能*************************\n""| B1:查姓名 B2:查性别 B3:查电话 B4:查年龄 |\n");
printf("***********************************************************\n");
printf("请输入要操作的选项A功能(1,2,3,4),返回主菜单请按R:");
getchar();
switch(getchar())
{
case 'R':return;
case 'r':return;
case '1':abB1();break;
case '2':abB2();break;
case '3':abB3();break;
case '4':abB4();break;
}
}
}
void menuC(void)
{
while(1)
{
system("cls");
printf("*************************选项C功能*************************\n""| C1:改姓名 C2:改性别 C3:改电话 C4:改年龄 |\n");
printf("***********************************************************\n");
printf("请输入要操作的选项A功能(1,2,3,4),返回主菜单请按R:");
getchar();
switch(getchar())
{
case 'R':return;
case 'r':return;
case '1':abC1();break;
case '2':abC2();break;
case '3':abC3();break;
case '4':abC4();break;
}
}
}
void menuD(void)
{
while(1)
{
system("cls");
printf("*************************选项D功能*************************\n""| D1:删姓名 D2:删性别 D3:删电话 D4:删年龄 |\n");
printf("***********************************************************\n");
printf("请输入要操作的选项A功能(1,2,3,4),返回主菜单请按R:");
getchar();
switch(getchar())
{
case 'R':return;
case 'r':return;
case '1':abD1();break;
case '2':abD2();break;
case '3':abD3();break;
case '4':abD4();break;
}
}
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include "TelSeaSys.h"
int main()
{
tratxt();
while(1)
{
rootmenu();
switch(getchar())
{
case 'Q': printf("\n<----------------【电话号码管理系统version1.0_已执行退出!!】---------------->\n\n");return 0;
case 'A': menuA();break;
case 'B': menuB();break;
case 'C': menuC();break;
case 'D': menuD();break;
case 'E': tratxt();break;
case 'q': printf("\n<-----------------【电话号码管理系统version1.0_已执行退出!!】----------------->\n\n");return 0;
case 'a': menuA();break;
case 'b': menuB();break;
case 'c': menuC();break;
case 'd': menuD();break;
case 'e': tratxt();break;
default: break;
}
}
system("pause");
return 0;
}
运行结果示例
1.启动界面
2.退出界面
3.主菜单界面
4.功能A界面
5.功能B界面
6.功能C界面
7.功能D界面
8.功能A第二个选项“A2:存两次”举例
9.功能B第四个选项“B4:查年龄”举例
10.功能C第三个选项“C3:改电话”举例
11.功能D第四个选项“D4:删年龄”举例及操作结果查看
------------------------------------------------------第一次发项目类文章有点激动啊!-----------------------------------------------------
-----------------------------------------------------【C语言—微项目—自编练习】------------------------------------------------------
----------------------------------------------------------------【TDTX】-----------------------------------------------------------------