这篇文章将为大家详细讲解有关C语言如何实现通讯录系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
C语言通讯录系统实现,供大家参考,具体内容如下
需求分析:
利用文件读,写的方法
实现增加通讯录联系人信息
实现删除通讯录联系人信息
实现查找通讯录联系人信息
实现修改通讯录联系人信息
实现查看现有通讯录联系人信息
代码实现:
// main.c
// C语言通讯录实现
//
// Created by Brisinga on 15/10/14.
// Copyright © 2015年 yan. All rights reserved.
//
#include <stdio.h>
#include<string.h>
#define LEN 10
#define NAMELEN 22
#define TELLEN 12
//*************结构体变量定义****************
//定义联系人的个数
int contactCount = 0;
//定义结构体
typedef struct{
//定义联系人姓名
char name[NAMELEN];
//定义联系人电话
char tel[TELLEN];
}Person;
//初始化联系人数组
Person contact[LEN];
//定义文件名
charchar *path = "a.data";
//接收用户输入的编号
int no;
//**************函数声明********************
//初始化声明
void init();
//校验声明
int isValid(int n,int min,int max);
//添加联系人
void addContact();
//删除联系人
void deleteContact();
//修改联系人
void updateContact();
//查看所有联系人
void doList();
//搜索联系人
void searchContact();
//退出系统
void quit();
//联系人写入文件
void writeFile();
//***************************************
int main(int argc, const charchar * argv[]) {
//通讯录初始化
init();
printf("通讯录初始化成功!\n");
while (1) {
//定义界面
printf("**********************************\n");
printf("***********欢迎使用通讯录***********\n");
printf("***********1.添加联系人*************\n");
printf("***********2.删除联系人*************\n");
printf("***********3.修改联系人*************\n");
printf("***********4.查看所有联系人**********\n");
printf("***********5.搜索联系人*************\n");
printf("***********6.退出系统***************\n");
printf("**********************************\n");
//提示用户输入编号
printf("请输入要进行操作的编号:\n");
scanf("%d",&no);
//判断输入是否合法
isValid(no, 1, 6);
//判断用户的操作
switch (no) {
case 1:
//添加联系人
addContact();
break;
case 2:
//删除联系人
deleteContact();
break;
case 3:
//更新联系人
updateContact();
break;
case 4:
//查看联系人
doList();
break;
case 5:
//搜索联系人
searchContact();
break;
case 6:
//退出
quit();
return 0;
default:
break;
}
}
return 0;
}
//通讯录初始化
void init(){
//定义文件指针
FILEFILE *fp = fopen(path, "r");
//判断通讯录是否存在
if (fp!=NULL) {
//如果存在
//1.读取联系人个数
fread(&contactCount, sizeof(contactCount), 1, fp);
//2.读取每一个联系人nts
for (int i=0; i<contactCount; i++) {
fread(&contact[i], sizeof(Person), 1, fp);
}
}else{
//如果不存在
//创建通讯录
fp = fopen(path, "wb");
//写入当前联系人的个数
fwrite(&contactCount, sizeof(contactCount), 1, fp);
}
fclose(fp);
}
//校验输入是否合法
int isValid(int n,int min,int max){
//如果输入的编号大于min小于max,则返回0
if (n>=min&&n<=max) {
return 0;
}
//否则返回1
printf("输入非法!\n");
return 1;
}
//添加联系人
void addContact(){
//提示用户输入要添加联系人的姓名
printf("请输入要添加的联系人姓名:*注意姓名之间不能有空格\n");
//接收联系人姓名
scanf("%s",contact[contactCount].name);
//提示用户输入要添加联系任的电话
printf("请输入要添加联系人的电话: *注意电话号码之间不能有空格\n");
//接收联系人电话
scanf("%s",contact[contactCount].tel);
//询问是否确定添加
printf("确定要添加么?1.确定 0.取消\n");
scanf("%d",&no);
if (no) {
contactCount++;
//写入文件
writeFile();
printf("添加成功!\n");
}
}
//删除联系人
void deleteContact(){
//显示联系人
doList();
int flag;
//提示用户输入要删除联系人的编号
printf("请输入要删除联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
if(!isValid(no, 1, contactCount)){
//编号合法
printf("确定要删除么?删除后将无法恢复!1.确定 0.取消\n");
scanf("%d",&flag);
if (flag) {
//如果要删除的联系人在末尾
if (no==contactCount) {
//则contactCount-1
contactCount--;
}else{
//如果要删除的联系人不在末尾
//移动数组元素
for (int i=no-1; i<contactCount-1; i++) {
contact[i]=contact[i+1];
}
}
//contactCount--
contactCount--;
//写文件
writeFile();
}
}else
//编号不合法,则退出
printf("编号不合法!\n");
return ;
}
//修改联系人
void updateContact(){
//显示联系人
doList();
//提示用户输入要修改联系人的编号
printf("请输入要修改的联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
int flag;
if (!isValid(no, 1, contactCount)) {
//提示用户输入新的的联系人的姓名
printf("请输入新的姓名:*注意:姓名之间不能有空格\n");
//接收用户输入的姓名
scanf("%s",contact[no-1].name);
//提示用户输入新的电话号码
printf("请输入新的电话号码:*注意:电话号码之间不能有空格\n");
//接收用户输入的电话号码
scanf("%s",contact[no-1].tel);
//询问用户确定修改么?
printf("确定要修改么?1.确定 0.取消\n");
scanf("%d",&flag);
if (flag) {
//写文件
writeFile();
printf("联系人修改成功!\n");
}else{
printf("编号不合法!!\n");
return ;
}
}
}
//查看所有联系人
void doList(){
printf("显示所有联系人:\n");
printf("编号\t姓名\t电话\n");
for (int i=0; i<contactCount; i++) {
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
}
}
//搜索联系人
void searchContact(){
int flag = 1;
//接收用户输入的姓名
char searchName[NAMELEN];
//接收用户输入的电话
char searchTel[TELLEN];
//询问用户搜索方式
printf("请输入查找的方式: 1.按姓名查找 2.按电话号码查找\n");
//接收用户的搜索方式
scanf("%d",&no);
if (no==1) {
//请用户输入要查找的姓名
printf("请输入要查找到姓名:\n");
scanf("%s",searchName);
for (int i=0; i<contactCount; i++) {
if (!strcmp(searchName,contact[i].name)) {
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
return ;
}else{
flag = 0;
}
}
}else if(no==2){
//请用户输入要查找的电话号码
printf("请输入要查找的电话号码:\n");
scanf("%s",searchTel);
for (int i=0; i<contactCount; i++) {
if (!strcmp(searchTel,contact[i].tel)) {
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
return ;
}else{
flag = 0;
}
}
}else{
printf("非法输入!\n");
return ;
}
if (!flag) {
printf("很抱歉!小伙伴不在通讯录中!\n");
}
}
//退出系统
void quit(){
printf("系统正在退出...\n");
printf("系统已经退出!\n");
}
//联系人写入文件
void writeFile(){
//定义文件指针
FILEFILE *fp = fopen(path, "wb");
if (fp!=NULL) {
//写入联系人个数
fwrite(&contactCount, sizeof(contactCount), 1, fp);
//写入每个联系人
for (int i=0; i<contactCount; i++) {
fwrite(&contact[i], sizeof(Person),1, fp);
}
}
fclose(fp);
}
关于“C语言如何实现通讯录系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。