Робота зі структурами і файлами.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра інформаційних систем та мереж

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра Інформаційних систем та мереж Лабораторна робота №10 на тему Робота зі структурами і файлами. Львів – 2008 Мета роботи: практичних навичок опрацювання структур та роботи з файлами. Завдання на роботу Розробити програму яку забезпечує опрацювання структур даних і їх збереженян у файлі. Опис деякого обєкту здійснюється за допомогою типу даних структура. Необхідно забезпечити опрацювання 3-5 атрибутів обєкту з використанням різних простих типів даних (стрічки, символи, числа, логічний тип)ю Забезпечити виконання таких операцій: Ввід даних; Пошук за значенням атрибуту; Послідовний перегляд; Модифікацію значень атрибутів обєктів (структури що його описує); Видалення обєкту (структури що його описує); Сортування за значеннями атрибутів; Результати всіх операцій повинні зберігатись у файлі. В контрольному прикладі продемонстурвати виконання основних операцій з файлом який містить 10-20 збережених описів обєктів. Текст програми: #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> #define n 20 struct Tmob { char vyr[28]; char model[28]; char colir[28]; char IMEI[28]; }; int k=0,dija=0,el=0; Tmob *mob; void vved(); void menu(); void search(); void print(); void mod(); void del(); void sort(int zn); void save(); Tmob a; void main() { FILE *f; textbackground(0); clrscr(); mob=(Tmob *)malloc(n*sizeof(Tmob)); f=fopen("MOBILA.BIN","rb"); while(fread(&mob[k],sizeof(mob[k]),1,f)) k++; fclose(f); print(); getch(); } void cursor_off() { _AH=0x1; _CH=0x20; geninterrupt(0x10); } void cursor_on() { _AH=0x1; _CH=0x6; _CL=0x7; geninterrupt(0x10); } //================= char s[30]; void vved() { char c,sm; int x=23,y=4; //strcpy(s,0); strcpy(a.vyr,0); strcpy(a.model,0); strcpy(a.colir,0); strcpy(a.IMEI,0); textcolor(0); textbackground(11); window(10,3,70,4); clrscr(); gotoxy(24,1); cprintf("Введiть данi:\n\r"); textbackground(BLUE); window(10,4,70,18); clrscr(); //------------ textcolor(0); textbackground(14); gotoxy(12,4); cprintf("Виробник: "); textbackground(15); gotoxy(23,4); cprintf(" "); //--------------- textbackground(14); gotoxy(12,6); cprintf(" Модель: "); textbackground(15); gotoxy(23,6); cprintf(" "); //-------------- textbackground(14); gotoxy(12,8); cprintf(" Колiр: "); textbackground(15); gotoxy(23,8); cprintf(" "); //-------------- strcpy(s,a.vyr); textbackground(14); gotoxy(12,10); cprintf(" IMEI: "); textbackground(15); gotoxy(23,10); cprintf(" "); textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } while(1) {if(kbhit) c=getch(); switch(c) { case 80: {y+=2; if(y>10) y-=2; switch(y-2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y-2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y-2); cputs(s); gotoxy(x,y-2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } break;} case 72: {y-=2; if(y<4) y+=2; switch(y+2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y+2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y+2); cputs(s); gotoxy(x,y+2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { cputs(s); gotoxy(x,y); } break;} case 27: goto end; case 13: { cursor_on(); int i=0; textbackground(11); gotoxy(x,y); cprintf(" "); gotoxy(x,y); puts(s); gotoxy(x+strlen(s),y); i=strlen(s); //if(i>0) {printf("\b"); i--;} sm=0; while(sm!=27&&sm!=13) if(kbhit) {sm=getch(); if(i>27) {printf("\b"); i--;} if(sm==8) {i--; if(i>=0) {printf("\b");printf(" ");printf("\b"); s[i]=0;}else i++; } else if(i<27&&sm!=27&&sm!=13) {s[i]=sm; s[i+1]=0; i++; if(sm==72||sm==80||sm==77||sm==75) sm=13; if(sm!=27) printf("%c",sm); } } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); printf("%s ",s); gotoxy(x,y); switch(y) { case 4: {strcpy(a.vyr,s); break;} case 6: {strcpy(a.model,s); break;} case 8: {strcpy(a.colir,s); break;} case 10: {strcpy(a.IMEI,s); break;} } cursor_off(); break;} }} end: mob[k]=a; k++; save(); print(); } int st=0; void print() { char c; cursor_off(); textcolor(15); textbackground(11); window(10,3,70,4); clrscr(); gotoxy(21,1); if(st==0) cprintf(" База даних:\n\r"); else cprintf("Результати пошуку:\n\r"); textbackground(BLUE); window(10,4,70,18); clrscr(); //------------ for(int w=0; w<k; w++) { if(strlen(mob[w].vyr)>15) mob[w].vyr[15]=0; if(strlen(mob[w].model)>9)mob[w].model[9]=0; if(strlen(mob[w].colir)>10)mob[w].colir[10]=0; if(strlen(mob[w].IMEI)>20)mob[w].IMEI[20]=0; } textbackground(GREEN); textcolor(12); gotoxy(1,1); cprintf("%-3s %-15s %-9s %-10s %-20s","№","Виробник","Модель","Колiр","IMEI"); textcolor(15); if(k!=0) { if(st!=1){ for(int i=0; i<k; i++) if(i!=el) {textbackground(BLUE);gotoxy(1,i+2); cprintf("%-3d %-15s %-9s %-10s %-20s",i+1,mob[i].vyr,mob[i].model, mob[i].colir,mob[i].IMEI); } else {textbackground(14);gotoxy(1,i+2); //gotoxy(15,4); cprintf("%-3d %-15s %-9s %-10s %-20s",el+1,mob[el].vyr,mob[el].model, mob[el].colir,mob[el].IMEI); } while(1) { if(kbhit) c=getch(); switch(c) { case 80: {if(el!=k-1) el++; else el=0; textbackground(14); gotoxy(1,el+2); cprintf("%-3d %-15s %-9s %-10s %-20s",el+1,mob[el].vyr,mob[el].model, mob[el].colir,mob[el].IMEI); for(int i=0; i<k; i++) if(i!=el){textbackground(BLUE); gotoxy(1,i+2); cprintf("%-3d %-15s %-9s %-10s %-20s",i+1,mob[i].vyr,mob[i].model, mob[i].colir,mob[i].IMEI);} break;} case 72: {if(el!=0) el--; else el=k-1; textbackground(14); gotoxy(1,el+2); cprintf("%-3d %-15s %-9s %-10s %-20s",el+1,mob[el].vyr,mob[el].model, mob[el].colir,mob[el].IMEI); for(int i=0; i<k; i++) if(i!=el){textbackground(BLUE); gotoxy(1,i+2); cprintf("%-3d %-15s %-9s %-10s %-20s",i+1,mob[i].vyr,mob[i].model, mob[i].colir,mob[i].IMEI);} break;} case 13: {menu(); } } }} else { int pos=0; for(int i=0; i<k; i++) if((strcmp(mob[i].vyr,a.vyr)==0)||(strcmp(mob[i].model,a.model)==0)||(strcmp(mob[i].colir,a.colir)==0)||(strcmp(mob[i].IMEI,a.IMEI)==0)) {pos++; textbackground(BLUE);gotoxy(1,pos+1); cprintf("%-3d %-15s %-9s %-10s %-20s",i+1,mob[i].vyr,mob[i].model, mob[i].colir,mob[i].IMEI); st=0; } if(st==1) printf(" -------------Не знайдено------------"); st=0; getch(); print(); }} else{ {el=0; printf(" -----------База даних порожня----------");} while(1) { if(kbhit()) c=getch(); if(c==13) menu();} } } void run() { switch(dija) { case 2: {vved(); break;} case 8: exit(0); case 0: if (k!=0) {mod(); break;} case 1: if (k!=0) {del(); break;} case 3: if (k!=0) {search(); break;} case 4: if (k!=0) {sort(1); break;} case 5: if (k!=0) {sort(2); break;} case 6: if (k!=0) {sort(3); break;} case 7: if (k!=0) {sort(4); break;} }} #define kp 9 void menu() { char c; char d[kp][40]; dija=0; //textbackground(11); //window(10,11,40,18); strcpy(d[0],"=>Редагувати поточний елемент \n\r"); strcpy(d[1],"=>Видалити поточний елемент \n\r"); strcpy(d[2],"=>Додати новий елемент до бази \n\r"); strcpy(d[3],"=>Пошук за значенням атрибуту \n\r"); strcpy(d[4],"=>Сортувати по полю Виробник \n\r"); strcpy(d[5],"=>Сортувати по полю Модель \n\r"); strcpy(d[6],"=>Сортувати по полю Колiр \n\r"); strcpy(d[7],"=>Сортувати по полю IMEI \n\r"); strcpy(d[8],"=>Вийти з програми \n\r"); textbackground(12); gotoxy(15,4); if(k==0) textcolor(7); else textcolor(14); cprintf(d[0]); for(int i=0; i<kp; i++) if(i!=0){if(i!=2&&i!=8&&k==0) textcolor(7); else textcolor(14); textbackground(11); gotoxy(15,i+4); cprintf(d[i]);} textcolor(14); while(1) { if(kbhit) c=getch(); switch(c) { case 80: {if(dija!=kp-1) dija++; else dija=0; textbackground(12); gotoxy(15,dija+4);if(dija!=2&&dija!=8&&k==0) textcolor(7); else textcolor(14); cprintf(d[dija]); for(int i=0; i<kp; i++) if(i!=dija){textbackground(11); gotoxy(15,i+4);if(i!=2&&i!=8&&k==0) textcolor(7); else textcolor(14); cprintf(d[i]);} break;} case 72: {if(dija!=0) dija--; else dija=kp-1; textbackground(12); gotoxy(15,dija+4); if(dija!=2&&dija!=8&&k==0) textcolor(7); else textcolor(14); cprintf(d[dija]); for(int i=0; i<kp; i++) if(i!=dija){textbackground(11); gotoxy(15,i+4); if(i!=2&&i!=8&&k==0) textcolor(7); else textcolor(14); cprintf(d[i]);}break;} case 27: {print();} case 13: {run();} }}} void mod() { char c,sm; int x=23,y=4; //strcpy(s,0); strcpy(a.vyr,mob[el].vyr); strcpy(a.model,mob[el].model); strcpy(a.colir,mob[el].colir); strcpy(a.IMEI,mob[el].IMEI); textcolor(14); textbackground(11); window(10,3,70,4); clrscr(); gotoxy(24,1); cprintf("Редагування:\n\r"); textbackground(BLUE); window(10,4,70,18); clrscr(); //------------ textcolor(0); textbackground(14); gotoxy(12,4); cprintf("Виробник: "); textbackground(15); gotoxy(23,4); cprintf(" "); gotoxy(23,4); cprintf(a.vyr); //--------------- textbackground(14); gotoxy(12,6); cprintf(" Модель: "); textbackground(15); gotoxy(23,6); cprintf(" "); gotoxy(23,6); cprintf(a.model); //-------------- textbackground(14); gotoxy(12,8); cprintf(" Колiр: "); textbackground(15); gotoxy(23,8); cprintf(" "); gotoxy(23,8); cprintf(a.colir); //-------------- strcpy(s,a.vyr); textbackground(14); gotoxy(12,10); cprintf(" IMEI: "); textbackground(15); gotoxy(23,10); cprintf(" "); gotoxy(23,10); cprintf(a.IMEI); textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); gotoxy(x,y); if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } while(1) {if(kbhit) c=getch(); switch(c) { case 80: {y+=2; if(y>10) y-=2; switch(y-2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y-2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y-2); cputs(s); gotoxy(x,y-2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } break;} case 72: {y-=2; if(y<4) y+=2; switch(y+2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y+2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y+2); cputs(s); gotoxy(x,y+2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { cputs(s); gotoxy(x,y); } break;} case 27: goto end; case 13: { cursor_on(); int i=0; textbackground(11); gotoxy(x,y); cprintf(" "); gotoxy(x,y); puts(s); gotoxy(x+strlen(s),y); i=strlen(s); sm=0; while(sm!=27&&sm!=13) if(kbhit) {sm=getch(); if(i>27) {printf("\b"); i--;} if(sm==8) {i--; if(i>=0) {printf("\b");printf(" ");printf("\b"); s[i]=0;}else i++; } else if(i<27&&sm!=27&&sm!=13) {s[i]=sm; s[i+1]=0; i++; if(sm==72||sm==80||sm==77||sm==75) sm=13; if(sm!=27) printf("%c",sm); }} textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); printf("%s ",s); gotoxy(x,y); switch(y) { case 4: {strcpy(a.vyr,s); break;} case 6: {strcpy(a.model,s); break;} case 8: {strcpy(a.colir,s); break;} case 10: {strcpy(a.IMEI,s); break;} } cursor_off(); break;} }} end: mob[el]=a; save(); print(); } void del() { k--; if(el!=k){ for(int i=el; i<k; i++) mob[i]=mob[i+1]; } else el--; save(); print(); } void search() { char c,sm; int x=23,y=4; st=1; //strcpy(s,0); strcpy(a.vyr,0); strcpy(a.model,0); strcpy(a.colir,0); strcpy(a.IMEI,0); textcolor(0); textbackground(11); window(10,3,70,4); clrscr(); gotoxy(24,1); cprintf("Введiть данi:\n\r"); textbackground(BLUE); window(10,4,70,18); clrscr(); //------------ textcolor(0); textbackground(14); gotoxy(12,4); cprintf("Виробник: "); textbackground(15); gotoxy(23,4); cprintf(" "); //--------------- textbackground(14); gotoxy(12,6); cprintf(" Модель: "); textbackground(15); gotoxy(23,6); cprintf(" "); //-------------- textbackground(14); gotoxy(12,8); cprintf(" Колiр: "); textbackground(15); gotoxy(23,8); cprintf(" "); //-------------- strcpy(s,a.vyr); textbackground(14); gotoxy(12,10); cprintf(" IMEI: "); textbackground(15); gotoxy(23,10); cprintf(" "); textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } while(1) {if(kbhit) c=getch(); switch(c) { case 80: {y+=2; if(y>10) y-=2; switch(y-2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y-2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y-2); cputs(s); gotoxy(x,y-2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { gotoxy(x,y); cputs(s); gotoxy(x,y); } break;} case 72: {y-=2; if(y<4) y+=2; switch(y+2) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } textbackground(15); gotoxy(x,y+2); cprintf(" "); if(strcmp(s,0)!=0) { gotoxy(x,y+2); cputs(s); gotoxy(x,y+2); } textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); switch(y) { case 4: {strcpy(s,a.vyr); break;} case 6: {strcpy(s,a.model); break;} case 8: {strcpy(s,a.colir); break;} case 10: {strcpy(s,a.IMEI); break;} } if(strcmp(s,0)!=0) { cputs(s); gotoxy(x,y); } break;} case 27: goto end; case 13: { cursor_on(); int i=0; textbackground(11); gotoxy(x,y); cprintf(" "); gotoxy(x,y); puts(s); gotoxy(x+strlen(s),y); i=strlen(s); //if(i>0) {printf("\b"); i--;} sm=0; while(sm!=27&&sm!=13) if(kbhit) {sm=getch(); if(i>27) {printf("\b"); i--;} if(sm==8) {i--; if(i>=0) {printf("\b");printf(" ");printf("\b"); s[i]=0;}else i++; } else if(i<27&&sm!=27&&sm!=13) {s[i]=sm; s[i+1]=0; i++; if(sm==72||sm==80||sm==77||sm==75) sm=13; if(sm!=27) printf("%c",sm); }} textbackground(14); gotoxy(x,y); cprintf(" "); gotoxy(x,y); printf("%s ",s); gotoxy(x,y); switch(y) { case 4: {strcpy(a.vyr,s); break;} case 6: {strcpy(a.model,s); break;} case 8: {strcpy(a.colir,s); break;} case 10: {strcpy(a.IMEI,s); break;} } cursor_off(); break;} }} end: print(); } void sort(int zn) {Tmob temp; switch(zn) { case 1: { for(int i=0; i<k; i++) for(int j=0; j<k-1; j++) if(strcmp(mob[j].vyr,mob[j+1].vyr)>0) {temp=mob[j]; mob[j]=mob[j+1]; mob[j+1]=temp; } break; } case 2: { for(int i=0; i<k; i++) for(int j=0; j<k-1; j++) if(strcmp(mob[j].model,mob[j+1].model)>0) {temp=mob[j]; mob[j]=mob[j+1]; mob[j+1]=temp; } break; } case 3: { for(int i=0; i<k; i++) for(int j=0; j<k-1; j++) if(strcmp(mob[j].colir,mob[j+1].colir)>0) {temp=mob[j]; mob[j]=mob[j+1]; mob[j+1]=temp; } break; } case 4: { for(int i=0; i<k; i++) for(int j=0; j<k-1; j++) if(strcmp(mob[j].IMEI,mob[j+1].IMEI)>0) {temp=mob[j]; mob[j]=mob[j+1]; mob[j+1]=temp; } break; } } save(); print(); } void save() {FILE *f; f=fopen("MOBILA.BIN","wb"); for(int i=0; i<k; i++) fwrite(&mob[i],sizeof(mob[i]),1,f); fclose(f); }   Результати виконання програми:        Висновки: Я набув практичних навичок опрацювання структур та роботи з файлами.
Антиботан аватар за замовчуванням

30.11.2012 00:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!