МЕНЮ


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

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


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

    Отчет по учебной практике ОАиП база данных студентов (создание, поиск, удаление, сортировка, все, что надо написанная на С++)

    | |

    | |

    |Министерство Образования Республики Беларусь |

    | |

    |Белорусский Государственный Университет |

    |Информатики и Радиоэлектроники |

    | |

    | |

    | |

    | |

    | |

    |Кафедра ЭВМ |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    |Отчёт по учебной практике |

    | |

    | |

    | |

    | |

    | |

    |Выполнил : |

    |Проверил : |

    |студент гр.050505 |

    |Калабухов Е.В. |

    |Свентицкий С. М. |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    | |

    |Минск |

    |2001 г. |

    СОДЕРЖАНИЕ

    1. Название программы.

    2. Поставленная задача.

    3. Функциональное предназначение программы.

    4. Описание управления, интерфейса, основных переменных и функций.

    5. Блок-схема по ЕСПД 19.003-80.

    6. Исходный код программы.

    7. Список используемой литературы

    1. Название программы

    2. Поставленная задача

    Написать базу данных (БД) на языке С++ позволяющую хранить

    информацию о студентах (Ф.И.О., номер группы, средний балл, уникальный код

    записи (порядковый №)). База данных должна содержать основные функции :

    добавление записи, удаление записи, редактирование записи, поиск и

    сортировку по заданным параметрам.

    3. Функциональное предназначение программы

    Данная программа представляет собой базу данных позволяющую хранить

    информацию о студентах (Фамилию, Имя, Отчество, № группы, средний балл).

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

    либо открытий уже созданной, добавление новых данных в файл БД, удаление

    записей, редактирование имеющихся записей, поиск существующих записей по их

    уникальному коду, по фамилии, по имени, также предусмотрена сортировка

    записей в файле по Ф.И.О, по уникальному коду, по номеру группы, по

    среднему баллу (причем в этом случае записи располагаются от максимального

    среднего балла вниз, то есть по убыванию). Каждой новой записи

    присваивается свой индивидуальный номер (код), для упрощения ввода этот код

    присваивается автоматически : функций find_max_num(char *) находит

    максимальный номер записи в файле и последующий код присваивается

    введенной записи .Также предусмотрена проверка вводимых данных на

    идентичность , при вводе идентичных данных пользователю будет выдано

    предупреждение и дана возможность ввести новые данные . Программа eBase

    v1.666 использует очень удобный и понятный интерфейс, организована система

    меню и подменю, внизу окна специально создана горячая подсказка. Так же

    предусмотрен так называемый скроллинг (прокрутка) выводимой информации

    клавишами вверх-вниз,

    4. Описание управления, интерфейса, основных переменных и функций.

    Все данные вводятся с клавиатуры.

    Используемые клавиши:

    Enter (для выбора или подтверждения), Esc (для отмены, выхода в

    предыдущее меню), стрелки вправо, влево (для перемещения по меню),

    вверх, вниз (для скроллинга данных).

    Основные переменные:

    структура записей :

    typedef struct {

    int num; - уникальный № (код) записи

    char lastName[16]; - фамилия студента

    char firstName[11]; - имя студента

    char midName[16]; - отчество студента

    char groupNumber[6]; - № группы студента

    float mark; - средний балл учащегося

    } data;

    fn - имя рабочего файла;

    Вызываемые функции:

    void interface(char *) - функция основного интерфейса программы. В

    качестве входного параметра принимает имя рабочего файла fn

    которое передается функциями void create() или void open(). В этой

    функции реализовано весьма удобное меню, через которое и

    происходит вызов последующий функция добавления, сортировки,

    удаления, поиска и редактирования;

    void add(char *) - функция добавление записи в БД. Входной параметр fn

    имя файла. Использует функцию int find_max_num(char *) для

    присваивания вводимой записи свой уникальный номер.

    void del(char *) - функция удаление записи из БД. Входной параметр fn

    имя файла. Использует временный файл temp.$$$, в конце выполнения

    функции временный файл переименовывается в файл под именем

    переменной fn;

    void edit(char *) - функция редактирования существующей записи.

    Входной параметр fn имя файла. Позволяет изменять № (код) записи,

    а также любую информацию записи;

    void view(char *, int ) - функция вывода данных на экран. Входной

    параметр fn имя файла;

    void find(char *) - функция поиска записи по (ее уникальному №,по

    Фамилии, по Имени). Входной параметр fn имя файла;

    void sort(char *) - функция сортировки записей БД по (№ записей, Ф.И.О,

    среднему баллу учащихся, № группы студента). Входной параметр fn

    имя файла. Использует “пузырьковый” метод сортировки данных в

    файле.

    int find_max_num(char *) - функция поиска максимального № записи в

    файле БД. Входной параметр fn имя файла. Возвращает значение №

    максимальной записи в файле … для функции void add(char *);

    int get_number(char *) - возвращает количество записей в файле. Входной

    параметр fn имя файла;

    void create() - создание файла БД. Идет запрос на имя файла , после

    этого к имени файла автоматически добавляется расширение “.dat”

    имя этого файла считается рабочим для всей программы. При удачном

    создании файла его имя передается в функцию void interface(char *)

    и т.д.;

    void open() - открытие файла БД. Идет запрос на имя файла , после этого

    к имени файла автоматически добавляется расширение “.dat” имя

    этого файла считается рабочим для всей программы. При удачном

    открытии файла его имя передается в функцию void interface(char *)

    и т.д.;

    int check(char *, data) – функция проверки при вводе информации на ее

    идентичность. Вызывается функциями добавления записи void add(char

    *) и редактирования записи void edit(char *). В качестве первого

    входного значения используется имя рабочего файла fn , в качестве

    второго структура данных типа data (описанная в разделе основные

    переменные). В качестве возвращаемого параметра используется

    переменная pr, которая может принимать значения 0 или 1, для

    определения идентичности данных;

    Нестандартные и системные средства, вроде бы, не используются

    Все, кроме двух, аварийные ситуации, вроде бы, ликвидированы:

    1) Если диск заполнен или защищён от записи невозможно записать

    информацию в файл;

    2) Если невозможно открыть файл программа выдает сообщение об этом и

    закроется

    5.Блок-схема по ЕСПД 19.003-80.

    void main()

    Лист 01

    void open()

    void interface(char *)

    алгоритм сортировки (по № записи)

    fp – указатель на файл; s1,s2 – структуры данных типа data;

    oldfs,newfs – флаги (признаки),

    6. Исходный код программы

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #define ENTER 7181

    #define ESC 283

    #define LEFT 19200

    #define RIGHT 19712

    #define UP 18432

    #define DOWN 20480

    typedef struct {

    int num;

    char lastName[16];

    char firstName[11];

    char midName[16];

    char groupNumber[6];

    float mark;

    } data;

    void interface(char *);

    void add(char *);

    void del(char *);

    void edit(char *);

    void view(char *, int );

    void find(char *);

    void sort(char *);

    int find_max_num(char *);

    int get_number(char *);

    void create();

    void open();

    int check(char *, data);

    void main()

    {

    int key=0,counter=0;

    int color[]={0,4,4};

    while (1) {

    textbackground(1); textcolor(WHITE);

    clrscr(); _setcursortype(_NOCURSOR); textcolor(10);

    cprintf("::::::::::::::::::");

    textcolor(15);

    cprintf(" eBase v1.666 Copyright (C) Serj Sventitski ");

    textcolor(10);

    cprintf("::::::::::::::::::");

    switch(key) {

    case LEFT: if (counter>0) {

    color[counter]=4;

    color[--counter]=0;

    }

    break;

    case RIGHT: if (counter0) {

    color[counter]=4;

    color[--counter]=0;

    }

    break;

    case RIGHT: if (counter=get_number(fn))

    num--;

    view(fn,num);

    break;

    }

    if (key==283)

    return;

    if (key == ENTER)

    {

    switch(counter) {

    case 0: add(fn); clrscr(); break;

    case 1: del(fn); break;

    case 2: edit(fn); clrscr(); break;

    case 3: find(fn); break;

    case 4: sort(fn); break;

    case 5: return;

    }

    }

    }

    }

    void add(char *fn)

    {

    FILE *fp;

    data st;

    int pr;

    while (1) {

    st.num=find_max_num(fn)+1;

    clrscr();

    _setcursortype(_SOLIDCURSOR);

    gotoxy(20,6); cout>st.lastName;

    gotoxy(20,8); cout>st.firstName;

    gotoxy(20,10); cout>st.midName;

    gotoxy(20,12); cout>st.groupNumber;

    gotoxy(20,14); cout>st.lastName;

    gotoxy(20,8);cout>st.firstName;

    gotoxy(20,10);cout>st.midName;

    gotoxy(20,12);cout>st.groupNumber;

    gotoxy(20,14);cout0) {

    color[counter]=4;

    color[--counter]=0;

    }

    break;

    case RIGHT: if (counter=get_number(fn))

    num--;

    view(fn,num); break;

    }

    if (key==283)

    return;

    if (key == ENTER)

    {

    if ((fp=fopen(fn,"rb+")) == NULL)

    {

    cout 0) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    if (strcmp(s1.lastName,s2.lastName) == 0)

    if (strcmp(s1.firstName,s2.firstName) > 0) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    if (strcmp(s1.firstName,s2.firstName) == 0)

    if (strcmp(s1.midName,s2.midName) > 0) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    else

    s1=s2;

    else

    s1=s2;

    }

    break;

    case 0: /*------------ПО НОМЕРУ ЗАПИСИ-----------*/

    oldfs=1; newfs=0;

    fread(&s1,size,1,fp);

    while(oldfs) {

    fread(&s2,size,1,fp);

    if(feof(fp)) {

    if(!newfs)

    break;

    oldfs=1; newfs=0;

    rewind(fp);

    fread(&s1,size,1,fp);

    continue;

    }

    if (s1.num > s2.num) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    else

    s1=s2;

    }

    break;

    case 2: /*----------ПО НОМЕРУ ГРУППЫ---------------*/

    oldfs=1; newfs=0;

    fread(&s1,size,1,fp);

    while(oldfs) {

    fread(&s2,size,1,fp);

    if(feof(fp)) {

    if(!newfs)

    break;

    oldfs=1; newfs=0;

    rewind(fp);

    fread(&s1,size,1,fp);

    continue;

    }

    if (strcmp(s1.groupNumber,s2.groupNumber) > 0) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    else

    s1=s2;

    }

    break;

    case 3: /*---------ПО СР.БАЛУ----------------*/

    oldfs=1; newfs=0;

    fread(&s1,size,1,fp);

    while(oldfs) {

    fread(&s2,size,1,fp);

    if(feof(fp)) {

    if(!newfs)

    break;

    oldfs=1; newfs=0;

    rewind(fp);

    fread(&s1,size,1,fp);

    continue;

    }

    if (s1.mark < s2.mark) {

    fseek(fp,-2*size,1);

    fwrite(&s2,size,1,fp);

    fwrite(&s1,size,1,fp);

    newfs=1;

    }

    else

    s1=s2;

    } break;

    case 4:

    fclose(fp);

    return;

    }

    fclose(fp);

    }

    }

    }

    void find(char *fn)

    {

    void ramka();

    FILE* fp;

    data st;

    char string[15];

    int pr,prs;

    int key=0,counter=0;

    int color[]={0,4,4,4};

    while (1) {

    clrscr(); textcolor(10);

    cprintf("::::::::::::::::::::::::::::: М е н ю П о и с к а "

    ":::::::::::::::::::::::::::::");

    textcolor(WHITE);

    textbackground(4);

    cprintf(" ");

    switch(key)

    {

    case LEFT: if (counter>0) {

    color[counter]=4;

    color[--counter]=0;

    } break;

    case RIGHT: if (counter>string;

    rewind(fp);

    while(fread(&st,sizeof(data),1,fp)) {

    if (feof(fp))

    break;

    if(!strcmp(st.lastName,string)) {

    if (prs) {

    ramka();

    gotoxy(1,6);

    prs=0;

    }

    printf(" %4d %-16s %-12s %-17s %8s "

    "%7.2f\n",st.num,st.lastName,st.firstName,

    st.midName,st.groupNumber,st.mark);

    pr=1;

    }

    }

    if(!pr) {

    cout>string;

    rewind(fp);

    while(fread(&st,sizeof(data),1,fp)) {

    if (feof(fp))

    break;

    if(!strcmp(st.firstName,string)) {

    if (prs) {

    ramka();

    gotoxy(1,6);

    prs=0;

    }

    printf(" %4d %-16s %-12s %-17s %8s "

    "%7.2f\n",st.num,st.lastName,st.firstName,

    st.midName,st.groupNumber,st.mark);

    pr=1;

    }

    }

    if(!pr) {

    coutmax)

    max=st.num;

    }

    fclose(fp);

    return max;

    }

    int get_number(char *fn)

    {

    FILE *fp;

    int fd,n=0;

    if ((fp = fopen(fn,"rb")) == NULL)

    {

    printf("File could not be opened.\n");

    return -1;

    }

    fd=fileno(fp);

    n=filelength(fd)/sizeof(data);

    fclose(fp);

    return n;

    }

    void create()

    {

    FILE *fp;

    char *fn;

    cout>fn;

    strcat(fn,".dat");

    if ((fp=fopen(fn,"wb")) == NULL) {

    cout>fn;

    strcat(fn,".dat");

    if (!(fp=fopen(fn,"rb"))) {

    cout<<"Ошибка...Файл не может быть открыт\n";

    getch();

    exit(10);

    }

    fclose(fp);

    interface(fn);

    }

    int check(char *fn, data st)

    {

    FILE *fp;

    data temp;

    int pr=0;

    if ((fp = fopen(fn,"rb")) == NULL) {

    printf("File could not be opened.\n");

    return 0;

    }

    while ( fread( &temp, sizeof( data ), 1, fp)) {

    if (feof(fp))

    break;

    if (!strcmp(st.lastName,temp.lastName)

    && !strcmp(st.firstName,temp.firstName)

    && !strcmp(st.midName,temp.midName)

    && !strcmp(st.groupNumber,temp.groupNumber)

    && (st.mark == temp.mark)) {

    pr=1;

    break;

    }

    } fclose(fp);

    return pr;

    }

    СПИСОК ЛИТЕРАТУРЫ

    1. Харви Дейтел, Пол Дейтел “Как программировать на Си”

    2. Е. М. Демидович “Основы алгоритмизации и программирования”, Минск 1999

    г.

    3. Керниган Б., Ритчи Д. “Язык программирования Си”, Финансы и

    статистика, 1992 г.

    -----------------------

    open()

    Меню

    выбора

    create()

    Начало

    Конец

    Конец

    Начало

    Electronic Base (Электронная база данных) v 1.666

    fn

    strcat(fn,”dat”)

    interface(fn)

    fopen

    да

    нет

    Меню

    выбора

    Начало

    edit(fn)

    add(fn)

    del(fn)

    view(fn,num)

    find(fn)

    sort(fn)

    01

    Начало

    Конец

    oldfs=1;

    newfs=0;

    да

    да

    нет

    нет

    да

    s1=s2

    oldfs=1;

    newfs=0;

    newfs=1;


    Приглашения

    09.12.2013 - 16.12.2013

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

    09.12.2013 - 16.12.2013

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




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