Advertisement
Cryston13

Data base

Mar 4th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.21 KB | None | 0 0
  1. /** Sa se realizeze un program care actualizeaza evidenta unei
  2. grupe de studenti.Datele despre studenti -nume varsta ,medie
  3. se pastreaza sub forma unui fisier text. Programul trebuie
  4. sa permita urm.optiuni:
  5. -adaugarea unui nou student in fisier
  6. - listarea datelor tuturor studentilor
  7. - modificarea datelor unui student
  8. - terminarea programului
  9. **/
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <conio.h>
  14. #include <ctype.h>
  15. #include <string.h>
  16. #define LNUME 20 /* Lungime maxim nume*/
  17.  
  18.  
  19. char fisier[30]="db_user_struct.txt"; /**Numele fisierului **/
  20. char db_file[30]="user_account.txt"; /**MEMBERS APLICATION**/
  21.  
  22. typedef struct
  23. {
  24. char nume[LNUME];
  25. int varsta;
  26. float medie;
  27. } student;
  28.  
  29. typedef struct
  30. {
  31. char user_name[LNUME];
  32. char pass[LNUME];
  33. char status[LNUME];
  34. } login;
  35.  
  36. void LogIn(void)
  37. {
  38.  
  39. FILE *f;
  40. login adm;
  41. char name_member[LNUME],password[LNUME],pass_aux[LNUME];
  42. int exist=0,connect=0;
  43. if(!(f=fopen(db_file,"r")))
  44. {
  45. puts("\nFisierul nu poate fi deschis.");
  46. return;
  47. }
  48.  
  49.  
  50.  
  51. while(connect==0)
  52. {
  53.  
  54. system("cls");
  55. printf("Procedura de logare in cont initializata !\n");
  56. printf("--------------------------------------------");
  57. printf("\nUsername : ");
  58. fgets(name_member,LNUME,stdin);
  59. printf("Password : ");
  60. fgets(password,LNUME,stdin);
  61.  
  62. name_member[strlen(name_member)-1]='\0';
  63. password[strlen(password)-1]='\0';
  64.  
  65. while(fscanf(f,"%s %s %s",adm.user_name,adm.pass,adm.status)!=EOF)
  66. {
  67. if(!strcmp(name_member,adm.user_name)) /**Membru exista in baza de date **/
  68. {
  69. exist=1;
  70.  
  71. strcpy(pass_aux,adm.pass);
  72. pass_aux[strlen(pass_aux)]='\0';
  73. printf("pass_aux:%s\n",pass_aux);
  74.  
  75. printf("Pass str :%s\nPass file :%s\nUser str:%s\nUser file:%s\n",password,adm.pass,name_member,adm.user_name);
  76.  
  77. if(!strcmp(name_member,adm.user_name)&&!strcmp(password,pass_aux))
  78. {
  79. connect=1;
  80. break;
  81. }
  82. break;
  83. }
  84. }
  85.  
  86. if(!exist)
  87. {
  88. printf("\nMembrul : %s nu exista !\n",name_member);
  89. system("pause");
  90. }
  91. else
  92. {
  93. if(connect)
  94. {
  95. printf("Conectare cu succes!\n");
  96.  
  97. }
  98. else
  99. {
  100. printf("Parola este incorecta !\n");
  101. system("pause");
  102.  
  103. }
  104. }
  105.  
  106.  
  107. }
  108.  
  109. fclose(f);
  110. }
  111.  
  112.  
  113. void AddStudent(void)
  114. {
  115. FILE *f;
  116. student s;
  117. if(!(f=fopen(fisier,"a")))
  118. {
  119. puts("\nFisierul nu poate fi deschis.");
  120. return;
  121. }
  122. printf("\nNume,varsta,media:");
  123. scanf("%s %d %f",s.nume,&s.varsta,&s.medie);
  124. fflush(stdin); /*Se goleste buffer-ul tastaturii*/
  125. fprintf(f,"%20s %2d %6.2f\n",s.nume,s.varsta,s.medie);
  126. fclose(f);
  127. }
  128. void ListStudenti(void)
  129. {
  130. FILE *f;
  131. student s;
  132. if(!(f=fopen(fisier,"r")))
  133. {
  134. puts("\nFisierul nu poate fi deschis.");
  135. return;
  136. }
  137. while(fscanf(f,"%s %d %f",s.nume,&s.varsta,&s.medie)!=EOF)
  138. printf("\n%-20s %2d %6.2f\n",s.nume,s.varsta,s.medie);
  139. fclose(f);
  140. }
  141.  
  142. void ModifStudent(void)
  143. {
  144. int gasit=0;
  145. FILE *f;
  146. student s;
  147. char n[LNUME];/*Numele stud. ale carui date se modifica*/
  148. if(!(f=fopen(fisier,"r+")))
  149. {
  150. puts("\nFisierul nu poate fi deschis.");
  151. return;
  152. }
  153. printf("\nNume student: ");
  154. fgets(n,LNUME,stdin);
  155. n[strlen(n)-1]='\0';
  156. while(fscanf(f,"%s %d %f",s.nume,&s.varsta,&s.medie)!=EOF)
  157. if(!strcmp(n,s.nume)) /**Student gasit - se afiseaza datele**/
  158. {
  159. printf("\n%-20s %2d %6.2f",s.nume,s.varsta,s.medie);
  160. gasit=1;
  161. break;
  162. }
  163. if(!gasit)
  164. printf("\nStudentul %s nu exista in fisier.",n);
  165. else
  166. {
  167. printf("\nNumele ,varsta ,media:");
  168. scanf("%s %d %f",s.nume,&s.varsta,&s.medie);
  169. fflush(stdin);
  170. /**POZITIONARE LA INCEPUTUL INREGISTRARI**/
  171. fseek(f,-32,SEEK_CUR);
  172. fprintf(f,"%20s %2d %6.2f",s.nume,s.varsta,s.medie);
  173. }
  174. fclose(f);
  175. }
  176.  
  177.  
  178. void ShowMeniu(void)
  179. {
  180. system("color 0a");
  181. printf("#--------------------------------#");
  182. puts("\na,A -----Adaugare Student.");
  183. puts("\nm,M -----Modifica date Student.");
  184. puts("\nl,L -----Listare Studenti.");
  185. puts("\nx,X -----Iesire din program.");
  186. printf("#--------------------------------#\nSelecteaza o optiune ! :");
  187. }
  188.  
  189. void main(void)
  190. {
  191. LogIn();
  192.  
  193. char opt;
  194. // puts("Nume fisier :");
  195. //fgets(fisier,30,stdin);
  196. while(1)
  197. {
  198. ShowMeniu();
  199. opt=tolower(getche());
  200. switch(opt)
  201. {
  202. case 'a':
  203. AddStudent();
  204. break;
  205. case 'm':
  206. ModifStudent();
  207. break;
  208. case 'l':
  209. ListStudenti();
  210. break;
  211. case 'x':
  212. exit(0);
  213. default:
  214. puts("\nComanda Invalida\n");
  215. }
  216. }
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement