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("%dt%st%sn",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("%dt%st%sn",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("%dt%st%sn",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语言超市管理系统设计
- C语言图书借阅系统源码
- C语言通讯录管理系统课程设计
- C语言通讯录管理系统完整版
- C语言链表实现图书管理系统
- C语言银行储蓄系统源码
- C语言银行系统课程设计
- C语言职工信息管理系统源码
- C语言实现歌曲信息管理系统
- C语言商品销售系统源码分享