МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


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

    Электронная картотека

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

    #include

    #include

    #include

    #include

    #include

    struct PL //Задание структурных переменных

    {

    char namepl[18];

    int year;

    char people[15];

    unsigned int sputnik;

    PL *prev;

    PL *next;

    };

    void menu1() //Функция главного меню

    ");

    void menu2() //Меню поиска элементов

    {

    puts("\n\n\n\n\t\t\t Меню поиска:\n");

    puts("\t\t\t 1- Вывод по названию планеты.");

    puts("\t\t\t 2- Вывод по году открытия.");

    puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t Для выхода в главное меню

    нажмите любую клавишу.");

    }

    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) //Функция вывода на экран всех структур

    %12u

    void spisok(PL* pla) //Функция для работы со списком

    {

    clrscr();

    window(17,2,62,15);

    textbackground(4);

    textcolor(15);

    clrscr();

    if (pla!=NULL)

    {

    cprintf("\n");

    cprintf("%30s","ПАРАМЕТРЫ ПЛАНЕТ\n\n");

    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("\n\n Планеты с названием %s :\n",s);

    printf("+------+-----------------+------------+---------------+---------

    --+\n");

    printf("|Номер | Название | Когда | Кто открыл | Кол-во

    |\n");

    printf("| стр. | планеты | открыли | планету | спутников

    |\n");

    printf("+------+-----------------+------------+---------------+-----------

    +\n");

    printf("+------+-----------------+------------+---------------+-----------

    +\n");

    while (pla->prev)

    {

    if(strcmpi(pla->namepl,s)==0)

    printf("

    pla=pla->prev;

    }

    if (strcmpi(pla->namepl,s)==0)

    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("\n\n Планеты открытые в таком диапозоне(с %d до %d

    года):\n",a,b);

    printf("+------+-----------------+------------+---------------+-----------

    +\n");

    printf("|Номер | Название | Когда | Кто открыл | Кол-во

    |\n");

    printf("| стр. | планеты | открыли | планету | спутников

    |\n");

    printf("+------+-----------------+------------+---------------+-----------

    +\n");

    printf("+------+-----------------+------------+---------------+-----------

    +\n");

    while(pla->prev)

    {

    if((ayear)&&(b>=pla->year))

    %18s

    pla=pla->prev;

    }

    if((ayear)&&(b>=pla->year))

    pla->year,pla->people,pla->sputnik);

    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

    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("\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.

    Заключение:

    В ходе проделанной работы мной были освоены структурные типы данных. Я

    научился работать с файлами, т.е. делать такме вещи как открытие, закрытие

    файла, запись в файл данных. Также была освоена работа со списками. Это

    такие операции как ввод элементов, удаление какого- нибудь элемента из

    списка или добавление элементов в связанный список.

    Содержание:


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.