Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <windows.h>
  5. #include <conio.h>
  6. #include <cstdlib>
  7.  
  8. using namespace std;
  9.  
  10. typedef struct market{
  11. string nazvanie="";//Название магазина
  12. string telephon="";//номер телефона
  13. string adres="";//адрес
  14. string vremya_raboty="";//время работы магазина
  15. }market;
  16.  
  17. market add_market(){// добавления магазина в базу даных
  18. market m;
  19. cout<<"Vvedite nazvanie magazyna : ";
  20. cin>>m.nazvanie;
  21. cout<<"Vvedite nomer telefona : ";
  22. cin>>m.telephon;
  23. cout<<"Vvedite adres : ";
  24. cin>>m.adres;
  25. cout<<"Vvedite vremya raboty: ";
  26. cin>>m.vremya_raboty;
  27. return m;
  28. }
  29.  
  30. void find_by_tel_number(string num){//поиск по номеру телефона
  31. market m;
  32. fstream f;
  33. f.open("Data.txt");
  34. while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){// в переменную m записываем каждую строку из файла
  35. if(num==m.telephon){// если номера телефонов совпадают
  36. cout<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//то выводим даные
  37. f.close();//закрываем файл
  38. break;
  39. }
  40. }
  41. }
  42. void find_by_title(string title){//поиск по названию
  43. market m;
  44. fstream f;
  45. f.open("Data.txt");
  46. while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){// в переменную m записываем каждую строку из файла
  47. if(title==m.nazvanie)//если названия совпадают
  48. cout<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//выводим даные
  49. }
  50. f.close();
  51. }
  52.  
  53. int print_menu(){
  54. int k=1;
  55. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  56. system("cls");
  57. SetConsoleTextAttribute(hConsole, 15);
  58. cout<<"1 - Vyvod bazy danyh"<<endl;
  59. SetConsoleTextAttribute(hConsole, 10);
  60. cout<<"2 - Dobavit v bazu danyh"<<endl;
  61. cout<<"3 - Udalit iz bazy danyh"<<endl;
  62. cout<<"4 - Poisk po bazie danyh"<<endl;
  63. cout<<"5 - Exit"<<endl;
  64. while(true){
  65. char symbol = _getch();
  66. switch( symbol ) {
  67. case 80:
  68. if(k<=5)
  69. k++;
  70. if(k==1){
  71. system("cls");
  72. SetConsoleTextAttribute(hConsole, 15);
  73. cout<<"1 - Vyvod bazy danyh"<<endl;
  74. SetConsoleTextAttribute(hConsole, 10);
  75. cout<<"2 - Dobavit v bazu danyh"<<endl;
  76. cout<<"3 - Udalit iz bazy danyh"<<endl;
  77. cout<<"4 - Poisk po bazie danyh"<<endl;
  78. cout<<"5 - Exit"<<endl;
  79. }
  80. if(k==2){
  81. system("cls");
  82. SetConsoleTextAttribute(hConsole, 10);
  83. cout<<"1 - Vyvod bazy danyh"<<endl;
  84. SetConsoleTextAttribute(hConsole, 15);
  85. cout<<"2 - Dobavit v bazu danyh"<<endl;
  86. SetConsoleTextAttribute(hConsole, 10);
  87. cout<<"3 - Udalit iz bazy danyh"<<endl;
  88. cout<<"4 - Poisk po bazie danyh"<<endl;
  89. cout<<"5 - Exit"<<endl;
  90. }
  91. if(k==3){
  92. system("cls");
  93. SetConsoleTextAttribute(hConsole, 10);
  94. cout<<"1 - Vyvod bazy danyh"<<endl;
  95. cout<<"2 - Dobavit v bazu danyh"<<endl;
  96. SetConsoleTextAttribute(hConsole, 15);
  97. cout<<"3 - Udalit iz bazy danyh"<<endl;
  98. SetConsoleTextAttribute(hConsole, 10);
  99. cout<<"4 - Poisk po bazie danyh"<<endl;
  100. cout<<"5 - Exit"<<endl;
  101. }
  102. if(k==4){
  103. system("cls");
  104. SetConsoleTextAttribute(hConsole, 10);
  105. cout<<"1 - Vyvod bazy danyh"<<endl;
  106. cout<<"2 - Dobavit v bazu danyh"<<endl;
  107. cout<<"3 - Udalit iz bazy danyh"<<endl;
  108. SetConsoleTextAttribute(hConsole, 15);
  109. cout<<"4 - Poisk po bazie danyh"<<endl;
  110. SetConsoleTextAttribute(hConsole, 10);
  111. cout<<"5 - Exit"<<endl;
  112. }
  113. if(k==5){
  114. system("cls");
  115. SetConsoleTextAttribute(hConsole, 10);
  116. cout<<"1 - Vyvod bazy danyh"<<endl;
  117. cout<<"2 - Dobavit v bazu danyh"<<endl;
  118. cout<<"3 - Udalit iz bazy danyh"<<endl;
  119. cout<<"4 - Poisk po bazie danyh"<<endl;
  120. SetConsoleTextAttribute(hConsole, 15);
  121. cout<<"5 - Exit"<<endl;
  122. }
  123. break;
  124. case 72:
  125.  
  126. if(k>=2)
  127. k--;
  128. if(k==1){
  129. system("cls");
  130. SetConsoleTextAttribute(hConsole, 15);
  131. cout<<"1 - Vyvod bazy danyh"<<endl;
  132. SetConsoleTextAttribute(hConsole, 10);
  133. cout<<"2 - Dobavit v bazu danyh"<<endl;
  134. cout<<"3 - Udalit iz bazy danyh"<<endl;
  135. cout<<"4 - Poisk po bazie danyh"<<endl;
  136. cout<<"5 - Exit"<<endl;
  137. }
  138. if(k==2){
  139. system("cls");
  140. SetConsoleTextAttribute(hConsole, 10);
  141. cout<<"1 - Vyvod bazy danyh"<<endl;
  142. SetConsoleTextAttribute(hConsole, 15);
  143. cout<<"2 - Dobavit v bazu danyh"<<endl;
  144. SetConsoleTextAttribute(hConsole, 10);
  145. cout<<"3 - Udalit iz bazy danyh"<<endl;
  146. cout<<"4 - Poisk po bazie danyh"<<endl;
  147. cout<<"5 - Exit"<<endl;
  148. }
  149. if(k==3){
  150. system("cls");
  151. SetConsoleTextAttribute(hConsole, 10);
  152. cout<<"1 - Vyvod bazy danyh"<<endl;
  153. cout<<"2 - Dobavit v bazu danyh"<<endl;
  154. SetConsoleTextAttribute(hConsole, 15);
  155. cout<<"3 - Udalit iz bazy danyh"<<endl;
  156. SetConsoleTextAttribute(hConsole, 10);
  157. cout<<"4 - Poisk po bazie danyh"<<endl;
  158. cout<<"5 - Exit"<<endl;
  159. }
  160. if(k==4){
  161. system("cls");
  162. SetConsoleTextAttribute(hConsole, 10);
  163. cout<<"1 - Vyvod bazy danyh"<<endl;
  164. cout<<"2 - Dobavit v bazu danyh"<<endl;
  165. cout<<"3 - Udalit iz bazy danyh"<<endl;
  166. SetConsoleTextAttribute(hConsole, 15);
  167. cout<<"4 - Poisk po bazie danyh"<<endl;
  168. SetConsoleTextAttribute(hConsole, 10);
  169. cout<<"5 - Exit"<<endl;
  170. }
  171. if(k==5){
  172. system("cls");
  173. SetConsoleTextAttribute(hConsole, 10);
  174. cout<<"1 - Vyvod bazy danyh"<<endl;
  175. cout<<"2 - Dobavit v bazu danyh"<<endl;
  176. cout<<"3 - Udalit iz bazy danyh"<<endl;
  177. cout<<"4 - Poisk po bazie danyh"<<endl;
  178. SetConsoleTextAttribute(hConsole, 15);
  179. cout<<"5 - Exit"<<endl;
  180. }
  181. break;
  182. }
  183. if(GetAsyncKeyState(VK_RETURN)) {
  184. keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
  185. if(k>5)
  186. return 5;
  187. if (k<1)
  188. return 1;
  189. return k;
  190. }
  191. }
  192.  
  193. }
  194. void printDB(){//печатаем базу даных
  195. fstream f;
  196. f.open("Data.txt");
  197. market m;
  198. cout<<"| Nazvanie | Nomer telefona | Adresa | Vremya roboty |"<<endl;
  199. cout<<"|____________________|____________________|____________________|____________________|"<<endl;
  200. while (f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty) {
  201. if(m.nazvanie.length()<20) //поганяем под размер столбца
  202. while (m.nazvanie.length()<19) //19 потому что ширина столбца 20 и отнимаем отсувп в 1 пробел
  203. m.nazvanie+=" "; //добавляем белый знак в стринг
  204. if(m.telephon.length()<20) //поганяем под размер столбца
  205. while (m.telephon.length()<19)
  206. m.telephon+=" ";
  207. if(m.adres.length()<20) //поганяем под размер столбца
  208. while (m.adres.length()<19)
  209. m.adres+=" ";
  210. if(m.vremya_raboty.length()<20) //поганяем под размер столбца
  211. while (m.vremya_raboty.length()<19)
  212. m.vremya_raboty+=" ";
  213. cout<<"| "<<m.nazvanie<<"| "<<m.telephon<<"| "<<m.adres<<"| "<<m.vremya_raboty<<"|\n";// вывод готовых даных
  214. }
  215. cout<<"|____________________|____________________|____________________|____________________|"<<endl;
  216. _getch();
  217. f.close();
  218. }
  219. void delete_line(int line){//удаление строки
  220. fstream o;//старый файл
  221. ofstream o1;//новый файл
  222. o.open("Data.txt");
  223. o1.open("tmp.txt");//временное название нового файла
  224. int k=0;//счетчик линии
  225. market m;
  226. while(o>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){//записываем из файла каждую строку в переменную м
  227. //пока файл не кончится
  228. if(k!=line){//если k не ровняется переданой в аргументе номеру линии
  229. o1<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//то записываем в новый файл
  230. }
  231. k++;//увеличение переменной на 1 с каждым проходом по цыклу
  232. }
  233. o.close();//закрываем файл
  234. o1.close();
  235. remove("Data.txt");//удаляем старый файл
  236. rename("tmp.txt","Data.txt");//переименироваем файл
  237. }
  238. int delete_by_name(string name){
  239. fstream f;
  240. f.open("Data.txt");
  241. int line=0;
  242. market m;
  243. while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){
  244. if (name==m.nazvanie)
  245. return line;
  246. line++;
  247. }
  248. f.close();
  249. return line+1;
  250. }
  251. int delete_by_tel(string name){
  252. fstream f;
  253. f.open("Data.txt");
  254. int line=0;
  255. market m;
  256. while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){
  257. if (name==m.telephon)
  258. return line;
  259. line++;
  260. }
  261. f.close();
  262. return line+1;
  263. }
  264. int main()
  265. {
  266. st:int a=print_menu();//записываем то что выберет пользователь
  267. ofstream out;//поток на запись
  268. fstream fin; //поток на читание даных
  269. switch (a) {
  270. case 1:
  271. printDB();//печать базы даных
  272. goto st; //по закончению идем на старт
  273.  
  274. case 2:{
  275. market m;
  276. m=add_market();
  277. out.open("Data.txt", std::ios::app);
  278. out<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//добавление в файл нового магазина
  279. out.close();//закрываем файл
  280. }
  281. goto st;//по закончению идем на старт
  282. case 3:{
  283. int k;
  284. s1:cout<<"1 - Udalenie po nazvaniu"<<endl;
  285. cout<<"2 - Udalenie po nomeru"<<endl;
  286. cin>>k;
  287. if(k==1){
  288. string n;
  289. cout<<"Vvedite nazwanie : ";
  290. cin>>n;
  291. delete_line(delete_by_name(n));
  292. _getch();
  293. goto st;
  294. }else if(k==2){
  295. string tel;
  296. cout<<"Vvedite nomer : ";
  297. cin>>tel;
  298. delete_line(delete_by_tel(tel));
  299. _getch();
  300. goto st;
  301. }else goto s1;
  302. }
  303. goto st;//по закончению идем на старт
  304.  
  305. case 4:{
  306. int k;
  307. s:cout<<"1 - Poisk po telefonu"<<endl;
  308. cout<<"2 - Poisk po navaniu"<<endl;
  309. cin>>k;
  310. if(k==1){
  311. string num1;
  312. cout<<"Vvedite nomer telefona : ";
  313. cin>>num1;
  314. find_by_tel_number(num1);
  315. _getch();
  316. goto st;
  317. }else if(k==2){
  318. string title;
  319. cout<<"Vvedite nazwanie : ";
  320. cin>>title;
  321. find_by_title(title);
  322. _getch();
  323. goto st;
  324. }else goto s;
  325. }
  326. goto st;
  327. case 5:{
  328. goto e;
  329. }
  330. default:
  331. goto st;
  332. }
  333. e:return 0;
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement