c语言手机通讯录 重谢

Python07

c语言手机通讯录 重谢,第1张

#include<stdio.h>struct Class{char *cname//名字char *cphon //电话号码char *cuphon//单位电话char *cmphon //手机号码char *cqq //qq号码char *cbday//生日日期struct Class *node //其余的自己可以加*****}typedef struct Class Students //通讯录结构typedef Students *PsPs TcraseClsSt(Ps lina) // 催的操作Ps CraseClsSt(Ps lina,char *cname,char *cphon,char *cuphon,char *cmphon,char *cqq,char *cbday) //存过程void OutSmary(Ps lina) //输出结果 void main(){Ps lina=NULLlina=TcraseClsSt(lina)if(lina!=NULL) //如果lina为NULL是错误内存非配失败{OutSmary(lina)}elseprintf("Error")getch()} Ps TcraseClsSt(Ps lina){int Cmd=0char cname[100]char cphon[100]char cuphon[100]char cmphon[100]char cqq[100]char cbday[100]do{printf("Please enter a name:")scanf("%s",cname) //提示并输入数据printf("Enter the phone number:")scanf("%s",cphon)printf("Enter the unit telephone:")scanf("%s",cuphon)printf("Enter phone number:")scanf("%s",cmphon)printf("Enter the number qq:")scanf("%s",cqq)printf("Enter your date of birth:")scanf("%s",cbday)lina=CraseClsSt(lina,cname,cphon,cuphon,cmphon,cqq,cbday)//把数据存入链表printf("Enter -1 to exit any exit:")scanf("%d",&Cmd) } while(Cmd!=-1&&lina!=NULL)return lina} Ps CraseClsSt(Ps lina,char *cname,char *cphon,char *cuphon,char *cmphon,char *cqq,char *cbday)//链表存入函数{Ps meroryPs linbmerory=(Ps)malloc(sizeof(Students))if(!merory){return NULL //merory为NULL是返回零 NULL}merory->node=NULLstrcpy(merory->cname,cname)//用字符创拷贝函数 段错午 在turbo c 编译器可以通过 gcc可以用别的方法处理strcpy(merory->cphon,cphon)strcpy(merory->cuphon,cuphon)strcpy(merory->cmphon,cmphon)strcpy(merory->cqq,cqq)strcpy(merory->cbday,cbday)if(lina==NULL)return merory linb=lina while(linb->node!=NULL)linb=linb->node linb->node=meroryreturn lina}void OutSmary(Ps lina) //链表输出函数{while(lina!=NULL){printf("name:%s,Phone:%s,Unit Number:%s,Phone number:%s,qq No:%s,Date of Birth:%s\n",lina->cname,lina->cphon,lina->cuphon,lina->cmphon,lina->cqq,lina->cbday)lina=lina->node}}

以前写了一个简单的:

#include <stdio.h>

#include <stdlib.h>/*与malloc.h差不多*/

#include <string.h>

#include <iostream>

using namespace std

#define maxlen 15

struct persons

{int num/*定义结构体数组用于缓存数据*/

char name[20]

char e_addr[20]

char tel_no[15]

char sim_no

char arch

}persons[maxlen]

typedef struct lnode

{ /*通讯录结构中结点的定义*/

int num

char name[20]

char e_addr[20]

char tel_no[15]

char sim_no

char arch

struct lnode *next

}listnode,*linklist

linklist head=NULL,r=NULL/*定义头指针和尾指针*/

listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9

int i

char name1[10],ch

char tel_no1[15]

char arch1

char sim_no1

char e_addr1[20]

char s1[20]

FILE *fp/*定义文件指针*/

void creat() /*将文件的信息读入结构体数组在转存入链表中*/

{ int j

long k

fp=fopen("数据文件.txt","r t")/*打开文件*/

if(fp!=NULL)

{for(i=0i<=maxleni++ )

{ j=fgetc(fp)

if(j==EOF)

return

k=i

fseek(fp,k*sizeof(struct persons),0)/*读取一个人的信息*/

fread(&persons[i],sizeof(struct persons),1,fp)

s=(linklist)malloc(sizeof(listnode))/*装存入链表中*/

s->num=persons[i].num

strcpy(s->name,persons[i].name)

strcpy(s->e_addr,persons[i].e_addr)

strcpy(s->tel_no,persons[i].tel_no)

s->sim_no=persons[i].sim_no

s->arch=persons[i].arch

if(head==NULL) /*用尾插法将其插入链表中*/

else

{r->next=s

r=sr->next=NULL

}

}fclose(fp)

}

else

{ fp=fopen("数据文件.txt","w")/*不能打开另开辟一个文件*/

i=1

}

}

void Show()

void Delete()

void Input() /*向.通讯录中输入一个人的信息*/

{ s=(linklist)malloc(sizeof(listnode))

printf("\n\n\t请输入该用户的信息:")

printf("姓名:")

scanf("%s",&s->name)

printf("电话号码:")

scanf("%s",&s->tel_no)

printf("单键拨号:")

scanf("%s",&s->sim_no)

printf("E-mail地址:")

scanf("%s",&s->e_addr)

printf("类别:")

scanf("%s",&s->arch)

if(head==NULL)printf("\n\n")

else

{p8=head

while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0)

p8=p8->next

if(p8!=NULL)

{printf("您添加的用户已存在!")

free(s)}}

if(head==NULL)

{

s->next = 0

head=s

r = s

}

else

{

s->next = 0

r->next = s

r = s

}

}

void Alter()

int main()

{

system("color a")

creat()

do

{

printf("\n\n\t\t请选择操作:")

printf("\n\t\t1.显示通讯录")

printf("\n\t\t2.删除通讯录")

printf("\n\t\t3.添加通讯录")

printf("\n\t\t4.编辑通讯录")

printf("\n\n\n")

printf("\t请选择:")

cin>>ch

switch(ch)

{ case '1': Show()/*用单条件多选择语句实现调用与循环*/

break

case '2': Delete()

break

case '3': Input()

break

case '4': Alter()

break

fclose(fp)

exit(0)

break

default:

printf("\n\t The num should 1-6!!! \n")

break

}

}

while(1)

}

C语言编写一个通讯录管理系统的源代码如下:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

/*定义保存通迅录的信息*/

structfriends

{

charname[20]/*名字*/

charprovince[20]/*省份*/

charcity[20]/*所在城市*/

charnation[20]/*民族*/

charsex[2]/*性别M/F*/

intage/*年龄*/

}

扩展资料

1、在C++中应该使用inline内连函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。

2、在C语言两个函数的名称不能相同,否则会导致编译错误。在C++中,函数名相同而参数不同的两个函数被解释为重载。

3、在大型程序中,使函数名易于管理和使用,不必绞尽脑汁地去处理函数名。