复习之 c实现 通讯录
实验成果截图
实验的源码附上:(编译机是vm)
main.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"phone.h"/*void print(e)
{printf("%d ",e);
}
*/
int main()
{ linklist list;int ret,i,j;
// char name[10];
// int number,tele,wtele;
// char address[100];int e;char buf[100] = {0};ret = listinit(&list);//初始化联系人表单if(ret == success){printf("contacter init successful!\n");}FILE *fp;fp=fopen("cunchu.txt","r");//打开文件,把原来写入的缓存起来if(fp != NULL){// fseek(fp,0,SEEK_SET);while(!feof(fp)){linklist new;linklist loop = list;new=(node *)malloc(sizeof(node));while(loop->next != NULL){loop=loop->next;}fgets(buf,sizeof(buf)-1,fp);if(feof(fp)){break;}new->number=buf[0]-'0';memset(buf,'\0',sizeof(buf));fgets(buf,sizeof(buf)-1,fp);strncpy(new->name,buf,strlen(buf)-1);memset(buf,'\0',sizeof(buf));fgets(buf,sizeof(buf)-1,fp);strncpy(new->tele,buf,strlen(buf)-1);memset(buf,'\0',sizeof(buf));fgets(buf,sizeof(buf)-1,fp);strncpy(new->wtele,buf,strlen(buf)-1);memset(buf,'\0',sizeof(buf));fgets(buf,sizeof(buf)-1,fp);strncpy(new->address,buf,strlen(buf)-1);memset(buf,'\0',sizeof(buf));loop->next=new;new->next=NULL;}fclose(fp);}sleep(1);system("clear");printf("******************************************\n");printf(" welcome to you contacter\n");printf("******************************************\n");sleep(1);while(1){printf("******************************************\n");printf(" 1.input 2.listall 3.find(name) \n");printf(" 4.find(tele) 5.delete 6.modifi(tele)\n");printf(" 7.modifi(wtele) 8.quit\n");printf("******************************************\n");printf(" please choose you function\n");printf("******************************************\n");scanf("%d",&j);if(j == 1)//插入{ret = listinsert(list);if(ret == success){printf("input successful!~\n");}else if(ret == -2){printf("the number of tele/wtele is wrong!~\n");}else{printf("input failed~\n");}continue;}else if(j == 2)//遍历{ret = listtraver(list);if( ret == success){printf("\n");printf("this is all infor!~\n");}continue;}else if(j == 3)//查找名字{ ret = find1(list);if( ret == success){printf("find it!~\n");}continue;}else if(j == 4)//查找电话{ ret = find2(list);if( ret == success){printf("find it!~\n");}continue;}else if(j == 5)//删除{ret = listdelete(list);if(ret == success){printf("delete successful!~\n");}else{printf("delete failed!~\n");}continue;}else if(j == 6)//修改信息{ret = modifi1(list);if(ret == success){printf("modifi successful!~\n");}else if(ret == -2){printf("the new tele is wrong!\n");}else{printf("modifi failed!~\n");}continue;}else if(j == 7){ret = modifi2(list);if(ret == success){printf("modifi successful!~\n");}else if(ret == -2){printf("the new wtele is wrong!\n");}else{printf("modifi failed!~\n");}continue;} else{// quit();fp=fopen("cunchu.txt","w");//将信息写入文本文件if(fp == NULL){perror("fopen");exit(1);}while(list->next != NULL){list = list->next;sprintf(buf,"%d\n%s\n%s\n%s\n%s\n",list->number,list->name,list->tele,list->wtele,list->address);fwrite(buf,1,strlen(buf),fp);}fclose(fp);exit(0);}}/*for(i = 0; i < 5; i++){ret = listinsert(list,i+1,i);}ret = listlength(list);printf("the length of list is: %d\n",ret);ret = listtraver(list,print);if( ret == success){printf("\n");printf("traver successful!~\n");}ret = listdelete(list,2,&e);if(ret == success){printf("delete %d successful!~\n",e);}else{printf("delete failed!~\n");}ret = listtraver(list,print);if( ret == success){printf("\n");printf("traver successful!~\n");}ret = listdeleteall(list);if(ret == success){printf("delete all successful!~\n");}else{printf("delete failed!~\n");}ret = listtraver(list,print);if( ret == success){printf("\n");printf("traver successful!~\n");}ret = destory(&list);if(ret == success){printf("destroy successful!~\n");}else{printf("destory failed!~\n");}ret = listinsert(list,1,1);if( ret == success){printf("\n");printf("insert successful!~\n");}ret = listtraver(list,print);if( ret == success){printf("\n");printf("traver successful!~\n");}*/return 0;
}
phone.c
#include<stdio.h>
#include<stdlib.h>
#include"phone.h"
#include<string.h>node cun[100];
int count = 0;int listinit(linklist *l)//初始化链表
{(*l) = (linklist)malloc(sizeof(node));//c中用malloc分配空间if(l == NULL)//这叫啥来着{return failed;}(*l)->next = NULL;
/* FILE *fp;fp = fopen("cun.txt" , "r");if(fp == NULL){perror("fopen");exit(1);}while(fread(buf , 1 , 32 , fp)){printf("%s",buf);memset(buf , 0 , sizeof(buf));}fclose(fp);*/return success;//初始化成功
}int listinsert(linklist l)//插入功能
{char name[10];int number;char tele[50];char wtele[50];char address[100];linklist p = l;int j = 1;if(l == NULL)//空表无法插入{return failed;}l = (linklist)malloc(sizeof(node));//为它分配结构体大小的空间if(l == NULL){return failed;}printf("input number name tele wtele address\n");scanf("%d %s %s %s %s",&number,name,tele,wtele,address);if(strlen(tele) != 11){return -2;}if(strlen(wtele) != 8){return -2;}l->number = number ;//将所有数据赋值存储进表strcpy(l->tele,tele);strcpy(l->wtele,wtele);strcpy(l->name,name);strcpy(l->address,address);l->next = p->next;p->next = l;cun[count].number = number;strcpy(cun[count].tele,tele);strcpy(cun[count].wtele,wtele);strcpy(cun[count].name,name);strcpy(cun[count].address,address);count++;return success;}
int listtraver(linklist l)//遍历表
{linklist p = l;if(p == NULL){return failed;}while(p->next){p = p->next;printf("%d %s %s %s %s %s\n",p->number,p->name,p->tele,p->wtele,p->address);}return success;
}int find1(linklist l)//找人
{linklist p = l;char a[50];if(p == NULL){return failed;}printf("input the name of user~\n");scanf("%s",a);while(p->next){p = p->next;if(!strcmp(p->name,a)){printf("number is :%d\n",p->number);printf("name is :%s\n",p->name);printf("tele is :%s\n",p->tele);printf("wtele is :%s\n",p->wtele);printf("address is :%s\n",p->address);return success;}} return failed;
}
int find2(linklist l)//找电话
{linklist p = l;char a[50];if(p == NULL){return failed;}printf("input the tele of user~\n");scanf("%s",a);while(p->next){p = p->next;if(!strcmp(p->tele,a)){printf("number is :%d\n",p->number);printf("name is :%s\n",p->name);printf("tele is :%s\n",p->tele);printf("wtele is :%s\n",p->wtele);printf("address is :%s\n",p->address);return success;}}return failed;
}int listdelete(linklist l)//删除
{int i;linklist p = l;linklist loop = l;if(l == NULL){return failed;}char a[50];int count = 0;printf("input the name of user~\n");scanf("%s",a);while(p->next){p = p->next;count++;if(!strcmp(p->name,a)){for(i = 0; i < count; i++){loop->next = p->next;free(p);return success;}}}return failed;
}int modifi1(linklist l)//改电话
{linklist p = l;if(l == NULL){return failed;}char a[20];char b[20];printf("input the tele of user~\n");scanf("%s",a);while(p->next){p = p->next;if(!strcmp(p->tele,a)){printf("input the new tele of user~\n");scanf("%s",b);if(strlen(b) == 11){strcpy(p->tele,b);return success;}else{return -2;}}}
}
int modifi2(linklist l)//改家庭电话
{linklist p = l;if(l == NULL){return failed;}char a[20];char b[20];printf("input the wtele of user~\n");scanf("%s",a);while(p->next){p = p->next;if(!strcmp(p->wtele,a)){printf("input the new wtele of user~\n");scanf("%s",b);if(strlen(b) == 8){strcpy(p->wtele,b);return success;}else{return -2;}}}
}
void quit()//退出
{
// int i ;
// for(i = 0 ; i <= count ; i++)
// {FILE *fp = fopen("cunchu.txt" , "w+");if(fp == NULL){perror("fopen");exit(1);}fwrite((cun), sizeof(node) , 1 ,fp);fclose(fp);
// }
}
/*int listdeleteall(linklist l)
{linklist p = l->next;while(p){l->next = p->next;free(p);p = l->next;}return success;
}*//*int destory(linklist *l)
{free(*l);*l = NULL;return success;
}
int listlength(linklist l)
{linklist p = l;int i = 0;while(p->next){p = p->next;i++;}return i;
}*/
phone.h
#ifndef _linklist_
#define _linklist_#define success 0
#define failed -1struct Node//题目要求的结构体
{int number;//工号char tele[50];//电话号码char wtele[50];//办公电话char name[10];//姓名char address[100];//地址struct Node *next;//指针
};typedef struct Node node;
typedef node* linklist;//所有的函数声明
int listinit(linklist *l);
int listinsert(linklist l);
//int listtraver(linklist l,void(*visit)(char));
int listtraver(linklist l);
int find1(linklist l);
int find2(linklist l);
int listdelete(linklist l);
int modifi1(linklist l);
int modifi2(linklist l);//int listlength(linklist l);
//int listdeleteall(linklist l);
//int detory(linklist *l);#endif
就是第一个输出的时候有乱码 不知道是不是\0的问题,啊哈哈
复习之 c实现 通讯录相关推荐
- C语言做一个通讯录程序(在console里面运行)
最近复习C语言的时候看到网上有个C语言通讯录的小项目,于是看了下那个程序实现的大概的功能,然后自己也跟着做了个.代码还算简洁,贴上来给有需要的人. 1 // 2 // main.m 3 // Adre ...
- Jquery Mobile设计Android通讯录第二章
本文是jQuery Mobile设计Android通讯录系统教程的第二篇,在上一篇教程中(http://publish.itpub.net/a2011/0517/1191/000001191561.s ...
- 《黑马程序员》通讯录管理系统实战
通讯录管理系统 想直接看源码直达:https://blog.csdn.net/Augenstern_QXL/article/details/116982366 更新:源码我设置的是0cb/积分下载,但 ...
- 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52420706 本文出 ...
- 移动编程基础知识(复习提纲)
目录 一.Android系统架构分为哪四个层次,每一层所提供的基本功能是什么? 二.Android项目资源程序文件夹res中,子文件夹layout.values.drawable.raw各有什么作用? ...
- 计算机病毒及其防治技术期末复习
<计算机病毒及其防治技术>总结复习 文章目录 <计算机病毒及其防治技术>总结复习 第一章 概述 第二章 蠕虫 第三章 病毒结构 第四章 计算机病毒的技术特征 第五章 特洛伊木马 ...
- 基于Linux中的通讯录管理系统(C语言+双向循环链表+MySQL)
文章目录 系统功能实现 相关软件前提 部分重要的功能代码 Makefile menu.c MySQL API函数使用 C语言连接MySQL: 调用SQL命令 双向循环列表功能 效果实现 这个通讯录管理 ...
- Java数据结构第五版期末考试_数据结构(java)期末复习
[单选题]多基因遗传病的发病风险与下列哪个因素无关 [单选题]一般手锯的往复长度不应小于锯条长度的( ). [判断题]机器上所有;零件都必须进行机械加工. [单选题]一般划线精度能达到( ). [填空 ...
- Android面试、笔试、期中/末考试复习提纲总结
前言 刚考完试,一边总结一边写,随即分享给大家. 复习提纲 Android系统框架四层结构 应用层 Applications(手机上的app) 应用框架层 Application Framework( ...
最新文章
- 用PHP漂亮打印JSON
- RHEL各版本的XManager4远程配置
- 【Groovy】闭包 Closure ( 闭包调用 与 call 方法关联 | 接口中定义 call() 方法 | 类中定义 call() 方法 | 代码示例 )
- 远程如何修改Windows 2003机器名
- O2O产品经理,请多关注屏幕之外
- c++语句switch语句_错误:案例标签不在C中的switch语句内
- ORACLE中数据类型
- 双基因突变患者_双任务干预对携带LRRK2基因突变的帕金森病患者手灵活性的影响...
- 一体打印机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- FISCO BCOS Solidity 智能合约 批量插入新增数据
- 简约公司企业发展时间轴图表设计图表合集PPT模板
- php元换成万元,元换算成万元公式(元换算成万元换算器)
- 6款反垃圾邮件产品横向比较测试
- 张云雷的《探清水河》登上央视,为什么蔡国庆可以随心所欲地唱
- Christmas Lights Kata练习
- MySQL——使用mysqldump命令备份
- 3DMax—产品包装盒制作教程
- OSChina 周三乱弹 ——来学学巴叔被女神倒追
- 【SealDEV 倾情奉献】Android APK 安装过程详解
- 一个通用Makefile详解--收藏一个网址
热门文章
- python类与继承person类_关于python中类的继承及self
- 最后生成神么格式的代码_智能扩充机器人的“标准问”库之Query生成
- ecshop支持mysql5.5吗,centos5.5 安装配置 ecshop【nginx + php + mysql】
- 发生了变化 触发器函数不能读它_2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案...
- Linux内存中加载二进制,linux – 程序退出后二进制文件会留在内存中吗?
- 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案
- php自定义模块,简单介绍OpenCart自定义模块
- mapreduce 文件可以切分吗_MapReduce的任务流程
- MLPrimitive文件夹的作用
- centos7怎么安装中文环境支持包