实验成果截图

实验的源码附上:(编译机是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实现 通讯录相关推荐

  1. C语言做一个通讯录程序(在console里面运行)

    最近复习C语言的时候看到网上有个C语言通讯录的小项目,于是看了下那个程序实现的大概的功能,然后自己也跟着做了个.代码还算简洁,贴上来给有需要的人. 1 // 2 // main.m 3 // Adre ...

  2. Jquery Mobile设计Android通讯录第二章

    本文是jQuery Mobile设计Android通讯录系统教程的第二篇,在上一篇教程中(http://publish.itpub.net/a2011/0517/1191/000001191561.s ...

  3. 《黑马程序员》通讯录管理系统实战

    通讯录管理系统 想直接看源码直达:https://blog.csdn.net/Augenstern_QXL/article/details/116982366 更新:源码我设置的是0cb/积分下载,但 ...

  4. 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52420706 本文出 ...

  5. 移动编程基础知识(复习提纲)

    目录 一.Android系统架构分为哪四个层次,每一层所提供的基本功能是什么? 二.Android项目资源程序文件夹res中,子文件夹layout.values.drawable.raw各有什么作用? ...

  6. 计算机病毒及其防治技术期末复习

    <计算机病毒及其防治技术>总结复习 文章目录 <计算机病毒及其防治技术>总结复习 第一章 概述 第二章 蠕虫 第三章 病毒结构 第四章 计算机病毒的技术特征 第五章 特洛伊木马 ...

  7. 基于Linux中的通讯录管理系统(C语言+双向循环链表+MySQL)

    文章目录 系统功能实现 相关软件前提 部分重要的功能代码 Makefile menu.c MySQL API函数使用 C语言连接MySQL: 调用SQL命令 双向循环列表功能 效果实现 这个通讯录管理 ...

  8. Java数据结构第五版期末考试_数据结构(java)期末复习

    [单选题]多基因遗传病的发病风险与下列哪个因素无关 [单选题]一般手锯的往复长度不应小于锯条长度的( ). [判断题]机器上所有;零件都必须进行机械加工. [单选题]一般划线精度能达到( ). [填空 ...

  9. Android面试、笔试、期中/末考试复习提纲总结

    前言 刚考完试,一边总结一边写,随即分享给大家. 复习提纲 Android系统框架四层结构 应用层 Applications(手机上的app) 应用框架层 Application Framework( ...

最新文章

  1. 用PHP漂亮打印JSON
  2. RHEL各版本的XManager4远程配置
  3. 【Groovy】闭包 Closure ( 闭包调用 与 call 方法关联 | 接口中定义 call() 方法 | 类中定义 call() 方法 | 代码示例 )
  4. 远程如何修改Windows 2003机器名
  5. O2O产品经理,请多关注屏幕之外
  6. c++语句switch语句_错误:案例标签不在C中的switch语句内
  7. ORACLE中数据类型
  8. 双基因突变患者_双任务干预对携带LRRK2基因突变的帕金森病患者手灵活性的影响...
  9. 一体打印机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. FISCO BCOS Solidity 智能合约 批量插入新增数据
  11. 简约公司企业发展时间轴图表设计图表合集PPT模板
  12. php元换成万元,元换算成万元公式(元换算成万元换算器)
  13. 6款反垃圾邮件产品横向比较测试
  14. 张云雷的《探清水河》登上央视,为什么蔡国庆可以随心所欲地唱
  15. Christmas Lights Kata练习
  16. MySQL——使用mysqldump命令备份
  17. 3DMax—产品包装盒制作教程
  18. OSChina 周三乱弹 ——来学学巴叔被女神倒追
  19. 【SealDEV 倾情奉献】Android APK 安装过程详解
  20. 一个通用Makefile详解--收藏一个网址

热门文章

  1. python类与继承person类_关于python中类的继承及self
  2. 最后生成神么格式的代码_智能扩充机器人的“标准问”库之Query生成
  3. ecshop支持mysql5.5吗,centos5.5 安装配置 ecshop【nginx + php + mysql】
  4. 发生了变化 触发器函数不能读它_2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案...
  5. Linux内存中加载二进制,linux – 程序退出后二进制文件会留在内存中吗?
  6. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案
  7. php自定义模块,简单介绍OpenCart自定义模块
  8. mapreduce 文件可以切分吗_MapReduce的任务流程
  9. MLPrimitive文件夹的作用
  10. centos7怎么安装中文环境支持包