C语言利用结构体实现一个通讯录
来源:互联网 发布:windows更新消失 编辑:程序博客网 时间:2024/06/05 01:10
实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供以下方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.以名字排序所有联系人
7.清空所有联系人
student.h:
#ifndef __CRT#define _CRT_SECURE_NO_WARNINGS 1#endif#ifndef __STUDENT#ifndef __STDIO_H#include <stdio.h>#endif#ifndef __STDLIB_H#include <stdlib.h>#endif#ifndef __SRTRIG_H#include <string.h>#endif#ifndef __MAXSIZE#define MAXSIZE 1000#endiftypedef struct Stu{char name[20];char sex[3];int age;char tel[12];char addr[20];}Stu;void menu()/*菜单*/{printf("\n");printf("***************************************************************************\n");printf("** ☆☆☆☆★★★★★ 欢迎学生信息管理系统 ★★★★★☆☆☆☆**\n");printf("** ☆☆☆★★★★★ 1、添加联系人信息 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 2、删除指定联系人信息 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 3、查找指定联系人信息 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 4、修改指定联系人信息 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 5、显示所有联系人信息 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 6、以名字排序所有联系人 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 7、清空所有联系人 ★★★★★☆☆☆ **\n");printf("** ☆☆☆★★★★★ 0、退出系统 ★★★★★☆☆☆ **\n");printf("***************************************************************************\n");printf("\n");}void Add(Stu *stu, int *count)/*添加联系人信息*/{if ((*count) >= MAXSIZE - 1){printf("本系统已达到最大容纳人数,不能再添加学生了!\n");return;}printf("请输入要添加的学生的姓名:> ");scanf("%s", (stu + (*count))->name);flag:printf("请输入要添加的学生的姓别(男/女):> ");scanf("%s", (stu + (*count))->sex);if ((strcmp((stu + (*count))->sex, "男") != 0) &&(strcmp((stu + (*count))->sex, "女") != 0)){printf("请输入正确的性别!\n");goto flag;}printf("请输入要添加的学生的年龄:> ");scanf("%d", &(stu + (*count))->age);printf("请输入要添加的学生的电话:> ");scanf("%s", (stu + (*count))->tel);printf("请输入要添加的学生的住址:> ");scanf("%s", (stu + (*count))->addr);printf("添加成功!\n");(*count)++;/*已有人数加1*/}void Delete(Stu *stu, int *count)/*删除指定联系人信息*/{char _name[20];if ((*count) <= 0){printf("此学生系统中还没有学生!\n");return;}printf("请输入您要删除的学生的姓名:> ");scanf("%s", _name);for (int i = 0; i < (*count); i++){if (strcmp((stu + i)->name, _name) == 0){for (int j = i; j < (*count) - 1; j++){strcpy((stu + j)->name, (stu + j + 1)->name);strcpy((stu + j)->sex, (stu + j + 1)->sex);(stu + j)->age = (stu + j + 1)->age;strcpy((stu + j)->tel, (stu + j + 1)->tel);strcpy((stu + j)->addr, (stu + j + 1)->addr);}(*count)--;printf("删除成功!\n");return;}/*if*/}/*for*/printf("此学生系统中没有此学生!\n");}void Search(const Stu *stu, const int count)/*查找指定联系人信息*/{char _name[20];printf("请输入您要查找的学生的姓名:> ");scanf("%s", _name);for (int i = 0; i < count; i++){if (strcmp((stu + i)->name, _name) == 0){printf("*********=======您查抄的学生的信息为=======*********\n");printf(" ********* 姓名:> %s\n", (stu + i)->name);printf(" ********* 性别:> %s\n", (stu + i)->sex);printf(" ********* 年龄:> %d\n", (stu + i)->age);printf(" ********* 电话:> %s\n", (stu + i)->tel);printf(" ********* 住址:> %s\n", (stu + i)->addr);return;}}/*for*/printf("没有找到您要查找的学生!\n");}void Alter(Stu *stu, const int count)/*修改指定联系人信息*/{char _name[20];printf("请输入您要修改的学生的姓名:> ");scanf("%s", _name);for (int i = 0; i < count; i++){if (strcmp((stu + i)->name, _name) == 0){printf("请输入修改后的姓名:> ");scanf("%s", (stu + i)->name);printf("请输入修改后的性别:> ");scanf("%s", (stu + i)->sex);printf("请输入修改后的年龄:> ");scanf("%d", &(stu + i)->age);printf("请输入修改后的电话:> ");scanf("%s", (stu + i)->tel);printf("请输入修改后的住址:> ");scanf("%s", (stu + i)->addr);printf("修改成功!\n");return;}}/*for*/printf("此学生系统中没有您要修改的学生!\n");}void Show(const Stu *stu, const int count)/*显示所有联系人信息*/{if (count == 0){printf("此学生系统中没有学生!\n");}else{printf(" 姓名 | 性别 | 年龄 | 电话 | 住址 \n");for (int i = 0; i < count; i++){printf("%2s |%5s |%6d |%13s |%s\n", (stu + i)->name, (stu + i)->sex, (stu + i)->age, (stu + i)->tel, (stu + i)->addr);}}}int StcCmp(const void*num1, const void *num2)/*快排的比较函数*/{return (strcmp(((Stu *)num1)->name, ((Stu *)num2)->name) > 0) ? 1 : -1;}void Sort(Stu *stu, const int count)/*以名字排序所有联系人*/{if (count == 0){printf("此学生系统中没有学生!\n");return;}qsort(stu, count, sizeof(stu[0]), StcCmp);}void Empty(Stu *stu, int *count)/*清空所有联系人*/{if (count == 0){printf("此学生系统中没有学生!\n");return;}for (int i = 0; i < *count; i++){*(stu + i)->name = NULL;*(stu + i)->sex = NULL;(stu + i)->age = 0;*(stu + i)->tel = NULL;*(stu + i)->addr = NULL;}*count = 0;printf("清空成功!");}#endif
主程序:test.c
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include "student.h"#define MAXSIZE 1000typedef enum EN{EXIT, //退出ADD, //添加DELETE, //删除SEARCH, //查找ALTER, //修改SHOW, //显示SORT, //排序EMPTY, //清空}EN;int main(){Stu stu[MAXSIZE];int count = 0; //系统中的现有人数int input = 1;while (input){menu();printf("请选择您要进行的服务项目:> ");scanf_s("%d", &input);switch (input){case EXIT:printf("感谢您试用本服务系统,欢迎您的下次使用!\n");system("pause");return 0;case ADD: //添加Add(stu, &count);break;case DELETE: //删除Delete(stu, &count);break;case SEARCH: //查找Search(stu, count);break;case ALTER: //修改Alter(stu, count);break;case SHOW: //显示Show(stu, count);break;case SORT: //排序Sort(stu, count);Show(stu, count);break;case EMPTY: //清空Empty(stu, &count);break;default:printf("请选择正确的服务项目!\n");break;}/*switch*/}/*while*/printf("\n");system("pause");return 0;}
运行界面:
进入运行界面后,可根据自己的需求选择合适的服务项目。
0 0
- C语言利用结构体实现一个通讯录
- 利用c语言结构体实现通讯录
- [c语言]结构体实现通讯录
- C结构体实现一个通讯录
- 【c语言】实现一个通讯录
- C语言用结构体写一个通讯录
- C语言通讯录(利用数组实现)
- C语言 使用结构体实现简单的通讯录
- C语言---静态内存结构体实现通讯录
- 【C语言】实现一个简单的通讯录
- 用C语言实现一个通讯录
- 利用结构体实现建议通讯录
- 利用C语言编写一个通讯录,包括用户界面
- c语言实现----通讯录
- C语言实现通讯录
- C语言实现通讯录
- c语言实现通讯录
- C语言实现通讯录
- 一组数中,只有两个数只出现了奇数次,其他所有数都是成对出现的,请找出那两个数
- 冒泡排序函数,可以给任意类型的数据排序,比如整形数组,字符数组,字符串数组等
- 快速排序函数的比较函数
- 网卡驱动程序设计---网络子系统深入分析以及DM9000网卡驱动实现
- 二叉树 的先序 中序、后序遍历、层次遍历以及树状打印等操作
- C语言利用结构体实现一个通讯录
- C语言的注释与C++注释的转换
- 两个链表的合并
- 单链表的操作
- 单继承与多继承中的虚函数表和虚函数指针
- Hyper-V Server故障转移群集安装
- C++虚继承中的对象内存布局
- 智能指针的模拟实现 auto_ptr scoped_ptr shared_ptr
- [并查集 树] BZOJ 4551 [Tjoi2016&Heoi2016]树