C语言编写一个电话本
来源:互联网 发布:360卸载找不到软件 编辑:程序博客网 时间:2024/06/01 07:25
#include "stdafx.h"#include<string.h>#include<stdlib.h>void init();//初始化,读取磁盘信息void save();//保存内存数据到磁盘文件//strtok 分解字符串为一组字符串bool menu();//功能void add();//添加联系人void show();//显示全部联系人void remove();//删除一个联系人void xiugai();//修改联系人void chazhao();//查找某一个联系人struct Person //联系人数据结构{ char name[100]; char tel[100];};#define FILENAME "persons" //磁盘上的文件名Person persons[1000];//所有联系人结构数组int n = 0;//已有联系人的数量int main(){ //先读取已经有的联系人 init(); while (true) { if (!menu()) { break; } } return 0;}bool menu() { printf("\t\t欢迎使用\n"); printf("\t1.增加一个联系人\n"); printf("\t2.删除一个联系人\n"); printf("\t3.修改一个联系人\n"); printf("\t4.查找联系人\n"); printf("\t5.显示全部联系人\n"); printf("\t6.退出\n"); printf("输入你要做的功能代码1-6\n"); char ch[100]; scanf_s("%s", ch, 100); switch (ch[0]) { case '1': add(); break; case '2': remove(); break; case '3': xiugai(); break; case '4': chazhao(); break; case '5': show(); break; case '6': printf("退出\n"); return false; break; default: printf("无效功能!给我从新选择!\n"); break; } return true;}void add() { Person temp; printf("增加一个联系人\n"); //得到姓名 printf("输入姓名:"); char buf[100]; scanf_s("%s", buf, 100); strcpy_s(temp.name, buf);//拷贝 //验证 //得到电话 printf("输入电话:"); scanf_s("%s", buf, 100); strcpy_s(temp.tel, buf); //保存到内存 persons[n] = temp; n++; //保存到磁盘 save(); printf("添加成功\n");}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("磁盘更新成功");}//显示联系人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 >= 1) { show();//罗列所有的人 printf("输入要删除的联系人的编号(1-%d):", n); char buf[4]; scanf_s("%s", buf, 4); int nn = atoi(buf);//转换成int if (nn < 1 || nn>n) { printf("没有联系人,你删啥玩意"); } else { if (nn != n) //移动下面的联系人 { for (int i = 0; i < n - nn; i++) { persons[nn + i - 1] = persons[nn + i]; //strcpy_s(persons[nn + i - 1].name, persons[nn + i].name); //strcpy_s(persons[nn + i - 1].tel, persons[nn + i].tel); } } n--;//删除后人数减少1 save();//同步到磁盘 } } else { printf("没有联系人,你删啥玩意\n"); }}void xiugai() { show();//罗列所有的人 Person temp; printf("输入要修改的联系人的编号(1-%d):", n); char buf[4]; scanf_s("%s", buf, 4); int nn = atoi(buf);//转换成int printf("输入姓名:"); char bufd[100]; scanf_s("%s", bufd, 100); strcpy_s(temp.name, bufd);//拷贝 printf("输入电话:"); scanf_s("%s", bufd, 100); strcpy_s(temp.tel, bufd); persons[nn-1] = temp; save();}void chazhao() { printf("1.姓名查找,2.电话查找\n"); char cha[80]; scanf_s("%s", cha, 80); char buf[100]; if (cha[0] == '1') { printf("输入姓名:"); scanf_s("%s", buf, 100); for (int i = 0; i < n; i++) { if (strcmp(persons[i].name, buf) == 0) { printf("编号:%d\t\t姓名:%s\t\t电话:%s\n", i + 1, persons[i].name, persons[i].tel); } } } else if (cha[0] == '2') { printf("输入电话:"); scanf_s("%s", buf, 100); for (int i = 0; i < n; i++) { if (strcmp(persons[i].tel, buf) == 0) { printf("编号:%d\t\t姓名:%s\t\t电话:%s\n", i + 1, persons[i].name, persons[i].tel); } } } else { printf("输入有误,重新选择。\n"); }}
阅读全文
0 0
- C语言编写一个电话本
- C语言 用链表实现电话本的功能
- 用 C 语言编写一个网络蜘蛛
- 用 C 语言编写一个网络蜘蛛
- 用 C 语言编写一个网络蜘蛛
- 用 C 语言编写一个网络蜘蛛
- 用c语言编写一个万年历
- 【C语言】编写一个折半查找函数
- 编写C语言程序 输出一个菱形
- C语言 用顺序表实现电话本的功能
- Linux C和MySQL数据库写的一个“电话本管理程序”
- Linux C和MySQL数据库写的一个“电话本管理程序”
- Linux C和MySQL数据库写的一个“电话本管理程序”
- C语言 编写一个c程序判断回文字符串。
- 用链表写一个电话本程序
- [转]用 C 语言编写一个网络蜘蛛
- [转]用 C 语言编写一个网络蜘蛛
- [转]用 C 语言编写一个网络蜘蛛
- C语言随机发牌
- CEF方面的研究(四) CEF嵌入MFC对话框关闭崩溃问题解决办法
- ReactJS学习笔记七:表单
- CF
- 高可用方案之脑裂问题探讨(原创)
- C语言编写一个电话本
- 粗糙集约简
- Android sqlite unknown error (code 14): Could not open database
- Centos7 上安装mysql遇上的问题:mysql无法正常启动
- 详解aapt使用,破解包名 ,apk包名
- 4-13 折半查找 (15分)
- Android Studio和eclipse混淆打包总结
- 最大公约数及最小公倍数
- C++实验6