Kursovik2 (664982), страница 2

Файл №664982 Kursovik2 (Электронная картотека планет солнечной системы) 2 страницаKursovik2 (664982) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

int save(PL *pla) //Функция для сохранения данных

{

char * name;

window(1,1,79,25);

clrscr();

name=fname();

if (save1(pla,name)==1) return 1;

cprintf("\nНевозможно произвести запись!!!");

sovet("Ошибка!!! Нажмите любую кнопку");

getch();

return 0;

}

PL *load(PL *pla) //Функция загрузки данных из файла

{

char c,*name;

int i;

PL *plan=NULL,*plane=NULL;

FILE *fp;

window(1,1,79,25);

clrscr();

name=fname();

cprintf("Осуществлять чтение? (y-Да , n-Нет)\n");

do

c=getch();

while((c!='y')&&(c!='n'));

if (c=='n') return (pla);

if((fp=fopen(name,"rt"))==NULL)

{

klear(pla);

cprintf("\nОшибка при открытии файла!!!");

sovet("Ошибка!!! Нажмите любую кнопку");

getch();

return (NULL);

}

plane=(PL*)malloc(sizeof(PL));

while (fscanf(fp,"%s %d %s %d |",

plane->namepl,&(plane->year),plane->people,&(plane->sputnik))==4)

{

plane->prev=NULL;

plane->next=plan;

if (plan!=NULL) plan->prev=plane;

plan=plane;

plane=(PL*)malloc(sizeof(PL));

}

free(plane);

if (plan!=NULL)

{

while(plan->next)

plan=plan->next;

}

fclose(fp);

klear(pla);

return (plan);

}

/*Функция сортировки по алфавиту*/

PL *sort(PL *pla)

{

PL *point,*tmp=NULL,*f,*s;

int i,j,srav;

//Указатель на начало

f=pla;

point=pla;

while(f!=NULL)

{

s=f->next;

while(s!=NULL)

{

if((strcmp(f->namepl,s->namepl)>0))

{ tmp=(PL*)malloc(sizeof(PL));

strcpy(tmp->namepl,f->namepl);

tmp->year=f->year;

strcpy(tmp->people,f->people);

tmp->sputnik,f->sputnik;

//

strcpy(f->namepl,s->namepl);

f->year=s->year;

strcpy(f->people,s->people);

f->sputnik=s->sputnik;

//

strcpy(s->namepl,tmp->namepl);

s->year=tmp->year;

strcpy(s->people,tmp->people);

s->sputnik=tmp->sputnik;

free(tmp);

}

s=s->next;

}

strcpy(point->namepl,f->namepl);

point->year=f->year;

strcpy(point->people,f->people);

point->sputnik=f->sputnik;

point=point->next;

f=f->next;

}

point=pla;

return(point);

}

void main()

{

char ccc,hhh,ch;

int i;

PL* planet=NULL;

planet->prev=planet->next=NULL;

_setcursortype(_NOCURSOR);

textcolor(10);

menu1();

do

{

do

{

fflush(stdin);

switch(ccc=getch())

{

case '1':

{

clrscr();

printf("\t\t\t Рекомендации пользователю :\n\n"

"Эта программа- это подобие электронной базы данных. Программа работает, "

"\nиспользуя массивы в памяти ЭВМ для хранения информации введенной пользователем."

"\nДанные могут вводиться с клавиатуры или загружаться из файла."

"Также можно вывестина экран всю картотеку или же просматривать картотеку по карточкам,"

" с возмож- ностью добавления или удаления некоторых карточек по выбору."

" Программа имеет хороший интерфейс и показывает устойчивую работу."

" В программе имеется поиск элементов по заданным условиям, а также сортировка планет по названиям."

" В программе есть главное меню и подменю для поиска планет по некоторым признакам."

" Желательно, чтобы данные были точные, корректно записанные и касающиеся"

"\n непосредственно темы данной лабораторной работы.");

puts("\n\n\n\n\n\t\tДля перехода в главное меню нажмите любую клавишу...");

getch();

menu1();

break;

}

case '2':

{

free(planet);

planet=NULL;

planet->prev=planet->next=NULL;

clrscr();

puts("Это новая база данных?(да-y/ нет-n) ");

do

{

fflush(stdin);scanf ("%c", &ch);

printf ("\tВведите символ(да- y / нет- n) ");

}

while (ch!='n' && ch!='y'&& ch!='Y'&& ch!='N');

if (ch=='y'|| ch=='Y')

{

clrscr();

planet=vvodall();

clrscr();

puts("\n\n\Записать в файл (да-y/нет-n)?");

do

{

fflush(stdin);

scanf ("%c", &ch);

printf ("Введите символ(да- y / нет- n)\n ");

}

while (ch!='n' && ch!='y'&& ch!='Y'&& ch!='N');

if (ch=='Y'|| ch=='y')

{

save(planet);

puts("\n\n\n\n\n\t\t Запись данных закончена! Нажмите любую клавишу.");

getch();

}

}

else

planet=load(planet);

menu1();

continue;

}

case '3':

{

if(planet!=NULL)

{

clrscr();

vivodall(planet);

menu1();

continue;

}

break;

}

case '4':

{

free(planet);

planet=korrekt(planet);

menu1();

break;

}

case '5':

{

if(planet!=NULL)

{

clrscr();

menu2();

switch(hhh=getch())

{

case '1':

{

poisk1(planet);

menu1();

continue;

}

case '2':

{

poisk2(planet);

menu1();

continue;

}

default : menu1();

}

menu1();

continue;

}

break;

}

case '6':

{

if(planet!=NULL)

{

clrscr();

i=5;

puts("\n\n\n\n\t\t Идет сортировка по названию планеты.");

while(i<70)

{

gotoxy(i,10);

puts("*");

delay(60);

i++;

}

planet=sort(planet);

puts("Сортировка по названиям планет прошла успешно! ");

delay(2000);

clrscr();

vivodall(planet);

menu1();

continue;

}

break;

}

case '7':

{

free(planet);

break;

}

default : ccc=0;

}

}

while(!ccc);

}

while(ccc!='7');}

Министерство образования РФ

Санкт- Петербургский государственный электротехнический университет

Кафедра ВТ

Пояснительная записка

К курсовой работе по дисциплине

«Основы алгоритмизации и программирование»

II семестр

Тема : «Электронная картотека»

Выполнил : Урывский Ю.В.

Факультет : КТИ

Группа :9371

Проверила :Сискович Т.И.

Санкт- Петербург

2000

Задание :

Создание электронной картотеки, хранящейся на диске, и программы, обеспечивающей взаимодействие с ней.

Программа должна выполнять следующие действия:

- занесение данных в электронную картотеку;

- внесение изменений (добавление, исключение);

  • поиск данных по признаку, вывод их на экран.

Выбор подлежащих выполнению действий должен быть реализован с помощью меню и подменю.

Задача должна быть структурирована и отдельные части должны быть оформлены как функции.

Исходные данные должны вводиться с клавиатуры.

В процессе обработки картотека должна храниться в памяти ЭВМ в виде связанного списка.

Необходимо предусмотреть возможность сохранения выбранных записей в файле, задаваемом пользователем.

Программа должна иметь дружественный интерфейс и обеспечивать устойчивую работу при случайном нажатии на клавишу.

Все детали выполнения работы должны быть согласованы с преподавателем.

Контрольные примеры:

При запуске программы перед нами появляется меню, состоящее из 7 пунктов.

  1. Рекомендации пользователю.

  2. Ввод данных.

  3. Вывод всех данных.

  4. Просмотр, удаление, добавление.

  5. Поиск данных по определенному признаку.

  6. Сортировка.

  7. Выход.

Чтобы познакомиться с программой нужно зайти в пункт №1. Здесь имеется краткое описание того, что программа умеет делать.

Пока мы не введем данные через пункт №2, все остальные пункты, кроме 1 и 7, будут не активными. Поэтому заходим в пункт №2.

Здесь сразу же появляется запрос: «Это будет новая картотека?» Если да, то создается новая картотека, или можно загрузить ее из файла.

Наконец данные введены и можно переходить к другим пунктам.

Чтобы просмотреть все, что было введено воспользуемся пунктом №3. Для выхода в главное меню нужно нажать любую клавишу.

С помощью пункта №4 мы можем пролистать всю нашу картотеку. Плюс к этому мы можем добавлять или удалять элементы из списка. А делать это довольно просто, если следовать подсказкам, появляющимся в нижней части экрана.

Щелкнув цифру 5, открываем подменю поиска элементов.

  1. Поиск по названию планеты.

  2. Поиск по годам открытия.

Если хотим найти например планету Венера, то выбираем пункт №1, вводим слово Венера и либо получаем информация о такой планете (если такая планета есть в базе данных), либо не получаем информации о такой планете (если такая планета не занесена в базу данных).

В пункте №6 мы можем отсортировать картотеку по названиям планет.

Выход из программы осуществляется через пункт №7.

Описание структур данных:

struct PL //структура PL

{

char namepl[18]; //Названия планет

int year; //Когда была открыта

char people[15]; //Кем была открыта

unsigned int sputnik; //Сколько спутников имеет

PL *prev; //Указатель на предыдущий элемент списка

PL *next; //Указатель на последующий элемент списка

};

Спецификация функций:

  • Void menu1(); - функция главного меню

Menu1();

  • Void menu2(); - функция подменю поиска

Menu2();

  • void sovet(char *s)

  • void vvod(PL *pla)

  • PL* vvodall()

  • void vivodall(PL *pla)

  • void spisok(PL* pla)

  • PL* vvodspisok(PL* pla)

  • PL* vozvr(PL* pla)

  • PL* korrekt(PL *pla)

  • PL* delit(PL* pla)

  • void poisk1(PL *pla)

  • void poisk2(PL *pla)

  • void klear(PL* pla)

  • char * fname()

  • int save1(PL *pla,char *filename)

  • int save(PL *pla)

  • PL *load(PL *pla)

  • PL *sort(PL *pla)

Инструкция пользователю:

Запускаете программу. Появляется меню перед вами. Если хотите немножко ознакомиться с программой, то почитайте рекомендации (пункт №1). Вводите данные через пункт №2. Здесь вы можете ввести данные либо с клавиатуры, либо загрузить их из файла. Чтобы просмотреть все что вы ввели или загрузили воспользуйтесь пунктом №3 главного меню. А если вы хотите просмотреть все карточки по- порядку, то вам непременно нужно будет зайти в пункт №4. Здесь вы сможете просмотреть все карточки, удалить какую- либо из них (или все), а также добавить карточки, воспользовавшись вспомогательными клавишами и следуя указаниям, появляющимся в нижней части экрана.

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

В пункте №6 происходит сортировка карточек по названиям планет.

Выход из программы осуществляется через пункт №7.

Заключение:

В ходе проделанной работы мной были освоены структурные типы данных. Я научился работать с файлами, т.е. делать такме вещи как открытие, закрытие файла, запись в файл данных. Также была освоена работа со списками. Это такие операции как ввод элементов, удаление какого- нибудь элемента из списка или добавление элементов в связанный список.

Содержание:

Характеристики

Тип файла
Документ
Размер
121,5 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6529
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее