/* 线性表L的建立 / Tx_Seqlist SqLset(Tx_Seqlist* L) { L = (Tx_Seqlist*)malloc(sizeof(Tx_Seqlist)); L->last = -1; return L; }

/* 线性表L的插入 / int insert(Tx_Seqlist L) { if (L->last == SIZE - 1) { printf('通讯录已满,无法插入。\n'); return 0; } L->last++; printf('请输入要插入的通讯者的编号:'); scanf('%s', L->tx[L->last].num); printf('请输入要插入的通讯者的姓名:'); scanf('%s', L->tx[L->last].name); printf('请输入要插入的通讯者的性别:'); scanf('%s', L->tx[L->last].sex); printf('请输入要插入的通讯者的电话:'); scanf('%s', L->tx[L->last].phone); printf('请输入要插入的通讯者的地址:'); scanf('%s', L->tx[L->last].addr); return 1; }

/* 线性表L的删除 / int delete(Tx_Seqlist L) { if (L->last == -1) { printf('通讯录为空,无法删除。\n'); return 0; } char num[5]; printf('请输入要删除的通讯者的编号:'); scanf('%s', num); int i, idx = -1; for (i = 0; i <= L->last; i++) { if (strcmp(L->tx[i].num, num) == 0) { idx = i; break; } } if (idx == -1) { printf('未找到该编号的通讯者。\n'); return 0; } for (i = idx; i < L->last; i++) { L->tx[i] = L->tx[i + 1]; } L->last--; return 1; }

/* 线性表L的查询 / int query(Tx_Seqlist L) { if (L->last == -1) { printf('通讯录为空,无法查询。\n'); return 0; } char num[5]; printf('请输入要查询的通讯者的编号:'); scanf('%s', num); int i, idx = -1; for (i = 0; i <= L->last; i++) { if (strcmp(L->tx[i].num, num) == 0) { idx = i; break; } } if (idx == -1) { printf('未找到该编号的通讯者。\n'); return 0; } printf('编号:%s\n', L->tx[idx].num); printf('姓名:%s\n', L->tx[idx].name); printf('性别:%s\n', L->tx[idx].sex); printf('电话:%s\n', L->tx[idx].phone); printf('地址:%s\n', L->tx[idx].addr); return 1; }

/* 线性表L的输出打印 / void printData(Tx_Seqlist L) { if (L->last == -1) { printf('通讯录为空,无法输出。\n'); return; } printf('编号\t姓名\t性别\t电话\t地址\n'); int i; for (i = 0; i <= L->last; i++) { printf('%s\t%s\t%s\t%s\t%s\n', L->tx[i].num, L->tx[i].name, L->tx[i].sex, L->tx[i].phone, L->tx[i].addr); } }

#include<stdio.h> #include<stdlib.h> #include <string.h> #define SIZE 50

typedef struct { char num[5]; //编号 char name[10]; // 姓名 char sex[7]; // 性别 char phone[15]; // 电话 char addr[30]; // 地址 }Datatype;

typedef struct{ Datatype tx[SIZE]; int last; /*数组tx中最后一个元素的位置即下标 */ }Tx_Seqlist; Tx_Seqlist *L;

/* 线性表L的建立 */ Tx_Seqlist * SqLset(Tx_Seqlist L); / 线性表L的插入 */ int insert(Tx_Seqlist *L); /*线性表L的删除 */ int delete(Tx_Seqlist *L); /*线性表L的查询 */ int query(Tx_Seqlist *L); /*线性表L的输出打印 */ void printData(Tx_Seqlist *L);

/菜单选择函数/ int menu_select( ) { int sn;
for( ; ; ){
scanf( '%d', &sn); if( sn<0 || sn>5 ) printf('\n输入错误,重选0-5:\n'); else break; } return sn; }

/主控菜单处理函数(主函数)/ void main( ){ printf('通讯录管理系统\n'); printf('==================\n'); printf('1 通讯录表的建立\n'); printf('2 通讯者的插入\n'); printf('3 通讯者的删除\n'); printf('4 通讯者的查询\n'); printf('5 通讯录表的输出\n'); printf('0 退出管理系统\n'); printf('==================\n'); for( ; ; ){ switch( menu_select( ) ){ case 1: printf('通讯录表的建立\n'); //调用建立通讯录表函数; L = SqLset(L); break; case 2: printf('通讯者的插入\n'); //调用通讯者的插入函数; printf('%d\n',insert(L)); break; case 3: printf('通讯者的删除\n'); //调用通讯者的删除函数; printf('%d\n',delete(L)); break; case 4: printf('通讯者的查询\n'); //调用通讯者的查询函数; printf('%d\n',query(L));
break; case 5: printf('通讯录表的输出\n'); //调用通讯录表的输出函数; printData(L); break; case 0: printf('再见\n'); exit(0); } } }

C语言通讯录管理系统:线性表实现增删改查

原文地址: https://www.cveoy.top/t/topic/Sd1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录