C语言通讯录源码

  • 格式:doc
  • 大小:53.50 KB
  • 文档页数:8

#include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define M 50typedef struct{char name[20];char units[30];char tele[10];}ADDRESS;int enter(ADDRESS t[]);void list(ADDRESS t[],int n);void search(ADDRESS t[],int n);int delete(ADDRESS t[],int n);int add(ADDRESS t[],int n);void save(ADDRESS t[],int n);int load(ADDRESS t[]);void display(ADDRESS t[]);void sort(ADDRESS t[],int n);void qseek(ADDRESS t[],int n);void copy();void print(ADDRESS temp);int find(ADDRESS t[],int n,char *s) ; int menu_select();main(){int i;ADDRESS adr[M];int length;clrscr();for(;;){switch(menu_select()){case 0:length=enter(adr);break;case 1:list(adr,length);break;case 2:search(adr,length);break;case 3:length=delete(adr,length);break; case 4:length=add(adr,length); break; case 5:save(adr,length);break;case 6:length=load(adr); break;case 7:display(adr);break;case 8:sort(adr,length);break;case 9:qseek(adr,length);break;case 10:copy();break;case 11:exit(0);}}}menu_select(){char s[80];int c;gotoxy(1,25);printf("press any key enter menu......\n");getch();clrscr();gotoxy(1,1);printf("********************MENU*********************\n\n"); printf(" 0. Enter record\n");printf(" 1. List the file\n");printf(" 2. Search record on name\n");printf(" 3. Delete a record\n");printf(" 4. add record \n");printf(" 5. Save the file\n");printf(" 6. Load the file\n");printf(" 7. display record on order\n");printf(" 8. sort to make new file\n");printf(" 9. Quick seek record\n");printf(" 10. copy the file to new file\n");printf(" 11. Quit\n");printf("***********************************************\n"); do{printf("\n Enter you choice(0~11):");scanf("%s",s);c=atoi(s);}while(c<0||c>11);return c;}int enter(ADDRESS t[]){int i,n;char *s;clrscr();printf("\nplease input num \n");scanf("%d",&n);printf("please input record \n");printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);printf("----------------------------------------------\n");}return n;}void list(ADDRESS t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n"); printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0){printf("Press any key continue...\n");getch();}printf("************************end*******************\n");}void search(ADDRESS t[],int n){char s[20];int i;clrscr();printf("please search name\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("not found\n");elseprint(t[i]);}void print(ADDRESS temp){clrscr();printf("\n\n********************************************\n"); printf("name unit telephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n"); }int find(ADDRESS t[],int n,char *s){int i;for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0)return i;}return i;}int delete(ADDRESS t[],int n){char s[20];int ch=0;int i,j;printf("please deleted name\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("no found not deleted\n");else{print(t[i]);printf("Are you sure delete it(1/0)\n");scanf("%d",&ch);if(ch==1){for(j=i+1;j<n;j++){strcpy(t[j-1].name,t[j].name);strcpy(t[j-1].units,t[j].units);strcpy(t[j-1].tele,t[j].tele);}n--;}}return n;}int add(ADDRESS t[],int n){ADDRESS temp;int i,j;char s[20];printf("please input record\n");printf("************************************************\n"); printf("name unit telephone\n");printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele);printf("------------------------------------------------\n");printf("please input locate name \n");scanf("%s",s);i=find(t,n,s);for(j=n-1;j>=i;j--){strcpy(t[j+1].name,t[j].name);strcpy(t[j+1].units,t[j].units);strcpy(t[j+1].tele,t[j].tele);}strcpy(t[i].name,);strcpy(t[i].units,temp.units);strcpy(t[i].tele,temp.tele);n++;return n;}void save(ADDRESS t[],int n){int i;FILE *fp;if((fp=fopen("record.txt","wb"))==NULL){printf("can not open file\n");exit(1);}printf("\nSaving file\n");fprintf(fp,"%d",n);fprintf(fp,"\r\n");for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);fprintf(fp,"\r\n");}fclose(fp);printf("****save success***\n");}int load(ADDRESS t[]){int i,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("can not open file\n");exit(1);}fscanf(fp,"%d",&n);for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); fclose(fp);printf("You have success read data from file!!!\n"); return n;}void display(ADDRESS t[]){int id,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("can not open file\n");exit(1);}printf("Enter order number...\n");scanf("%d",&id);fscanf(fp,"%d",&n);if(id>=0&&id<n){fseek(fp,(id-1)*sizeof(ADDRESS),1);print(t[id]);printf("\r\n");}elseprintf("no %d number record!!!\n ",id);fclose(fp);}void sort(ADDRESS t[],int n){int i,j,flag;ADDRESS temp;for(i=0;i<n;i++){flag=0;for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) {flag=1;strcpy(,t[j].name);strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,); strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;}printf("sort sucess!!!\n");}void qseek(ADDRESS t[],int n){char s[20];int l,r,m;printf("\nPlease sort before qseek!\n"); printf("please enter name for qseek\n"); scanf("%s",s);l=0;r=n-1;while(l<=r){m=(l+r)/2;if(strcmp(t[m].name,s)==0){print(t[m]);return}if(strcmp(t[m].name,s)<0)l=m+1;elser=m-1;}if(l>r)printf("not found\n");}void copy(){char outfile[20];int i,n;ADDRESS temp[M];FILE *sfp,*tfp;clrscr();if((sfp=fopen("record.txt","rb"))==NULL){printf("can not open file\n");exit(1);}printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); scanf("%s",outfile);if((tfp=fopen(outfile,"wb"))==NULL){printf("can not open file\n");exit(1);}fscanf(sfp,"%d",&n);fprintf(tfp,"%d",n);fprintf(tfp,"\r\n");for(i=0;i<n;i++){fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units, temp[i].tele);fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,temp[i].units,temp[i].tele);fprintf(tfp,"\r\n");}fclose(sfp);fclose(tfp);printf("you have success copy file!!!\n");}。