【C语言】通讯录管理系统(容量固定)
来源:互联网 发布:校园网络拓扑设计 编辑:程序博客网 时间:2024/06/02 02:53
话不多说,直接上代码。
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;}
0 0
- 【C语言】通讯录管理系统(容量固定)
- 【C语言】通讯录管理系统(容量可变)
- C语言通讯录管理系统
- C语言通讯录管理系统
- c语言通讯录管理系统
- C语言通讯录管理系统
- C语言:通讯录管理系统
- C语言 学生电子通讯录管理系统(修正版)
- C语言通讯录管理系统【没看】
- 通讯录管理系统C语言课程设计
- C语言 电子通讯录管理系统
- C语言实现通讯录管理系统
- C语言通讯录系统
- C语言实现通讯录系统——容量自增,文件版本
- 大一课设---C语言--通讯录管理系统
- C 语言课程设计 最终答辩版 学生通讯录管理系统
- 通讯录系统 (C语言 控制台应用程序)
- 通讯录管理系统(C语言版)
- ts流格式详解
- Android消息队列总结
- sublime使用
- cocos2dx 移植winphone相关整理一
- Spring事务管理(详解+实例)
- 【C语言】通讯录管理系统(容量固定)
- 状压DP-NOIPTG2005过河
- Ubuntu16.04.1系统调试笔记
- 输入框不可点击
- 59. Spiral Matrix II
- 10分钟让你明白快捷支付各种鉴权方式及风险
- PHP基础知识点
- 设计模式之九 --- 外观(Facade)模式
- Android与Html5之间的数据交互的两种方式