C语言通讯录管理系统
通讯录管理系统
你好,这是在学习了一段时间的C语言之后,在结合所学知识和网站学习的基础下,编译的第一个程序,可以作为参考,但不建议直接拿去用。萌新谨慎索取。在浏览过程中,如果发现哪方面不足,欢迎下方留言。
通讯录管理系统详解
该系统是基于链表和结构体创建,有链表基本的增删查改,排序,查找,插入,文件的创建,保存,读取和一些小功能。在更改和查找功能中,又分别将其细化,避免了很多不必要的麻烦。
本系统存在的问题也有很多,比如:插入采用的是尾插法,没有运用其他的插入方法,比较单调,单一。排序功能还存在一些问题。 大家都是新手,不建议直接copy哦!!如果出了问题,哥哥概不负责。嘻嘻!!
一、 具体代码详解如下
1.头文件和结构体及变量定义
代码展示如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Person
{
int num;
char name[50];
char city[50];
char tel[13];
char youbian[6];
};
struct node
{
Person data;
struct node *pnext;
};
struct node*phead =NULL;
int count =0;
在结构体中定义数值域与指针域,数值域储存联系人信息,指针域储存要连接的结构体地址,
2.使用的函数声明
具体如下:
void createFace();//创建主菜单
void createHeadNode();//创建头文件
void addNewNode(struct node *phead);//添加联系人
void showAllNode(struct node *phead);//展示所有联系人
void deleteNodeByNum(struct node *phead);//删除联系人
void findNodeByNum(struct node *phead);//通过编号查找联系人
void xiugaiNodeByNum(struct node *phead);//修改联系人
void initData(struct node *phead);//读取文件
void flush_data(struct node *phead);//写入文件,并退出系统
void findNodeByDim(struct node *phead);//查找相同城市联系人
int isSameNode(char input[], char name[]);//相同筛选
void Sort(struct node *phead);//排序
void find(struct node *phead);//查找联系人
void face();//菜单
void face2();//菜单2
根据所需的功能运用不同的函数,千万要记住函数的声明!!!!千万要记住!!!千万要记住!!!重要的事情说三遍!!!!
2. 菜单和主函数
代码如下
void createFace()
{
int b=0;
initData(phead);
printf("当前文件中有%d条数据\n",count);
printf("当前日期是:\t");
system("date/t");
system("time/t");
printf("\t\t\t=====================欢迎使用通讯录管理系统==================\n");
printf("\t\t\t* *\n");
printf("\t\t\t* *\n");
printf("\t\t\t-------------------------------------------------------------\n");
printf("\t\t\t**************************1.新增联系人***********************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************2.删除联系人***********************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************3.查找联系人***********************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************4.修改联系人信息*******************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************5.查看所有联系人*******************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************6.排序*****************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t**************************0.数据存档并退出系统***************\n");
printf("\t\t\t-------------------------------------------------------------\n");
printf("\t\t\t* *\n");
printf("\t\t\t* *\n");
printf("\t\t\t=============================================================\n");
while(1)
{
loop:printf("输入选项前的数字:");
int a,b;
a=scanf("%d",&b);
if (a!=1)
{
printf("干哈呢!让你输个数字,你至于吗?老实点!!!!");
fflush(stdin);
goto loop;
}
switch(b)
{
case 1:addNewNode(phead);break;
case 2:deleteNodeByNum(phead);break;
case 3:find(phead);break;
case 4:xiugaiNodeByNum(phead);break;
case 5:showAllNode(phead);break;
case 6:Sort(phead