/********************通讯录应用程序简介************************************
1、设一个通信录由以下几项数据信息构成:
数据项 类型
姓名 字符串
地址 字符串
邮政编码 字符串
电话号码 字符串
2. 实现功能:
1.存取、
2.显示、
3.删除记录、
4.查询记录等功能。
2、要求:界面友好,易于操作
***********************************************************************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Telephone
{
char name[20];
char addrass[20];
char zip[20];
char telephone[20];
struct Telephone *next;
};
typedef struct Telephone TEL;
TEL *head=NULL;
void showmenu(); //菜单
void Appenditem(); //添加条目
void print(); //输出条目
void Finditem1(); //查找条目( 按姓名 )
void Removeitem(); //删除信息
void Saveandfree(); //保存到文件
void Open(); //打开文件
void main()
{
char ch;
Open(); //打开文件
while(1)
{
showmenu(); //显示菜单
scanf(" %c",&ch);
switch(ch)
{
case '1':Appenditem(); //添加条目
break;
case '2':print(); //输出条目
break;
case '3':Finditem1(); //查找条目1.按姓名
break;
case '4': Removeitem(); //删除信息
print(); //输出删除后的结果
break;
case '0':Saveandfree(); //保存并释放内存
exit(0); //退出
break;
default:
printf("选择错误!");
break;
}
}
}
//菜单
void showmenu()
{
printf("\n*****************通讯录系统*****************\n");
printf("\t1.添加条目。\n");
printf("\t2.输出输出\n");
printf("\t3.按姓名查询\n");
printf("\t4.删除条目\n");
printf("\t0.保存并退出!\n");
printf("*************************************************\n");
printf("\t请选择:\n");
}
//添加条目
void Appenditem()
{
TEL *p1=NULL,*p2=NULL;
p1=(TEL *)malloc(sizeof(TEL)); //申请结点
printf("输入姓名:\n"); //添加信息
scanf("%s",p1->name);
printf("输入地址:\n");
scanf("%s",p1->addrass);
printf("输入邮编:\n");
scanf("%s",p1->zip);
printf("输入电话:\n");
scanf("%s",p1->telephone);
p1->next=NULL; //保存到链表
if(head==NULL)
{
head=(TEL *)malloc(sizeof(TEL)); //申请空间
head->next=p1;
}
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); //找到结点尾
p2->next=p1;
}
printf("此信息已添加!");
}
//输出学生信息
void print()
{
TEL *p=NULL;
if(head==NULL)
{
printf("此通讯录中无记录,请输入记录后在使用本功能!\n");
return;
}
printf("**************通讯录系统*********************\n"); //输出信息
printf("姓名\t地址\t邮编\t电话\n");
for(p=head->next;p!=NULL;p=p->next)
printf("%s\t%s\t%s\t%s\n",p->name,p->addrass,p->zip,p->telephone);
}
//查找信息1.按姓名
void Finditem1()
{
TEL *p;
char findname[20];
printf("请输入要查找的姓名:\n");
scanf("%s",findname);
printf("**************通讯录系统*********************\n");
printf("姓名\t地址\t邮编\t电话\n");
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,findname)==0)
printf("%s\t%s\t%s\t%s\n",p->name,p->addrass,p->zip,p->telephone);
}
}
//删除信息
void Removeitem()
{
char findname[20]; //先查找 后删除
TEL *p = head->next, *pr = head->next;
printf("请输入要删除的姓名:\n");
scanf(" %s",findname);
if (head->next == NULL)
{
printf("无此节点!\n");
return;
}
while ((strcmp(p->name,findname)!=0 )&& p->next != NULL)
{
pr =p;
p =p->next;
}
if (strcmp(findname, p->name)==0) //输出删除信息
{
printf("%s\t%s\t%s\t%s\n",p->next->name,p->next->addrass,\
p->next->zip,p->next->telephone);
if (p == head->next)
head->next = p->next;
else
pr->next = p->next;
free(p);
}
printf("此信息已删除!");
}
//保存链表信息到文件并释放内存空间
void Saveandfree()
{
TEL *p=NULL;
FILE *fp;
char *Book="books.txt";
if(head==NULL)
{
printf("\n记录为空!\n");
return;
}
else
p=head->next;
if((fp=fopen(Book,"wb+"))==NULL)
{
printf("\n打不开文件!\n");
return;
}
while(p!=NULL) //保存信息
{
fwrite(p,sizeof(TEL),1,fp);
p=p->next;
}
printf("保存完毕!");
fclose(fp);
//*****释放链表空间*****
for(;head->next!=NULL;)
{
p=head->next;
head->next=head->next->next;
free(p);
}
free(head);
}
//文件信息输出到链表
void Open()
{
FILE *fp;
TEL *p1=NULL,*p2=NULL,*temp=NULL;
if((fp=fopen("books.txt","rb+"))==NULL)
{
printf("\n****************这是一个新的通讯录管理系统******************\n");
return;
}
head=(TEL *)malloc(sizeof(TEL));
head->next=NULL;
temp=p2=head;
while(! feof(fp)) //循环读取
{
p1=(TEL *)malloc(sizeof(TEL));
temp=p2;
p2->next=p1;
p2=p1;
fread(p1,sizeof(TEL),1,fp);
}
temp->next=NULL;
fclose(fp); //关闭文件
}
温馨提示:内容为网友见解,仅供参考
我现在需要一个通讯录的c语言源代码,大家可以帮帮我吗???
Open(); \/\/打开文件 while(1){ showmenu(); \/\/显示菜单 scanf(" %c",&ch);switch(ch){ case '1':Appenditem(); \/\/添加条目 break;case '2':print(); \/\/输出条目 break;case '3':Finditem1(); \/\/查找条目1.按姓名 break;case '4': Removeitem(); \/\/删除...
用c语言编写简单的手机通讯录
void func1(){ ofstream output("MyFrd.dat");MyFriend s;cout<<"输入数据"<<endl;cout<<"联系人个数:";cin>>n;for(int i=0;i<n;i++){ cout<<"第"<<i+1<<"个联系人";s.getdata();output.write((char *)&s,sizeof(s));};output.close();} void func2(){ ifstream in...
手机通讯录管理中拨号的源代码c语言编程
while ((cameraImage = cvQueryFrame(capture)) != NULL){ cvShowImage("Camera",cameraImage);cvWaitKey(1);}
c语言源代码怎么写? 谢谢帮助.
include <stdio.h> include <string.h> int lenth(char *p,int n){ char *q=p+n-1,*t=p;if(n%2){ return n;} while(p<q){ if(*p++!=*q--){ return n;} } lenth(t,n\/2);} int main(){ char str[100];int n,i;scanf("%d",&n);for(i=0;i<n;++i){ fflush(...
C语言,请大家帮帮我。
C语言,请大家帮帮我。 #include<stdio.h>#include<process.h>structfenshu{charname[50];intchinese[10];intmath[10];intenglish[10];}inme[100],*bb;voidsave(char*name,intn){FILE*fp;inti;if((fp=fopen(... #include<stdio.h>#include<process.h>struct fenshu{ char name[50]; int chinese[...
来个c语言大神帮帮忙真心谢谢,把源代码发给我
int main(void){ int i,j,k; for(i=0;i<=3;i++) { \/\/ 循环4次,打出前4行 for(j=0;j<=2-i;j++)\/\/设定每行*前面的空格,每行都是2-i个 ...
一个简单的c语言程序代码(一个简单的c语言程序代码是什么)
一个c语言源程序可以由一个或多个源文件组成。每个源文件可由一个或多个函数组成。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。最简单的C语言代就是输出“helloWord”,通常是作为初学编程语言时的第一个程序代码。就是源代码啊!通俗来说可以说是实现一个目的的算法...
能帮我写一个用C语言实现的串口通讯程序吗?
EA=1;} \/\/\/发送一个字节\/\/\/ \/*void putchar(unsigned char byte){ if(JO_check(byte)==1)TB8=0;else TB8=1;SBUF=byte;while(!TI)TI=0;} *\/ \/\/\/串口接受程序 与350通信\/\/\/ void RX() interrupt 4 { if(RI==1){ RI=0;C8051F350[CaiYangJiShu]=SBUF;if(RB8==JO...
我用c语言做的手机通讯录中联系人信息不能保存,每次输入完都会覆盖前一...
替换掉这个函数,可以解决你的问题了,注意i值不要乱动了 int add(struct telebook *p)\/\/添加好友 { struct telebook *p1=p;int n,j;static int i=0; \/\/定义成静态变量,只有第一次赋值为0,以后就保存下了上次的结果值了 printf("添加好友数量,回车键确认:\\n");scanf("%d",&n);for(...
C语言常见问题,请帮忙编写这个程序的源代码,不能用函数调用,宏定义来...
饭后随便写了一个,求字符串长度可以采用while巡检检测是否出现'0'来计算。include <stdio.h> include <conio.h> include <math.h> include <string.h> int main(){ char *p=NULL,sSrc[256]={0};printf("Pls input string,max length <256");scanf("%s",sSrc);p= new char[strlen(sSrc)...