日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

通讯录管理系统(C语言)

發布時間:2025/3/19 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通讯录管理系统(C语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* * 對通訊錄進行插入、刪除、排序、查找、單個顯示功能 */#include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>int n;typedef struct _Address_List {char name[30]; //名字char work[30]; //職業char handset[20]; //手機號碼char email[30]; //電子郵件char address[30]; //地址struct _Address_List *next; }address_List; #define LEN sizeof(address_List)address_List *Release(address_List *head);//創建一個通訊錄 address_List *Create(void) {address_List *head,*p1,*p2;char name[30];n = 0;p1 = (address_List *)malloc(LEN);p2 = p1;printf("請輸入通訊錄的內容!\n姓名輸入為0時表示創建完畢!\n");printf("請輸入姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("請輸入職業:");gets(p1->work);printf("請輸入手機:");gets(p1->handset);printf("請輸入電子郵件:");gets(p1->email);printf("請輸入通訊地址:");gets(p1->address);head = NULL;while(1){n = n+1;if(n == 1){head = p1;}else{p2->next = p1;}p2 = p1;printf("請輸入姓名:");gets(name);if(strcmp(name,"0") == 0){break;}else{p1 = (address_List *)malloc(LEN);strcpy(p1->name,name);printf("請輸入職業:");gets(p1->work);printf("請輸入手機:");gets(p1->handset);printf("請輸入電子郵件:");gets(p1->email);printf("請輸入通訊地址:");gets(p1->address);}}p2->next = NULL;return head;}else{return 0;} }//打印整個通訊錄 void print(address_List *head) {address_List *p;if(head != NULL){p = head;printf("本通訊錄現在共有%d人;\n",n);printf("---姓名---------職業----------手機--------Email-------------通訊地址\n");printf("====================================================================\n");do{printf("=%s\t\t",p->name);printf("=%s\t\t",p->work);printf("=%s\t\t",p->handset);printf("=%s\t\t",p->email);printf("=%s\n",p->address);p = p->next;}while(p != NULL);printf("==================================================================\n");}else{printf("通訊錄為空,無法輸出!\n");} }//在通訊錄插入 address_List *insert(address_List *head) {address_List *p0,*p1,*p2;char name[20];p1 = head;printf("請輸入增加的內容:\n");printf("請輸入姓名:");gets(name);if(strcpy(name,"0") == 0){printf("姓名不能為0,增加失敗!\n");return head;}else{p0 = (address_List *)malloc(LEN);strcpy(p0->name,name);printf("請輸入職業:");gets(p1->work);printf("請輸入手機:");gets(p1->handset);printf("請輸入電子郵件:");gets(p1->email);printf("請輸入通訊地址:");gets(p1->address);n = n+1;if(head == NULL){head = p0;p0->next = NULL;return head;}else{while(strcmp(p0->name,p1->name) > 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p0->name,p1->name) <0 || strcmp(p0->name,p1->name) == 0){if(head == p1){head = p0;}else{p2->next = p0;}p0->next = p1;}else{p1->next = p0;p0->next = NULL;}return head;}} }//刪除通訊錄中某個人 address_List *delete_txl(address_List *head) {address_List *p,*q;char name[30];if(head == NULL){printf("通訊錄為空,無法刪除!\n");return head;}p = head;printf("請輸入需要刪除的人姓名:");gets(name);if(strcmp(head->name,name) == 0){head = head->next;free(p);printf("刪除操作成功!\n");return head;}else{q = head;p = head->next;while(p != NULL){if(strcmp(p->name,name) == 0){q->next = p->next;free(p);printf("刪除操作成功!\n");return head;}p = p->next;q = q->next;}} }//顯示通訊錄中某個人 address_List *display(address_List *head) {address_List *p1,*p2;char name[30];int m;if(head == NULL){printf("通訊錄為空,無法顯示!\n");return head;}p1 = head;m = 0;printf("請輸入要顯示人的姓名:");gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && p1->next != NULL){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("%s的通訊內容如下:\n",name);printf("---姓名---------職業----------手機--------Email-------------通訊地址\n");printf("====================================================================\n");printf("=%s=\t\t",p1->name);printf("=%s=\t\t",p1->work);printf("=%s=\t\t",p1->handset);printf("=%s=\t\t",p1->email);printf("=%s=\n",p1->address);printf("====================================================================\n");}p1 = p1->next;}if(m == 0){printf("此人不在通訊錄中!\n");}return head; }//對通訊錄進行排序操作 address_List *Sort(address_List *head) {address_List *p1,*p2;int i,j;typedef struct _Address_List1{char name[30]; //名字char work[30]; //職業char handset[20]; //手機號碼char email[30]; //電子郵件char address[30]; //地址 }address_List1;address_List1 Sort[200];address_List1 temp;if(head == NULL){printf("通訊錄為空,無法排序!\n");return head;}p1 = head;for(i = 0;i < n,p1 != NULL; i++){strcpy(Sort[i].name,p1->name);strcpy(Sort[i].work,p1->work);strcpy(Sort[i].handset,p1->handset);strcpy(Sort[i].email,p1->email);strcpy(Sort[i].address,p1->address);p2 = p1;p1 = p1->next;}head = Release(head);for(j = 0; j < n-1; j++){for(i = j+1; i < n; i++){if(strcmp(Sort[i].name,Sort[j].name) < 0){Sort[i] = temp;temp = Sort[j];Sort[j] = temp;}}}p1 = (address_List *)malloc(LEN);p2 = p1;strcpy(p1->name,Sort[0].name);strcpy(p1->work,Sort[0].work);strcpy(p1->handset,Sort[0].handset);strcpy(p1->email,Sort[0].email);strcpy(p1->address,Sort[0].address);head = p1;for(i = 1; i < n; i++){p1 = (address_List *)malloc(LEN);strcpy(p1->name,Sort[i].name);strcpy(p1->work,Sort[i].work);strcpy(p1->handset,Sort[i].handset);strcpy(p1->email,Sort[i].email);strcpy(p1->address,Sort[i].address);p2->next = p1;p2 = p1;}p2->next = NULL;printf("按姓名排序后的結果是:\n");print(head);return head; }//查找通訊錄中某個人 address_List *Search_name(address_List *head) {address_List *p1,*p2;int m;char name[30];if(head == NULL){printf("通訊錄為空,無法查找!\n");return head;}p1 = head;printf("**************************\n");printf("****請輸入要查找的姓名:**\n");printf("**************************\n");m = 0;gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("你查找的內容是:\n");printf("++++++++++++++++++++++++++++++++\n");printf("++ %s\t%s\t%s\t%s\t%s ++",p1->name,p1->work,p1->handset,p1->email,p1->address);printf("++++++++++++++++++++++++++++++++\n");}p1 = p1->next;if(m == 0){printf("你查找的姓名不在通訊錄中!\n");}break;}return head; }//釋放整個通訊錄 address_List *Release(address_List *head) {address_List *p;while(head != NULL){p = head;head = head->next;free(p);}return head; }//保存(以文件的形式保存) void save(address_List *head) {FILE *fp;address_List *p;char Filename[30]; //保存后的文件名if(head ==NULL){printf("待保存的通訊錄為空,無法保存!\n");return ;}printf("請輸入保存后的文件名:");gets(Filename);fp = fopen("Filename.txt","w");if(fp == NULL){printf("無法打開文件!\n");return ;}p = head;fprintf(fp,"姓名\t職業\t手機\tEmail\t地址\n");for(;p != NULL;){fprintf(fp,"姓名\t職業\t手機\tEmail\t地址",p->name,p->work,p->handset,p->email,p->address);p = p->next;}printf("保存完畢!\n");fclose(fp); }//文件讀出函數 address_List *Load(address_List *head) {FILE *fp;char Filename[30];address_List *p1,*p2;printf("請輸入要輸出的文件名:");gets(Filename);fp = fopen("Filename.txt","r");if(fp == NULL){printf("此通訊錄不存在,無法輸出!\n");return head;}else{head = Release(head);}p1 = (address_List *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){printf("文件為空,無法打開!\n");return head;}else{rewind(fp);p2 = p1;head = p1;n = 0;while(feof(fp) == 0){fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){break;}p2->next = p1;p2 = p1;p1 = (address_List *)malloc(LEN);n = n+1;}p2->next = NULL;p1 = head;head = head->next;n = n-1;free(p1);print(head);printf("打開完畢!\n");return head;}fclose(fp); }//菜單選擇函數 address_List *menu(address_List *head) {char num[10];while(1){printf("*******************************\n");printf("*****1. 姓名查找 **********\n");printf("*****2. 單個顯示 **********\n");printf("*****3. 增加 **********\n");printf("*****4. 退出 **********\n");printf("*******************************\n");printf("請輸入你選擇的操作:");gets(num);switch(*num){case '1':{head = Search_name(head);print(head);}break;case '2':{head = display(head);}break;case '3':{head = insert(head);print(head);}break;case '4':return head;default:printf("操作有誤,此項不存在!\n");break;}if(strcmp(num,"6") == 0){break;}}return head; }//主函數 int main(void) {address_List *head = NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*= 程序說明 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*= 請及時保存創建完畢的通訊錄內容 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");while(1){printf("*******************************\n");printf("****** 1. 創建通訊錄 *******\n");printf("****** 2. 按名字排序 *******\n");printf("****** 3. 綜合操作 *******\n");printf("****** 4. 保存 *******\n");printf("****** 5. 打開 *******\n");printf("****** 6. 刪除 *******\n");printf("****** 7. 退出 *******\n");printf("*******************************\n");printf("請輸入你選擇的操作:");gets(num);switch(*num){case '1':{if(head == NULL){head = Create();print(head);}else{head = Release(head);head = Create();print(head);}}break;case '2':{head = Sort(head);}break;case '3':{head = menu(head);}break;case '4':{save(head);print(head);}break;case '5':{head = Load(head);}break;case '6':{head = delete_txl(head);print(head);}break;case '7':{head = Release(head);}break;default:{printf("操作有誤,此項不存在!\n");}break;}if(strcmp(num,"7") == 0){break;}}return 0; }

?

轉載于:https://www.cnblogs.com/tslDream/p/4455972.html

總結

以上是生活随笔為你收集整理的通讯录管理系统(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。