Жоспар:
Кіріспе..........................................................................................................................4
Негізгі бөлім................................................................................................................5
Класс.............................................................................................................................5
Функция........................................................................................................................9
Файл.............................................................................................................................15
Қорытынды..................................................................................................................16
Кіріспе
Курстық жұмыс тапсырамасы С++ жоғарғы деңгейлі программалау тілінде жазылған. Барлық программаға қойылатын негізгі талап – олардың спецификациясы толық үйлесімде түрде жұмыс істеуі және қолданушының кез келген іс-әрекеттеріне дұрыс жауап қайтаруы болып табылады. Сонымен қатар, программа көрсетілген мерзімде шығуы керек және қажетті өзгертулер мен толықтыруларды жедел енгізуге мүмкіндік беруі тиіс. Басқаша айтқанда, программалар сапасының қазіргі кездегі критерийлері – бұл, алдымен, сенімділік, сонымен қатар программаны жазып бітіру жұмысы мен оны сүйемелдеуді дұрыс жоспарлау. Осындай мақсаттарға қол жеткізу үшін программа құрылымы қарапайым болып, жеңіл оқылуы және жылдам өзгертілуі қажет. Курстық жұмыс тапсырмасын, осы талаптарға сай орындалуын қарастырдық. Тапсырмаға қойылған талап бойынша «Магазин» атты класс арқылы деректер базасын құру қажет болатын. Енгізілген деректер файлда сақталуы тиіс және файлдан қайта оқылуы қажет. Қолданушы керекті әдісті қолдануы үшін программаның басында таңдау менюі шығуы тиіс. Бағдарламада деректермен жасалатын бірнеше операция болады:
§ мәліметтерді енгізу
§ енгізілген деректерді толығымен шығару
§ тауар аты бойынша алфавиттік реттеу
§ тауар аты бойынша толық ақпарат алу
§ ізделінген тауар деректер қорында болмаса,ескерту шығару
§ дүкендегі жалпы тауар бағасын есептеу
Программада « Магазин » атты кластың өрістері:
· тауар аты – жолдық тип char name [20];
· тауар бағасы–бүтін тип int baga [15];
· тауар саны – бүтін тип int sany [15].
Программада қолданылатын Engiz(), Shygar(), Izdeu(), Sort() және Esep() функциялары кластың ішінде болуы қажет және бір-бірімен жүйелі түрде үйлесімді қызмет атқаруы тиіс. Функция жайлы, олардың программадағы қызметі туралы толығырақ негізгі бөлімде сипатталады. Қорыта келгенде C++ тілінде деректер базасымен жұмыс жасаймыз.
4
Негізгі бөлім
Қолданылған айнымалыларды сипаттау
Айнымалы |
Сипаты, атқаратың қызметі, типі |
Magazine |
класстын аты |
name[20]; |
Тауар атын сипаттайтын өріс, жолдық типті, ұзындығы 20 орын |
sany; |
Тауар санын сипаттайтын өріс, бүтін типті |
bagasy; |
Тауар санын сипаттайтын өріс,бүтін типті |
b |
Тауардың жалпы құны меншіктелетін бүтін типті айнымалы |
m |
Менюда орындалатын программа ретін көрсету үшін қолданылатын бүтін типті |
a |
Есепте тауар жалпы бағасы меншіктелген, бүтін типті |
Класты сипаттау
Класс қолданушы анықтайтын мәліметтердің абстрактылы типі болып табылады, ол мәліметер және олармен жұмыс істеуге арналған функциялар түрінде берілген шынайы объектінің үлгісін бейнелейді.
Класс мәліметтері өрістер (құрылым өрістеріне ұқсас), ал класс функциялары әдістер деп аталады. Өрістер мен әдістерді класс элементтері деп атайды. Алғашқы қарастырыстырудағы класс сипаттамасы төмендегідей түрде болады:
class <атауы>{
[ private: ]
<жасырын элементтерді сипаттау>
Public:
<қолжетімді элементтерді сипаттау>
}; //сипаттау нүктелі үтірмен аяқталады
5
Мысалдағы private және public спецификаторлары класс элементтерінің көрінуін басқарады. Private түйінді сөзінен кейін сипатталған элементтер класс ішінде ғана көрінеді. Келісім бойынша, класта қатынас құрудың осы түрі қабылданған. Класс интерфейсі public спецификаторынан кейін сипатталады. Кез келген спецификатордың әрекеті келесі спецификаторға дейін немесе класс соңына дейін сақталады. Бірнеше private және public секцияларын беруге болады, олардың жазылу реттілігі маңызды емес.
Класс өрістері:
· oсы класс типінен басқа кез келген типті қабылдай алады (алайда, осы класқа нұсқауыш немесе сілтемелер болуы да мүмкін);
· const модификаторы көмегімен сипатталуы мүмкін, мұндайда олар тек бір рет қана инициалданады (конструктор арқылы) және өзгеруі мүмкін емес;
· static модификаторының көмегімен сипатталуы мүмкін, бірақ auto, extern және register модификаторлары арқылы жазылмайды.
Сипаттау кезінде өрістерді инициалдауға тыйым салынған.Кластар ауқымды (кез келген блоктан тыс жарияланған) және жергілікті (блок ішінде, мысалы, функцияның немесе басқа кластың ішінде жарияланған) болуы мүмкін.
Төменде жергілікті (локалды) кластың кейбір ерекшеліктері көрсетілген:
· жергілікті кластың ішінде өзі сипатталған аймағындағы типтерді, статикалық (static) және сыртқы (extern) айнымалыларды, сыртқы функциялар мен тізбелер элементтерін қолдануға болады; осы аймақтағы автоматты айнымалыларды қолдануға тыйым салынған;
· жергілікті кластың статикалық элементтері болмайды;
· осы кластың әдістерін тек кластың ішінде сипаттауға болады;
· егер бір класс басқа класс ішінде кірістірілсе, олардың бір-бірінің элементтеріне қол жеткізе алатын ерекше мүмкіндіктері болмайды, оларға тек ортақ ережелерге сәйкес түрде пайдаланыла алады.
Мысал: курстық жұмыс барысында «Магазин» атты класын құрдық. Бұл үшін оның қасиеттері (тауар саны, тауар аты, тауар саны, тауар бағасы ) мен тәртіптерін беруіміз керек.
class Magazine {
private:
char name[20];
int sany;
int bagasy;
};
Private спецификаторында біз негізгі типтермен қатар функцияларды таңдау операторы switch (n) арқылы менюды шығарамыз.
6
Қолданушыға программаны аяқтауға және жұмыс әрекетін таңдау мүмкіндігін беріп отырмыз. Цикл арқылы әр функция орындалғаннан кейін switch (n) операторы көмегімен менюді қайтадан шығарамыз.Негізінен switch(ауыстырғыш) операторы есептеу процесін бірнеше бағытта тармақтауға арналған. Программа коды төмендегідей:
switch (n){
case 1 : m.Engiz(); break;
case 2 : m.Shygar(); break;
case 3 : m.Sort(); break;
case 4 : m.Izdeu(); break;
case 5 : m.Esep(); break;
case 6 : cout<<"Kosh bol";
default: printf("\nKate engizilgen/tagy engizip kor");
}
1-сурет. Меню. Switch() операторы көмегімен жасалған
7
2-сурет.Программаның негізгі блок схемасы
8
class Magazine {
public: //Бұл бөлімде программалауда қолданылатын функциялар тізімі жазылған
void Engiz();
void Shygar();
void Sort();
void Izdeu();
void Esep();
};
Кластың барлық әдістері жасырын өрістерді тікелей пайдалана алады, басқаша айтқанда, класс функцияларының тұлғалары класс элементтерінің private көріну аймағына кіреді.
Әрбір класс құрамында атауы класс атауымен бірдей болып келетін кем дегенде бір әдіс болады. Ол конструктор деп аталады және класс объектісін құру кезінде автоматты түрде шақырылады. Конструктор объектіні инициалдау үшін қажет. Конструкторды автоматты түрде шақыру инициалданбаған айнымалыларды пайдалануға байланысты туындайтын қателердің алдын алуға мүмкіндік береді.
Функция
Функцияларды жариялау және анықтау
Функция – бұл белгілі бір аяқталған әрекетте орындайтын сипаттамалар мен операторлардың атау берілген тізбегі. Функция параметрлерді қабылдап, мән қайтара алады.
С++ тіліндегі кез келген программа функциялардан тұрады, олардың бірі міндетті түрде main деп аталуы тиіс (программаның орындалуы осы функциядан басталады). Функцияны шақырған кезде ол орындала бастайды. Кез келген функция жариялануы және анықталуы тиіс. Функция да басқа шамалар сияқты бірнеше рет жариялануы мүмкін, бірақ ол бір-ақ рет анықталуы тиіс. Компилятор функцияны шақырудың дұрыстығын тексеруі үшін программа мәтінінде функцияны жариялау оны шықырудың ерте орналасуы тиіс.
Функцияны жариялау оның атын, қайтарылатын мәнінің типін және оған берілетін параметрлер тізімін тағайындайды. Функцияны анықтауда, оны жариялаумен қатар, функция тұлғасы қамтылады, ол жүйелі жақшалар ішіндегі операторлар мен сипаттамалар тізбегінен тұрады:
[ класс ] типі атауы ([параметрлер_тізімі ]) [throw
( аластамалар ) ] { функция тұлғасы }
Функцияны анықтауды құрама бөліктерін қарастырайық.
9
o Міндетті түрде қажет етілмейтін класс модификаторының көмегімен, extern және static түйінді сөздерін қолдана отырып, функцияның көріну аймағын айқын түрде көрсетуге болады.
· Extern – функцияның программаның барлық модульдерінде ауқымды, яғни глобалды (келісім бойынша) түрде көрінуі;
· Static – функцияның тек өзі анықталған модуль шеңберінде көрінуі.
o Функцияның қайтаратын мәнінің типі жиым мен функциядан (бірақ жиымға немесе функцияға нұсқауыш бола алады) басқа кез келген тип түрінде болуы мүмкін. Егер функция оны шақырған программаға ешқандай мән қайтармайтын болса, онда void типі көрсетіледі.
Бір функцияның анықталуындағы, жариялануындағы, шақырылуындағы параметрлердің типтері мен жазылу реттілігі бір-бірімен сәйкес келуі керек. Курстық жұмыста біз бірнеше функцияны атқаратын қызметіне қарай бөліп қолдандық. Қолданылған функциялар төменде:
· Void Engizu () фунциясында қолданушы тауар саны және оның аты, саны, бағасы жайлы мәліметер енгізіледі. Ол үшін функция ішіне алдымен тауар санын енгізімеміз. Тауар саны белгілі болғандықтан for операторының көмегімен ( for (int i(0); i<b;i++)) және деректерді енгізу үшін файлды ашып (ifstream F; F. Open ("Magazine.txt");), енгізуді бастаймыз, біздің жағдайда ол тауар аты, саны және бағасы:
Енгізіп болғаннан кейін , сәйкесінше fout.close(); деп файлды жабамыз.
3-сурет. Тауарды файлға енгізу процесі
10
Engiz() функциясының блок схемасы
11
· Void Shygar () функциясы енгізілген барлық мәлеметтерді экранға шығарады. Ол үшін файлды ашып (ifstream F; F.open("Magazine.txt");), тауар атын, санын және бағасын шығарамыз. Функция орындалып болғаннан кейін, міндетті түрде файлды жабамыз F.close();
Shygar() функциясының блок схемасы
12
4-сурет. Енгізілген тауарларды толығымен шығаруы.
Void Izdeu () функциясы тауардың аты бойынша файлдан мәлеметті іздеп, оны экран бетіне шығарады. Ізделініп отырған тауар мәліметін шығару үшін if, for операторының көмегімен қолданушы жазған тауар атының файлдағы тауардың аттымен салыстырамыз. Сәйкес келсе, сол тауар жайлы ақпаратты шығарамыз:
5-сурет. Аты бойынша ізделінген тауар жайлы ақпарат
13
· Void Sort () функциясы енгізілген тауар мәліметтерін алфавит бойынша реттейді. Ол үшін алдымен файлды ашамыз (ifstream F; F.open("Magazine.txt");), for операторы арқылы барлық тауарлардың аттарын бір-бірімен салыстырып, сұрыптау жасаймыз. Сұрыптау жасалғаннан кейін тауар жайлы ақпаратты кезегімен шығарамыз.
· Void Esep(). Курстық жұмыстың негізгі есебі, тауарлардың жалпы құнын анықтау болатын.Ол үшін тауар бағасы мен санына бүтін типті жаңа айнымалы енгіземіз. Программа коды барлық товар санын бағасына көбейтіп, қосады:
int a,b;
a=0;b=0;
for(int j=0;j<i;j++){
a=m[j].sany*m[j].bagasy;
b=b+a;
} cout<<"Magazin zhalpy kuny "<<b; }
6-сурет. Программаның дүкендегі тауардың жалпы құнын есептеуі және жұмыстың тоқтатылуы
14
Файл
Файл деп тізбектеле орналасқан жеке компоненттерден тұратын дискідегі біртектес мәліметтердің реттелген жиынын айтады. Файл - белгілі бір мақсатқа жету жолында өзіндік ұйымдастыру жолымен бір-бірімен логикалық байланыста құрастырылған мәліметтердің (жазбалардың) атаулы жиыны.
Курстық жұмыста біз файлды мәліметтерді енгізу, сақтау үшін қолданамыз. Ол үшін алдымен стандартты кітапханалар тізіміне файл кітапханасын #include <fstream> қосамыз және деректер сақталынатын текстік құжатты командалық кодмен ашамыз (Magazine.txt атты текстік құжат құрылды)
ofstream fout;
fout.open("Magazine.txt",ios::app);
Функцияның орындалу барысында деректерді енгізу үшін файлды ашуымыз керек және сәйкесінше функция орындалып біткеннен кейін файлды F.close(); командасымен міндетті түрде жабамыз.
7-сурет.Деректердің текстік файлда сақталуы
15
Қорытынды
Программалау технологиясы пәнінің курстық жұмысының тапсырмасы деректер базасымен жұмыс істеуге бағытталған. «Магазин» атты класс құрып, деректерді енгізу, шығару, реттеу, іздеу бұл негізгі тапсырмасы болса, қосымша есеп берілген болатын. Тапсырманы орындау мақсатында С++ жоғарғы деңгейлі программалау тілін пайдаландық. С++ тілінің арқасында берілген мәліметтер типтеріне бақылауды күшейтуге мүмкіндік алдық. С++ тілінің ең маңызды табысы обьектіге бағдарланған бағдарламалау тілі екендігінде.Оқу процесінде С++ жоғарғы деңгейлі программалау тіліндегі операторларды, класс, функция, файлдармен жұмыс жасауды, оларды программаға қосуды, атқаратын қызметтерін, қасиеттерін жекелеп өткен болатынбыз. Курстық жұмыс барысында программаға кітапхана қосудан бастап, толықтай бір программа жаздық. Ол үшін жоғарыда айтылған С++ тілінің қызметтерін қолдандық. Нақтырақ айтсақ, программаның дұрыс жұмыс істеуін жүзеге асыратын басты функция main () қолданылды. Switch () операторы арқылы менюді шығарып, қолданушыға жұмыстың ретін таңдауға мүмкіндік бердік. Switch () операторында Engiz(), Shygar(), Sort(), Izdeu(), Esep() атты функциялар орналасқан. Бұл функциялар, тапсырманы курстық жұмысқа қойылған талаптарға сай орындалуы үшін құрылған. Әр қайсысы бір-бірімен байланыса отырып, ортақ жұмыс атқарады. Мысалы, Engiz () функциясының мақсаты деректерді файлға енгізу болса, Shygar () функциясы сәйкесінше енгізілген деректерді файлдан шығарып береді. Енгізілген деректерге реттеу және іздеу функцияларын қоса отырып, біз функция жайлы біліктілігімізді арттырдық. Файл - деректер базасымен жұмыс жасаған кезде маңызды құжат болып табылады және программа басында файл кітапханасын қосып, әр функция басында командамен файлды ашып, өзгеріс енгізгеннен кейін қайта жабу өте маңызды екенін ескердік. Нақтырақ айтсақ, класс типінде функцияларды қолданып, деректерді файлға енгізіп, сақтап және шығардық. Енгізілген деректерден файл ішінен тауардың аты бойынша іздеп, табылған тауардың анықтамасын шығарып, тауарларды алфавиттік ретпен орналастырдық. Курстық жұмыс барысындда алған нәтижелерге сүйене отырып келесідей тұжырымдаманы шығаруға болады. Деректерді қағаз жүсінде сақтап, реттеуге қарағанда, жаңа технологиярдың қол жетерлік қарапайым мүмкіншілігін пайдаланып, жұмыс барысын тиімді бағытта жеңілдетуге болады. Бағдарлама арқылы жеңілдетілген жұмыс уақытты үнемдейді. Жеңілдетілген жұмыс және үнемделген уақыт жақсы нәтижелерге жеткізеді.
16
0 комментариев