用C语言编写简单的通讯录(大一课程作业)

该系统概述:

因本人只学习了C语言的基础部分,所以编写该系统时只使用了一个C文件。存储通讯录信息以txt文件方式保存。


系统设计:

显示主菜单主函数:int main();

创建录入信息子函数:void book_create();

显示信息子函数1:void book_reada(int*count);

显示信息子函数2:void book_readb(int*count);

查询信息子函数 :void book_search();

添加信息子函数 :void book_insert(int count);

修改信息子函数:void books_change();

删除信息子函数:void book_delete();


功能测试:

1、启动系统:


2、创建通讯录:

输入1,回车


3、添加联系人信息:

输入4,回车,开始选择添加类型:

输入“是”,开始输入信息

添加一个联系人后,填入“是”可以继续添加

填入“否”则停止添加,并退出子函数,并且需选择6选项才能使信息保存至文件!!

保存成功!选择7选项可查看目前的联系人方式,注意,关闭程序重启时不能选择7选项!

另一种显示方式:重启程序后,选择8选项

再显示前需确认关闭前添加联系人的个数!例如添加两个联系人,输入“2”

显示出关闭程序前的联系人信息另一种添加方式,填“fou”

填入联系人数量,例如“2”

回到显示菜单,选择8选项,查看联系人信息


4、查询联系人信息:

查询已保存的联系人信息,选择2选项,进行查找方式选择

选择(1)选项进行联系人查找

选择(2)选项进行学号查找


5、修改联系人信息:

选择(3)选项,输入联系人姓名,进入修改页面

选择修改类型,例如选择(3),进行地址修改

在主菜单页面选择(8)选项检查联系人信息


6、删除联系人信息:

在主菜单页面选择(5)选项,输入联系人姓名,例如“r”

在主菜单选项,选择(8)选项检查联系人信息


7、退出系统:

在主菜单选项选择(0)选项,退出系统


代码部分:

该代码仅为个人大一课程设计。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct BOOKS {char  id[20], tell[20], phone[20], name[20], add[20], email[30], wechat[20];
}books[20];      //创建结构体//函数模块的声明
void book_create();
void book_show(int);
void book_search();
void books_change();
void book_insert(int *);
void book_delete();
void book_outside();
void book_save(int*);
void book_reada(int*);
void book_readb();int main()
{int count = 0;int c;do{printf("\n");printf("\t\t\t\t*=================================*\n");printf("\t\t\t\t*                                 *\n");printf("\t\t\t\t*          欢迎使用通讯录!       *\n");printf("\t\t\t\t*                                 *\n");printf("\t\t\t\t*=================================*\n");printf("\n");printf("\n");printf("\t\t\t\t|==================================|\n");printf("\t\t\t\t|       1--创建通讯录              |\n");printf("\t\t\t\t|       2--查询联系人信息          |\n");printf("\t\t\t\t|       3--修改联系人信息          |\n");printf("\t\t\t\t|       4--添加联系人信息          |\n");printf("\t\t\t\t|       5--删除联系人信息          |\n");printf("\t\t\t\t|       6--保存联系人信息          |\n");printf("\t\t\t\t|       7--显示通讯录(未关闭程序)  |\n");printf("\t\t\t\t|       8--显示通讯录(再次运行程序)|\n");printf("\t\t\t\t|       0--退出                    |\n");printf("\t\t\t\t|==================================|\n");printf("\t\t\t\t         请输入你的选项:");scanf("%d", &c);switch (c){case 0:book_outside();                            //退出系统break;case 1:book_create();                            //调用创建运算break;case 2:book_search();                             //调用查询运算break;case 3:books_change();                            //调用修改运算break;case 4:book_insert(&count);                             //调用插入运算break;case 5:book_delete();                             //调用删除运算break;case 6:book_save(&count);                               //调用保存运算break;case 7:book_reada(&count);break;                                              //调用阅读运算case 8:book_readb();break;default:printf("\n\t\t\t\t无此选项!请重新选择!");}} while (c != 0);return 0;
}void book_create()     //创建模块
{int ban = 1;system("cls");if (ban != 0){printf("\n");printf("\n");printf("\n");printf("\t\t\t\t成功创建通讯录!请选择添加(4)选项!\n");ban = 1;}elseprintf("通讯录已创建,请勿重复创建!");
}void book_search()     //查找模块
{int i, number, flag = 1;char nam[20], ID[12];FILE*fp;system("cls");if ((fp = fopen("books.txt", "rb+")) == NULL){printf("cannot open file\n");exit(0);}for(i=0;i<20;i++)fread(&books[i],sizeof(struct BOOKS),1,fp);printf("\n\n\t\t\t\t按联系人查找(1)或按学号查找(2):");scanf("%d", &number);printf("\n");if (number == 1){printf("\n\t\t\t\t请输入联系人姓名:");scanf("%s", &nam);for (i = 0; i < 20 && flag; i++){if ((strcmp(books[i].name, nam) == 0)){printf("\n\t\t\t\t姓名:%s\n", books[i].name);printf("\t\t\t\t学号:%s\n", books[i].id);printf("\t\t\t\t移动电话:%s\n", books[i].phone);printf("\t\t\t\t固定电话:%s\n", books[i].tell);printf("\t\t\t\t住址:%s\n", books[i].add);printf("\t\t\t\t邮箱:%s\n", books[i].email);printf("\t\t\t\t微信:%s\n", books[i].wechat);flag = 0;}}if(flag==1)printf("没有查询到!");}else{printf("\n\t\t\t\t请输入学号:");scanf("%s", &ID);for (i = 0; i < 20 && flag; i++){if ((strcmp(books[i].id, ID) == 0)){printf("\n\t\t\t\t学号:%s\n", books[i].id);printf("\t\t\t\t姓名:%s\n", books[i].name);printf("\t\t\t\t移动电话:%s\n", books[i].phone);printf("\t\t\t\t固定电话:%s\n", books[i].tell);printf("\t\t\t\t住址:%s\n", books[i].add);printf("\t\t\t\t邮箱:%s\n", books[i].email);printf("\t\t\t\t微信:%s\n", books[i].wechat);flag = 0;}}if(flag==1)printf("没有查询到!");    }fclose(fp);
}void books_change()        //修改模块
{int i,c,b,flag = 1;char nam[20];FILE*fp;FILE*fp2;b=i-4;system("cls");if ((fp = fopen("books.txt", "rb+")) == NULL){printf("\t\t\t\t不能打开文件!\n");return;}if ((fp2 = fopen("xiugai.txt", "wb+")) == NULL){printf("\t\t\t\t不能打开文件!\n");return;}printf("\n\n\t\t\t\t请输入要修改的姓名:");scanf("%s", &nam);   for (i = 0; i < 20; i++){ fread(&books[i],sizeof(struct BOOKS),1,fp);if (strcmp(books[i].name, nam) == 0){printf("\n\n\t\t\t\t|==================================|\n");printf("\t\t\t\t|       1--固定电话                |\n");printf("\t\t\t\t|       2--移动电话                |\n");printf("\t\t\t\t|       3--地址            |\n");printf("\t\t\t\t|       4--姓名                    |\n");printf("\t\t\t\t|       5--微信                    |\n");printf("\t\t\t\t|       6--邮箱                    |\n");printf("\t\t\t\t|       7--学号                    |\n");printf("\t\t\t\t|       0--返回                    |\n");printf("\t\t\t\t|==================================|\n");printf("\t\t\t\t请输入选项:");scanf("%d",&c);switch(c){case 0:break;case 1:printf("\n\t\t\t\t请输入修改后的固定电话:");scanf("%s", books[i].tell);break;case 2:printf("\n\t\t\t\t请输入修改后的移动电话:");scanf("%s", books[i].phone);break;case 3:printf("\n\t\t\t\t请输入修改后的地址:");scanf("%s", books[i].add);break;case 4:printf("\n\t\t\t\t请输入修改后的姓名:");scanf("%s", books[i].name);break;case 5:printf("\n\t\t\t\t请输入修改后的微信:");scanf("%s", books[i].wechat);break;case 6:printf("\n\t\t\t\t请输入修改后的邮箱:");scanf("%s", books[i].email);break;case 7:printf("\n\t\t\t\t请输入修改后的学号:");scanf("%s", books[i].id);break;default:printf("\n\t\t\t\t无此选项!请重新选择!");}//switch函数结束括号                       }//if函数结束括号if(fwrite(&books[i], sizeof(struct BOOKS), 1, fp2) != 1){printf("文件写入错误!");}    }                                //for循环结束括号printf("\n\n\t\t\t\t联系人信息修改成功!");  fclose(fp);fclose(fp2);remove("books.txt");rename("xiugai.txt","books.txt");
}void book_insert(int *count)     //添加模块
{int i,a,b;FILE *fp;char nam1[5] = "shi", nam2[5] = "fou", nam3[5],nam4[5];system("cls");   printf("\t\t\t\t是否为初次添加联系人?(是或否):");scanf("%s",nam4);if((strcmp(nam1,nam4)==0)){   printf("\n\n\n\t\t\t\t保存需选择选项(6)保存!");for (i = *count; i < 20; i++){printf("\n\n\t\t\t\t请输入姓名:");scanf("%s", books[i].name);printf("\t\t\t\t请输入学号:");scanf("%s", books[i].id);printf("\t\t\t\t请输入移动电话:");scanf("%s", books[i].phone);printf("\t\t\t\t请输入固定电话:");scanf("%s", books[i].tell);printf("\t\t\t\t请输入地址:");scanf("%s", books[i].add);printf("\t\t\t\t请输入邮箱:");scanf("%s", books[i].email);printf("\t\t\t\t请输入微信:");scanf("%s", books[i].wechat);(*count)++;printf("\n\t\t\t\t是否继续添加?(是或否):");scanf("%s", nam3);if ((strcmp(nam2, nam3) == 0))return;} }else{printf("\t\t\t\t已有联系人个数:");scanf("%d",&a);b=a+1;printf("\t\t\t\t请输入姓名:");scanf("%s", books[b].name);printf("\t\t\t\t请输入学号:");scanf("%s", books[b].id);printf("\t\t\t\t请输入移动电话:");scanf("%s", books[b].phone);printf("\t\t\t\t请输入固定电话:");scanf("%s", books[b].tell);printf("\t\t\t\t请输入地址:");scanf("%s", books[b].add);printf("\t\t\t\t请输入邮箱:");scanf("%s", books[b].email);printf("\t\t\t\t请输入微信:");scanf("%s", books[b].wechat);if ((fp = fopen("books.txt", "ab+")) == NULL){printf("不能打开文件!\n");return;}if (fwrite(&books[b], sizeof(struct BOOKS), 1, fp) != 1)printf("文件写入错误!");fclose(fp);printf("\n\n\t\t\t\t已自动保存!");return;}
}void book_delete(void)   //删除模块
{int i;char nam[20];FILE*fp;FILE*fp1;system("cls");printf("\t\t\t\t请输入要删除的联系人:");scanf("%s", &nam);if ((fp = fopen("books.txt", "rb+")) == NULL){printf("\t\t\t\t不能打开文件!");}if((fp1 = fopen("linshi.txt", "wb+"))==NULL){printf("\t\t\t\t不能打开文件!");                               } for(i=0;i<20;i++){   fread(&books[i], sizeof(struct BOOKS), 1, fp);if (strcmp(books[i].name, nam) !=0)                    {fwrite(&books[i], sizeof(struct BOOKS), 1, fp1);}}printf("\n\n\t\t\t\t联系人已删除!\n");fclose(fp);fclose(fp1);remove("books.txt");rename("linshi.txt","books.txt");}void book_outside()                    //退出模块
{system("cls");printf("\n");printf("\t\t\t\t*==============================*\n");printf("\t\t\t\t*                              *\n");printf("\t\t\t\t*          感谢使用            *\n");printf("\t\t\t\t*                              *\n");printf("\t\t\t\t*==============================*\n");printf("\t\t\t\t*                              *\n");printf("\t\t\t\t*         广东海洋大学         *\n");printf("\t\t\t\t*     物联网工程1191  黄伊权   *\n");printf("\t\t\t\t*                              *\n");printf("\t\t\t\t*==============================*\n");printf("\n");
}void book_save(int*count)             //保存模块
{system("cls");FILE *fp;int i;if ((fp = fopen("books.txt", "wb")) == NULL){printf("不能打开文件!\n");return;}for (i = 0; i <*count; i++)if (fwrite(&books[i], sizeof(struct BOOKS), 1, fp) != 1)printf("文件写入错误!");fclose(fp);printf("\n\n\t\t\t\t\t已保存!\n");
}void book_reada(int*count)                        //阅读模块1(初次启动程序)
{system("cls");FILE *fp;int i;if ((fp = fopen("books.txt", "rb")) == NULL){printf("不能打开文件!");exit(0);}fclose(fp);for (i = 0; i <*count; i++){fread(&books[i], sizeof(struct BOOKS), 1, fp);printf("\t\t\t\t姓名:%s\n", books[i].name);printf("\t\t\t\t学号:%s\n", books[i].id);printf("\t\t\t\t移动电话:%s\n", books[i].phone);printf("\t\t\t\t固定电话:%s\n", books[i].tell);printf("\t\t\t\t住址:%s\n", books[i].add);printf("\t\t\t\t邮箱:%s\n", books[i].email);printf("\t\t\t\t微信:%s\n", books[i].wechat);printf("\n");}}void book_readb(void)
{                                     //阅读模块2(再次启动程序)system("cls");FILE *fp;int i,a;if((fp=fopen("books.txt","rb"))==NULL){printf("不能打开文件!");exit(0);}printf("\n\n\t\t\t\t关闭程序前联系人数量:");scanf("%d",&a);if(a==0){printf("\n\t\t\t\t\t\t空!");}elseprintf("\n\t\t\t\t联系人信息如下:\n\n");for (i = 0; i <a; i++){fread(&books[i], sizeof(struct BOOKS), 1, fp);printf("\t\t\t\t姓名:%s\n", books[i].name);printf("\t\t\t\t学号:%s\n", books[i].id);printf("\t\t\t\t移动电话:%s\n", books[i].phone);printf("\t\t\t\t固定电话:%s\n", books[i].tell);printf("\t\t\t\t住址:%s\n", books[i].add);printf("\t\t\t\t邮箱:%s\n", books[i].email);printf("\t\t\t\t微信:%s\n", books[i].wechat);printf("\n");}fclose(fp);
} 

用C语言编写简单的通讯录(大一课程作业)相关推荐

  1. 实用c语言函数源码,C语言编写简单朗读小工具(有源码)

    原标题:C语言编写简单朗读小工具(有源码) 最近不少人在后台留言说学C都是面对枯燥的控制台程序,能不能体现一下C语言的实际用途,今天我们就理论结合实践一把:C语言结合VBS脚本编写一个简单的朗读小工具 ...

  2. C语言编写一个赋值程序,实验2 用C语言编写简单程序——2.1 基本数据处理.doc

    实验2 用C语言编写简单程序--2.1 基本数据处理 实验2 用C语言编写简单程序 2.1 基本数据处理 [实验目的] (1)掌握算术表达式和赋值表达式的使用. (2)掌握基本输出函数的使用. (3) ...

  3. c语言案例朗读工具源码,C语言编写简单朗读小工具(有源码)

    原标题:C语言编写简单朗读小工具(有源码) 最近不少人在后台留言说学C都是面对枯燥的控制台程序,能不能体现一下C语言的实际用途,今天我们就理论结合实践一把:C语言结合VBS脚本编写一个简单的朗读小工具 ...

  4. 心碎的图案怎么用c语言编出来,教案实验2用c语言编写简单程序.doc

    教案实验2用c语言编写简单程序 实验2 用C语言编写简单程序 2.1 基本数据处理1.调试示例 改正下列程序中的错误,求华氏温度100oF对应的摄氏温度?计算公式如下,其中:c 表示摄氏温度,f 表示 ...

  5. 用C语言编写简单的求解对数函数

    用C语言编写简单的对数函数 作为一个图像处理芯片公司的工程师,支持不同sensor的曝光策略是一个ISP的基本功能,但是有的sensor曝光策略复杂,还需要加上sensor厂商自己添加的补丁,而ISP ...

  6. c语言怎么自定义关机时间,C语言编写简单的定时关机程序

    搜索热词 写一个定时关机的小程序,可以立即关闭计算机,也可以一段时间后关闭计算机. 这里主要考察system()命令. 代码实现: #include #include #include int mai ...

  7. C语言编写简单实现淘宝购物功能 答辩课题实用

    C语言编写简单实现淘宝购物功能,并能够实现 登陆账号验证 添加购物车 l付密码 错误上限 支付成功 等.. #include <stdio.h> #include <string.h ...

  8. ubuntu系统中用c语言编写简单程序

    目录 (一):修改参数提高下载速度 (二):c语言入门编写helloworld (三):在ubuntu系统下编写简单程序 (四):在windows系统下编写简单程序 (五):在ubuntu系统下使用m ...

  9. ubuntu系统下C语言编写简单程序

    文章目录 一.学习了解ubuntu系统下vim编辑器的基本运用. 1.如何进入vim编辑器 2.vim编辑器命令模式基本命令 3.vim编辑器编辑模式 4.vim编辑器末行模式命令 二.ubuntu系 ...

最新文章

  1. Linux下的QQ截图
  2. C++ ORM ODB 入门介绍(一)
  3. hdu Remainder
  4. Android之从Camera捕获图像讲解
  5. python模块引用
  6. ACM入门之【线段树习题】
  7. 进入工程制图闪退_工程整体一
  8. c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)
  9. 使用LD链接时候文件的顺序
  10. 人脸对齐(十四)--LPFA
  11. Docker1.12.6+CentOS7.3 的安装
  12. 「leetcode」513.找树左下角的值(详解)
  13. 计算机课程教学调查问卷,计算机基础课程调查问卷
  14. matlab 画图 方程,matlab 画图与解方程
  15. 嵌入式linux保存参数数据
  16. html5中图片热点,HTML5 创建热点图
  17. redis之sadd、srem、spop、sdiff、sdiffstore、sinter、 sinterstore、sunion、sunionstore、smove、scard、sismember
  18. LeetCode:Database 21.统计各专业学生人数
  19. 马蜂窝加速乐分析案例
  20. Eclipse+多国语言包插件+Tomcat插件+Lomboz插件+Myeclipse插件的安装与配置

热门文章

  1. 学tlc和JAVA,#Java学习之路——第一部分总结
  2. 社区检测(网络分析)(图聚类)---进阶概念解析
  3. 春风十里,美拉德在人人投等你!
  4. vscode中好用的git相关的插件
  5. 用计算机演奏歌曲谱子,我要用计算器弹曲子,求亲们发点计算器简谱
  6. Java兔子生兔子问题
  7. 【Modbus 】Modbus 协议
  8. RK3399 GMAC驱动失败,打印如下log,DMA engine initialization failed 原因
  9. (20200921 Solved)ConnectionResetError: [Errno 104] Connection reset by peer
  10. 【扫一扫二维码,传智大礼包带回家】