------- iOS培训、android培训、java培训、期待与您交流! ----------
#include <stdio.h>
#include <string.h>
#define N 100
#define NAMELEN 22
#define NUMLEN 12
typedef struct{
char name[NAMELEN];
char telNum[NUMLEN];
}Person;
Person contacts[N];
int totalContactCount = 0;
int fno;
char *filePath = "telbook.data";
int main(int argc,const char * argv[]) {
void doadd();
void doDelete();
void doupDate();
void dolist();
void dosearchByName();
int validateIput(int num,int min,int max);
void init();
void writeFile();
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\n");
printf("请选择1-6之间的功能编号:\n");
scanf("%d",&fno);
validateIput(fno,1,6);
switch (fno) {
case 1:
doadd();
break;
case 2:
doDelete();
break;
case 3:
doupDate();
break;
case 4:
dolist();
break;
case 5:
dosearchByName();
break;
case 6:
printf("系统正在退出...\n");
printf("系统已经退出!\n");
return 0;
break;
default:
break;
}
}
return 0;
}
int validateIput(int num,int min,int max){
if (num < min || num > max) {
printf("非法输入!\n");
return 1;
}
return 0;
}
/**
* 添加联系人
*/
void doadd(){
void writeFile();
printf("您选择的是添加联系人,请按提示操作:\n");
printf("请输入联系人姓名:(*注意联系人姓名中间不能有空格)\n");
scanf("%s",contacts[totalContactCount].name);
printf("请输入联系人电话:(*注意联系人电话中间不能有空格)\n");
scanf("%s",contacts[totalContactCount].telNum);
int flag;
printf("您确认要添加数据码? 1.确认 0.取消\n");
scanf("%d",&flag);
if (flag) {
totalContactCount++;
writeFile();
}
}
/**
* 删除联系人
*/
void doDelete(){
void writeFile();
void dolist();
printf("您选择的是删除联系人,请按提示操作:\n");
dolist();
int no;
printf("请输入要删除的联系人的编号:\n");
scanf("%d",&no);
if (validateIput(no, 1,totalContactCount)) {
return ;
}
int flag;
printf("删除联系人后,数据无法恢复,您确认要删除吗? 1.确认 0.取消\n");
scanf("%d",&flag);
if (flag) {
if (no == totalContactCount) {
totalContactCount--;
}else{
for (int i = no; i <totalContactCount; i++) {
contacts[no-1] = contacts[no];
}
totalContactCount--;
}
writeFile();
}
}
/**
* 修改联系人
*/
void doupDate(){
void writeFile();
void dolist();
printf("您选择的是修改联系人,请按提示操作:\n");
dolist();
int no;
printf("请输入要删除的联系人的编号:\n");
scanf("%d",&no);
if (validateIput(no, 1,totalContactCount)) {
return ;
}
char name1[NAMELEN];
char tel[NUMLEN];
printf("请输入联系人新的姓名:(*注意联系人姓名中间不能有空格)\n");
scanf("%s",name1);
printf("请输入联系人新的电话:(*注意联系人电话中间不能有空格)\n");
scanf("%s",tel);
int flag;
printf("确认后,信息将永久修改,您确认要修改吗? 1.确认 0.取消\n");
scanf("%d",&flag);
if (flag) {
strcpy(contacts[no-1].name, name1);
strcpy(contacts[no-1].telNum, tel);
writeFile();
}
}
/**
* 查看联系人
*/
void dolist(){
printf("显示所有联系人,联系人数据如下:\n");
if (totalContactCount == 0) {
printf("您的通讯录没有小伙伴~请添加小伙伴!\n");
}else{
printf("编号\t姓名\t 电话\t \n");
for (int i = 0; i <totalContactCount; i++) {
printf("%d\t %s\t %s\t \n",i+1,contacts[i].name,contacts[i].telNum);
}
}
}
/**
* 搜素联系人
*/
void dosearchByName(){
printf("您选择的是搜索联系人,请按提示操作:\n");
char name[NAMELEN];
printf("请输入要查找的联系人:\n");
scanf("%s",name);
int i;
for (i = 0; i < totalContactCount; i++) {
if (strcmp(name,contacts[i].name) == 0) {
printf("您搜索的联系人 %s的电话号码是 : %s\n",name,contacts[i].telNum);
break;
}
}
if (i ==totalContactCount) {
printf("对不起,查无此人!\n");
}
}
/**
通讯录初始化
*
*/
void init(){
FILE *fp = fopen(filePath,"r");
if (fp != NULL) {
fread(&totalContactCount,sizeof(totalContactCount), 1, fp);
for (int i =0; i <totalContactCount; i++) {
fread(&contacts[i],sizeof(Person), 1, fp);
}
}else{
fp = fopen(filePath,"wb");
fwrite(&totalContactCount,sizeof(totalContactCount), 1, fp);
printf("通讯录文件创建成功!\n");
}
fclose(fp);
}
/**
* 写数据到文件中
*/
void writeFile(){
FILE *fp = fopen(filePath, "wb");
if (fp != NULL) {
fwrite(&totalContactCount,sizeof(totalContactCount), 1, fp);
for ( int i = 0; i <totalContactCount; i++) {
fwrite(&contacts[i],sizeof(Person), 1, fp);
}
printf("写文件数据更新成功!\n");
}
fclose(fp);
}