本程序主要利用C语言中链表和文件的相关知识,实现了能够增删改查操作的简易通讯录程序。根目录下的ctt文件是存放通讯录信息的文件,可以直接用文本编辑器打开。但是不要改动固定的格式。代码中,多处出现重复的条件判断,导致代码重复。不过,有机会的话会进行修改。
部分代码如下:
/** * @Desc:这是一个实现通讯录的C源代码 * @Author:乌鸟 * @Version:0.1 * @URL:http://huxuemail.web-104.com * @QQ交流群:235173087(欢迎加入) */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> //这里定义的是联合体中字符数组的长度。 #define C_NAME_SIZE 10 #define C_SEX_SIZE 3 #define C_AGE_SIZE 5 #define C_PHONE_SIZE 12 #define C_QQ_SIZE 12 #define C_PROVINCE_SIZE 20 #define C_CITY_SIZE 20 #define C_COMMENT_SIZE 100 //亲,很明显,这是函数说明! void insRecord();//插入一条记录的实现 void inputs(char *prompt,char *info,int count);//插入一条记录时,逐行输入信息的实现 struct addr *linkNode(struct addr *i,struct addr *top);//输入完一条记录后,将当前的缓冲节点连接到链表中的实现 struct addr *find(char *name);//查找出指定的节点的实现 void seaRecord();//查找记录的实现 void delRecord();//删除记录的实现 int selectMenu();//主菜单的实现 void disRecord(addr *info);//显示一条记录的实现 void disRecords();//显示全部记录的实现 void getInfo(); //根据ctt文本中的记录,逐条返回数据项,并实现将信息插入链表,即程序启动的初始化状态的实现 void initInputs(char *initInfo[]);//输入完一条记录后,将当前的缓冲节点连接到链表中的实现 void saveRecords();//将链表中的信息全部写到磁盘文件中的实现 void saveToFile(addr *info);//将每条信息记录放到新建的文件中的实现 void editRecord();//修改记录的实现 void about();//显示作者信息的实现 //全局的东东 //联合体 struct addr { char c_name[C_NAME_SIZE]; char c_sex[C_SEX_SIZE]; char c_age[C_AGE_SIZE]; char c_phone[20]; char c_qq[C_QQ_SIZE]; char c_province[C_PROVINCE_SIZE]; char c_city[C_CITY_SIZE]; char c_comment[C_COMMENT_SIZE]; struct addr *next;//pointer to next entry ^^ }; //全局指针变量,info存储当前缓冲的节点、start和last存储最后一个节点、head存储头节点 struct addr *info,*start,*last,*head; //初始化用,与head有关的变量 static int n = 0;
下载:源代码下载地址