Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. #define B 128
  6. #define D 1000
  7.  
  8. typedef struct ress{
  9. char addr[51];
  10. char name[21];
  11. char tel[11];
  12. char yubin[8];
  13. char mail[50];
  14. char age[3];
  15. } address;
  16.  
  17. int search(address *ap, int cnt);
  18. int add(address *ap, int cnt);
  19. int rev(address *ap, int cnt);
  20. int del(address *ap, int cnt);
  21. int printall(address *ap, int cnt);
  22.  
  23. int (*func[])(address *, int) = {search,add,rev,del,printall};
  24.  
  25. address ad[D];
  26. address tmp[D];
  27.  
  28. int main()
  29. {
  30. char dummy[B];
  31. int i,cnt=0;
  32.  
  33. while(1){
  34. printf("コマンドを入力してください\n");
  35. printf("1.検索\n2.追加\n3.修正\n4.削除\n5.全体表示\n6.終了\n");
  36. scanf("%d",&i);
  37. gets(dummy);
  38. if(1<=i && i<=5)
  39. cnt = func[i-1](ad,cnt);
  40. else if(i==6)
  41. break;
  42. }
  43. return 0;
  44. }
  45.  
  46. int search(address *ap,int cnt)
  47. {
  48. char buf[B], dummy[B];
  49. char *target[] = {"住所""氏名""郵便番号""メールアドレス""年齢"};
  50. int i,j=0,count=0;
  51. address *t = ap;
  52.  
  53. while (1){
  54. printf("何で検索しますか\n1.住所\n2.氏名\n3.電話番号\n4.郵便番号\n5.メールアドレス\n6.年齢");
  55. scanf("%d",&i);
  56. gets(dummy);
  57. if(1<=i && i<=6)
  58. break;
  59. }
  60. printf("入力して下さい:");
  61. gets(buf);
  62.  
  63. while(j++<cnt){
  64. switch(i){
  65. case 0:
  66. if(!strcmp(t->addr,buf))
  67. goto print;
  68. break;
  69. case 1:
  70. if(!strcmp(t->name,buf))
  71. goto print;
  72. break;
  73. case 2:
  74. if(!strcmp(t->tel,buf))
  75. goto print;
  76. break;
  77. case 3:
  78. if(!strcmp(t->yubin,buf))
  79. goto print;
  80. break;
  81. case 4:
  82. if(!strcmp(t->mail,buf))
  83. goto print;
  84. break;
  85. case 5:
  86. if(!strcmp(t->age,buf))
  87. goto print;
  88. break;
  89. }
  90. t++;
  91. continue;
  92. print:;
  93. printf("%d: 住所:%s 氏名:%s 電話番号:%s 郵便番号:%s メールアドレス:%s 年齢:%s\n",
  94. j,t->addr,t->name,t->tel,t->yubin,t->mail,t->age);
  95. t++;
  96. count++;
  97. }
  98. printf("%d件見付かりました\n",count);
  99. return cnt;
  100. }
  101.  
  102. int add(address *ap, int cnt)
  103. {
  104. address *t = ap + cnt;
  105.  
  106. if(cnt==D){
  107. printf("これ以上追加できません\n");
  108. return cnt;
  109. }
  110. printf("住所:");
  111. gets(t->addr);
  112. printf("氏名:");
  113. gets(t->name);
  114. printf("電話番号:");
  115. gets(t->tel);
  116. printf("郵便番号:");
  117. gets(t->yubin);
  118. printf("メールアドレス:");
  119. gets(t->mail);
  120. printf("年齢:");
  121. gets(t->age);
  122.  
  123. return cnt+1;
  124. }
  125.  
  126. int rev(address *ap, int cnt)
  127. {
  128. address *t;
  129. char buf[B];
  130. int i;
  131.  
  132. printf("何番を修正しますか\n");
  133. scanf("%d",&i);
  134. gets(buf);
  135.  
  136. if(i>0 && i<=cnt){
  137. t=ap+i-1;
  138. printf("変更しない場合は[Enter]を押してください\n");
  139. printf("住所: %s -> ", t->addr);
  140. gets(buf);
  141. if(strlen(buf))
  142. strcpy(t->addr,buf);
  143. printf("氏名: %s -> ", t->name);
  144. gets(buf);
  145. if(strlen(buf))
  146. strcpy(t->name,buf);
  147. printf("電話番号: %s -> ", t->tel);
  148. gets(buf);
  149. if(strlen(buf))
  150. strcpy(t->tel,buf);
  151. printf("郵便番号: %s -> ", t->yubin);
  152. gets(buf);
  153. if(strlen(buf))
  154. strcpy(t->yubin,buf);
  155. printf("メールアドレス: %s -> ", t->mail);
  156. gets(buf);
  157. if(strlen(buf))
  158. strcpy(t->mail,buf);
  159. printf("年齢: %s -> ", t->age);
  160. gets(buf);
  161. if(strlen(buf))
  162. strcpy(t->age,buf);
  163. }
  164. else
  165. printf("番号が不適切です\n");
  166. return cnt;
  167. }
  168.  
  169. int del(address *ap,int cnt)
  170. {
  171. char buf[B];
  172. int i,j;
  173.  
  174. printf("何番を削除しますか\n");
  175. scanf("%d",&i);
  176. gets(buf);
  177.  
  178. if(i>0 && i<=cnt){
  179. for(j=i-1;j<cnt-1;j++)
  180. ap[j]=ap[j+1];
  181. return cnt-1;
  182. }
  183. printf("番号が不適切です\n");
  184. return cnt;
  185. }
  186.  
  187. int printall(address *ap,int cnt)
  188. {
  189. int i=0;
  190. while(i<cnt){
  191. printf("%d: 住所:%s 氏名:%s 電話番号:%s 郵便番号:%s メールアドレス:%s 年齢:%s\n",
  192. ++i,ap->addr,ap->name,ap->tel,ap->yubin,ap->mail,ap->age);
  193. ap++;
  194. }
  195. return cnt;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement