刚学完链表,这是我的第一个项目,用来检验我的学习成果。
项目需求:制作一个电子通讯录,通过该通讯录能存入好友
ID 号、姓名(英文)、手机号码、 家庭住址、公司电话。
模块
一、主界面:主要显示软件功能。
A) 添加好友信息。
B) 列表好友信息。(包含排序功能)
C) 搜索好友
D) 删除好友
二、 添加好友:
用户输入 INSERT 命令后,让用户输入好友信息。 添加成功或失败都需要提示
用户
三、列表好友:
用户输入 DISPLAY 命令后,好友信息升序排列。
四、 搜索好友:
用户输入 SEARCH 命令后,让用户输入将要搜索好友姓名查询。如果未搜索到
请友好提示。如果搜索到,显示出该好友信息。
五、删除好友:
用户输入 DELETE 命令后,让用输入将要删除好友姓名删除,如果存在同名的
多个好友,则列表出,所有同名的好友信息,让用户通过输入 ID 号删除。 提示用
户删除成功。
因为要做课设,所以只写了一部分。话不多说,先贴程序。
#include <stdio.h>
#include <stdlib.h>
#define OK 0
#define ERROR -1
#define MALLOC_ERROR -2
#define N 20
typedef int ElementType;
typedef struct node
{
ElementType ID; //ID号
char Name [N]; //姓名
ElementType Mobile_Phone [N]; //手机号码
char Home_Address [N]; //家庭住址
ElementType Company_Phone [N]; //公司电话
struct node *next; // 结点指针
}Address;
typedef Address* PAddress;
/**************************************************************************
File name: Interface_Display
Author:xxxx Version:0.1 Date:
Description: 显示操作界面
Funcion List:
**************************************************************************/
int Interface_Display ()
{
system ("clear");
printf ("\t*****************************************\n");
printf ("\t~ 欢迎使用通讯录 ~\n");
printf ("\t~ ~\n");
printf ("\t~ 1 >>>>>>>>> 添加好友信息 ~\n");
printf ("\t~ 2 >>>>>>>>> 列表好友信息 ~\n");
printf ("\t~ 3 >>>>>>>>> 搜索好友 ~\n");
printf ("\t~ 4 >>>>>>>>> 删除好友 ~\n");
printf ("\t~ 5 >>>>>>>>> 退出 ~\n");
printf ("\t~ ~\n");
printf ("\t~ ~\n");
printf ("\t~ 作者:xxxx ~\n");
printf ("\t*****************************************\n");
printf (" \n");
printf (" \n");
printf ("\t请输入对应数字选择相应功能:");
}
/**************************************************************************
File name: Add_Friend
Author:xxxx Version:0.1 Date:
Description: 添加好友信息
Funcion List:
**************************************************************************/
int Add_Friend (PAddress h,int i)
{
if(h == NULL)
{
return ERROR;
}
PAddress p = (PAddress)malloc(sizeof(Address)/sizeof(char));
if (p == NULL)
{
return MALLOC_ERROR;
}
system("clear");
p->ID = i;
printf("\n 请输入名字:");
scanf("%s", p->Name);
printf("\n 请输入手机号码:");
scanf("%s", p->Mobile_Phone);
printf("\n 请输入家庭地址:");
scanf("%s", p->Home_Address);
printf("\n 请输入公司电话:");
scanf("%s", p->Company_Phone);
p->next = NULL;
PAddress temp = h;
while (temp->next)
{
temp = temp->next;
}
temp->next = p;
return OK;
}
/**************************************************************************
File name: Delete_Friend
Author:xxxx Version:0.1 Date:
Description: 删除好友
Funcion List:
**************************************************************************/
int Delete_Friend(PAddress h, int i)
{
if(h == NULL)
{
return error;
}
PAddress temp = h;
int flag = 1;
if(temp->next == NULL)
{
return error;
}
if(temp->next->next == NULL)
{
if(temp->next->ID == i)
{
flag = 0;
PAddress tmp = temp->next;
temp->next = NULL;
free(tmp);
printf("\n\n");
printf("Deleted successfully\n");
printf("\n\n");
return ok;
}
}
while(temp->next)
{
if(temp->next->ID == i)
{
flag = 0;
PAddress p = temp->next;
temp->next = p->next;
free(p);
printf("\n\n");
printf("Deleted successfully\n");
printf("\n\n");
}
temp = temp->next;
}
if(flag)
{
printf("\n\n");
printf("Invalid delete\n");
printf("\n\n");
}
return ok;
}
今天先写这么多,剩下的明天写完。