Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <stdlib.h>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. struct num{
  11. bool show_flag;
  12. char name[20];
  13. char number[12];
  14. char surname[20];
  15. long int index;
  16. } cur_num;
  17.  
  18. void delNum (FILE *fp, num &cur_num){
  19. cur_num.show_flag = false;
  20. fpos_t cur_pos;
  21. fgetpos(fp, &cur_pos);
  22. fseek(fp,-sizeof(num), SEEK_CUR);
  23. fwrite(&cur_num, sizeof(num), 1, fp);
  24. cout << "Number " << cur_num.number << " of " << cur_num.name << " " << cur_num.surname <<" has been deleted successfully." << endl;
  25. fseek(fp, cur_pos, SEEK_SET);
  26. }
  27.  
  28.  
  29. int main(){
  30. char c;
  31. long int ind = 0;
  32. FILE* fp = fopen("D:\\Programming\\number.txt", "r+b");
  33. while (c!=27){
  34. cout << "1) Enter number." << endl;
  35. cout << "2) Show all numbers." << endl;
  36. cout << "3) Delete number by index." << endl;
  37. cout << "4) Delete number by name." << endl;
  38. cout << "5) Delete number by surname." << endl;
  39. cout << "6) Searching by name." << endl;
  40. cout << "7) Searching by surname." << endl;
  41. cout << "8) Searching by first letters. (beta)" << endl;
  42. cout << "Press ESC to quit" << endl;
  43. c = getch();
  44. system("cls");
  45. switch(c){
  46. case '1': {
  47. fseek(fp, -sizeof(long int), SEEK_END);
  48. if (fread(&ind,sizeof(long int), 1, fp))
  49. cur_num.index = ind + 1; else
  50. cur_num.index = 1;
  51. cur_num.show_flag = true;
  52. cout << "Enter name: ";
  53. //cin >> cur_num->name;
  54. scanf("%s",&cur_num.name);
  55. cout << "Enter surname: ";
  56. scanf("%s",&cur_num.surname);
  57. cout << "Enter number: ";
  58. //cin >> cur_num->number;
  59. scanf("%s",&cur_num.number);
  60. fseek(fp, 0, SEEK_END);
  61. fwrite(&cur_num, sizeof(num), 1, fp);
  62. } break;
  63. case '2': {
  64. fseek(fp, 0, SEEK_SET);
  65. while (!feof(fp))
  66. {
  67. if (fread(&cur_num,sizeof(num),1,fp))
  68. {
  69. cout << "__________________" << endl;
  70. cout << "Name: " << cur_num.name << endl;
  71. cout << "Surname: " << cur_num.surname << endl;
  72. cout << "Number: " << cur_num.number << endl;
  73. cout << "Index: " << cur_num.index << endl;
  74. cout << "Flag: " << cur_num.show_flag << endl;
  75. cout << "__________________" << endl;
  76. }
  77. }
  78. } break;
  79. case '3': {
  80. cout << "Enter index to delete: ";
  81. //cin >> &ind;
  82. scanf("%d",&ind);
  83. fseek(fp, 0, SEEK_SET);
  84. while (!feof(fp))
  85. if (fread(&cur_num,sizeof(num), 1, fp) && cur_num.show_flag && cur_num.index == ind)
  86. delNum(fp,cur_num);
  87. } break;
  88. case '4': {
  89. cout << "Enter name to delete: ";
  90. char num_name[20];
  91. //cin >> &num_name;
  92. scanf("%s",&num_name);
  93. fseek(fp, 0, SEEK_SET);
  94. while (!feof(fp))
  95. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.name, num_name) == 0)
  96. delNum(fp, cur_num);
  97. } break;
  98. case '5': {
  99. cout << "Enter surname to delete: ";
  100. char num_surname[30];
  101. scanf("%s", &num_surname);
  102. fseek(fp, 0, SEEK_SET);
  103. while(!feof(fp))
  104. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.surname, num_surname) == 0)
  105. delNum(fp, cur_num);
  106. } break;
  107. case '6': {
  108. cout << "Enter name of human you would like to find: ";
  109. char num_name[20];
  110. scanf("%s", num_name);
  111. fseek(fp, 0, SEEK_SET);
  112. while(!feof(fp))
  113. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.name, num_name) == 0){
  114. fread(&cur_num,sizeof(num),1,fp);
  115. cout << "__________________" << endl;
  116. cout << "Name: " << cur_num.name << endl;
  117. cout << "Surname: " << cur_num.surname << endl;
  118. cout << "Number: " << cur_num.number << endl;
  119. cout << "Index: " << cur_num.index << endl;
  120. cout << "Flag: " << cur_num.show_flag << endl;
  121. cout << "__________________" << endl;
  122. }
  123. } break;
  124. case '7': {
  125. cout << "Enter name of human you would like to find: ";
  126. char num_surname[20];
  127. scanf("%s", num_surname);
  128. fseek(fp, 0, SEEK_SET);
  129. while(!feof(fp))
  130. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.surname, num_surname) == 0){
  131. fread(&cur_num,sizeof(num),1,fp);
  132. cout << "__________________" << endl;
  133. cout << "Name: " << cur_num.name << endl;
  134. cout << "Surname: " << cur_num.surname << endl;
  135. cout << "Number: " << cur_num.number << endl;
  136. cout << "Index: " << cur_num.index << endl;
  137. cout << "Flag: " << cur_num.show_flag << endl;
  138. cout << "__________________" << endl;
  139. }
  140. } break;
  141. case '8': {
  142. cout << "Enter first 3 letters humans surname you would like to find: ";
  143. char num_surname[3];
  144. char beta_surname[3];
  145. scanf("%s", num_surname);
  146. fseek(fp, 0, SEEK_SET);
  147. for (int i = 0; i < 3; i++){
  148. beta_surname[i] = cur_num.surname[i];
  149. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(beta_surname, num_surname) == 0){
  150. fread(&cur_num,sizeof(num),1,fp);
  151. cout << "__________________" << endl;
  152. cout << "Name: " << cur_num.name << endl;
  153. cout << "Surname: " << cur_num.surname << endl;
  154. cout << "Number: " << cur_num.number << endl;
  155. cout << "Index: " << cur_num.index << endl;
  156. cout << "Flag: " << cur_num.show_flag << endl;
  157. cout << "__________________" << endl;
  158. }
  159. }
  160. } break;
  161. }
  162. FILE* temp = fopen("D:\\Programming\\temporary.txt", "wb");
  163. fseek(fp, 0, SEEK_SET);
  164. while (!feof(fp))
  165. if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag == true)
  166. fwrite(&cur_num, sizeof(num), 1, temp);
  167. fclose(fp);
  168. fclose(temp);
  169. remove("D:\\Programming\\number.txt");
  170. rename("D:\\Programming\\temporary.txt", "D:\\Programming\\number.txt");
  171. return 0;
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement