#define _CRT_SECURE_NO_WARNINGS
#define MAX 100
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
enum MyEnum
{ OUT、 増分、 削除、 検索、 変更、 印刷、 並べ替え、};
void meun()
{ printf("\n"); printf("******************************\n ") ; printf("*****1.Incre 2.Delete*****\n"); printf("*****3.Lookup 4.Modify*****\n") ; printf ("*****5.Print 0.OUT *****\n"); printf("********************** ** ******\n"); } struct ProInon { char name[20];//名前 int age; //年齢 char sex[10]; //性別 char Phone[12];//電話数値} ;
struct comact //アドレス帳の最大容量と現在登録されているアドレス帳の数を含む
{ struct ProInon data[MAX]; int sizo; };
void Initialization(struct comact* ps)
{ memset(ps->data, 0, sizeof(ps->data)); ps->sizo = 0; }
void Increrec(struct comact* ps)
{ if (ps->sizo > MAX) { printf("アドレス帳がいっぱいです\n"); } else { printf("名前を入力してください\n"); scanf(" %s", ps->data[ps->sizo].name); printf("年齢を入力してください\n"); scanf("%d", &(ps->data[ps->sizo]. age )); printf("性別を入力してください\n"); scanf("%s", ps->data[ps->sizo].sex); printf("電話番号を入力してください\n"); scanf(" %s", ps->data[ps->sizo].Phone); rewind(stdin);
ps->sizo++;
printf("正常に追加されました\n");
}
}
void Printrec(const struct comact* ps)
{ if (ps->sizo==0) { printf("申し訳ありませんが、アドレス帳は空です\n");
}
else
{ printf("%-10s\t%-10s\t%-5s\t%-12s\t\n","名前","年齢","性別","電話番号"); for ( int i = 0; i < ps->sizo; i++) { printf("%-10s\t%-10d\t%-5s\t%-12s\t\n", ps->data[i].名前、 ps->data[i].age、 ps->data[i].sex、 ps->data[i].Phone); } }
}
int Find_name(struct comact* ps,char name[20])
{ int i = 0;
for (i = 0; i < ps->sizo; i++)
{ if (0 == strcmp(ps->data[i].name, name)) { return i; -1 を 返します。}
void Deleterec(struct comact* ps)
{ char name[20]; printf("削除したい連絡先の名前を入力してください: ""); scanf("%s",name); //名前情報を検索 int ret = Find_name(ps, name); if (ret == -1) { printf("削除したい情報が存在しません\n"); } else { //情報を削除 int j = 0; for ( j = ret; j < ps->sizo; j++) { ps->data[j] = ps->data[j + 1]; } ps->sizo--; printf("削除成功\n"); }
}
void Lookuprec(struct comact* ps)
{ char name[20]; printf("探している名前を入力してください:》"); scanf("%s", name); //名前情報を検索 int ret = Find_name ( ps, name); if (ret == -1) { printf("探している連絡先は存在しません\n"); } else { //情報を印刷します printf("%-10s\t%-10s \t %-5s\t%-12s\t\n", "名前", "年齢", "性別", "電話番号"); printf("%-10s\t% -10d\t% -5s \t %-12s\t\n", ps->data[ret].name, ps->data[ret].age, ps->data[ret].sex, ps->data[ret].Phone ); }
}
void Modifyrec(struct comact* ps)
{ char name[20]; printf("変更したい連絡先の名前を入力してください:》"); scanf("%s", name);
//連絡先を検索
int ret = Find_name(ps, name);
if (ret == -1)
{ printf("変更したい連絡先が存在しません\n"); } else { //連絡先を変更 printf ( "名前を入力してください\n"); scanf("%s", ps->data[ret].name); printf("年齢を入力してください\n"); scanf("%d", &( ps-> data[ret].age)); printf("性別を入力してください\n"); scanf("%s", ps->data[ret].sex); printf("電話番号を入力してください\n"); scanf("%s", ps->data[ret].Phone);
printf("変更が成功しました\n");
}
}
int main()
{ int input = 0; int sizo = 0;//アドレス帳の番号情報を記録 //アドレス帳を作成 struct comact con; //アドレス帳を初期化する Initialization(&con); do {//印刷メニュー meun (); printf("選択肢を入力してください:》"); scanf("%d", &input); //判定 スイッチを作る(入力) { case Incre: //連絡先を追加
インクリレック(&con);
壊す;
case Delete: //連絡先を削除
削除rec(&con);
壊す;
case Lookup: //連絡先を検索
Lookuprec(&con);
壊す;
case Modify: //連絡先を変更する
Modifyrec(&con);
壊す;
case Print: //連絡先を印刷
Printrec(&con);
case OUT: //終了
printf("アドレス帳を終了");
ブレーク;
デフォルト:
printf("入力が間違っています。再入力してください\n");
ブレーク;
}
while (入力);
0を返します。
}