#pragma once
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#define MAX_SIZE 1000
typedef struct Measage
{
char name[20];
int gender;
int age;
char tel[20];
char addr[20];
}*MList;
typedef struct List
{
MList Man[MAX_SIZE];
int Size;
}People;
void AddMan(People* s);
void InitMan(People* s);
void DeleteMan(People* s);
int FindMan(People* s);
void ReviseMan(People* s);
void Display(People* s);
void SortMan(People* s);
#include "標頭.h"
#pragma warning(disable:4996)
void InitMan(People* s)
{
s->capasize = MAX_SIZE;
s->Man = malloc(MAX_SIZE * sizeof(List));
s->Size = 0;
printf("清理成功\n");
}
void IncreaseMan(People* s)
{
assert(s);
s->capasize = s->capasize + INCREASEMENT;
s->Man = realloc(s->Man, s->capasize * sizeof(List));
}
void AddMan(People* s)
{
if (s->Size == MAX_SIZE - 1) {
IncreaseMan(s);
}
printf("\n");
printf("\n");
printf("現在進行添加聯繫人操作\n");
getchar();
printf("請輸入姓名\n");
gets(s->Man[s->Size].name);
printf("請輸入性別 1.男性 2.女性\n");
scanf_s("%d", &(s->Man[s->Size].gender));
getchar();
printf("請輸入地址\n");
gets(s->Man[s->Size].addr);
printf("請輸入年齡\n");
scanf_s("%d", &(s->Man[s->Size].age));
getchar();
printf("請輸入十一位電話號碼\n");
gets(s->Man[s->Size].tel);
++s->Size;
}
void DeleteMan(People* s)
{
int i = 0;
int flag = 1;
char str[20];
if (s == NULL) {
printf("空\n");
return;
}
printf("\n");
printf("\n");
printf("請輸入您要刪除的聯繫人的姓名\n");
getchar();
gets(str);
while (i < s->Size) {
if (strcmp(s->Man[i].name, str) == 0) {
flag = 0;
while (i < (s->Size) - 1) {
s->Man[i] = s->Man[i + 1];
++i;
}
--s->Size;
break;
}
++i;
}
if (flag) {
printf("無此聯繫人信息\n");
}
printf("聯繫人信息已刪除\n");
printf("\n");
printf("\n");
}
int FindMan(People* s)
{
assert(s);
int i = 0;
int flag = 1;
char str[20];
printf("請輸入您要查找的聯繫人的姓名\n");
getchar();
gets(str);
while (i < s->Size) {
if (strcmp(s->Man[i].name, str) == 0) {
flag = 0;
printf("\n");
printf("\n");
printf("電話:%s\n", s->Man[i].tel);
if ((s->Man[i]).gender == 1) {
printf("性別男\n");
}
else {
printf("性別女\n");
}
printf("年齡 %d\n", s->Man[i].age);
printf("地址:%s\n", s->Man[i].addr);
printf("\n");
printf("\n");
break;
}
++i;
}
if (flag) {
printf("未找到聯繫人信息\n");
return -1;
}
return i;
}
void ReviseMan(People* s)
{
int i = FindMan(s);
if (i == -1) {
return;
}
else {
printf("\n");
printf("\n");
printf("現在進行修改聯繫人操作\n");
getchar();
printf("請輸入姓名\n");
gets(s->Man[s->Size].name);
printf("請輸入性別 1.男性 2.女性\n");
scanf_s("%d", &(s->Man[s->Size].gender));
getchar();
printf("請輸入地址\n");
gets(s->Man[s->Size].addr);
printf("請輸入年齡\n");
scanf_s("%d", &(s->Man[s->Size].age));
getchar();
printf("請輸入十一位電話號碼\n");
gets(s->Man[s->Size].tel);
printf("\n");
printf("\n");
}
}
void Display(People* s)
{
assert(s);
int i = 0;
while (i < s->Size) {
printf("\n");
printf("\n");
printf("姓名:%s\n", s->Man[i].name);
printf("電話:%s\n", s->Man[i].tel);
if (s->Man[i].gender == 1) {
printf("性別男\n");
}
else {
printf("性別女\n");
}
printf("年齡 %d\n", s->Man[i].age);
printf("地址:%s\n", s->Man[i].addr);
++i;
printf("\n");
printf("\n");
}
}
void SortMan(People* s)
{
int i = 0;
int j = 0;
char tmp[20];
int flag = 1;
for (; i < s->Size - 1; ++i) {
for (; j < s->Size - 1 - i; ++j) {
if (strcmp(s->Man[i].name, s->Man[i + 1].name) == 1) {
flag = 0;
strcpy(tmp, s->Man[i].name);
strcpy(s->Man[i].name, s->Man[i + 1].name);
strcpy(s->Man[i + 1].name, tmp);
}
}
if (flag)
break;
}
}
#include "標頭.h"
void MENU()
{
printf("/////////////////// 通訊錄 ////////////////////\n");
printf("////////////// 按鍵選擇相應服務 ///////////////\n");
printf("//1. 添加聯繫人信息 2. 刪除指定聯繫人信息//\n");
printf("//3. 查找指定聯繫人信息 4. 修改指定聯繫人信息//\n");
printf("//5. 顯示所有聯繫人信息 6. 清空所有聯繫人//////\n");
printf("////////////7. 以名字排序所有聯繫人////////////\n");
}
int main() {
People p;
int i = 1, j;
while (i != 0) {
MENU();
scanf_s("%d", &i);
switch (i)
{
case 1:
AddMan(&p);
break;
case 2:
DeleteMan(&p);
break;
case 3:
j = FindMan(&p);
break;
case 4:
ReviseMan(&p);
break;
case 5:
Display(&p);
break;
case 6:
InitMan(&p);
break;
case 7:
SortMan(&p);
break;
default:
break;
}
}
printf("退出\n");
system("pause");
return 0;
}