GeoSELECT.ru



Компьютеры / Реферат: Электронная картотека (Компьютеры)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Электронная картотека (Компьютеры)



Текст программы:

#include
#include
#include
#include
#include

struct PL //Задание структурных переменных
{
char namepl[18];
int year;
char people[15];
unsigned int sputnik;
PL *prev;
PL *next;
};

void menu1() //Функция главного меню
{
clrscr();
printf("nt?------------------------------------------------------------
?n");
printf( "t| |
");
puts( "nt| К А Р Т О Т Е К А П Л А Н Е Т
|n");
" t |tt С О Л Н Е Ч Н О Й С И С Т Е М Ы |
");
puts( "t?------------------------------------------------------------?
");
puts("ntt Главное меню :n");
puts("tt 1- Рекомендации пользователю.");
puts("tt 2- Ввод данных.");
puts("tt 3- Вывод всех данных.");
puts("tt 4- Просмотр, удаление, добавление.");
puts("tt 5- Вывод данных по определенному признаку.");
puts("tt 6- Сортировка.");
puts("tt 7- Выход.");
}

void menu2() //Меню поиска элементов
{
puts("nnnnttt Меню поиска:n");
puts("ttt 1- Вывод по названию планеты.");
puts("ttt 2- Вывод по году открытия.");
puts("nnnnnnnnnnnnnnnt Для выхода в главное меню
нажмите любую клавишу.");
}


void sovet(char *s) //Функция подсказки
{
window(1,25,79,25);
textcolor(GREEN+BLUE);
textbackground(WHITE+YELLOW);

clrscr();
cprintf(" %s",s);
textcolor(10);
window(1,1,79,25);
textbackground(0);
}

void vvod(PL *pla) //Функция ввода структуры
{
do
{
clrscr();
puts("Введите имя планеты :");
fflush(stdin);
gets(pla->namepl);
}
while(strlen(pla->namepl)>18);
do
{
puts("Год открытия планеты :");
scanf("%d",&(pla->year));
}
while((pla->year)year)>30000);
do
{
puts("Кто открыл планету :");
fflush(stdin);
gets(pla->people);
}
while(strlen(pla->people)>15);
do
{
puts("Сколько спутников ?");
scanf("%d",&(pla->sputnik));
}
while(((pla->sputnik)sputnik)>999));
}

PL* vvodall() //Функция ввода структур
{
PL *playn, *pla;
clrscr();
sovet("Введите параметры планеты");
pla=(PL*)malloc(sizeof(PL));
vvod(pla);
playn=pla;
pla->next=NULL;
sovet("Для дальнейщего ввода нажми y, иначе любую клавишу.");

while (getch()=='y')
{
clrscr();
sovet("Введите параметры планеты");
pla=(PL*)malloc(sizeof(PL));
vvod(pla);
playn->prev=pla;
pla->next=playn;
playn=pla;
sovet("Для дальнейщего ввода нажми y, иначе любую клавишу.");
}
pla->prev=NULL;
while (pla->next)
pla=pla->next;
return(pla);
}


void vivodall(PL *pla) //Функция вывода на экран всех структур
{
int i=1;
puts("nttt В С Я К А Р Т О Т Е К Аn");
printf("+------+-----------------+------------+---------------+-----------
+n");
printf("| Номер| Название | Когда | Кто открыл | Кол-во
|n");
printf("| стр. | планеты | открыли | планету | спутников
|n");
printf("+------+-----------------+------------+---------------+-----------
+n");
printf("+------+-----------------+------------+---------------+-----------
+n");
while (pla->prev)
{
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
pla=pla->prev; i++;
}
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
printf("+------+-----------------+------------+---------------+-----------
+");
gotoxy(22,24);
puts("Вывод закончен, нажмите любую клавишу.");
getch();
}

void spisok(PL* pla) //Функция для работы со списком
{
clrscr();
window(17,2,62,15);
textbackground(4);
textcolor(15);
clrscr();
if (pla!=NULL)
{
cprintf("n");
cprintf("%30s","ПАРАМЕТРЫ ПЛАНЕТnn");
gotoxy(1,wherey()+2);
cprintf(" Название: %s",pla->namepl);
gotoxy(1,wherey()+2);
cprintf(" Год открытия: %d",pla->year);
gotoxy(1,wherey()+2);
cprintf(" Кто открыл: %s",pla->people);
gotoxy(1,wherey()+2);
cprintf(" Сколько спутников: %d",pla->sputnik);
}
textbackground(2);
sovet("Cледующая/Предыдущая планета(PgDn/PgUp)"
"Удаление(Del)""Добавление(Ins)""Выход(Esc)");
}

PL* vvodspisok(PL* pla) //Функция ввода элементов списка
{
PL* plr=pla;
char c;
sovet("Добавить элемент до / после текущего(Home/End)"
"Отмена(Esc)");
do
{
c=getch();
/*Esc*/ if (c==27) return(pla);
if (c==71||c==79)
{
clrscr();
sovet("Введите параметры планеты");
plr=(PL*)malloc(sizeof(PL));
vvod(plr);
if (pla==NULL)
{
plr->next=NULL;
plr->prev=NULL;
return(plr);
}
/*End*/ if (c==79)
{
plr->next=pla->next;
plr->prev=pla;
pla->next=plr;
(plr->next)->prev=plr;
}
/*Home*/if (c==71)
{
plr->next=pla;
plr->prev=pla->prev;
pla->prev=plr;
(plr->prev)->next=plr;
}
return(plr);
}
}
while(1);
}

PL* vozvr(PL* pla) //Возвращает указатель
{ //на начало списка pla
if (pla==NULL)
return(pla);
while(pla->next!=NULL)
pla=pla->next;
return(pla);
}

PL* korrekt(PL *pla) //Управляющие клавиши при работе со списком
{
spisok(pla);
PL* delit(PL*);
do
{
switch(getch())
{
/*PgUp*/ case 73:if(pla!=NULL)
{
if(pla->prev!=NULL)pla=pla->prev;spisok(pla);
}
break;
/*PgDn*/ case 81:if(pla!=NULL)
{
if(pla->next!=NULL)pla=pla->next;spisok(pla);
}
break;
/*Del*/ case 83:if(pla!=NULL)
{
pla=delit(pla);
spisok(pla);
}
break;
/*Ins*/ case 82:pla=vvodspisok(pla); spisok(pla); break;
/*Esc*/ case 27:pla=vozvr(pla); return(pla);
}
}

while(1);
}

PL* delit(PL* pla) //Функция удаления элементов из списка
{
PL* plr=NULL;
if(pla->prev!=NULL)
{
(pla->prev)->next=pla->next;
plr=pla->prev;
}
if(pla->next!=NULL)

{
(pla->next)->prev=pla->prev;
plr=pla->next;
}
free(pla);
return(plr);
}

void poisk1(PL *pla) //Функция поиска по названиям планет
{
char s[15],ch;
do
{
int i=1,l=0;
clrscr();
fflush(stdin);
puts("Введите интерессующее вас название планеты :");
gets(s);
printf("nn Планеты с названием %s :n",s);
printf("+------+-----------------+------------+---------------+---------
--+n");
printf("|Номер | Название | Когда | Кто открыл | Кол-во
|n");
printf("| стр. | планеты | открыли | планету | спутников
|n");
printf("+------+-----------------+------------+---------------+-----------
+n");
printf("+------+-----------------+------------+---------------+-----------
+n");
while (pla->prev)
{
if(strcmpi(pla->namepl,s)==0)
{
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
l++;i++;
}
pla=pla->prev;
}
if (strcmpi(pla->namepl,s)==0)
{
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
l++;i++; }
puts("+------+-----------------+------------+-----------------+-------------
+");
printf("n Найдено %d планет.n",l);
puts(" Поиск по названиям планет завершен. Продолжить?(y- да)");
fflush(stdin);
ch=getch();
}
while(ch=='y');
}

void poisk2(PL *pla) //Функция поиска по годам открытия
{
char ch;
do
{
int i=1,l=0,a,b;
clrscr();
fflush(stdin);
puts("Введите интерессующее вас границы поиска (от чего- то до чего-
то) :");
while(scanf("%d%d",&a,&b)!=2)
{
while (getchar()!='n');
printf("Все- таки стоит здесь что- нибудь ввестиn(от a до b)n");
}

printf("nn Планеты открытые в таком диапозоне(с %d до %d
года):n",a,b);
printf("+------+-----------------+------------+---------------+-----------
+n");
printf("|Номер | Название | Когда | Кто открыл | Кол-во
|n");
printf("| стр. | планеты | открыли | планету | спутников
|n");
printf("+------+-----------------+------------+---------------+-----------
+n");
printf("+------+-----------------+------------+---------------+-----------
+n");
while(pla->prev)

{
if((ayear)&&(b>=pla->year))
{
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
l++;i++;
}
pla=pla->prev;
}
if((ayear)&&(b>=pla->year))
{
printf("| %5d | %18s | %12u | %15s | %11u | ",i,pla->namepl,
pla->year,pla->people,pla->sputnik);
l++;i++;
}
puts("+------+-----------------+------------+---------------+-----------
+");
printf("n Найдено %d планет.n",l);
puts(" Поиск по годам открытия планет завершен. Продолжить?(y- да)");
fflush(stdin);
ch=getch();
}
while(ch=='y');
}

void klear(PL* pla) //Функция очистки памяти
{
PL *plr;
if (pla)
{
if (pla->prev)
{
plr=pla->prev;
while (plr->prev)
{
free(plr->next);
plr=plr->prev;
}
}
else
plr=pla;
free(plr);
}
}

char * fname() //Функция ввода имени файла
{
char *t;
t=(char *)malloc(80*sizeof(char));
cprintf("Введите имя файла: n");
fflush(stdin);
scanf("%79s",t);
return t;
}

int save1(PL *pla,char *filename) //Функция, сохраняющая данные
{
FILE *fp;
if((fp=fopen(filename,"w"))==NULL) return 0;
while(pla)

{
fprintf(fp,"%s %d %s %d |",
pla->namepl,pla->year,pla->people,pla->sputnik);
pla=pla->prev;
}
fclose(fp);
return 1;
}

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("ttt Рекомендации пользователю :nn"
"Эта программа- это подобие электронной базы
данных. Программа работает, "
"nиспользуя массивы в памяти ЭВМ для хранения информации
введенной пользователем."
"nДанные могут вводиться с клавиатуры или загружаться из
файла."
"Также можно вывестина экран всю картотеку или же
просматривать картотеку по карточкам,"
" с возмож- ностью добавления или удаления некоторых
карточек по выбору."
" Программа имеет хороший интерфейс и показывает
устойчивую работу."
" В программе имеется поиск элементов по заданным
условиям, а также сортировка планет по названиям."
" В программе есть главное меню и подменю для поиска
планет по некоторым признакам."
" Желательно, чтобы данные были точные, корректно
записанные и касающиеся"
"n непосредственно темы данной лабораторной
работы.");
puts("nnnnnttДля перехода в главное меню нажмите
любую клавишу...");
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("nnЗаписать в файл (да-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("nnnnntt Запись данных
закончена! Нажмите любую клавишу.");
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("nnnntt Идет сортировка по названию
планеты.");
while(i

Новинки рефератов ::

Реферат: Международная торговля (Международные отношения)


Реферат: Экологические аспекты канцерогенеза (Физкультура)


Реферат: А.И.Хачатурян, С.С.Прокофьев, М.И.Глинка (Музыка)


Реферат: Бром (Химия)


Реферат: Аграрные кризисы (История)


Реферат: Разработка технологического процесса восстановления шатуна двигателя автомобиля ГАЗ-53А (Транспорт)


Реферат: Биоритмы и их значение в учебе для студентов (Биология)


Реферат: Лазерная резка : расчет зануления кабельной сети и освещенности сборочного мест блока (Технология)


Реферат: Исследование исторических документов (История)


Реферат: Абай Кунанбаев (1845-1904) (Литература)


Реферат: Католицизм (Религия)


Реферат: Банкротство и пути выхода (Менеджмент)


Реферат: Cинтез белка (Биология)


Реферат: Правоспособность и дееспособность граждан РФ (Гражданское право и процесс)


Реферат: Серебрянный век русской поэзии. Творчество Маяковского (Литература)


Реферат: Виртуальный измерительный комплекс (Программирование)


Реферат: Мы и взрослые (Социология)


Реферат: Модемы: назначение, сравнительный анализ моделей, принцип работы, эксплуатация на примере конкретной модели (Программирование)


Реферат: История развития социальной работы в России (Социология)


Реферат: Права человека (Теория государства и права)



Copyright © GeoRUS, Геологические сайты альтруист