先看看结构体定义
#define MAXSIZE 50 //表最大容量
//定义联系人信息 备注,电话,年龄,该声明要在顺序表结构体之前声明
typedef struct person
{
char remark[20];
char telephone[20];
int age;
};
//定义顺序表结构体
typedef struct
{
struct person data[MAXSIZE]; //顺序表元素为结构体元素
int last; //表尾指针
}seqlist;
seqlist *L; //定义一个全局变量表
我们会构建的函数
void menu(); //菜单
void KeyDown(); //按键功能
seqlist *create_list(void); //创建顺序表
void clear_list(seqlist *L); //释放顺序表
int is_empty_list(seqlist *L); //判断表是否为空
int is_full_list(seqlist *L); //判断表是否为满
int get_list_len(seqlist *L); //获取表的长度
void insert_list(seqlist *L,int pos,struct person datax); //在表中pos位置插入数据
void show_list(seqlist *L); //显示表中的内容
void deleta_list(seqlist *L,struct person datax); //删除表中pos的数据
int searchName_list(seqlist *L,struct person datax); //查询表中元素的位置
void change_list(seqlist *L,struct person datax); //更改某个元素的信息,这里我用的是名字查询。读者可以在函数体中自行修改
void quick_sort(seqlist *L,int begin,int end); //按照联系人的年龄进行排序
void saveToFile(seqlist *L,const char *fileName); //保存表到文件
void readFromFile(seqlist *L,const char *fileName); //从文件中读取表
1.菜单
//这个直接在网上找一个美观的就行了
void menu()
{
printf("********************************************************\n");
printf("**************** 通讯录 ****************\n");
printf("********************************************************\n");
printf("******** 1.添加 2.删除 ********\n");
printf("******** 3.查找 4.修改 ********\n");
printf("******** 5.显示 6.清空 ********\n");
printf("******** 7.排序 0.退出 ********\n");
printf("********************************************************\n");
}
2.按键功能
void KeyDown()
{
int key_value=0;
int len = get_list_len(L);
struct person temp;
scanf("%d",&key_value);
switch(key_value)
{
case 0:
exit(0); //结束进程
case 1:
puts("请输入要添加的联系人信息中间以空格分开(name telephone age):\n");
scanf("%s %s %d",temp.remark,temp.telephone,&temp.age);
insert_list(L,0,temp);
saveToFile(L,"person.txt");