1.[文件]
课程设计.c ~ 9KB
下载(179)
#include
#include
#include
#include
#define MAX_SIZE 100
struct student
{
char name[15];
char num[15];
char addr[15];
}stu[MAX_SIZE];
FILE *fp;
int count;
int loadfile();//载入通讯录文件
void savefile();//保存所有联系人
void input();//添加联系人
void find();//查找联系人
void updata();//更新联系人
void deleteall();//删除所有联系人
void deletename();//按姓名删除单个联系人
void main()
{
int i;
char a;
char name[15];
loadfile();
do{
system("CLS");
printf("\n\n");
printf("\n\t\t┏━━━━━━━━━ 主菜单 ━━━━━━━━━┓");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 1-新建联系人 ****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 2-查找联系人 ****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 3-更新联系人 ****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 4-删除所有联系人 ************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 5-删除单个联系人 ************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃**************** 6- 退 出 ****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛");
printf("\n\t\t 请选择:");
a=getch();
switch(a)
{
case '1':
system("CLS");
input();
break;
case '2':
system("CLS");
find();
break;
case '3':
system("CLS");
updata();
break;
case '4':
system("CLS");
deleteall();
break;
case '5':
system("CLS");
deletename();
break;
case '6':
printf("6\n\t\t ");
exit(1);
break;
default:
printf("\n\n\t\t 错误,请重新输入\n\t\t ");
getch();
break;
}
}while(a!='6');
}
int loadfile()
{
if((fp=fopen("address_list.txt","rb"))==NULL) //判断是否已有通讯录
{
printf("\n\n\t\t\t通讯录未建立\n");
if((fp=fopen("address_list.txt","wb"))==NULL)
printf("\n\n\t\t\t通讯录建立失败\n\n");
else
{
printf("\n\t\t\t正在建立新通讯录,请稍等···");
getch();
printf("\n\n\t\t\t通讯录建立成功\n\n");
printf("\n\t\t\t按任意键继续······");
getch();
count=0;
return count;
}
}
fseek(fp,0,2);//获取通讯录成员数目
if(ftell(fp)>0)
{
rewind(fp);
for(count=0; !feof(fp)&&fread(&stu[count],sizeof(struct student),1,fp); count++);
return count;
}
else
{
count=0;
return count;
}
}
void savefile()
{
int i;
fp=fopen("address_list.txt","wb");
for(i=0;i
{
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void input()
{
printf("\n\t\t\t输入联系人信息\n");
printf("\n\t\t\t**********************\n");
printf("\n\t\t\t姓 名:") ;
scanf("%s",stu[count].name);
printf("\n\t\t\t电话号码:");
scanf("%s",stu[count].num);
printf("\n\t\t\t家庭住址:");
scanf("%s",stu[count].addr);
printf("\n\t\t\t**********************\n");
count++;
savefile();
printf("\n\t\t\t是否继续添加联系人?(y/n)");
if(getch()=='y')
{
system("cls");
input();
}
return;
}
void find()
{
int j;
char name[15];
fp=fopen("address_list.txt","rb");
if(count==0)
{
printf("\n\n\n\t\t\t通讯录中没有任何记录,请先添加联系人");
printf("\n\n\t\t\t按任意键继续······");
getch();
return;
}
printf("\n\t\t\t输入查找的姓名:");//按姓名查找
scanf("%s",name);
for(j=0;!feof(fp);j++)
{
fread(&stu[j],sizeof(struct student),1,fp);
if(strcmp(name,stu[j].name)==0)
{
printf("\n\t\t\t**********************\n");
printf("\n\t\t\t 姓名:%s\n",stu[j].name);
printf("\n\t\t\t 电话号码:%s\n",stu[j].num);
printf("\n\t\t\t 地址:%s\n",stu[j].addr);
printf("\n\t\t\t**********************\n");
fclose(fp);
printf("\n\t\t\t按任意键继续······");
getch();
return;
}
}
printf("\n\t\t\t未找到联系人,请重新查找\n");
printf("\n\t\t\t按任意键继续······");
getch();
fclose(fp);
}
void updata()
{
int i;
char a,name[15];
fp=fopen("address_list.txt","rb");
if(count==0)
{
printf("\n\n\n\t\t\t通讯录中没有任何记录,请先添加联系人");
printf("\n\n\t\t\t按任意键继续······");
getch();
return;
}
printf("\n\t\t\t输入要更新的联系人姓名:");
scanf("%s",name);
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(strcmp(name,stu[i].name)==0)
{
printf("\n\t\t\t你要更新的联系人“%s”的信息如下:",name);
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t 姓名:%s\n",stu[i].name);
printf("\n\t\t\t 电话号码:%s\n",stu[i].num);
printf("\n\t\t\t 地址:%s\n",stu[i].addr);
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t是否继续(y/n)");
if(getch()!='y')
return;
system("CLS");
printf("\n\t\t\t选择你要更新的选项");
printf("\n\t\t\t\t1- 姓 名 ");
printf("\n\t\t\t\t2-电话号码");
printf("\n\t\t\t\t3- 地 址 ");
printf("\n\t\t\t\t4- 返 回 ");
printf("\n\t\t\t请选择:");
a=getch();
switch(a)
{
case '1':
printf("1\n\t\t\t姓 名:");
scanf("%s",stu[i].name);
break;
case '2':
printf("2\n\t\t\t电话号码:");
scanf("%s",stu[i].num);
break;
case '3':
printf("3\n\t\t\t地址:");
scanf("%s",stu[i].addr);
break;
case '4':
return;
break;
default:
return;
break;
}
system("cls");
printf("\n\t\t\t 您的修改结果为:");
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t 姓名:%s\n",stu[i].name);
printf("\n\t\t\t 电话号码:%s\n",stu[i].num);
printf("\n\t\t\t 地址:%s\n",stu[i].addr);
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t 确认修改?(y/n)");
if(getch()!='y')
return;
savefile();
fclose(fp);
printf("\n\n\t\t\t联系人更新完毕,按任意键返回······");
getch();
return;
}
}
printf("\n\t\t\t未找到联系人,请重新查找\n");
printf("\n\t\t\t按任意键继续······");
getch();
fclose(fp);
}
void deleteall()
{
fp=fopen("address_list.txt","rb");
if(count==0)
{
printf("\n\n\n\t\t\t通讯录中没有任何记录,不用再删除");
printf("\n\n\t\t\t按任意键继续······");
getch();
return;
}
printf("\n\n\t\t\t联系人删除后不能恢复\n\n\t\t\t是否继续删除所有联系人(y/n): ");
if(getch()!='y')
return;
fp=fopen("address_list.txt","wb");
count=0;
savefile();
printf("\n\n\t\t\t已删除通讯录中所有联系人");
printf("\n\n\t\t\t按任意键继续······");
getch();
fclose(fp);
}
void deletename()
{
int i,j;
char name[15];
fp=fopen("address_list.txt","rb");
if(count==0)
{
printf("\n\n\n\t\t\t通讯录中没有任何记录,不用再删除");
printf("\n\n\t\t\t按任意键继续······");
getch();
return;
}
printf("\n\t\t\t输入要删除的联系人姓名:");
scanf("%s",name);
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(strcmp(name,stu[i].name)==0)
{
printf("\n\t\t\t你要删除的联系人“%s”的信息如下:",name);
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t 姓名:%s\n",stu[i].name);
printf("\n\t\t\t 电话号码:%s\n",stu[i].num);
printf("\n\t\t\t 地址:%s\n",stu[i].addr);
printf("\n\t\t\t****************************\n");
printf("\n\t\t\t是否删除(y/n): ");
if(getch()!='y')
return;
for(j=i;j
{
stu[j]=stu[j+1];
}
count--;
savefile();
printf("\n\n\t\t\t该联系人已经成功删除\n\n\t\t\t按任意键继续·····");
getch();
return;
}
}
printf("\n\t\t\t未找到该联系人,请返回重新输入\n");
printf("\n\t\t\t按任意键继续······");
getch();
}