用C语言编写一个通讯录管理系统

Python013

用C语言编写一个通讯录管理系统,第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、在大型程序中,使函数名易于管理和使用,不必绞尽脑汁地去处理函数名。

int main()

{

LinkQueue Q

initAddressBook(Q)

int flag=0

while(flag!=8)

{

printf("※※※※※主※※※※※菜※※※※※单※※※※※\n")

printf("※1、增加联系人          2、删除联系人      ※\n")

printf("※3、修改联系人          4、清空通讯录      ※\n")

printf("※5、查找联系人          6、按组显示        ※\n")

printf("※7、显示全部联系人      8、退出            ※\n")

printf("※※※※※※※※※※※※※※※※※※※※※※※\n")

printf("请输入编号(1-8):\n")

scanf("%d",&flag)

if(flag<1||flag>8)

{

printf("输入错误请重新输入!\n")

continue

}

else

{

switch(flag){

case 1:

if(enAddressBook(Q))

printf("增加联系人成功!\n")

else

printf("增加联系人失败!\n")

break

case 2:

if(delPerson(Q))

printf("删除联系人成功!\n")

else

printf("联系人删除失败!\n")

break

case 3:

if(update(Q))

printf("修改联系人成功!\n")

else

printf("修改联系人失败!\n")

break

case 4:

if(clearAddressBook(Q))

printf("通讯录已清空!\n")

else

printf("通讯录清空失败!\n")

break

case 5:

findByName(Q)

break

case 6:

findByGroup(Q)

break

case 7:

disAll(Q)

break

case 8:

system("cls")

break

}

}

}

printf("※※※※※感谢您使用本系统!※※※※※※\n")

return 0

}

//初始化通讯录

void initAddressBook(LinkQueue &Q)

{

Q.front=Q.rear=(QNode *)malloc(sizeof(QNode))

if(!Q.front)

exit(1)

else

Q.front->next=NULL

}

//清空通讯录

bool clearAddressBook(LinkQueue &Q)

{

system("cls")

while(addressBookLength(Q)!=0)

{

QNode *p

p=Q.front->next

Q.front->next=p->next

if(p==Q.rear)

Q.rear=Q.front

free(p)

}

return true

}

//通讯录当前人数

int addressBookLength(LinkQueue &Q)

{

int i=0

QNode *p

p=Q.front

if(Q.front==Q.rear)

i=0

else

{

while(p!=Q.rear)

{

p=p->next

i++

}

}

return i

}

//删除联系人

bool delPerson(LinkQueue &Q)

{

char _name[20]

system("cls")

printf("请输入要删除的联系人的姓名:\n")

scanf("%s",_name)

QNode *p,*q

if(Q.front==Q.rear)

{

printf("通讯录为空!\n")

return false

}

else

{

p=Q.front

q=Q.front->next

while(q!=Q.rear){

if(strcmp(q->name,_name)==0)

{

p->next=q->next

free(q)//删除节点

return true

}

else

{

p=p->next

q=q->next

}

}

if((strcmp(q->name,_name)==0))

{

free(q)

Q.front=Q.rear

return true

}

else

{

printf("无此联系人!\n")

return false

}

}

}

//查找联系人

bool findByName(LinkQueue &Q)

{

system("cls")

if(Q.front==Q.rear) 

{

printf("手机中无联系人!\n")

return false

}

else

{

char _name[20]

printf("请输入要查询的联系人姓名:\n")

scanf("%s",_name)

QNode *p

p=Q.front->next

while(p->next!=NULL)

{

if(strcmp(p->name,_name)==0)

{

printf("姓名:%s        号码:%s       分组:%s\n",p->name,p->tel,p->group)

return true

}

p=p->next

}

if(strcmp(p->name,_name)==0){

printf("姓名:%s        号码:%s       分组:%s\n",p->name,p->tel,p->group)

return true

}

else

{

printf("查无此人!\n")

return false

}

}

}

//按组显示联系人

bool findByGroup(LinkQueue &Q)

{

system("cls")

if(Q.front==Q.rear) 

{

printf("手机中无联系人!\n")

return false

}

else

{

char _group[20]

printf("请输入要查询的分组:\n")

scanf("%s",_group)

QNode *p

p=Q.front->next

while(p->next!=NULL)

{

if(strcmp(p->group,_group)==0)

{

printf("姓名:%s        号码:%s       \n",p->name,p->tel)

}

p=p->next

}

if(strcmp(p->group,_group)==0){

printf("姓名:%s        号码:%s        \n",p->name,p->tel)

return true

}

else

{

printf("无此分组!\n")

return false

}

}

}

//增加联系人

bool enAddressBook(LinkQueue &Q)

{

system("cls")

QNode *p

p=(QNode *)malloc(sizeof(QNode))

if(!p) 

return false

else

{

printf("请输入联系人姓名:\n")

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

printf("请输入联系人号码:\n")

scanf("%s",&p->tel)

printf("请输入联系人分组:\n")

scanf("%s",p->group)

if(Q.front->next==NULL)

{

   Q.front->next=p

   Q.rear=p

   Q.rear->next=NULL

}

else

{

p->next=NULL

Q.rear->next=p

Q.rear=p

}

return true

}

}

//修改联系人

bool update(LinkQueue &Q)

{

system("cls")

if(Q.front==Q.rear) 

{

printf("手机中无联系人!\n")

return false

}

else

{

char _name[20]

printf("请输入要修改的联系人姓名:\n")

scanf("%s",_name)

QNode *p

p=Q.front->next

while(p->next!=NULL)

{

if(strcmp(p->name,_name)==0)

{

printf("请输入新联系人姓名:\n")

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

printf("请输入新联系人号码:\n")

scanf("%s",&p->tel)

printf("请输入新联系人分组:\n")

scanf("%s",p->group)

return true

}

p=p->next

}

if(strcmp(p->name,_name)==0){

printf("请输入新联系人姓名:\n")

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

printf("请输入新联系人号码:\n")

scanf("%s",&p->tel)

printf("请输入新联系人分组:\n")

scanf("%s",p->group)

return true

}

else

{

printf("查无此人!\n")

return false

}

}

}

//显示所有联系人

void disAll(LinkQueue &Q)

{

system("cls")

int i=0

QNode *p

p=Q.front->next

if(Q.front==Q.rear)

printf("无联系人!\n")

else

{

printf("           姓名             号码             分组\n")

while(p!=NULL){

printf("%15s  %15s  %15s\n",p->name,p->tel,p->group)

p=p->next

}

}

}

class student //学生类

{

public:

char no[13]

char name[20]

char address[100]

char tel_no[12]

char post_code[7]

char e_mail[40]

}

class TXL //通讯录类

{

private:

student st[37]

public:

void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40])

void del(char name[20])

void find1(char no[13])

void find2(char name[20])

void list1()

void list2()

int correct(char name[20])

void read()

void write()

void format()

int back()

{

cout<<"返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "

char back

cin>>back

if(back=='R'||back=='r')

return 1

else

return 0

}

void print(int i)

{

cout<<"学号:"<<st[i].no<<endl

cout<<"姓名:"<<st[i].name<<endl

cout<<"地址:"<<st[i].address<<endl

cout<<"电话号码:"<<st[i].tel_no<<endl

cout<<"邮编:"<<st[i].post_code<<endl

cout<<"E_MAIL:"<<st[i].e_mail<<endl

}

}

这是一部分,你自己看看吧。。。