问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写一个手机电话本程序

发布网友 发布时间:2024-03-17 06:25

我来回答

1个回答

热心网友 时间:2024-03-23 02:23

#include <stdio.h> #include <stdlib.h> #include <string.h> #define szSTR 64 #define fileDB "c:\\contact.txt" struct CONTACT { char name[szSTR];/*姓名*/ char unit[szSTR];/*工作单位*/ char tele[szSTR];/*电话*/ char mail[szSTR];/*mail*/ }; typedef struct CONTACT CON; #define BNAME 1 #define BUNIT 2 #define BTELE 4 #define BMAIL 8 #define BFULL 0xFF int OPER[5] = ; void input(CON * s, int mask) { if(mask & BNAME) if(mask & BUNIT) if(mask & BTELE) if(mask & BMAIL) }/*end input*/ void show (int id, CON * s) { if(!s) return ; if(id) printf("%d\t%s\t%s\t%s\t%s\n", id, s->name , s->unit , s->tele , s->mail ); else printf("%s%s%s%s\n", s->name , s->unit , s->tele , s->mail ); /*end if*/ }/*end show*/ void regist(void) { CON s; FILE * f = 0; input(&s, BFULL); f = fopen(fileDB, "ab"); fwrite(&s,sizeof(s),1,f); fclose(f); printf("资料已保存!\n"); }/*end regist*/ int browse(char * key, fpos_t * p, CON * s) { FILE * f =0; int i = 0, r = 0; CON t; char * a = 0, * b = 0; fpos_t q; if(!s) return 0; f = fopen(fileDB, "rb"); if(!f) { printf("数据库暂无记录\n"); return 0; }/*end if*/ printf("编号\t姓名\t单位\t电话\t电邮\n"); printf("------------------------------------------------\n"); while(!feof(f)) { fgetpos(f, &q); r = fread(&t, sizeof(t), 1, f); if(r<1)break; if(t.name[0]==0) continue; if(key) { a = strstr(t.name , key); b = strstr(t.tele , key); if(a == 0 && b == 0) continue; }/*end if*/ if(p) *p = q; if(s) memcpy(s, &t, sizeof(t)); i++; show(i, &t); }/*end while*/ fclose(f); printf("------------------------------------------------\n"); return i; }/*end browse*/ fpos_t query(CON * s) { char key[szSTR]=""; fpos_t p = 0; int r = 0; printf("请输入姓名或者电话号码:"); scanf("%s", key); r = browse(key, &p, s); return r?p:-1; }/*end query*/ void clear(void) { FILE * f = 0; CON s; fpos_t p = query(&s); if(p<0) return; f = fopen(fileDB, "rb+"); fsetpos(f, &p); memset(&s, 0, sizeof(s)); fwrite(&s, sizeof(s),1, f); fclose(f); printf("记录已删除!\n"); }/*end clear*/ void modify(void) { FILE * f = 0; CON s; int cmd = 0; fpos_t p = query(&s); if(p<0) return; f = fopen(fileDB, "rb+"); fsetpos(f, &p); for(;;) { show(0, &s); printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n"); scanf("%d", &cmd); switch(cmd) { case 1: case 2: case 3: case 4: input(&s, OPER[cmd]); break; case 5: fsetpos(f, &p); fwrite(&s, sizeof(s), 1, f); case 6: fclose(f); return; default: printf("错误的操作,请重新输入。\n"); }/*end case*/ }/*mext*/ }/*end clear*/ int main(void) { int cmd = 0; CON s; for(;;) { printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n"); scanf("%d", &cmd); switch(cmd) { case 0: return 0; case 1: regist(); break; case 2: query(&s); break; case 3: clear(); break; case 4: modify(); break; case 5: browse(0, 0, &s); break; }//end case } return 0; }

记得采纳啊
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
基于MATLAB和LINGO的数学实验内容简介 天津医保怎么交费? 合众人寿保险公司怎么样?是不是传销? 2023年入党介绍人意见书写规范 excel如何建立应收应付往来账 会计应收应付明细报表怎么做 在EXCEL表格中如何建应收应付账 26个应收账款及账龄分析表来了!一键生成,效果图清晰明了 调节器作用 吕虔的人物生平 如何实现我的养家日记衣锦还乡? 母亲的养家大业日记大全 公司注册一步搞定万事开头不再难 出塞体会到什么 讨教下,北京博雅明悦学校的口碑怎样? 为什么说博雅明悦是一所美丽小学? 苍南中学章思琪初中在哪读 瓷砖的锈迹怎么清理掉 谁帮我用MAYA软件转换成3dmax格式,用财富值换!!2 正版3DMAX和MAYA软件各款价格是多少55 3dmax 和maya软件里,用什么操作吃配置 广东壹瓶好久网络科技有限公司怎么样? 沈阳壹瓶好久酒水销售有限公司怎么样? 女人要不要天天化妆敷面膜呢? 皇隆匹伐他汀生物利用度高? 上午第一节课怎样才不困??? 小米激光电视怎么没了 激光电视现在能体验吗小米 养育孩子:不仅仅是教育费用 中国养娃成本的增长:不是一蹴而就 Win32.Troj.Generic.(kcloud) 麻烦大家解读一下各个部分的是什么意思... win32. troj. qqpass. e病毒如何处理 相机分为哪几类 相机分类 蕃茄炖牛肉怎么做番茄炖牛肉做法 以秒速五厘米计算,一年的时间,是多远?3 贾万新书画拍卖价格表 天津的画家都有哪些 ...雇佣的业务员用我店名义收取其他商户货款跑了,现在商户都来找我... 贾万新山水画价格 清宫后多久可以吃地屈孕酮片,地屈孕酮片停了两天药又吃的没事吧_百度... 狐狸肉的内脏能吃吗 腾达路路由器i4 连接交换机,有时有网有时没网 狐狸肉人能不能吃? ...link猫连腾达交换机和迅捷路由器。最近经常掉线,让电信来了5次了... 狐狸精能吃吗? 路由器老是掉线怎么办? 什么人不能吃狐狸肉 “秒速五厘米”的真正含义!18472 秒速五厘米结局1275 秒速五厘米的经典台词30