Пример работы со структурами в C с интерфейсом пользователя.
В программе реализован минимальный интерфейс пользователя.
Работа с одной структурой аналогична работе с таблицой базы данных.
Код на C++ #include <stdio.h> #include <CONIO.H> #include <PROCESS.H> struct student { char name[10],disc[10]; int id,bal; } stud[50]; FILE *in,*out; char s[255]; int x,count,delet,sr,i=0; void readall(void){ if ((in=fopen("1.dbj", "rt"))!=NULL){ while (!feof(in)){ fscanf(in,"%s %s %d %d\n",stud[i].name,stud[i].disc,&stud[i].id,&stud[i].bal); i+=1;} count=i; i=0; fclose(in);} } void format(void){ i=0; if ((in=fopen("1.dbj", "w"))!=NULL){ while (i!=count){ if (i!=delet) fprintf(in,"%s %s %d %d\n",stud[i].name,stud[i].disc,stud[i].id,stud[i].bal); i+=1;} count=i; i=0; fclose(in); delete(stud); readall(); delet=-1;} } void read(void) { gotoxy(25,10); cprintf("Фамилия: %s\n",stud[i].name); gotoxy(25,11); cprintf("Дисциплины: %s\n",stud[i].disc); gotoxy(25,12); cprintf("Номер: %d\n",stud[i].id); gotoxy(25,13); cprintf("Баллы: %d\n",stud[i].bal); } void next(void){ if (count>i+1) i+=1; read(); } void del(void){ char f; gotoxy(25,13); cprintf("Действительно удалить: %d-ую запись [y/n]: ",i); cscanf("%c",&f); if (f=='y') delet=i; format(); } void prev(int sh){ if (i>0) i-=sh; read(); } void dis(void){ gotoxy(0,0); printf("Программирование 0\n"); printf("Математика 1\n"); printf("СПС 2\n"); printf("СМП 3\n"); printf("Химия 4\n"); } void menu(void){ gotoxy(0,0); printf("Меню программы\n"); printf("Для добавления записей нажмите 'a'\n"); printf("Для переходов используйте <- ->\n"); printf("Удалить запись 'd'. Перезаписать 'w'\n"); } void prosl(){ int co,d,i; co=0; sr=0; clrscr(); dis(); scanf("%d",&d); for (i=0;i<=count;i++){ if (stud[i].disc[d]=='1') co+=1; sr+=stud[i].bal;} for (i=0;i<=count;i++){ if (((stud[i].disc[d]=='1')&&(co<6))||((co>=6)&&(stud[i].disc[d]=='1')&&(stud[i].bal>sr/(count-1)))) printf("Студент %s из группы %d средний балл которого %d\n",stud[i].name,stud[i].id,stud[i].bal); } } void add(int i) { gotoxy(25,10); cprintf("Фамилия: "); scanf("%s",stud[i].name); gotoxy(25,11); cprintf("Дисциплины: "); scanf("%s",stud[i].disc); gotoxy(25,12); cprintf("Номер: "); scanf("%d",&stud[i].id); gotoxy(25,13); cprintf("Баллы: "); scanf("%d",&stud[i].bal); if (i==count) count+=1; format(); }; void main(void) { char k; delet=-1; readall(); clrscr(); menu(); read(); while (k!='q'){ cscanf("%c",&k); clrscr(); menu(); switch (k) { case 'K': prev(1);break; case 'M': next();break; case 'a': add(count);break; case 'f': format();break; case 'd': del();break; case 'w': add(i);break; case 'p': prosl();break; } gotoxy(30,25); cprintf("Запись №%d Введeнo %c Exit: Q...",i,k); }; }
|