
- •Курсовой проект
- •Содержание
- •2.2 Выходные данные
- •3. Методы решения задач
- •3.1 Понятие сортировки
- •3.2. Обменная сортировка
- •3.3. Пузырьковая сортировка
- •4. Описание программы
- •4.1 Используемые функции
- •5. Методика отладки программы
- •6.4.1. Выполнение функции открытия (загрузки) существующих данных
- •6.4.2. Выполнение функции записи (сохранения) существующих данных
- •6.6 Завершения работы программы
6.4.1. Выполнение функции открытия (загрузки) существующих данных
Выполнение указанной функции возможно нажатием клавиши «6» клавиатуры.
6.4.2. Выполнение функции записи (сохранения) существующих данных
Выполнение указанной функции возможно нажатием клавиши «7» клавиатуры.
6.4.3. Выполнение функции дополнения данных.
Выполнение вышеуказанной функции программы осуществляется нажатием клавиши «1» на клавиатуре и последующим вводом информации о результатах студента, а также его ФИО и проходном балле.
6.4.4. Выполнение функции сортировки данных по заданным атрибутам.
При выполнении данной функции следует нажать клавишу «3» для перехода в подменю сортировки, и выбрать признак, по которому следует сортировать записи.
6.4.5. Выполнение функции вывода данных на экран.
Для выполнения данной функции программы следует нажать клавишу «5» клавиатуры.
6.4.6. Выполнение функции удаления данных.
Указанная функция выполняется при помощи нажатия клавиши «4» клавиатуры и последующего ввода ФИО студента с тем чтобы удалить запись о его результатах тестирования – для удаления записи.
6.4.7. Выполнение функции поиска данных.
Указанная функция выполняется при помощи нажатия клавиши «2» клавиатуры и последующего ввода ФИО студента с тем чтобы найти запись о его результатах тестирования.
6.5 Сообщения программы
Сообщения, выводимые в ходе работы программы, находятся в таблице 2.
Сообщения программы |
Тип сообщения |
Действия оператора |
Oshibka chteniya |
Информационное |
Не требуется |
Fail prochitan |
Информационное |
Не требуется |
Oshibka zapisi |
Информационное |
Не требуется |
Fail zapisan |
Информационное |
Не требуется |
Vvedite fio: |
Запрос данных |
Ввод ФИО студента |
Vvedite prohodnoi ball: |
Запрос данных |
Ввод проходного балла |
Student dobavlen |
Информационное |
Не требуется |
Takogo studenta net |
Информационное |
Не требуется |
Vvedite method sortirovki: |
Запрос данных |
Ввод номера метода сортировки подменю сортировки |
Student udalen |
Информационное |
Не требуется |
Dannye otsortirovani |
Информационное |
Не требуется |
Vvedite komandu |
Запрос данных |
Ввод номера действия главного меню |
Таблица 4 – Сообщения программы
6.6 Завершения работы программы
Для завершения работы с программой, нажмите на клавиатуре ‘8’ – выход. Программа завершит работу, и все несохраненные данные будут стерты.
ЗАКЛЮЧЕНИЕ
В результате проделанной курсовой работы была разработана программа управления данными автопарка, которая позволяет вести статистику, сортировать данные, искать данные по любому атрибуту, выводить таблицу. Пользователь самостоятельно может редактировать данные, удалять и дополнять их. Все данные пользователь может записывать в файл. Были выполнены все основные этапы программирования, задачи, а именно: был оценен метод решения поставленной задачи, проанализированы необходимые данные и результаты, разработан алгоритм и составлена его блок-схема, написана, отлажена и проверена на работоспособность программа, по вычисляемому полю (расстояние, преодолеваемое между заправками).
В ходе курсового проектирования все поставленные задачи успешно выполнены.
ЛИТЕРАТУРА
-
Романов В.Ю., Программирование на языке СИ, Москва: 1993;
-
Microsoft Developers Network (http://msdn.microsoft.com)
-
ГОСТ 2.105–95. Общие требования к текстовым документам;
-
ГОСТ 19.701-90. Схема алгоритмов, программ данных и систем;
-
ГОСТ 19.101-77. Схема алгоритмов, программ данных и систем;
-
ГОСТ 34.601-90. Автоматизированные системы, стадии создания;
-
ГОСТ 19.103-78. Обозначение программ и программных документов;
-
ГОСТ 19.402-78. Описание программы;
-
ГОСТ 19.505-79. Руководство оператора. Требования к содержанию и оформлению.
ПРИЛОЖЕНИЕ А
(обязательное)
Текст программы
#include <stdio.h>
#include <tchar.h>
#include <malloc.h>
#include <string.h>
FILE*file;
struct student{
char fio[15];
int ball;
int prohodnoi_ball;
int result;
};
void readfile (struct student **mas,int *kolvo){
if((file=fopen("text.txt","r+"))==0){
printf("Oshibka chteniya\n");
}else {
while(!feof(file)){
*kolvo=*kolvo+1;
if(*kolvo!=1)
{realloc(*mas,*kolvo*sizeof(struct student));}
mas[*kolvo-1]=(struct student *)malloc(sizeof(struct student));
fscanf(file,"%s\t", &mas[*kolvo-1]->fio);
fscanf(file,"%d\t", &mas[*kolvo-1]->ball);
fscanf(file,"%d\t", &mas[*kolvo-1]->prohodnoi_ball);
fscanf(file,"%d\n", &mas[*kolvo-1]->result);
}
fclose(file);
printf("Fail prochitan\n");
}
}
void writefile(struct student **mas,int *kolvo){
if((file=fopen("text.txt","w+"))==0){
printf("Oshibka zapisi\n");
}else{
for(int i = 0;i < *kolvo; i++){
fprintf(file,"%s\t", mas[i]->fio);
fprintf(file,"%d\t", mas[i]->ball);
fprintf(file,"%d\t", mas[i]->prohodnoi_ball);
fprintf(file,"%d\n", mas[i]->result);
}
fclose(file);
printf("Fail zapisan\n");
}
}
void dobav(struct student **mas,int *kolvo){
*kolvo=*kolvo+1;
if(*kolvo!=1)
{realloc(*mas,*kolvo*sizeof(struct student));}
mas[*kolvo-1]=(struct student *)malloc(sizeof(struct student));
char fio[15];
printf("Vvedite fio:");
scanf("%s", &fio);
strcpy(mas[*kolvo-1]->fio, fio);
printf("Vvedite fio:");
scanf("%d", &mas[*kolvo-1]->ball);
printf("Vvedite prohodnoi ball:");
scanf("%d", &mas[*kolvo-1]->prohodnoi_ball);
if(mas[*kolvo-1]->ball >=mas[*kolvo-1]->prohodnoi_ball){
mas[*kolvo-1]->result=1;
}else{
mas[*kolvo-1]->result=0;
}
printf("Student dobavlen\n");
}
int poisk(struct student **mas,int *kolvo){
char fio[15];
printf("Vvedite fio studenta:");
scanf("%s", &fio);
int i;
for(i=0;i<*kolvo;i++){
if(strcmp(mas[i]->fio,fio)==0){
printf("%s\t%d\t%d\t%d\n", mas[i]->fio, mas[i]->ball, mas[i]->prohodnoi_ball,mas[i]->result);
return i;
}
}
printf("Takogo studenta net\n");
return -1;
}
void swap_students(struct student **mas, int i, int j){
struct student *temp;
temp=mas[i];
mas[i]=mas[j];
mas[j]=temp;
}
void sort(struct student **mas,int *kolvo){
int i,j,sort_type;
printf("Vvedite method sortirovki:");
printf("1. FIO");
printf("2. Ball");
printf("3. Prohodnoi ball");
printf("4. Result");
scanf("%d", &sort_type);
for(i=0; i<*kolvo; i++){
for(j=0; j<*kolvo; j++){
if(sort_type==1 && strcmp(mas[i]->fio,mas[j]->fio)<0){
swap_students(mas,i,j);
}
if(sort_type==2 && mas[i]->ball<mas[j]->ball){
swap_students(mas,i,j);
}
if(sort_type==3 && mas[i]->prohodnoi_ball<mas[j]->prohodnoi_ball){
swap_students(mas,i,j);
}
if(sort_type==4 && mas[i]->result==0 && mas[j]->result==1){
swap_students(mas,i,j);
}
}
}
printf("Dannye otsortirovani\n");
}
void udal(struct student **mas,int *kolvo){
int udal1;
udal1=poisk(mas,kolvo);
if(udal1>0){
for(int i=udal1; i<*kolvo-1; i++){
strcpy(mas[i]->fio,mas[i+1]->fio);
mas[i]->ball=mas[i+1]->ball;
mas[i]->prohodnoi_ball=mas[i+1]->prohodnoi_ball;
mas[i]->result=mas[i+1]->result;
}
free(mas[*kolvo-1]);
*kolvo-=1;
}else{
free(mas[0]);
*kolvo=0;
}
printf("Student udalen\n");
}
void print(struct student **mas,int *kolvo){
int i;
printf("FIO\tBall\tProhodnoi ball\tResult\n");
for(i=0;i<*kolvo;i++){
printf("%s\t%d\t%d\t%d\n", mas[i]->fio, mas[i]->ball, mas[i]->prohodnoi_ball,mas[i]->result);
}
}
int main(){
int *kolvo=(int*)malloc(sizeof(int));
*kolvo=0;
struct student **mas=(struct student **)malloc(sizeof(struct student));
int a=1;
printf(" ----------------------- \n");
printf("|\tMenu:\t\t|\n");
printf("| 1. Dobavit studenta\t\t|\n");
printf("| 2. Poisk studenta\t\t|\n");
printf("| 3. Sortirovat' studentov\t|\n");
printf("| 4. Udalit studenta\t\t|\n");
printf("| 5. Print studentov\t\t|\n");
printf("| 6. Zagruzit' iz faila\t\t|\n");
printf("| 7. Sohranit' v fail\t\t|\n");
printf("| 8. Exit\t\t|\n");
printf(" ------------------------ \n");
while(a!=8)
{
printf("\n Vvedite komandu: ");
scanf("%d", &a);
switch(a){
case 1:
dobav(mas,kolvo);
break;
case 2:
poisk(mas,kolvo);
break;
case 3:
sort(mas,kolvo);
break;
case 4:
udal(mas, kolvo);
break;
case 5:
print(mas,kolvo);
break;
case 6:
readfile(mas,kolvo);
break;
case 7:
writefile(mas,kolvo);
}
}
return 0;
ПРИЛОЖЕНИЕ Б
Схема программы
ПРИЛОЖЕНИЕ В
Схемы алгоритмов
Схема подпрограммы добавления данных о студенте
|
Схема подпрограммы удаления данных о студенте
|
Схема подпрограммы вывода списка студентов
|
Схема подпрограммы загрузки данных из файла |
Схема подпрограммы сохранения данных в файл |
|
Схема подпрограммы поиска данных
|
ПРИЛОЖЕНИЕ Г
Схема данных
ПРИЛОЖЕНИЕ Д
Иллюстрации