C语言课程设计通讯录管理系统源程序.docx
C语言课程设计通讯录管理系统源程序#include"stdio.h" #include <stdlib.h> #include"string.h" #define header1 "|-电话簿-|n" #define header2 "| name | phonenum | adress | n" #define header3 "|-|-|-|n" #define end "|-结束-|" typedef struct _CStudent char szName20; /* 学生姓名 */ /*电话*/ /*地址*/ double number; char adress100; CStudent; void menu; int duqu(int *len); int zengjia(int *k,int *len); int chaxun(int *len); int xiugai(int *len); int shanchu(int *len); int input(CStudent* p); /* 从键盘输入 */ int output(int *len); /* 向屏幕输出 */ int search(CStudent p,int *j,CStudent c3,int *len); int sname(CStudent p,int *len); /*姓名查询*/ int snumber(CStudent p,int *len); /*电话查询*/ void xname(CStudent q100,int i); /*姓名修改*/ void xnumber(CStudent q100,int i); /*号码修改*/ void xadress(CStudent q100,int i); /*地址修改*/ int sput(int *len,CStudent q100);/*删除的处理模块*/ main( ) static int len=1; int i,j=0,k=0; while(j=0) do while(i<0|i>5); /system("cls"); switch(i) printf("请选择你需要的服务:n"); scanf("%d",&i); menu; case 1:j=zengjia(&k,&len);break;/*增加*/ case 2:j=duqu(&len);break; /*读取*/ case 3:j=chaxun(&len);break; /*查找*/ case 4:j=xiugai(&len);break; /*修改*/ case 5:j=shanchu(&len);break;/*删除*/ default:printf(" |*欢迎下次使用电话薄管理系统!*|n");j=1;break; int duqu(int *len) CStudent p100; int i; FILE *fp; system("cls"); printf("ntt|* * 欢迎进入读取联系人界面! * *|nn"); if(fp=fopen("e:/file3","r")=NULL) printf("error!n"); return -1; printf("%s%s%s",header1,header2,header3); for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s ",pi.szName,&pi.number,pi.adress); printf("| %s | %.0lf | %s |n",pi.szName,pi.number,pi.adress); printf("%sn",end); system("pause"); return 0; void menu system("cls"); system("color 1F"); printf("nnn"); /*输出主菜单*/ printf("tt|* * 欢迎进入通讯录管理系统! * *|n"); printf("tt|*menu*|n"); printf("tt| |n"); printf("tt| 1 增加 2 读取 |n"); printf("tt| |n"); printf("tt| 3 查找 4 修改 |n"); printf("tt| |n"); printf("tt| 5 删除 0 退出 |n"); printf("tt| |n"); printf("tt|*|n"); int zengjia(int *k,int *len) CStudent p100; int i,j; FILE *fp; system("cls"); printf("ntt|* * 欢迎进入增加联系人界面! * *|nn"); printf("请输入增加的个数:n"); scanf("%d",&j); k=&j; (*len)+=j; /system("cls"); if(fp=fopen("e:/file3","a+")=NULL) printf("error!n"); for(i=0;i<j;i+) return -1; printf("姓名:"); scanf("%s",&pi.szName); printf("电话:"); scanf("%lf",&pi.number); printf("地址:"); scanf("%s",pi.adress); for(i=0;i<j;i+) fprintf(fp,"n%s %lf %s ",pi.szName,pi.number,pi.adress); fclose(fp); output(len); return 0; int chaxun(int *len) int i; CStudent aa,cc; system("cls"); printf("ntt|* * 欢迎进入查询联系人界面! * *|nn"); do printf(" printf(" printf(" printf(" printf(" printf(" printf(" |-查找功能-|n"); | |n"); | 1 按电话号码查找 |n"); | |n"); | 2 按姓名查找 |n"); | |n"); | 0 退出 |n"); | |n"); printf(" printf("请输入:n"); scanf("%d",&i); while(i>2|i<0); if(i=2) printf("请输入姓名:n"); scanf("%s",&aa.szName); sname(aa,len); else if(i=1) printf("请输入号码:n"); scanf("%lf",&cc.number); snumber(cc,len); else printf("欢迎下次使用电话薄管理系统!n"); return 0; int xiugai(int *len) CStudent p100,q100,a; int i,j,b; FILE *fp; system("cls"); printf("ntt|* * 欢迎进入修改联系人界面! * *|nn"); printf("请输入修改人的姓名:n"); scanf("%s",a.szName); if(fp=fopen("e:/file3","r+")=NULL) printf("error!n"); return -1; for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s",pi.szName,&pi.number,pi.adress); for(i=0;i<*len;i+) strcpy(qi.szName,pi.szName); strcpy(qi.adress,pi.adress); qi.number=pi.number; for(i=0;i<*len;i+) if(strcmp(pi.szName,a.szName)=0) j=1; break; if(j=1) printf(" printf(" printf(" printf(" printf(" printf(" printf(" printf(" |-修改功能-|n"); | |n"); | 1 修改姓名 |n"); | |n"); | 2 修改号码 |n"); | |n"); | 3 修改地址 |n"); | |n"); do printf("请选择修改内容:n"); scanf("%d",&b); if(b=1) xname(q,i); if(b=2) xnumber(q,i); if(b=3) xadress(q,i); while(b>3|b<1); printf("修改的联系人重新保存!n"); sput(len,q); else printf(" |*通讯录中没有该人的信息!*|n"); system("pause"); fclose(fp); output(len); return 0; void xname(CStudent q100,int i) printf("姓名重置:"); scanf("%s",qi.szName); void xnumber(CStudent q100,int i) printf("电话重置:"); scanf("%lf",&qi.number); void xadress(CStudent q100,int i) printf("地址重置:"); scanf("%s",qi.adress); /*号码修改*/ /*地址修改*/ int shanchu(int *len) CStudent p100,q100,a; int i,j; FILE *fp; system("cls"); printf("ntt|* * 欢迎进入删除联系人界面! * *|nn"); printf("请输入删除人的姓名:n"); scanf("%s",a.szName); if(fp=fopen("e:/file3","r+")=NULL) printf("error!n"); return -1; for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s",pi.szName,&pi.number,pi.adress); for(i=0;i<*len;i+) strcpy(qi.szName,pi.szName); strcpy(qi.adress,pi.adress); qi.number=pi.number; for(i=0;i<*len;i+) if(strcmp(pi.szName,a.szName)=0) j=1; break; if(j=1) for(;i<*len-1;i+) strcpy(qi.szName,qi+1.szName); strcpy(qi.adress,pi.adress); qi.number=qi+1.number; printf("删除成功!n"); (*len)-; sput(len,q); for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s",qi.szName,&qi.number,qi.adress); output(len); else printf(" |*通讯录中没有该人的信息!*|n"); fclose(fp); return 0; int sput(int *len,CStudent q100) int i; FILE *fp; if(fp=fopen("e:/file3","w")=NULL) printf("error!n"); return -1; for(i=0;i<*len;i+) fprintf(fp,"%s %lf %s ",qi.szName,qi.number,qi.adress); fclose(fp); return 0; search(CStudent p,int *j,CStudent c100,int *len) /*查询*/ FILE *fp; int i,flag=0; if(fp=fopen("e:file3","r")=NULL) for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s",ci.szName,&ci.number,ci.adress); if(strcmp(ci.szName,p.szName)=0) flag=1;break; if(ci.number=p.number) printf("cannot write filen"); return -1; flag=2;break; *j=i; fclose(fp); return flag; int sname(CStudent p,int *len) CStudent c100; int i,flag; flag=search(p,&i,c,len); if (flag=1) printf("%s%s%s",header1,header2,header3); printf("| %s | %.0lf | %s |n",ci.szName,ci.number,ci.adress); printf("%s",end); printf("n"); else printf("Not Foundn"); system("pause"); return 0; int snumber(CStudent p,int *len) CStudent c100; int i,flag; flag=search(p,&i,c,len); if (flag=2) printf("%s%s%s",header1,header2,header3); printf("| %s | %.0lf | %s |n",ci.szName,ci.number,ci.adress); printf("%s",end); printf("n"); else printf("Not Foundn"); system("pause"); return 0; int output(int *len) /*向屏幕输出*/ CStudent p100; int i; FILE *fp; if(fp=fopen("e:/file3","r")=NULL) printf("error!n"); return -1; printf("%s%s%s",header1,header2,header3); for(i=0;i<*len;i+) fscanf(fp,"%s%lf%s",pi.szName,&pi.number,pi.adress); printf("| %s | %.0lf | %s |n",pi.szName,pi.number,pi.adress); printf("%s",end); printf("n"); system("pause"); return 0;