Advertisement
Guest User

Untitled

a guest
Jun 14th, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.98 KB | None | 0 0
  1. //laborotornaya rabota no 7
  2. #include<conio.h>
  3. #include<iostream.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #include<iomanip.h>
  7. #include<fstream.h>
  8. #include<stdio.h>
  9. struct stud
  10. {
  11. char nz[20];
  12. char gr [15];
  13. char fio [15];
  14. double stip;
  15. float bal;
  16. } st;
  17. int z=sizeof(stud);
  18. char*sh[]={
  19. " Studenti ",
  20. "|==========|==========|==========|===============|==========|",
  21. "| Nomer | Gryppa | Familiy | Stipendia rub.| Bal |",
  22. "|==========|==========|==========|===============|==========|",
  23. "|==========|==========|==========|===============|==========|"};
  24. ifstream fin;
  25. ofstream fout;
  26. fstream io;
  27. void p(),cht(),sozd(),dop(),zf(),poisk1(),poisk2(),kor(),filtr(char*),
  28. psh(),pri(char*);
  29. void main()
  30. {
  31. clrscr();
  32. fout.open("L7.res" );
  33. if(!fout){pri("Oshibka pri otkritii failov rezultatov");exit(0);}
  34. sozd();cht();
  35. dop;cht();
  36. poisk1();
  37. poisk2();
  38. kor();cht();
  39. fout.close();
  40. }
  41. void pri(char*s)
  42. {cout<<s<<endl;
  43. }
  44. void psh()
  45. {
  46. for(int i=0;i<5;i++)
  47. fout<<sh[i]<<endl;
  48. }
  49. void p()
  50. {
  51. fout<<'\272'<<setiosflags(ios::left)<<setw(13)<<st.nz<<'\272'
  52. <<setw(10)<<st.gr<<'\272'<<setw(15)<<st.fio<<'\272'
  53. <<setw(14)<<setprecision(2)<<st.stud<<'\272'<<endl;
  54. }
  55. void cht()
  56. {
  57. int n=0;
  58. float s=0;
  59. fout<<"\n Chtenie faila  \n";
  60. fin.open("binary.cpp",ios::in|ios::binary);
  61. if(!fin){pri("Oshibka otkritia binarnogo faila dl9 chtenia");exit(0);}
  62. psh();
  63. while(fin.peek()!=EOF)
  64. {
  65. fin.read((char*)&st,z);
  66. p();
  67. s+=st.rs;
  68. n++;}
  69. fout<<sh[5]<<endl<<"Summarnay stipendia= "<<s<<endl
  70. <<"Srednya stipendia="<<s/n<<endl
  71. <<"Kolichestvo structur v faile ="<<n<<endl;
  72. fin.close();
  73. }
  74. void sozd()
  75. {struct stud;
  76. fout<<"\n Sozdanie faila";
  77. fin.open("sozd.dat");
  78. if(!fin) {pri("Oshibka pri otkritii faila dannix);exit(0);}
  79. io.open("binary.cpp",ios::out|ios::binary);
  80. if(!io)
  81. {pri("Oshibka otkritia binarnogo faila dl8 ego sozdania");exit(0);}
  82. psh();
  83. zf();
  84. fin.close();io.close();
  85. }
  86. void zf()
  87. {char T[80];
  88. while(!fin.eof())
  89. {fin>>st.nz;
  90. fin.getline(st.gr,11);filtr(st.gr);
  91. fin.getline(st.fio,17);filtr(st.fio);
  92. fin>>st.rs;
  93. fin.getline(T,80);
  94. io.write((char*)&st,z);
  95. p();
  96. }
  97. fout<<sh[5]<<endl;
  98. }
  99. void filtr(char*a)
  100. {int i,l=strlen(a),j;
  101. for(i=0;i<1;i++)
  102. if(a[i]!=' '&& a[i] !='\t')
  103. for (j=1-1;j>=i;j--)
  104. if(a[j]!=' '&& a[j]!='\n')
  105. {
  106. for(l=i;l<=j;l++)
  107. a[l-i]=a[l];
  108. a[l-i]='\0';
  109. goto m;
  110. }
  111. a[0]=0;
  112. m:;
  113. }
  114. void poisk1()
  115. {
  116. char name[20];
  117. fin.open("poisk1.dat");
  118. if (!fin) {pri("Oshibka pri otkritii faila dannix dl9 poiska 1");exit(1);}
  119. fout<<"\n\n POISK PO FAMILII STUDENTA\n";
  120. io.open("binary.cpp",ios::in|ios::binary);
  121. if(!io) {pri(" Oshibka otkritia binarnogo faila dl9 chtenia"); exit(0);}
  122. while(fin.peek()!=EOF)
  123. {fin.getline(name,20);filtr(name);
  124. fout<<"\nIchem dannie studenta s familiey-"
  125. <<"\""<<name<<"\""<<endl;
  126. if(!strcmp(name,"")){fout <<"Net familii dl9 poiska \n";continue;}
  127. io.seekg(0,ios::beg);
  128. while(io.peek()!=EOF)
  129. {
  130. io.read((char*)&st,z);
  131. if(strcmp(st.fio,name)==0)
  132. {p();goto m;}
  133. }
  134. fout<<"Student s familiey\""<<name<<"\"Ne nayden"<<endl;
  135. m:;
  136. }
  137. fin.close();io.close();
  138. }
  139. void poisk2()
  140. {
  141. char grup[15];float stip;
  142. fin.open("poisk2.dat",ios::in);
  143. if(!fin) {pri("Oshibka otkritia faila dannux dl9 poiska  2");exit(0);}
  144. fout<<"\n\n Poisk po naimenovaniy gryppi studenta i "
  145. "po razmery stipendii\n";
  146. while(fin.peek()!=EOF)
  147. {fin>>stip;
  148. fin.getline(grup,15);
  149. filtr(grup);
  150. int k=0;
  151. fout<<"\Ichem v gryppe-"<<"\""<<grup<<"\""
  152. <<"Studentov so stipendiey>="<<stip<<endl;
  153. if((!strcmp(grup,""))&&(stip==0.0))
  154. {fout <<"Net dl9 poiska ni gryppi, ni stipendii \n";continue;}
  155. io.open("binary.cpp",ios::in|ios::binary);
  156. if(!io) {pri("Oshibka otkritia binarnogo faila dl9 chtenia");exit(0);}
  157. while(io.read((char*)&st,z))
  158. if((!strcmp(st.gr,grup)||!strcmp(grup,""))&&(stip<=st.rs||stip==0))
  159. {p();k++;}
  160. if(!k)fout<< "Takix studentov net"<<endl;
  161. io.close();
  162. }
  163. fin.close();io.close();
  164. }
  165. void dop()
  166. {
  167. fout<<"\n\n DOPOLNENIA FAILA NOVIMI ZAPIS9MI"<<endl;
  168. fin.open("dop.dat",ios::in);
  169. if(!fin) {pri("Oshibka otkritia faila dannix dl9 dopolnenia");exit(0);}
  170. io.open("binary.cpp",ios::app|ios::binary);
  171. if(!io){pri("Oshibka otkritia binarnogo faila dl9 dopolnenia");exit(0);}
  172. for(int i=1;i<5;i++);
  173. fout<<sh[i]<<endl;
  174. zf();
  175. fin.close();io.close();
  176. }
  177. void kor()
  178. {
  179. char t[80];
  180. char name[85];
  181. float stip;
  182. fout<<"\n\n KORREKCIA FAILA\n\n";
  183. fin.open("kor.dat",ios::in);
  184. if(!fin) {pri("Oshibka otkritia faila dannix dl9 korrekcii");exit(0);}
  185. while(fin.peek()!=EOF)
  186. {fin.getline(name,17);filtr(name);
  187. fin>>stip;
  188. fin.getline(t,80);
  189. int k=0;
  190. if(!strcmp(name,""))
  191. {
  192. fout<<"\nNet familii dl9 poiska korrectiruemoy structuri\n\n";continue;
  193. }
  194. io.open("binary.cpp",ios::in|ios::out|ios::binary);
  195. if(!io)
  196. {pri("Oshibka otkitia binarnogo faila dl9 ego korrekcii");exit(0);}
  197. while(io.read((char*)&st,z))
  198. if(!strcmp(st.fio,name))
  199. {
  200. p();st.rs=stip;
  201. p();
  202. io.seekp(-z,ios::cur);
  203. io.write((char*)&st,z);
  204. k++;break;
  205. }
  206. if(!k)fout<<"Student s FIO-"<<name<<"Ne nayden"<<endl;
  207. io.close();
  208. }
  209. fin.close();
  210. io.close();
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement