c语言程序 通讯录,通讯录c语言程序

满意答案

以前写了一个简单的: #include #include /*与malloc.h差不多*/ #include #include using namespace std; #define maxlen 15 struct persons {int num; /*定义结构体数组用于缓存数据*/ char name[20]; char e_addr[20]; char tel_no[15]; char sim_no; char arch; }persons[maxlen]; typedef struct lnode { /*通讯录结构中结点的定义*/ int num; char name[20]; char e_addr[20]; char tel_no[15]; char sim_no; char arch; struct lnode *next; }listnode,*linklist; linklist head=NULL,r=NULL; /*定义头指针和尾指针*/ listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9; int i; char name1[10],ch; char tel_no1[15]; char arch1; char sim_no1; char e_addr1[20]; char s1[20]; FILE *fp; /*定义文件指针*/ void creat() /*将文件的信息读入结构体数组在转存入链表中*/ { int j; long k; fp=fopen("数据文件.txt","r t"); /*打开文件*/ if(fp!=NULL) {for(i=0;i<=maxlen;i++ ) { j=fgetc(fp); if(j==EOF) return; k=i; fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/ fread(&persons[i],sizeof(struct persons),1,fp); s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/ s->num=persons[i].num; strcpy(s->name,persons[i].name); strcpy(s->e_addr,persons[i].e_addr); strcpy(s->tel_no,persons[i].tel_no); s->sim_no=persons[i].sim_no; s->arch=persons[i].arch; if(head==NULL) /*用尾插法将其插入链表中*/ {head=s;r=head;head->next=NULL;} else {r->next=s; r=s;r->next=NULL; } }fclose(fp); } else { fp=fopen("数据文件.txt","w"); /*不能打开另开辟一个文件*/ i=1; } } void Show() {printf("成功调用该函数\n");} void Delete() {printf("成功调用该函数\n");} void Input() /*向.通讯录中输入一个人的信息*/ { s=(linklist)malloc(sizeof(listnode)); printf("\n\n\t请输入该用户的信息:"); printf("姓名:"); scanf("%s",&s->name); printf("电话号码:"); scanf("%s",&s->tel_no); printf("单键拨号:"); scanf("%s",&s->sim_no); printf("E-mail地址:"); scanf("%s",&s->e_addr); printf("类别:"); scanf("%s",&s->arch); if(head==NULL)printf("\n\n"); else {p8=head; while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0) p8=p8->next; if(p8!=NULL) {printf("您添加的用户已存在!"); free(s);}} if(head==NULL) { s->next = 0; head=s; r = s; } else { s->next = 0; r->next = s; r = s; } } void Alter() { printf("success!\n");} int main() { system("color a"); creat(); do { printf("\n\n\t\t请选择操作:"); printf("\n\t\t1.显示通讯录"); printf("\n\t\t2.删除通讯录"); printf("\n\t\t3.添加通讯录"); printf("\n\t\t4.编辑通讯录"); printf("\n\n\n"); printf("\t请选择:"); cin>>ch; switch(ch) { case '1': Show(); /*用单条件多选择语句实现调用与循环*/ break; case '2': Delete(); break; case '3': Input(); break; case '4': Alter(); break; fclose(fp); exit(0); break; default: printf("\n\t The num should 1-6!!! \n"); break; } } while(1); }

03分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值