【C语言】通讯录管理系统(容量固定)
2017-03-07 13:53
537 查看
话不多说,直接上代码。
tongxunlu.h
tongxunlu.c
test.c
tongxunlu.h
#ifndef _TONGXUNLU_H_ #define _TONGXUNLU_H_ #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct tongxunlu { char name[16]; char sex; int age; char number[16]; char address[32]; }list; void init(list * signal); //初始化通讯录 void all_show(list *signal); //显示所有联系人信息 void my_add(list *signal); //添加联系人 void my_delete(list *data,list *signal); //删除联系人信息 list * my_reserch(list *signal); //查找联系人信息 void my_remove(list *signal); //修改联系人信息 void name_sort(list *signal); //联系人按照姓名排序 void clear_all(list *signal); //清空所有联系人 #endif
tongxunlu.c
#include "tongxunlu.h" static int tag =0; //静态全局变量tag,用来记录当前通讯录中的个数 void my_add(list *signal) //添加联系人 { if(tag<10) { signal+= tag; printf("Please Enter: \n "); printf(" name\tsex\tage\tnumber\t address\n "); scanf("%s%s%d%s%s",signal->name,&signal->sex,&signal->age,signal->number,signal->address); tag++; } else { printf("the tongxunlu is full!!\n"); } } list * my_reserch(list *signal) //查找联系人信息 { int count = 0; char str[16] ={'\0'}; printf("请输入要查找的联系人姓名:"); scanf("%s",str); while(count<10) { if(strcmp(str,signal->name)==0) { return signal; } signal++; count++; } return NULL; } void my_delete(list *data,list *signal) //删除联系人信息 { memset(data,0,sizeof(list)); list *i; for(i=data;i<signal+9;i++) { *data = *(data+1); data++; } memset(data,0,sizeof(list)); tag--; } void my_remove(list *signal) //修改联系人信息 { int n=0; printf("修改联系人的哪个信息:》1 姓名 》2 性别 》3 年龄 》4 电话号码 》5住址\n"); scanf("%d",&n); switch(n) { case 1: { printf("名字修改为:"); scanf("%s",signal->name); }break; case 2: { printf("性别修改为:"); scanf("%s",&signal->sex); }break; case 3: { printf("年龄修改为:"); scanf("%d",&signal->age); }break; case 4: { printf("电话号码修改为:"); scanf("%s",signal->number); }break; case 5: { printf("住址修改为:"); scanf("%s",signal->address); }break; default: printf("Error!!Please try again.\n"); break; } } void all_show(list *signal) //显示所有联系人信息 { printf(" name\tsex\tage\tnumber\t address\n "); int count=0; while(count<10) { printf("%s\t%c\t%d\t%s\t%s\n",signal->name,signal->sex,signal->age,signal->number,signal->address); signal++; count++; } } void clear_all(list *signal) //清空通讯录,相当于初始化 { int count=0; while(count<10) { memset(signal,0,sizeof(list)); signal++; count++; } } static void swap(list * x,list * y) { list tmp ; tmp = *x; *x = *y; *y = tmp; } void name_sort(list *signal) //联系人按照姓名排序 { int i=0,j=0,k=0; for(i=0;i<9;i++) //冒泡排序 { list *buf = signal; for(j=0;j<9-i;j++) { if(strcmp(buf->name,(buf+1)->name)>0) { swap(buf,buf+1); } buf++; } } for(k=0;k<tag;k++) { *(signal) = *(signal+10-tag);//排好序后,中间不要有空白,分别移动到对应的位置 signal++; } memset(signal,0,(10-tag)*sizeof(list));//移动后,将当前还能添加的10-tag个联系人内存空间置0 }
test.c
#include"tongxunlu.h" void menu() { printf("*************************欢迎进入,通讯录管理系统**********************\n"); printf("**********》1 进入通讯录系统************》2 退出通讯录系统*************\n"); printf("***********************************************************************\n"); } void son_menu() { printf("************************欢迎进入,通讯录管理系统*****************************\n"); printf("**********》1 添加联系人*********************》2 删除联系人信息**************\n"); printf("**********》3 查找联系人信息*****************》4 修改联系人信息**************\n"); printf("**********》5 显示所有联系人*****************》6 清空所有联系人**************\n"); printf("**********》7 联系人按名排序*************************************************\n"); } void gongneng() { int q=0; list *ret,person[10]; clear_all(person); do { son_menu(); int n =0,m=0; printf("Please Select Gongneng:"); scanf("%d",&n); switch(n) { case 1: do { my_add(person); printf("添加成功~~\n"); printf("是否继续添加?是(1),否(0)\n"); scanf("%d",&m); }while(m); break; case 2: do { ret = my_reserch(person); if(ret!= NULL) { my_delete(ret,person); printf("删除成功~~\n"); } else { printf("此通讯录无此人!!!\n"); } printf("是否继续删除?是(1),否(0)\n"); scanf("%d",&m); }while(m); break; case 3: ret = my_reserch(person); if(ret!= NULL) { printf("%s %c %d %s %s\n", ret->name,ret->sex,ret->age,ret->number,ret->address); } else { printf("此通讯录无此人!!!\n"); } break; case 4: do { ret = my_reserch(person); if(ret!= NULL) { my_remove(ret); printf("修改成功~~\n"); } else { printf("此通讯录无此人!!!\n"); } printf("是否继续修改?是(1),否(0)\n"); scanf("%d",&m); }while(m); break; case 5: all_show(person); break; case 6: clear_all(person); printf("清空联系人成功~~\n"); break; case 7: name_sort(person); printf("排序成功~~\n"); break; default: printf("Enter error,Please try again\n"); break; } printf("是否回到功能页?(1),否(0)\n"); scanf("%d",&q); }while(q); } int main() { while(1) { menu(); int num =0; printf("Please Enter:"); scanf("%d",&num); switch(num) { case 1: gongneng(); break; case 2: exit(1); break; default: printf("Enter error,Please try again\n"); break; } } return 0; }
相关文章推荐
- 【C语言】通讯录管理系统(容量可变)
- C语言通讯录管理系统
- c语言通讯录管理系统
- C语言通讯录管理系统
- 使用C语言打造通讯录管理系统和教学安排系统的代码示例
- C语言:通讯录管理系统
- 用C语言写的一个控制台界面的通讯录管理系统
- C语言实现通讯录系统——容量自增,文件版本
- C语言通讯录管理系统完整版
- C语言通讯录管理系统课程设计
- C语言通讯录管理系统
- C语言通讯录管理系统 利用fwrite和fread进行文件存取
- C语言实现通讯录管理系统
- 大一课设---C语言--通讯录管理系统
- C语言通讯录管理系统
- C语言通讯录管理系统【没看】
- 通讯录信息管理系统
- c语言实现的简单的员工工资管理系统
- 学生成绩管理系统(C语言)
- C语言鱼类管理系统