这是一个基于链表的项目,由于之前学习了怎样来创建一个单链表,在一个基础上就想来做一个电子通讯录玩玩。
项目需求: 制作一个电子通讯录,通过该通讯录能存入好友 ID 号、姓名(英文) 、手机号码、家庭住址、公司电话。
模块包括 :
主界面:主要显示软件功能。
A) 添加好友信息。
B) 列表好友信息。(包含排序功能)
C) 搜索好友
D) 删除好友
添加好友:
用户输入 INSERT 命令后,让用户输入好友信息。添加成功或失败都需要提示用户。
列表好友:
用户输入 DISPLAY 命令后,好友信息升序排列。
搜索好友:
用户输入 SEARCH 命令后,让用户输入将要搜索好友姓名查询。如果未搜索到
请友好提示。如果搜索到,显示出该好友信息。
删除好友:
用户输入 DELETE 命令后,让用输入将要删除好友姓名删除,如果存在同名的
多个好友,则列表出,所有同名的好友信息,让用户通过输入 ID 号删除。提示用
户删除成功。
由于用链表来实现,将每个好友的信息都放入一个结构体中作为一个结点。首先要先创建这个链表,将每个好友的信息添加到这个链表中构成这个通讯录。其次就是对这个通讯录进行操作,说白了就是对链表进行增删改查等。
一个好友包括5个信息。可以建一个如下的结构体。
typedef struct friend { int id; //结点数据 char name[20]; char phone[20]; char addr[20]; char company_phone[20]; struct friend *next; //结点指针 }Friend; typedef Friend* PFriend; //重命名结点指针类型
讯享网
我这次是用头结点的方式来创建的链表的。在main函数中定义一个PFriend类型的结点为head_node。
创建链表我用的是尾插法,在结构体中有id,name[]等数据,我选择用id作为一个递增的值,通过id++就可以不断的插入结点。
因为主界面会显示4个内容,在主函数中用switch..case..语句来判断。
下面是初写的一个只能实现添加好友的版本。
讯享网#include <stdio.h> #include <stdlib.h> #define OK 0 #define ERROR -1 #define MALLOC_ERROR -2 typedef struct friend { int id; //结点数据 char name[20]; char phone[20]; char addr[20]; char company_phone[20]; struct friend *next; //结点指针 }Friend; typedef Friend *PFriend; //重命名结点指针类型 int Add_Friend(PFriend s,int id) { if (s == NULL) { return ERROR; } //要插入的朋友信息 PFriend friend = (PFriend)malloc(sizeof(Friend)/sizeof(char)); if (friend == NULL) { return MALLOC_ERROR; } friend->id = id; printf ("\n\tput your name:"); scanf ("%s",friend->name); printf ("\n\tput your phone:"); scanf ("%s",friend->phone); printf ("\n\tput your addr:"); scanf ("%s",friend->addr); printf ("\n\tput your company_phone:"); scanf ("%s",friend->company_phone); friend->next = NULL; //找最后一个结点 PFriend temp = s; while (temp->next) { temp->next = temp; } temp->next = friend; return OK; } void interface() { printf ("1) 添加好友\n"); printf ("2) 列举好友\n"); printf ("3) 搜索好友\n"); printf ("4) 删除好友\n"); printf ("请选择:"); } int main() { int id = 0; PFriend head_node = (PFriend)malloc(sizeof(Friend)/sizeof(char)); if (head_node == NULL) { return MALLOC_ERROR; } head_node->next == NULL; //选择 char choice[2]; system("clear"); //清屏 while(1) { interface(); scanf ("%s",choice); //字符串以"\n"结尾 switch(choice[0]) { case '1'://添加好友 { id++; if (Add_Friend(head_node,id) != OK) { return ERROR; system("clear"); printf ("\n\n\n"); printf ("\t添加好友失败,请重新添加!"); } system("clear"); printf ("\n\n\n"); printf ("\t添加好友成功!\n"); break; } case'2'://列举好友 { break; } case'3'://搜索好友 { break; } case'4'://删除好友 { break; } default: { system("clear"); printf ("\n\n\n"); printf ("请输入正确的选项!\n\n\n"); break; } } } system("claer"); return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/24985.html