C语言课程设计---通讯录

来源:互联网 发布:autodesk公司软件 编辑:程序博客网 时间:2024/04/27 07:38

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct person

char score;     /*编号*/

char name[10];  /*姓名*/

char num[15];   /*号码*/

  char email[20]; /*邮箱*/

  char age[8];    /*年龄*/ 

char adds[20];  /*住址*/ 

}per;       

int menu_select1() 

char c; 

do

{

  system("cls"); 

printf("\n\n\n");

printf("\t\t|----------------------------------|\n");

printf("\t\t| -------*****通讯录*****--------- |\n");

printf("\t\t|       ┌——————--┐         |\n");

printf("\t\t|       │ 1. 添加记录 │         |\n"); 

printf("\t\t|       │ 2. 显示记录  │         |\n"); 

printf("\t\t|       │ 3. 删除记录 │         |\n"); 

printf("\t\t|       │ 4. 查询记录 │         |\n"); 

printf("\t\t|       │ 5. 修改记录 │         |\n"); 

printf("\t\t|       │ 0. 退出程序 │         |\n"); 

printf("\t\t|       └———————┘         |\n"); 

printf("\t\t|----------------------------------|\n\n");

printf("\t\t 请您选择(0-5):[ ]\b\b");

  c=getchar(); 

}while(c<'0'||c>'6'); 

return(c-'0');/*读入字符c,若c不属于‘0’~‘3‘,重复以上操作,直至读入的满足在’0‘~’3‘的范围内,然后将字符转为数字返回*/

int menu_select2() 

{

char c; 

do

{

  system("cls"); 

printf("\n\n\n");

printf("\t\t|----------------------------------|\n");

printf("\t\t| -------*****通讯录*****--------- |\n");

printf("\t\t|       ┌——————--┐         |\n");

printf("\t\t|       │ 1. 显示记录  │         |\n"); 

printf("\t\t|       │ 2. 查询记录 │         |\n"); 

printf("\t\t|       │ 0. 退出程序 │         |\n"); 

printf("\t\t|       └———————┘         |\n"); 

printf("\t\t|----------------------------------|\n\n");

printf("\t\t 请您选择(0-2):[ ]\b\b");

  c=getchar(); 

}while(c<'0'||c>'2'); 

return(c-'0');  /*读入字符c,若c不属于‘0’~‘2‘,重复以上操作,直至读入的满足在’0‘~’2‘的范围内,然后将字符转为数字返回*/

}

 Input()

FILE *fp;

  int flag; 

if((fp=fopen("D:\\address.txt","ab"))==NULL)

{

printf("\nCan not open the address file!");

getchar();

exit(1);

}

do

{

printf("\t 编号:"); 

scanf("\t%d",&per.score); 

printf("\t 姓名:");

  scanf("\t%s",per.name); 

printf("\t 年龄:"); 

scanf("\t%s",per.age); 

printf("\t 电话号码:"); 

scanf("\t%s",per.num);

  printf("\t 通讯住址:");  scanf("\t%s",per.adds); 

printf("\t 电子邮箱:"); 

scanf("\t%s",per.email);

 

fwrite(&per,sizeof(per),1,fp);

printf("继续添加?(1/0):[ ]\b\b");

scanf("%d",&flag);

}while(flag);

fclose(fp);

void Display() 

FILE *fp;

if((fp=fopen("D:\\address.txt","rb"))==NULL)

{

printf("\nCan not open the address file!");

getchar();

exit(1);

}

while(fread(&per,sizeof(per),1,fp)==1)

{

printf("--------------------------------------------------\n"); 

printf("编号  姓名   年龄   电话号码    通讯地址       电子邮箱\n");/*格式*/

printf("---------------------------------------------------\n"); 

printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per.score,per.name,per.age,per.num,per.adds,per.email); 

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

fclose(fp);

system("pause");/*按任意键继续*/

Delete() 

FILE *fp1,*fp2;

char s[20];

char temp[20]; 

int flag;

int fla;

do

{

if((fp1=fopen("D:\\address.txt","rb"))==NULL)

{

printf("\tCan not open the address file!");

getchar();

exit(1);

}

if((fp2=fopen("D:\\temp.txt","wb"))==NULL)

{

printf("\tCan not creat the tmep file!");

getchar();

exit(1);

}

  printf("\t 请输入想删除记录中的名字:");

fflush(stdin);

  scanf("%s",&s);

flag=0 ;

while(fread(&per,sizeof(per),1,fp1)==1)

{

if(strcmp(s,per.name)==0)

{

  printf("--------------------------------------------------\n"); 

printf("编号  姓名   年龄   电话号码    通讯地址       电子邮箱\n");/*格式*/

printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per.score,per.name,per.age,per.num,per.adds,per.email); 

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

flag=1;

continue;

}

fwrite(&per,sizeof(per),1,fp2);

}

fclose(fp1);

fclose(fp2);

if(flag==1)

{

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

remove("D:\\address.txt");

rename("D:\\temp.txt","D:\\address.txt");  

}

else

{

printf("\t 通讯录中没有此人!\n");  

}

printf("继续删除?(1/0):[ ]\b\b");

scanf("%d",&fla);

}while(fla);

void Search()

FILE *fp;

int m; 

int flag;

if((fp=fopen("D:\\address.txt","rb"))==NULL)

{

printf("\tCan not open the inform file!");

getchar();

exit(1);

}

do

{

rewind(fp);/*将文件指针重新指向一个流的开头。*/

printf("\t\n 请选择查询方式:\n");

printf("\t┌——————┐\n"); 

printf("\t│1------姓名 │\n"); 

printf("\t│2------电话 │\n");

  printf("\t│3------地址 │\n");

printf("\t└——————┘\n");

  printf("请选择:[ ]\b\b"); 

scanf("%d",&m); 

while(m!=1&&m!=2&&m!=3&&m!=4)

  { 

printf("输入错误,请重新选择:"); 

scanf("%d",&m); 

}

  if(m==1) 

char s[20];

  int flag=0;

  printf("\t 请输入想查询的姓名:");

  scanf("\t%s",&s);

while(fread(&per,sizeof(per),1,fp)==1)

  if(strcmp(s,per.name)==0)

{

flag=1;

printf("\t 此人编号: %d\n",per.score);

  printf("\t 此人年龄: %s\n",per.age); 

printf("\t 电话号码: %s\n",per.num); 

printf("\t 通讯地址: %s\n",per.adds);

  printf("\t 电子邮箱: %s\n",per.email);

break;

}

if(flag==1)

printf("found!");

else

{

printf("\t通讯录中没有此人!\n");

}

  }

if(m==2) 

char s[20]; 

printf("\t 请输入想查询的电话:");

scanf("\t%s",&s); 

while(fread(&per,sizeof(per),1,fp)==1)

if(strcmp(s,per.num)==0) 

{

printf("\t 此人编号: %d\n",per.score);

printf("\t 此人姓名: %s\n",per.name);

printf("\t 此人年龄: %s\n",per.age);

printf("\t 通讯地址: %s\n",per.adds); 

printf("\t 电子邮箱: %s\n",per.email); 

}

if(flag==1)

printf("found!");

else

{

printf("\t通讯录中没有此人!\n");

}

}

  if(m==3) 

char s[20]; 

printf("\t 请输入想查询的地址:");

  scanf("\t%s",&s);

while(fread(&per,sizeof(per),1,fp)==1)

  if(strcmp(s,per.adds)==0) 

{

 

  printf("\t 此人编号: %d\n",per.score);

  printf("\t 此人姓名: %s\n",per.name);

  printf("\t 此人年龄: %s\n",per.age); 

printf("\t 电话号码: %s\n",per.num); 

printf("\t 电子邮箱: %s\n",per.email); 

}

if(flag==1)

printf("found!");

else

{

printf("\t通讯录中没有此人!\n");

}

printf("继续查询?(1/0):[ ]\b\b");

scanf("%d",&flag);

}while(flag);

fclose(fp);

}

 

void Modify() 

FILE * fp1,* fp2;

char s[20];

    int flag=0;

int fla;

do

{

if((fp1=fopen("D:\\address.txt","rb"))==NULL)

{

printf("\tCan not open the address file!");

getchar();

exit(1);

}

if((fp2=fopen("D:\\temp.txt","wb"))==NULL)

{

printf("\tCan not open the temp file!");

getchar();

exit(1);

}

  printf("\t 请输入想修改的记录中的名字:"); 

scanf("%s",&s);

flag=0;

while(fread(&per,sizeof(per),1,fp1)==1)

{

if(strcmp(s,per.name)==0)

{

 

printf("\t 编号:"); 

scanf("\t%d",&per.score);

  printf("\t 姓名:");

  scanf("\t%s",per.name);

  printf("\t 年龄:");

scanf("\t%s",per.age);

printf("\t 电话号码:"); 

scanf("\t%s",per.num); 

printf("\t 通讯住址:"); 

scanf("\t%s",per.adds);

printf("\t 电子邮箱:"); 

scanf("\t%s",per.email); 

flag=1;

}

fwrite(&per,sizeof(per),1,fp2);

}

fclose(fp1);

fclose(fp2);

if(flag==1)

{

printf("\t修改成功!\n");

remove("D:\\address.txt");

rename("D:\\temp.txt","D:\\address.txt");

}

else

  { 

printf("\t 通讯录中没有此人!\n"); 

printf("继续添加?(1/0):[ ]\b\b");

scanf("%d",&fla);

}while(fla);

 } 

void mima()

{

int mima,m,n=50;

system("COLOR 0a");

printf("\n\n");

printf("\t ____________________________________________________________\n");

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

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

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

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

printf("\t|**               |  通讯录管理系统  |                     **|\n");

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

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

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

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

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

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

printf("\t|***********************************************姬巧春制作***|\n");

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

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

printf("\t\n请根据您的职位选择:[ ]\b\b\n");

  printf("\t┌——————-┐\n"); 

printf("\t│1------管理员│\n"); 

printf("\t│2------用户  │\n"); 

printf("\t└——————-┘\n");

  printf("请选择:"); 

scanf("%d",&m);

while(m!=1&&m!=2)

  { 

printf("输入错误,请重新选择:[ ]\b\b"); 

scanf("%d",&m); 

}

if(m==1)

{

printf("请输入五位数字密码:");

for(;;)

{

scanf("%d",&mima);

if (mima==12345)

break;

else 

printf("密码错误,请重新输入\n");

}

for(;;) 

switch(menu_select1())

case 1: 

printf("\n\t 添加记录到通讯录\n");

  Input();

  break; 

case 2: 

printf("\n\t\t\t 通讯录记录表\n");

Display();

  break; 

case 3:

  printf("\n\t 从通讯录中删除记录\n");

  Delete(); 

system("pause");

printf("\t"); 

break; /*删除记录*/ 

case 4: 

printf("\n\t 在通讯录中查找记录\n"); 

Search();

  printf("\t");

system("pause");

  break; 

case 5:

  printf("\n\t 修改通讯录中的记录\n");

      Modify(); 

printf("\t");

system("pause");

  break; 

case 0: 

printf("\n\t\t 谢谢使用,再见!\n"); 

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

exit(0); 

}

}

system("cls");

}

if(m==2)

{

for(;;)

{

switch(menu_select2())

  { 

case 1: 

printf("\n\t\t\t 通讯录记录表\n");

Display();

  break;

case 2: 

printf("\n\t 在通讯录中查找记录\n"); 

Search();

  printf("\t");

system("pause");

  break; 

case 0: 

printf("\n\t\t 谢谢使用,再见!\n"); 

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

exit(0); 

}

}

}

system("cls"); 

}

void main()

mima();

}

原创粉丝点击