Курсовая работа по предмету "Программирование, программное обеспечение, СУБД"


Двунаправленный динамический список

Казанский Государственный Технический Университет им. А. Н. Туполева Курсовая работа по дисциплине: Алгоритмические языки и программирование. Тема: “Двунаправленный динамический список “. Выполнил: студент гр. **** ******** *. *. Проверил: Ст. преподаватель Каф. ПМИ ******** *. *. Оценка: отлично Казань 2001 Задание
Реализовать базу данных на основе двунаправленного динамического списка, содержащего фамилию, имя, отчество человека, дату его рождения и знак зодиака по западному календарю.
В программном изделии предусмотреть работу со списком, которая включает в себя: Ввод данных; Удаление данных из списка; Вывод списка на дисплей; Сортировку списка по фамилии.
Написать программное изделие на двух языках программирования: C, Pascal. Описание алгоритма программы со структурой данных
Взаимодействие программы с пользователем должно быть реализовано по следующему алгоритму: Выбор из главного меню одной из следующих функций: а) Добавить; б) Удалить; в) Просмотреть; г) Сортировать; д) Выход.
После выполнения каждой функции необходимо обеспечить возврат в главное меню и выбор любой другой функции. При выборе функции “Выход” работа программы завершается.
При выборе функции “Добавить”, выделяется память для хранения данных, затем пользователю предлагается ввести фамилию, имя, отчество и дату рождения человека, эти данные заносятся в память, после чего автоматически определяется знак зодиака по западному календарю и заносится в память.
При выборе функции “Удалить”, проверяется наличие данных в списке. Если список пуст, на дисплей выводится соответствующее сообщение; иначе пользователю предлагается ввести фамилию, имя и отчество человека, после чего происходит его поиск в списке. Если данные на человека внесены в список, то происходит удаление этих данных и освобождение памяти; иначе на дисплей выводится надпись об их отсутствии. При выборе функции “Просмотреть”, поверяется наличие данных в списке. Если данные отсутствуют, на дисплей выводится соответствующее сообщение; иначе выводится таблица, содержащая фамилию, имя, отчество, дату рождения человека и его знак зодиака по западному гороскопу.
При выборе функции “Сортировать”, происходит сортировка списка по фамилии. Если в списке встречаются две одинаковые фамилии, тогда сравниваются имена; при совпадении имён сравниваются отчества. Описание программы
Для реализации динамического списка в программе применён тип указателей, указывающий на запись ”Inform”, содержащую фамилию ”fam”, имя ”name”, отчество ”fanem”, день рождения ”bethday”, знак зодиака ”zodiak” и указатели на следующий ”next” и предыдущий ”prev” элементы списка.
С помощью этого типа ”Ukazat” описаны переменные: “temp” – для хранения указателя на текущий элемент; “first” – для хранения указателя на первый элемент в списке; “cut” –для хранения на последний элемент в списке. Переменная “ch” используется для выбора процедуры; “s1”, “s2”, “n”– для вычисления знака зодиака; “m” – для проверки условия, при сортировке; “ffam”, “fname”, “ffanem” –для временного хранения фамилии, имени, отчества, при удалении элемента из списка.
Программа начинает выполняться с присвоения указателю на первый элемент (first) значения “nil”. После этого пользователю предлагается выбрать действие: “1-Добавить”, “2-Удалить”, “3-Просмотреть”, “4-Сортировать”, “0-Выход”. В зависимости от того, какое действие выберет пользователь, начнёт выполняться та или иная процедура, или произойдёт выход из программы. Это реализовано с помощью операции выбора “case”. После выполнения некоторой процедуры пользователю вновь предлагается выбрать одно из вышеуказанных действий, пока не будет выбран выход из программы. Это реализовано с помощью цикла “repeat until”. Процедура добавления “Dobav”.
Сначала выделяется память под текущий элемент (new(temp)), затем в этот элемент записывается фамилия, имя, отчество и дата рождения. По дате рождения вычисляется знак зодиака. Для этого в s2 записывается число рождения, а в s1 первые три буквы месяца рождения, затем, путём сравнения этих переменных с числами и частями слов находится соответствующий знак зодиака, и заносится в текущий элемент. После ввода информации, проверяется наличие элементов в списке. Если они отсутствуют, то в текущем элементе, указателям на следующий (next) и предыдущий (prev) элементы присваивается значение “nil”; а указатель на сам элемент (temp) присваивается указателям на первый (first) и последний (cut) элементы в списке. Если список не пустой, то в текущем элементе, указателю на следующий элемент (next) присваивается значение “nil”, а указателю на предыдущий элемент (prev) присваивается указатель на последний элемент (cut) в списке; а указателю на следующий элемент (next) последнего элемента в списке и указателю на последний элемент (cut) присваивается указатель на текущий элемент (temp). После чего процедура добавления завершается. Процедура удаления “Udal”.
В этой процедуре сначала проверяется наличие элементов в списке. Если список пуст, то выводится сообщение: “Таблица пуста”. Если же список содержит элементы, то пользователю предлагается ввести фамилию, имя и отчество удаляемого, записывая их в ffam, fname, ffanem соответственно. После происходит поиск удаляемого элемента в списке. Это реализовано с помощью цикла, который выполняется, пока элемент не найден или не просмотрен весь список. Если искомый элемент отсутствует, то выводится сообщение: “Такого нет”. Если же искомый элемент найден, то текущий указатель (temp) показывает на него, и происходит его удаление.
Если указатели на первый (first) и последний (cut) элементы не равны, то происходит поиск местонахождения элемента в списке. Если внутри текущего элемента указатель на предыдущий элемент (prev) равен nil, тогда указателю на предыдущий элемент (prev) внутри следующего за текущим элементом присваивается указатель на предыдущий элемент внутри текущего, а указателю на первый элемент (first) в списке присваивается указатель на следующий элемент. Если внутри текущего элемента указатель на следующий элемент (next) равен nil, тогда указателю на следующий элемент (next) внутри предыдущего перед текущим элементом присваивается указатель на следующий элемент внутри текущего, а указателю на последний элемент (cut) в списке присваивается указатель на предыдущий элемент. Если текущий элемент оказался“внутри”списка, тогда указателю на следующий элемент (next) внутри предыдущего перед текущим элементом присваивается указатель на следующий элемент внутри текущего, а указателю на предыдущий элемент (prev) внутри следующего за текущим элементом присваивается указатель на предыдущий элемент внутри текущего. Если же указатели на первый (first) и последний (cut) элементы равны, то указателю на первый элемент в списке (first) присваивается nil. После некоторых преобразований внутри списка происходит освобождение памяти текущего элемента (dispose(temp)). На этом процедура удаления завершается. Процедура просмотра “Prosm”.
Эта процедура выполняет вывод содержимого списка в виде таблицы. Сначала на дисплей выводится шапка таблицы, содержащая: “Фамилия Имя Отчество”, “Дата рождения” и “Знак зодиака”. После вывода шапки проверяется наличие элементов в списке. Если список содержит элементы, то происходит их построчный вывод. Это реализовано с помощью цикла, который выполняется, пока указатель на текущий элемент (temp) не переберёт все элементы списка. В цикле вычисляется длина фамилии, имени и отчества, после чего они выводятся на дисплей, а за ними выводятся дата рождения и знак зодиака; затем указателю на текущий элемент (temp) присваивается указатель на следующий за ним элемент. Если список окажется пуст, то выводится сообщение: “Таблица пуста”. После завершения цикла или вывода сообщения, процедура просмотра завершается. Процедура сортировки “Sortir”.
Для этой процедуры применена локальная переменная “tmp” типа “ukazat”. Здесь сначала проверяется наличие элементов в списке.
Если список содержит элементы, то переменной “m” присваивается значение “true”, затем выполняется цикл, пока “m=true”. В цикле переменной “m” присваивается значение “false”, указателю на текущий элемент (temp) присваивается указатель на первый элемент в списке (first), и выполняется вложенный цикл, пока указатель на следующий элемент внутри текущего не равен “nil”. В этом цикле проверяется какой элемент больше.
Если текущий элемент окажется больше чем следующий за ним элемент, тогда переменной “m” присваивается значение “true”, и проверяется местонахождение текущего элемента в списке. Если он окажется в начале списка, то указателю на первый элемент в списке (first) присваивается указатель на следующий элемент за текущим, а иначе указателю на следующий элемент (next) внутри предыдущего перед текущим элементом присваивается указатель на следующий элемент внутри текущего. Если же текущий элемент окажется в конце списка, тогда указателю на последний элемент в списке присваивается указатель на текущий элемент, а локальной переменной “tmp” присваивается значение “nil”, а иначе указателю на предыдущий элемент (prev) следующего элемента после следующего за текущим элементом присваивается указатель на текущий элемент, а локальной переменной (tmp) присваивается указатель на следующий элемент после следующего за текущим элементом. После выяснения местоположения и выполнения некоторых команд, указателю на следующий элемент после следующего за текущим элементом присваивается указатель на текущий элемент, указателю на предыдущий элемент следующего за текущим элементом присваивается указатель на предыдущий элемент перед текущим; а внутри текущего элемента указателю на предыдущий перед текущим присваивается указатель на следующий элемент за текущим, и указателю на следующий элемент за текущим присваивается локальная переменная “tmp”. Если же текущий элемент окажется не больше чем следующий за ним элемент, тогда указателю на текущий элемент (temp) присваивается указатель на следующий за ним элемент (next). На этом выполнение вложенного цикла завершается. Переменной “m” снова присваивается значение “false”, а указателю на текущий элемент (temp) присваивается указатель на последний элемент в списке (cut), и выполняется ещё один вложенный цикл, пока указатель на предыдущий элемент внутри текущего не равен “nil”. В этом цикле проверяется какой элемент меньше. Если текущий элемент окажется меньше чем предыдущий перед ним элемент, тогда переменной “m” присваивается значение “true”, и проверяется местонахождение текущего элемента в списке. Если он окажется в конце списка, то указателю на последний элемент в списке (cut) присваивается указатель на предыдущий элемент перед текущим, а иначе указателю на предыдущий элемент (prev) внутри следующего за текущим элементом присваивается указатель на предыдущий элемент внутри текущего. Если же текущий элемент окажется в начале списка, тогда указателю на первый элемент в списке присваивается указатель на текущий элемент, а локальной переменной “tmp” присваивается значение “nil”, а иначе указателю на следующий элемент (next) предыдущего элемента перед предыдущим до текущего элемента присваивается указатель на текущий элемент, а локальной переменной (tmp) присваивается указатель на предыдущий элемент перед предыдущим до текущего элемента. После выяснения местоположения и выполнения некоторых команд, указателю на предыдущий элемент перед предыдущим до текущего элемента присваивается указатель на текущий элемент, указателю на следующий элемент предыдущего перед текущим элементом присваивается указатель на следующий после текущего; а внутри текущего элемента указателю на следующий элемент присваивается указатель на предыдущий элемент, и указателю на предыдущий элемент присваивается локальная переменная “tmp”. Если же текущий элемент окажется не меньше чем предыдущий перед ним элемент, тогда указателю на текущий элемент (temp) присваивается указатель на предыдущий перед ним элемент (prev). На этом выполнение вложенного цикла завершается.
Если во время поверки наличия элементов в списке окажется, что он пуст, то выводится сообщение: “Таблица пуста”.
После завершения цикла или вывода сообщения, процедура сортировки завершается.
Листинг программного изделия на языке программирования “С”. #include #include #include #include typedef struct inform

{char name[15], fam[15], fanem[15], b_day[3], b_manth[10], b_year[5], zodiak[8]; struct inform *next, *prev; }; struct inform *first, *cut, *temp; int n, i; char s1[10], s2[10];
/*************************************************************/ void Dobav ( ) { clrscr();
if ((temp=(struct inform*)malloc(sizeof(struct inform)))==NULL)exit(1); printf("Введите фамилию: "); scanf("%s", (*temp). fam); printf("Введите имя: "); scanf("%s", (*temp). name); printf("Введите отчество: "); scanf("%s", (*temp). fanem); printf("Введите день рождения: "); scanf("%s", (*temp). b_day); printf("Введите месяц рождения: "); scanf("%s", (*temp). b_manth); printf("Введите год рождения: "); scanf("%s", (*temp). b_year); strcpy(s2, (*temp). b_day); strncpy(s1, (*temp). b_manth, 3); strcpy((*temp). zodiak, " "); if (strcmp(s1, "апр")==0) if (strcmp(s2, "21") else strcpy((*temp). zodiak, "телец"); if (strcmp(s1, "мая")==0) if (strcmp(s2, "21") else strcpy((*temp). zodiak, "близнецы"); if (strcmp(s1, "июн")==0)
if (strcmp(s2, "22") else strcpy((*temp). zodiak, "рак"); if (strcmp(s1, "июл")==0) if (strcmp(s2, "23") else strcpy((*temp). zodiak, "лев"); if (strcmp(s1, "авг")==0) if (strcmp(s2, "24") else strcpy((*temp). zodiak, "дева"); if (strcmp(s1, "сен")==0) if (strcmp(s2, "24") else strcpy((*temp). zodiak, "весы"); if (strcmp(s1, "окт")==0) if (strcmp(s2, "24") else strcpy((*temp). zodiak, "скорпион"); if (strcmp(s1, "ноя")==0)
if (strcmp(s2, "23") else strcpy((*temp). zodiak, "стрелец"); if (strcmp(s1, "дек")==0) if (strcmp(s2, "22") else strcpy((*temp). zodiak, "козерог"); if (strcmp(s1, "янв")==0) if (strcmp(s2, "21") else strcpy((*temp). zodiak, "водолей"); if (strcmp(s1, "фев")==0) if (strcmp(s2, "21") else strcpy((*temp). zodiak, "рыбы"); if (strcmp(s1, "мар")==0) if (strcmp(s2, "21") else strcpy((*temp). zodiak, "овен"); if (first==NULL) { (*temp). next=NULL; (*temp). prev=NULL; first=temp; cut=temp; } else { (*temp). next=NULL; (*temp). prev=cut; (*cut). next=temp; cut=temp; } }
/*************************************************************/ void Udal ( ) { char ffam[10], fname[10], ffanem[10]; clrscr(); if (first==NULL) printf("Таблица пуста\n"); else { printf("Введите фамилию: "); scanf("%s", ffam); printf("Введите имя: "); scanf("%s", fname); printf("Введите отчество: "); scanf("%s", ffanem); temp=first;
while((strcmp(ffam, (*temp). fam) || strcmp(fname, (*temp). name) || strcmp(ffanem, (*temp). fanem)) && temp! =NULL) temp=(*temp). next; if (temp==NULL) printf("Нет такого"); else { if (first! =cut) if ((*temp). prev==NULL) { (*(*temp). next). prev=(*temp). prev; first=(*temp). prev; } else if ((*temp). next==NULL) { (*(*temp). prev). next=(*temp). next; cut=(*temp). prev; } else { (*(*temp). prev). next=(*temp). next; (*(*temp). next). prev=(*temp). prev; } else first=NULL; free(temp); } } scanf("%s"); }
/*************************************************************/ void Prosm ( ) { clrscr(); if (first==NULL) printf("Таблица пуста"); else {
printf("Фамилия Имя Отчество Дата рождения"); printf(" ‡Знак зодиака");
printf("\n--------------------------------------------------------------------------------"); temp=first; do {
n=strlen((*temp). fam)+strlen((*temp). name)+strlen((*temp). fanem); printf("\n%s %s %s ", (*temp). fam, (*temp). name, (*temp). fanem); i=1; while (i { printf(" "); i++; } printf("%s ", (*temp). b_day); printf("%s ", (*temp). b_manth); printf("%s ", (*temp). b_year);
n=n+i+strlen((*temp). b_day)+strlen((*temp). b_manth)+strlen((*temp). b_year); i=1; while (i { printf(" "); i++; } printf("%s", (*temp). zodiak); temp=(*temp). next; } while (temp! =NULL); } scanf("%s"); }
/*************************************************************/ void Sortir ( ) { struct inform *tmp; int m; clrscr(); if (first! =NULL) { m=1; while(m==1) { m=0; temp=first; while((*temp). next! =NULL) { if((strcmp((*temp). fam, (*(*temp). next). fam)>0) || (strcmp((*temp). fam, (*(*temp). next). fam)==0) && (strcmp((*temp). name, (*(*temp). next). name)>0) || (strcmp((*temp). fam, (*(*temp). next). fam)==0) && (strcmp((*temp). name, (*(*temp). next). name)==0) && (strcmp((*temp). fanem, (*(*temp). next). fanem)>0)) { m=1; if (temp==first) first=(*temp). next; else (*(*temp). prev). next=(*temp). next; if ((*temp). next==cut) { cut=temp; tmp=NULL; } else { (*(*(*temp). next). next). prev=temp; tmp=(*(*temp). next). next; } (*(*temp). next). next=temp; (*(*temp). next). prev=(*temp). prev; (*temp). prev=(*temp). next; (*temp). next=tmp; } else temp=(*temp). next; } m=0; temp=cut; while((*temp). prev! =NULL) { if((strcmp((*temp). fam, (*(*temp). prev). fam) (strcmp((*temp). fam, (*(*temp). prev). fam)==0) && (strcmp((*temp). name, (*(*temp). prev). name) (strcmp((*temp). fam, (*(*temp). prev). fam)==0) && (strcmp((*temp). name, (*(*temp). prev). name)==0) && (strcmp((*temp). fanem, (*(*temp). prev). fanem) { m=1; if (temp==cut) cut=(*temp). prev; else (*(*temp). next). prev=(*temp). prev; if ((*temp). prev==first) { first=temp; tmp=NULL; } else { (*(*(*temp). prev). prev). next=temp; tmp=(*(*temp). prev). prev; } (*(*temp). prev). prev=temp; (*(*temp). prev). next=(*temp). next; (*temp). next=(*temp). prev; (*temp). prev=tmp; } else temp=(*temp). prev; } } } else printf("Таблица пуста"); scanf("%s"); }
/*************************************************************/ void main() { char ch; first=NULL; do { clrscr(); printf("Выберте действие\n1-Добавить\n2-Удалить\n"); printf("3-Просмотреть\n4-Сортировать\n0-Выход"); scanf("%d", &ch); switch(ch) { case 1: Dobav(); break; case 2: Udal(); break; case 3: Prosm(); break; case 4: Sortir(); break; } } while(ch); }
Листинг программного изделия на языке программирования “Pascal”. Program kursovik; uses crt; type Ukazat=^Inform; Inform=record fam: string[15]; name: string[15]; fanem: string[15]; bethday: string[21]; zodiak: string[8]; next: Ukazat; prev: Ukazat; end; var temp, first, cut: Ukazat; ch: char; s1, s2: string; n: integer; m: boolean; ffam, fname, ffanem: string[10]; Procedure Dobav; begin ClrScr; new(temp); write('Введите фамилию: '); readln(temp^. fam); write('Введите имя: '); readln(temp^. name); write('Введите отчество: '); readln(temp^. fanem); write('Введите дату рождения: '); readln(temp^. bethday); n: =1; s2: =copy(temp^. bethday, n, 1); while ((s2'9')) and (n begin inc(n); s2: =copy(temp^. bethday, n, 1); end; inc(n); s1: =copy(temp^. bethday, n, 1); if (s1>='0') and (s1 else s2: ='0'+s2; while ((s1'я')) and (n begin inc(n); s1: =copy(temp^. bethday, n, 1); end; s1: =copy(temp^. bethday, n, 3); temp^. zodiak: =' '; if s1='апр' then if s2 else temp^. zodiak: ='телец'; if s1='мая' then if s2 else temp^. zodiak: ='близнецы'; if s1='июн' then if s2 else temp^. zodiak: ='рак'; if s1='июл' then if s2 else temp^. zodiak: ='лев'; if s1='авг' then if s2 else temp^. zodiak: ='дева'; if s1='сен' then if s2 else temp^. zodiak: ='весы'; if s1='окт' then if s2 else temp^. zodiak: ='скорпион'; if s1='ноя' then if s2 else temp^. zodiak: ='стрелец'; if s1='дек' then if s2 else temp^. zodiak: ='козерог'; if s1='янв' then if s2 else temp^. zodiak: ='водолей'; if s1='фев' then if s2 else temp^. zodiak: ='рыбы'; if s1='мар' then if s2 else temp^. zodiak: ='овен'; if first=nil then begin temp^. prev: =nil; temp^. next: =nil; first: =temp; cut: =temp; end else begin temp^. next: =nil; temp^. prev: =cut; cut^. next: =temp; cut: =temp; end; end; {procedure} Procedure Udal; begin ClrScr; {1}if first=nil then begin writeln('Таблица пуста'); readln; end else begin {else1} write('Введите фамилию: '); readln(ffam); write('Введите имя: '); readln(fname); write('Введите отчество: '); readln(ffanem); temp: =first; while ((ffamtemp^. fam) or (fnametemp^. name) or (ffanemtemp^. fanem)) and (tempnil) do temp: =temp^. next; {2}if temp=nil then begin write('Такого нет'); readln; end else begin{else2} {3}if firstcut then {4}if temp^. prev=nil then begin temp^. next^. prev: =temp^. prev; first: =temp^. next; end else{4} {5}if temp^. next=nil then begin temp^. prev^. next: =temp^. next; cut: =temp^. prev; end else begin{else5} temp^. prev^. next: =temp^. next; temp^. next^. prev: =temp^. prev; end{else5} else {3} first: =nil; dispose(temp); end; {else2} end; {else1} end; {procedure} Procedure Prosm; begin ClrScr; temp: =first;

writeln('Фамилия Имя Отчество': 27, 'Дата рождения': 27, 'Знак зодиака': 20); write('________________________________________________________________'); if firstnil then begin while tempnil do begin
n: =length(temp^. fam)+length(temp^. name)+length(temp^. fanem); writeln(temp^. fam, ' ', temp^. name, ' ', temp^. fanem, temp^. bethday: 55-n, temp^. zodiak: 15); temp: =temp^. next; end; end else writeln('Таблица пуста': 40); readln; end; Procedure Sortir; var tmp: ukazat; begin ClrScr; if firstnil then begin m: =true; {0}while m=true do begin m: =false; temp: =first; while temp^. nextnil do begin{1} if (temp^. fam>temp^. next^. fam) or (temp^. fam=temp^. next^. fam) and (temp^. name>temp^. next^. name) or (temp^. fam=temp^. next^. fam) and (temp^. name=temp^. next^. name) and (temp^. fanem=temp^. next^. fanem) then begin{2} m: =true; if temp=first then first: =temp^. next else temp^. prev^. next: =temp^. next; if temp^. next=cut then begin cut: =temp; tmp: =nil; end else begin{3} temp^. next^. next^. prev: =temp; tmp: =temp^. next^. next; end; {3} temp^. next^. next: =temp; temp^. next^. prev: =temp^. prev; temp^. prev: =temp^. next; temp^. next: =tmp; end{2} else temp: =temp^. next; end; {1} m: =false; temp: =cut; while temp^. prevnil do begin{2. 1} if (temp^. fam (temp^. fam=temp^. prev^. fam) and (temp^. name (temp^. fam=temp^. prev^. fam) and (temp^. name=temp^. prev^. name) and (temp^. fanem begin{2. 2} m: =true; if temp=cut then cut: =temp^. prev else temp^. next^. prev: =temp^. prev; if temp^. prev=first then begin first: =temp; tmp: =nil; end else begin{2. 3} temp^. prev^. prev^. next: =temp; tmp: =temp^. prev^. prev; end; {2. 3} temp^. prev^. prev: =temp; temp^. prev^. next: =temp^. next; temp^. next: =temp^. prev; temp^. prev: =tmp; end{2. 2} else temp: =temp^. prev; end; {2. 1} end; {0} end else begin writeln('Таблица пуста'); readln; end; end; begin first: =nil; repeat ClrScr; writeln('Выберите действие: '); writeln('1-Добавить'); writeln('2-Удалить'); writeln('3-Просмотреть'); writeln('4-Сортировать'); writeln('0-Выход'); readln(ch); case ch of '1': Dobav; '2': Udal; '3': Prosm; '4': Sortir; end; until ch='0'; end.


Не сдавайте скачаную работу преподавателю!
Данную курсовую работу Вы можете использовать для написания своего курсового проекта.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем курсовую работу самостоятельно:
! Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ.
! Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу.
! Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться.
! План курсовой работы Нумерованным списком описывается порядок и структура будующей работы.
! Введение курсовой работы Что пишется в введении, какой объем вводной части?
! Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать.
! Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа.
! Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема.
! Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом.
! Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ.

Читайте также:
Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия.
Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта.
Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты.
Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести.
Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя.
Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика.

Сейчас смотрят :

Курсовая работа Кадры предприятия и производительность труда
Курсовая работа Анализ активов и пассивов бухгалтерского баланса
Курсовая работа Установки погружных центробежных насосов для добычи нефти из скважин
Курсовая работа Методы управления персоналом: административные, экономические, социально-психологические
Курсовая работа Лишение родительских прав
Курсовая работа Электроснабжение и электрообрудование насосной станции
Курсовая работа Аудит выпуска, отгрузки и реализации готовой продукции
Курсовая работа Духовно-нравственное воспитание младших школьников
Курсовая работа Особенности межличностного общения в подростковом возрасте
Курсовая работа Характеристика современных проблем и перспектив развития российского менеджмента
Курсовая работа Нетрадиционные уроки при преподавании технологии в школе
Курсовая работа Административное правонарушение
Курсовая работа Развитие рынка туризма в Республике Бурятия
Курсовая работа Жилищно-коммунальное хозяйство
Курсовая работа Разработка организационной структуры инновационного предприятия на примере ООО "Эльдорадо"