C语言 通讯录(本地储存)
来源:互联网 发布:越南工业知乎 编辑:程序博客网 时间:2024/05/17 02:34
#include "stdafx.h"#include <string.h>#include <stdlib.h>void init();//初始化 读取磁盘信息到内存bool menu();// 显示菜单和选择菜单void add();//添加联系人void show();//显示所有联系人void save();//保存内存数据到磁盘文件void remove();//删除一个联系人void update(); //修改一个联系人void find();char* input(char *);struct Person {//联系人数据结构 char name[100]; char tel[100]; };char buf[100];#define FILENAME "persons"//磁盘上未见名Person persons[1000];//所有联系人结构数组int n = 0;//联系人个数int main(){ //先去读取已经有的联系人 init(); while (true) { if (!menu()) { break; } } return 0;}bool menu() { printf("1、增加一个联系人\n"); printf("2、删除一个联系人\n"); printf("3、修改一个联系人\n"); printf("4、查找联系人\n"); printf("5、显示所有联系人\n"); printf("6、退出\n"); char ch[100]; printf("请输入功能代号:(1-6)"); scanf_s("%s", ch, 100); switch (ch[0]) { case '1': add(); break; case '2': remove(); break; case '3': update(); break; case '4': find(); break; case '5': show(); break; case '6': return false; break; default: printf("无效的号码!\n"); break; } return true;}void add () { Person temp; //得到姓名 char *buf = input("请输入联系人姓名"); strcpy_s(temp.name, buf); //得到电话 buf = input("请输入联系人电话"); strcpy_s(temp.tel, buf); //保存到内存 persons[n] = temp; n++; //保存到磁盘 save();}void save() { FILE * fp = NULL; fopen_s(&fp, FILENAME, "w"); fwrite(&n, sizeof(int), 1, fp); for (int i = 0; i < n; i++) { fwrite(&persons[i], sizeof(Person), 1, fp); } fclose(fp); printf("磁盘更新!\n");}void show() { if (n < 1) { printf("对不起,真的还没有联系人呀!\n"); return; } printf("编号\t\t姓名\t\t电话\n"); for (int i = 0; i < n; i++) { printf("%d\t\t%s\t\t%s\n", i + 1, persons[i].name, persons[i].tel); }}void init() { //读文件 FILE * fp = NULL; fopen_s(&fp, FILENAME, "r"); if (fp != NULL) { fread(&n, sizeof(int), 1, fp); for (int i = 0; i < n; i++) { fread(&persons[i], sizeof(Person), 1, fp); } } else { return; } fclose(fp);}void remove(){ if (n > 0) //有人 { show();//罗列所有人,给个编号 printf("请输入你要删除联系人的编号(1-%d):", n); char buf[4]; scanf_s("%s", buf, 4); int nn = atoi(buf);//把键盘上输入的字符串转换为整数 if (nn<1 || nn>n) //输入编号验证 { printf("对不起,你现在不能删除,因为是一个无效的编号!\n"); } else { if (nn != n) //移动下面的联系人 { for (int i = 0; i < n - nn; i++) { persons[nn + i - 1] = persons[nn + i]; } } n--;//总人数减去一个 save();//同步到磁盘 printf("删除联系人成功!\n"); } } else { printf("对不起,你现在不能删除,因为一个人也没有!\n"); }}void update(){ if (n > 0) //有人 { show();//罗列所有人,给个编号 printf("请输入你要修改联系人的编号(1-%d):", n); scanf_s("%s", buf, 4); int nn = atoi(buf);//把键盘上输入的字符串转换为整数 if (nn<1 || nn>n) //输入编号验证 { printf("对不起,你现在不能修改,因为是一个无效的编号!\n"); } else { printf("请输入你要修改的项目(a-所有,n-姓名,p-电话)"); scanf_s("%s", buf, 100); if (buf[0] == 'a' || buf[0] == 'A') { char*buf = input("请输入新的姓名"); strcpy_s(persons[nn - 1].name, buf); buf = input("请输入新的电话"); strcpy_s(persons[nn - 1].tel, buf); } else if (buf[0] == 'n' || buf[0] == 'N') { char*buf = input("请输入新的姓名"); strcpy_s(persons[nn - 1].name, buf); } else if (buf[0] == 'p' || buf[0] == 'P') { char *buf = input("请输入新的电话"); strcpy_s(persons[nn - 1].tel, buf); } save();//同步到磁盘 printf("修改联系人成功!\n"); } } else { printf("对不起,你现在不能删除,因为一个人也没有!\n"); }}void find(){ printf("请输入你要寻找的关键字(姓名或者电话)"); char buf[100]; scanf_s("%s",buf,100); int c = 0; for (int i = 0; i < n; i++) { if (strcmp(persons[i].name, buf) == 0 || strcmp(persons[i].tel, buf) == 0) { printf("%s\t\t%s\n",persons[i].tel); c++; } } printf("一共找到了%d个人!\n",c);}char* input(char* msg){ printf("%s:", msg); scanf_s("%s", buf, 100); return buf;}
阅读全文
0 0
- C语言 通讯录(本地储存)
- 通讯录源码--C语言
- C语言通讯录编写
- 通讯录C语言代码
- 通讯录 C语言
- c语言实现----通讯录
- C语言课程设计---通讯录
- C语言通讯录
- C语言实现通讯录
- 【c语言】通讯录
- 通讯录(C语言)
- C语言 通讯录
- 【C语言】通讯录制作
- C语言 通讯录
- c语言 电子通讯录
- 通讯录(C语言)
- C语言通讯录
- C语言- 通讯录
- NSString 的时候用copy和strong的区别
- XML,HTML以及XHTML的区别
- HDU 3899 JLUCPC (树形DP)
- QtCreator使用ibus输入中文
- id软件技术采访:DX12,Vulkan,Mega-Textures,PBR,全局照明等
- C语言 通讯录(本地储存)
- POJ1068 STL解法思考
- PHP事务的使用方法
- 23个MySQL常用查询语句
- Android修改系统语言
- 深入理解JavaScript系列(41):设计模式之模板方法
- 提取视频第一帧保存为图片
- Android 美团Robust热更新 使用入门
- WebBrowser介绍——Javascript与C++互操作