Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #define B 128
- #define D 1000
- typedef struct ress{
- char addr[51];
- char name[21];
- char tel[11];
- char yubin[8];
- char mail[50];
- char age[3];
- } address;
- int search(address *ap, int cnt);
- int add(address *ap, int cnt);
- int rev(address *ap, int cnt);
- int del(address *ap, int cnt);
- int printall(address *ap, int cnt);
- int (*func[])(address *, int) = {search,add,rev,del,printall};
- address ad[D];
- address tmp[D];
- int main()
- {
- char dummy[B];
- int i,cnt=0;
- while(1){
- printf("コマンドを入力してください\n");
- printf("1.検索\n2.追加\n3.修正\n4.削除\n5.全体表示\n6.終了\n");
- scanf("%d",&i);
- gets(dummy);
- if(1<=i && i<=5)
- cnt = func[i-1](ad,cnt);
- else if(i==6)
- break;
- }
- return 0;
- }
- int search(address *ap,int cnt)
- {
- char buf[B], dummy[B];
- char *target[] = {"住所""氏名""郵便番号""メールアドレス""年齢"};
- int i,j=0,count=0;
- address *t = ap;
- while (1){
- printf("何で検索しますか\n1.住所\n2.氏名\n3.電話番号\n4.郵便番号\n5.メールアドレス\n6.年齢");
- scanf("%d",&i);
- gets(dummy);
- if(1<=i && i<=6)
- break;
- }
- printf("入力して下さい:");
- gets(buf);
- while(j++<cnt){
- switch(i){
- case 0:
- if(!strcmp(t->addr,buf))
- goto print;
- break;
- case 1:
- if(!strcmp(t->name,buf))
- goto print;
- break;
- case 2:
- if(!strcmp(t->tel,buf))
- goto print;
- break;
- case 3:
- if(!strcmp(t->yubin,buf))
- goto print;
- break;
- case 4:
- if(!strcmp(t->mail,buf))
- goto print;
- break;
- case 5:
- if(!strcmp(t->age,buf))
- goto print;
- break;
- }
- t++;
- continue;
- print:;
- printf("%d: 住所:%s 氏名:%s 電話番号:%s 郵便番号:%s メールアドレス:%s 年齢:%s\n",
- j,t->addr,t->name,t->tel,t->yubin,t->mail,t->age);
- t++;
- count++;
- }
- printf("%d件見付かりました\n",count);
- return cnt;
- }
- int add(address *ap, int cnt)
- {
- address *t = ap + cnt;
- if(cnt==D){
- printf("これ以上追加できません\n");
- return cnt;
- }
- printf("住所:");
- gets(t->addr);
- printf("氏名:");
- gets(t->name);
- printf("電話番号:");
- gets(t->tel);
- printf("郵便番号:");
- gets(t->yubin);
- printf("メールアドレス:");
- gets(t->mail);
- printf("年齢:");
- gets(t->age);
- return cnt+1;
- }
- int rev(address *ap, int cnt)
- {
- address *t;
- char buf[B];
- int i;
- printf("何番を修正しますか\n");
- scanf("%d",&i);
- gets(buf);
- if(i>0 && i<=cnt){
- t=ap+i-1;
- printf("変更しない場合は[Enter]を押してください\n");
- printf("住所: %s -> ", t->addr);
- gets(buf);
- if(strlen(buf))
- strcpy(t->addr,buf);
- printf("氏名: %s -> ", t->name);
- gets(buf);
- if(strlen(buf))
- strcpy(t->name,buf);
- printf("電話番号: %s -> ", t->tel);
- gets(buf);
- if(strlen(buf))
- strcpy(t->tel,buf);
- printf("郵便番号: %s -> ", t->yubin);
- gets(buf);
- if(strlen(buf))
- strcpy(t->yubin,buf);
- printf("メールアドレス: %s -> ", t->mail);
- gets(buf);
- if(strlen(buf))
- strcpy(t->mail,buf);
- printf("年齢: %s -> ", t->age);
- gets(buf);
- if(strlen(buf))
- strcpy(t->age,buf);
- }
- else
- printf("番号が不適切です\n");
- return cnt;
- }
- int del(address *ap,int cnt)
- {
- char buf[B];
- int i,j;
- printf("何番を削除しますか\n");
- scanf("%d",&i);
- gets(buf);
- if(i>0 && i<=cnt){
- for(j=i-1;j<cnt-1;j++)
- ap[j]=ap[j+1];
- return cnt-1;
- }
- printf("番号が不適切です\n");
- return cnt;
- }
- int printall(address *ap,int cnt)
- {
- int i=0;
- while(i<cnt){
- printf("%d: 住所:%s 氏名:%s 電話番号:%s 郵便番号:%s メールアドレス:%s 年齢:%s\n",
- ++i,ap->addr,ap->name,ap->tel,ap->yubin,ap->mail,ap->age);
- ap++;
- }
- return cnt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement