Қонақ үйдегі қонақтар туралы мәліметтер қорын құру


КУРСТЫҚ ЖҰМЫС
Тақырыбы: Қонақ үйдегі қонақтар туралы мәліметтер қорын құру.
МАЗМҰНЫ
КІРІСПЕ . . . 3
1-ТАРАУ. ТУРБО ПАСКАЛЬ ТІЛІНДЕ ФАЙЛДАРМЕН ЖҰМЫС ІСТЕУ
1. 1 Файлдармен жұмыс . . . 4
1. 2 Типтік файлдар . . . 5
1. 3 Еркін ену және типсіз файлдары . . . 7
2-ТАРАУ. Қонақ үйдегі қонақтар туралы мәліметтер қорын құру.
2. 1 Текстік файлдар . . . 8
2. 2 Текстік файлдарға қолданылатын функциялар мен процедуралар . . . 13
2. 3 Қонақ үйдегі қонақтар туралы мәліметтер қорын құру . . . 19
ҚОРЫТЫНДЫ . . . 20
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ . . . 21
КІРІСПЕ
Информацияны өңдеу, сақтау, қажеттісін дер кезінде тауып беру үшін пайдаланылатын жоғарғы деңгейлі программалау тілдерінің бірі - Паскаль тілі. Паскаль бағдарламалау тілі 17 ғасырда өмір сүрген француз ғалым-философы Блез Паскальдің құрметіне аталып отыр. Паскальдің алғашқы вариантын 70-жылдары Швейцариядағы жоғарғы политехникалық мектептің информатикалық институтының профессор-ғалымы Никлаус Вирт жарыққа шығарған болатын. Қазіргі кезде оның кеңейтілген ондаған диалектісі бар, оның ішінде IBM PC-ге үйлесімді дербес компьютерлер жұмыс істей алатын Турбо Паскаль диалектілері де жеткілікті.
Паскаль - орта оқу орындарында оқылатын Бейсик тілі сияқты оқып-үйренуге жеңіл, түрлі салалық информациямен жұмыс істеуде нәтижелі болғандықтан, дүние жүзінде көп тараған тілдердің бірі.
Бұл курстық жұмыстың мақсаты - Паскальда файлдармен жұмысты жоғарғы дәрежеде меңгеріп, көптеген ортада тиімді пайдалану.
Курстық жұмыс кіріспеден, екі тараудан, қорытындыдан, пайдаланылған әдебиеттер тізімінен тұрады.
Кіріспеде курстық жұмыс тақырыбының өзектілігі, жұмыстың мақсаты, курстық жұмыстың теориялық маңыздылығы мен практикалық құндылығы баяндалған.
Бірінші тарауда файлдың түрлері мен оларда жұмыс істеу туралы қарастырылған.
Екінші тарауда текстік файл және файлдарда мәліметтер базасын құру қарастырылған.
Қорытындыда Паскальда файлдармен жұмыс істеудің алатын орны және есептің шығарылу жолы, екі тарауда қарастырылған мәселелер, курстық жұмыстың міндеті қарастырылған.
1. 1 Файлдармен жұмыс
Ұзақ сақтауға арналған мәліметтер сыртқы сақтау құрылымында файл түрінде орналасады. Файл дегеніміз - сыртқы сақтау құрылымында белгілі бір атпен аталып, жазылатын мәлімет. Көпшілік жағдайда мәліметтерді сақтауды ыңғайлы түрі ретінде файлдың алынуының себептерін атап айтсақ, біріншіден, файл оны құрған программа жұмысын анықтағаннан кейін де сақталып қалады; екіншіден, файлға жазылған мәліметтер бірнеше программада пайдаланылады; үшіншіден өңделетін мәліметтер тым көп болған жағдайда олардың бәрін компьютердің жедел жадына орналастыруға мүмкіндік болмайды.
Файл - бір типті компоненттер тізбегі. Файл компоненті ретінде кез келген жай типті немесе жазуды алуға болады. Тек файл компоненті ретінде файл болуы мүмкін емес. Сонымен файлдың бір өлшемді массивтен негізгі айырмашылығы:
- сыртқы тасығыштарға; яғни магниттік дискіге тиеледі;
- компоненттер саны бастапқыда анықталмайды.
Турбо Паскальда файлдар үш түрге бөлінеді: текстік, типтік, типсіз файлдар. Файлдармен жұмыстағы негізгі ұғым - файлдық айнымалы. Файлдық айнымалы <ФА> немесе f- деп белгіленсе, оның сипатталу тәсілдері:
- VAR <ФА-аты>: text; {текстік файл}
- VAR <ФА-аты>: File of <компонент типі>; {типтік файл}
- VAR <ФА-аты>: File; {типсіз файл}
Файлды жазу не оқу үшін мынадай процедуралар пайдаланылады: Assign(<ФА>, ‘<файлға жол сілтеу>\<сыртқы файл аты>’. Бұл процедура әдетте бірінші жазылады да, файлдық айнымалыға <ФА> сыртқы файл атауын меншіктейді. Жаңадан құрылатын файл Rewrite(<ФА>) операторымен ашылады. Ал мазмұны әрмен қарай қолданылатын файлдың компоненттерін оқу Reset(<ФА>) операторымен ашылады. Файл компоненттерін оқу ұшін Readln, Read және BlockRead процедуралары, ал компоненттерді файлға жазу үшін Writeln, Write және BlockRead процедуралары қолданылады. Файлдармен жұмыс соңында файлды жабу - Close(f) процедурасымен, файлды жою - Erase(f), ал файлдың атын өзгерту - Rename(f, <файлдың жаңа аты>) процедурасымен орындалады. Бұл әрекеттер жабылған файлға қатысты орындалады. Жазылып біткен файл соңына жаңа компонент қосылған файл соңын білдіретін белгі (маркер) қойылады. Егер файл бос болса немесе соңғы компонент - маркер оқылған соң Eof(f) функциясының мәні TRUE болады.
Дербес компьютердің сыртқы есте сақтау құрылғысына программаны ғана емес, түрлі информацияны да арнайы атау бойынша тиеп (жазып) қоюға болады. Оларды берілгендер файлы немесе сыртқы файл деп, ал сыртқы файлды сақтау үшін бөлінетін орынды файл не дискілік файл деп атайды. Дискіде сақтаулы информацияны экранға шақырып өңдеу жұмыстарын жүргізу, өңделген информацияны дискіге қайта жазып қою қиын емес.
1. 2 Типтік файлдар
Паскаль тілінде программа көмегімен сыртқы есте сақтау құрылғыларына (қатты диск немесе винчестер, дискета) әртүрлі информацияны файл атау түрінде беріп, жазып қоюға болады, оны берілгендер файлы не дискілік файл деп атайды. Типтік файл - типті анықталған компоненттердің нөмірленген тізбегінен тұратын дискілік файл. Мысалы, мынадай құрылыммен талапкердің мәліметтік тізімі берілсін: аты-жөні, туылған жылы, таңдаған мамандық шифры, тестілеуден жинаған ұпайы (балл) . Осы құрылыммен өңделетін информацияны сыртқы файлға жазу керек болса, Паскаль тілінде файл типін сипаттаудың жалпы форматы мынадай:
Type<тип атауы>=file of <элементтер типі>;
Var <айнымалы атауы>=<тип атауы>;
Жоғарыдағы мысалдағы файлдың сипатталуы:
Type abit=Record
Fam: string [15] ;
TJ: integer;
Shift: integer;
Ball: integer;
End;
Var v:abit; f: file of abit;
Мұндағы abit - жазу типі атауы. Fam, TJ, Shift, Ball - жазу өрісі атаулары. F - файлдық айнымалы, ал V - жазу аты.
Файлды жазу, оқу үшін bf - берілгендер файлының атауы меншіктелген айнымалы, V - файлдық элемент (жазу), ал V. Fam, V. Tj, V. Shift, V. ball - жазу өрістері айнымалылары деп белгіленіп, сыртқы ЕСҚ- ға жазылады.
Турбо Паскальда берілгендер файлын жазу үшін мынадай процедуралар пайдаланылады. Assign(f, bf) - f файлдық айнымалыға bf - сыртқы файл аты тағайындалады.
Rewrite(f) - атауы Assign процедурасындағы анықталған файлды жазу мақсатында сыртқы файлды ашу. Ол bf үшін сыртқы дискіден арнайы орын бөліп, көрсеткішті осы бөлінген орынның басына жазуға дайындап орналастырады.
Write(f, V) - f үшін бөлінген сыртқы файлдағы орынға V - элементін жазу. Close(f) - файлды жабу. Reset(f) - файлды оқу мақсатында ашу. Read(f, v) - файл элементін оқу.
While not Eof (f) do - файл элементтерін соңына дейін оқу үшін орындалатын цикл басы. Файл көрсеткіші дискілік файлдың соңына жеткенде Eof (f) логикалық функциясының мәні True болады. Write(V. Fam, V. Tj, V. Shift, V. ball) - файл элементі өрістерін экранға шығару. Әдетте бұл оператордың параметрлеріне арнайы орындар бөліп, файлды экранға оқуға ыңғайлы түрде шығарады.
1. 3 Еркін ену және типсіз файлдары
Типтік файлда компоненттер ұзындықтары бірдей болғандықтан, әрбір компоненттің позициясын есептеп алуға болады. Файлдағы компоненттер саны FileSize(f) функциясы арқылы анықталады. Типтік файлды оқуға Read, жазуға Write процедуралары, ал көрсетілген компонентке өтуге Seek процедурасы қолданылады. Seek - процедурасы компонеттермен ешқандай әрекет орындалмайды, тек көрсетілген компонент нөміріне ағымдық позицияны жылжытады.
Тізбекті ену тәсілімен файлды жазу, оқу файл элементтерін басынан бастап ретімен жазу, оқу арқылы жүргізіледі. Дискілік есте сақтау құрылғысы (винчестер) бар компьютерде жазуды бірден іздеп табу үшін программаға Seek(f, k-1) процедурасын, содан кейін Read (f, v) немесе Write(f, v) процедуралары қолданған жөн.
Типсіз файлдар информацияны көп өлшемде оқу (жазу) қажет болғанда қолданылады. Типтік файлдарда оқу (жазу) әр компонентті тізбектеп оқу (жазу) арқылы іске асады. Ал файлдармен жұмыста информацияны көп өлшемде оқу (жазу) тиімді болғандықтан, логикалық жазуларды (файл компоненттері) физикалық деп аталатын топқа біріктіріп, бұл топтауды блоктау деп, блоктардағы жазу санын блоктау коэффициенті (КБ) деп атайды.
Физикалық жазу өлшемі екі тәсілмен есептелінеді:
а) КБ * Size Of (<логикалық жазу аты>) өрнегі арқылы;
в) Физикалық жазу өлшемі арқылы логикалық жазу санын көрсету. Шындығында программаға берілгендер бөліктерінің оқылатын не жазылатын өлшемі ғана белгілі болады.
Типсіз файлдармен жұмыста екі тәсіл де қолданылады. Reset және Rewrite процедуралары типсіз файлдарды ашқанда параметр ретінде файл атауы және физикалық жазу өлшемі («а» тәсілі) немесе («в» тәсілі) логикалық жазу өлшемі көрсетіліп, ал Read (Write) процедурасының орнына BlockRead (Block Write) процедурасы қолданылады.
BlockRead(<ФА>, <Буфер>, <саны>, <нақты саны>) соңғы параметрдің болуы міндетті емес. Мұндағы <Буфер> - файлдан оқылған жазулардың мәндері жазылатын айнымалы (әдетте массив түрінде беріледі) ; <саны> - керекті жазу саны және <нақты саны> - нақты жазу саны.
Block Write процедурасының құрылымы да осындай. Файлдың соңғы позициясы оқылғанда (жазылғанда) әдетте 3-ші параметрде көрсетілген мәннен жазу саны кем болуы мүмкін. Бұл жағдайда 4-ші параметр міндетті түрде көрсетілуі тиіс.
2. 1 Текстік файлдар
Текстік файлдың әр компоненті қатар соңын білдіретін Eoln маркерімен аяқталатын жолдық қатардан тұрады. Әр жолдық қатардың ұзындығы 255-тен кіші әр түрлі ұзындықта болуы мүмкін және оның 2 байтында маркер орналасады.
Бір уақытта текстік файлды оқуға және жазуға болмайды, яғни алдымен оны ашып бір режимде жұмыс істеу керек. Текстік файл компоненттерін тізбекті түрде ғана өңдеуге болады. Тек Append(<ФА>) процедурасы ғана бұрынғы текстік файлдың соңына жаңа текст қоса алады.
Текстік файлмен жұмыста енгізу, шығару тізімінде тек жолдық қатарлар, символдық, сандық айнымалылар болуы мүмкін; ал структуралы-айнымалыларды (жазу, массив, жиын, файл) көрсетуге болмайды. Бірақ, текстік файл компонентінің қажетті бөлігін негізгі текстен бөліп алып, оларды массив элементтері, жазу өрістерінің мәндері ретінде пайдалануға болады.
Файлдардың компоненттерін қарастырудың үш түрі бар: біртіндеп қарастыру, белгілі бір компонентіне тікелей шығу, компоненттерге реті арқылы өту. Біз файлдардың компоненттерінің біртіндеп қарастырылатын жолына тоқталамыз.
Паскальда файл деп бір типті компоненттер тізбегінен тұратын жүйелі типті мәліметті айтамыз. Әрбір уақытта бір бір компонентті ғана іске қосылады. Файлдың компоненттер саны сипаттауда анықталмайды. Файлдық типті сипаттау file of қызметші сөзімен басталып, сонан соң осы файлға қандай мәліметтер кіретінін айқындайтын, компоненттерінің типі көрсетіледі.
Файл сыртқы сақтау құрылымы магниттік дискіде сақталады да, қажетінше компьютердің жедел жадына шығарылады. Файлдың компоненттеріне өту файлдың көрсеткіші (буферлік айнымалы) арқылы жүзеге асырылады. Әр оқу немесе жазу нәтижесінде көрсеткіш келесі компонентке жылжиды. Буферлік айнымалы өрнкетерде опоранда есебінде қолдануға болмайды. Сол себепті оқу (жазу) процедураларында буферлік айнымалының мәні файлдың компоненті типтес басқа айнымалыға меншіктеледі.
Жоғарыда көрсетілген барлық түрлеріміз алдын ала мүшелерінің саны беріліп, шектелген түрде болып келді. Қай түр болмасын бізге алдымен өзгеру аралығы белгілі болып, оны сипаттап көрсете білдік. Сонымен бағдарлама орындалмай жатып-ақ машинаның есте сақтау бөлігінде деректерімізге белгілі бір көлемде орын белгілеуімізге болатын. Бірақ белгілі бір есептерді, мәселелерді шешу барысында алдын ала деректердің өзгеру аралығын, шегін көрсете алмайтын жағдайлар болады. Міне сол жағдайлардың біз сипаттау бөлігінде деректерімізді толық сипсттап көрсете аламыз, сондықтан ерекше бір түрдің қажеттілігі туады. Сол ерекше түрді фацылдық түр атқарады.
Файылдық түрді түсіну ушін мысалға оны магниттік лентамен (магнитофон) салыстыруға болады. Файылдың елементтері осы лентаға тізбектеліп жазылады, сонда лентаның басы бар да, соңғы жағы аяқталмаған түрде болып көрінеді. Қажет файылды тізбектестіріп жалғап отыратын боламыз. Басқаша айтсақ, магнитафонға жаңа ән-күйлер жазғанда, алдында жазылған ән-күйлерден соң жазамыз. Демек, жазылған ән-күйлер тізбектеліп жазылады да лентаның бос жерлері келесі ән-күйлер жазылғанша бос болады. Дәл осы жүйе файылдық түрдің негізі болып табылады.
Файл мүшелерін тексерудің бірнеше жолы бар. Солардың бірі тізбекті файл түрі. Мысалы: файлдың бесінші мүшесін тексеріп, мәнін білу үшін бірінші мүшесінен бастап тексеріп тізбектей қарап, бесінші мүшесіне дейін жетүге болады. Сондықтан100-ші файлды оқу үшін алдыңғы 99 мүшесін қарап шықпай оқи аламыз.
Файл деп- кез келген ұзындықтағы біртекті мүшелердің тізбегін айтамыз. Паскаль тілінде файлдық түрді былайша жазады:
TYPE <атау>= FILE OF <түрі>;
Жалпы түрі сонда былай болады:
TYPE K= FILE OF TC;
Мұндағы TYPE, FILE, OF - қызмет сөздер, К- түрдің атауы, аты, ТС - жататын түрі.
Барлық айнымалылар сияқты, файлдың әрбәр айнымалыны VAR сипаттау бөлігінде көрсету керек. Мысалы:
1) TUPE ZAP=REKORD
ФИО :PACKED ARRAY [1. . 10] OF CHAR
ТУЫЛ, Ж :INTEGER
END;
FPK=FILE OF ZAP;
2) TYPE N=FILE OF REAL;
VAR F:N;
Бағдарламаның басында көрсетілген файл сыртқы файл деп аталады., ал басында көрсетілмей, бағдарлама орындалу кезеңінде қолданылатын файлды ішкі деп атайды. Файлдық түрдің Паскаль түрінде басқа түрлерінен ерекше айырмашылығы, файлға ешқандай іс-әрекет, тағайындау, салыстыру іс-әрекеттері де қолданылмайды. Бір файлды екінші файлға тағайындауға болмайды. Барлық іс-әрекеттер файлдың мүшелеріне қатысты орындала береді. Файлдың жеке - дара мүшелерімен іс-әрекет жүргізу үшін арнаулы стандарт процедуралар бар. Осы процедураларды сипаттау үшін «файлдық терезе» немесе «терезе» түсінігі енгізілген. Терезе файлды оқу үшін бос орынды анықтайды. Файлдың ең соңғы мүшесінен кейінгі бос орынды арнаулы маркермен (белгімен) көрсетеді. Осы маркердің арқасында файлдың соңын анықтай аламыз.
- REWRITE(F) процедуралық операторы F атты файлды жазылу режимінің бастапқы күйіне орнатады. Егер бұрын осы файлға белгілі бір жазылу жазылған болса, осы оператордан соң оларға қолымыз жетпей қалады. REWRITE(F) процедуралық операторының орындалуын былай көрсете аламыз.
F
Терезе
WRITE (F, X) түріндегі оператор файылға Х мәніне ХУ мүшесін жазады, сол кезде терезе бір позицияға жылжиды. Ескерте кету керек Х-тің түрі файлдың түрімен сәйкес болуы керек. Осы оператордың орындалуын көрсетейік.
- F файлдық оператор орындалмай тұрғандағы кезі:
F
Терезе
- енді осы процедура орындалған соң болған жағдай:
F
Терезе
Жоғарыдағы қарастырылған процедуралар арқылы файлға мүшелерді жазу жүргізіледі. REWRITE(F) процедурасы бір файлға бірнеше рет қолданылуы мүмкін, сол кезде файлдың құрамы сонша рет мәнін жоғалтады. Осы F-ке алғашқы жүз санның квадраттарын жазуға бір қысқа үзінді көрсетейік:
REWRITE (F) ;
FOR I:=1 TO 100 DO
BEGIN
J:=SQR(I) ;
WRITE (F, J) ;
END;
Енді мүшелері бұрынырақ анықталған белгілі бір файлдарды, олардың болса және соларды оқу үшін қолдану қызметін RESET және READ стандарт іс-қимылдары атқарады.
READ (F, V) операторын қолданғанда екі түрлі іс-қимыл жүргізіледі. Біріншісі - терезе көрсетіп тұрған F файлының мүшесін V айнымалысына тағайындайды, екіншісі - терезенің файлдың келесі нүктесіне жылжуы. Кейбір есептерде осы екі іс-қимылды жеке дара орындаған ыңғайлырақ. Сол үшін аралық (буферлік) айнымалыны қолданады. F файлды оқу режимінде орналассын, сонда F жазылуын аралық айнымалы дейді.
Осындай аралық айнымалыны алдын ала сипаттамай-ақ тікелей қолдана беруге болады. Оқу режимінде F айнымалысының мәні ретінде терезеде көрсетілген файлдың мүшесі алынады. RESET(F) операторы орындалу кезінде тек қана терезе файл басына орналаспай, сонымен бірге файлдың бірінші файлдық F айнымалыға тағайындау қызметі жүреді.
Барлық файлдық түрлердің ішінде ең көп кездесетін текстік файлдар. Көп қолданылатын болғандықтан TEXT атты стандартты түр ретінде қабылданған. Жалпы былай жазылады:
TYPE T= FILE OF CHAR;
текст деп отырғанымыз, белгілі бір литерлік белгілердің жиыны. Кейде файлға енетін литерлік тізбекті бөліп, бөлшектеп жазуға тура келеді, былайша айтсақ, қатарларға бөлеміз. Осы қатарлар әртүрлі ұзындықта болып келуі мүмкін.
Қатар бос болатын да жағдай болады. Әрбір қатар соңына арнайы басқарушы литерлік белгі қойылада. Оны «қатар соңы» деп атайды. Бірақ литер CHAR түріне енбеген және қатар соңын білдіретін ешбір кескінде белгісі жоқ. Сол қызметті EOLN функциясы атқарады. Егер де қатардың соңын көрсететін S файлының белгілі бір мүшесіне терезе көрсетіп тұрса, онда EOLN(S) функциясы ақиқат (TRUE) мәнді қабылдайды, кері жағдайда жалған (FALSE) мәнді қабылдайды.
2. 2 Текстік файлдарға қолданылатын функциялар мен процедуралар
Текстік файлдарға қолданылатын функциялар мен процедуралар.
APPEND - дискіде орналасқан файлды іске қосуға ашатын процедура.
EOLN - қатар соңын анықтайтын функция
FLUSH - шығару файл буферін тазарту процедурасы.
READLN - процедурасы READ процедурасының қызметін орындап, бірақ курсорды келесі қатардың басына орналастырады.
SEEKEof - файл соңын анықтайтын функция.
SeekElon - қатар соңын анықтайтын функция.
SETTextBuf - текстік файлға енгізу-шығару буферін белгілеу процедурасы.
WRITE - текстік файлға бір немесе бірнеше мәндерді жазуға арналған процедура.
WRITELN - процедурасы WRITE процедурасының қызметін қайталап, қатар соңы белгісін қояды.
Типтелмеген файлдарға қолданылатын функциялар мен процедуралар.
BlockWrite -айнымалыдан файлға бір немесе бірнеше жазбаларды жазу процедурасы.
BlockRead - файлдан айнымалыға бір немесе бірнеше жазбаларды оқыту процедурасы.
Текстік файлдан басқа файлдарға файлдық айнымалылардың барлығына келесі процедуралар мен функцияларды қолдануға болады:
FileSize - ағымдағы файл көлемін береді.
FilePos - файлдың ағымдағы позициясын береді.
Trancate - файл көлемін берілген файлдың позициясына дейін қысқартады.
Файлдарды өңдеу процедуралары.
GetFatt - файл атрибуттарын беру процедурасы.
SetFatt - файл атрибуттарын орнату процедурасы.
FindFirst - берілген бумадан жазба бойынша сәйкес келетін файл атауын іздеу процедурасы.
FindNext - берілген бумадан FindFirst процедурасы арқылы табылған файл атауынан кейінгі келесі сәйкес келетін файл атауын іздеу процедурасы.
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz