#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct DATE{
char name[20];
char address[40];
char email_num[20];
char telephone_num[20];
struct DATE* pNext;
} Date,*Pdate;
void space(void);
void init_printf(void);
int main(void){
int get;
Pdate phead;
int flag=0;
Pdate init_list(void);
void show_booklist(Pdate );
void append_people(Pdate );
void delete_for_name(Pdate );
void delete_for_num(Pdate );
void delete_people(Pdate );
void found_for_name(Pdate );
printf("\t\t\t\t欢迎来到XXX通讯录\n");
init_printf();
while(scanf("%d",&get)==1){
if(get!=5&&flag==0){
if(get==6){
printf("拜拜!\n");exit(-2);
}else{
printf("你输入的序号貌似哪里不对的样子~~~\n");
printf("请重新输入:\n");
}
}
else{
flag=1;
switch(get){
case 1:show_booklist(phead);break;
case 2:append_people(phead);break;
case 3:delete_people(phead);break;
case 4:found_for_name(phead);break;
case 5:phead=init_list();break;
}
}
};
return 0;
}
Pdate init_list(void){ //初始化整个工作薄
Pdate pTail;
int i,len;
Pdate phead=(Pdate)malloc(sizeof(Date));
if(phead==NULL){
printf("\t额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");
exit(-1);
}
pTail=phead;
pTail->pNext=NULL;
printf("正在初始化整个电话薄\n");
printf("请输入你要创建的电话薄最大存储容量(PS:最多存放多少人的信息):\n");
scanf("%d",&len);
space();
if(len>100){
printf("您的野心也忒大了点吧~~~写个小点的数吧~~~\n");
}
else if(len<0){
printf("亲!!!您见过有负数数量的人类吗??我怀疑您是喵星球来的~~~\n");
}
else{
printf("你将会创建一个存放有%d个人的电话薄\n",len);
for(i=0;i<len;i++){
Pdate pNew=(Pdate)malloc(sizeof(Date));
if(pNew==NULL){
printf("额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");
exit(-1);
}
printf("这是第%d个联系人",i+1);
printf("请输入联系人的名字:");
scanf("%s",pNew->name);
space();
printf("请输入联系人的地址:");
scanf("%s",pNew->address);
space();
printf("请输入联系人的邮箱:");
scanf("%s",pNew->email_num);
space();
printf("请输入联系人的电话号码:");
scanf("%s",pNew->telephone_num);
space();
pNew->pNext=pTail->pNext;
pTail->pNext=pNew;
pTail=pNew;
}
printf("通讯录初始化完毕!\n");
init_printf();
}
return phead;
}
void show_booklist(Pdate phead){ //显示通讯录姓名
Pdate p=phead->pNext;
if(p==NULL){
printf("//\n");
printf("没有任何记录.\n");
printf("//\n");
}else{
printf("//\n");
printf("\t姓名 \t地址 \t\t邮箱 \t\t电话\n");
while(p!=NULL){
printf("%10s\t%15s\t%15s\t%15s\n",p->name,p->address,p->email_num,p->telephone_num);
p=p->pNext;
}
printf("//\n");
}
init_printf();
}
void append_people(Pdate phead){ //向后追加一个
Pdate pNew=(Pdate)malloc(sizeof(Date));
Pdate pTemp=phead;
int i=0;
while(pTemp->pNext!=NULL){
i++;
pTemp=pTemp->pNext;
}
if(pNew==NULL){
printf("额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");
exit(-1);
}
printf("这是第%d个联系人\n",i+1);
printf("请输入新建联系人的名字:");
scanf("%s",pNew->name);
space();
printf("请输入新建联系人的地址:");
scanf("%s",pNew->address);
space();
printf("请输入新建联系人的邮箱:");
scanf("%s",pNew->email_num);
space();
printf("请输入新建联系人的电话号码:");
scanf("%s",pNew->telephone_num);
space();
pTemp->pNext=pNew;
pNew->pNext=NULL;
init_printf();
}
void delete_people(Pdate phead){ //删除一个
int i;
void delete_for_name(Pdate phead);
void delete_for_num(Pdate phead);
printf("你可以通过两种方式来删除联系人信息\n");
printf("1.通过联系人姓名 \t2.通过联系人电话号码\n");
printf("请输入你选择的方式:");
scanf("%d",&i);
switch(i){
case 1:delete_for_name(phead);break;
case 2:delete_for_num(phead);break;
}
init_printf();
}
void delete_for_name(Pdate phead){ //按姓名删除
Pdate pbefore=phead->pNext,pTemp=phead->pNext;
Pdate pafter;
char name[20];
if(phead->pNext==NULL){
printf("数据为空,不能执行删除命令!\n");
}else{
printf("请输入你要删除的姓名:");
scanf("%s",name);
while(pTemp!=NULL&&strcmp(pTemp->name,name)!=0){
pTemp=pTemp->pNext;
}
if(pTemp==NULL){
printf("你要删除的人不存在!\n");
}else{
pafter=pTemp->pNext;
if(pTemp==phead->pNext){
phead->pNext=pafter;
}else{
while(pbefore->pNext!=pTemp){
pbefore=pbefore->pNext;
}
pbefore->pNext=pafter;
}
free(pTemp);
}
}
}
void delete_for_num(Pdate phead){ //按姓名删除
Pdate pbefore=phead->pNext,pTemp=phead->pNext;
Pdate pafter;
char name[20];
if(phead->pNext==NULL){
printf("数据为空,不能执行删除命令!\n");
}else{
printf("请输入你要删除的号码:");
scanf("%s",name);
while(pTemp!=NULL&&strcmp(pTemp->telephone_num,name)!=0){
pTemp=pTemp->pNext;
}
if(pTemp==NULL){
printf("你要删除的人不存在!\n");
}else{
pafter=pTemp->pNext;
if(pTemp==phead->pNext){
phead->pNext=pafter;
}else{
while(pbefore->pNext!=pTemp){
pbefore=pbefore->pNext;
}
pbefore->pNext=pafter;
}
free(pTemp);
}
}
}
void space(void){ //去除输入之后的回车
while(getchar()!='\n')
{
continue;
}
}
void init_printf(void){ //显示主目录
printf("请选择你需要的操作\n");
printf("1.查看通讯录中的信息\t\t\t2.新建联系人并添加\n");
printf("3.删除指定联系人\t\t\t4.查询指定联系人\n");
printf("5.初始化整个通讯录\t\t\t6.离开我~~~\n");
printf("你必须首先初始化整个通讯录,否则通讯录不能正常工作\n");
}
void found_for_name(Pdate phead){
char name[20];
Pdate temp=phead->pNext;
printf("请输入查找的姓名:");
scanf("%s",name);
while(temp!=NULL&&strcmp(temp->name,name)!=0){
temp=temp->pNext;
}
if(temp==NULL){
printf("\n");
printf("木有这条记录\n");
}
else{
printf("\t姓名 \t地址 \t\t邮箱 \t\t电话\n");
printf("%10s\t%15s\t%15s\t%15s\n",temp->name,temp->address,temp->email_num,temp->telephone_num);
}
init_printf();
}
通讯录管理系统
最新推荐文章于 2020-11-11 16:02:54 发布