скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

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

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

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

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

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

Кафедра ЭВМ

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

                                                                      

   Выполнил :                                                                                    Проверил :

   студент гр.050505                                                                         Калабухов Е.В.

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

                                                                           

Минск

  2001 г.

СОДЕРЖАНИЕ

  1. Название программы.
  2. Поставленная задача.
  3. Функциональное предназначение программы.
  4. Описание управления, интерфейса, основных переменных и функций.
  5. Блок-схема по ЕСПД 19.003-80.
  6. Исходный код программы.
  7. Список используемой литературы

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

 
eBase v 1.6661. Название программы
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



Блок-схема: решение: fopenБлок-схема: знак завершения: Конец

strcat(fn,”dat”)

 

нет

 
Блок-схема: типовой процесс: interface(fn)

да

 
Блок-схема: ручной ввод: fnБлок-схема: знак завершения: Началоvoid open()
void interface(char *)


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

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

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


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


#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <io.h>

#include <iostream.h>

#include <string.h>

#include <bios.h>

#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 (counter<2) {

                                       color[counter]=4;

                                       color[++counter]=0;

                               }

                               break;

                }

                textbackground(4);  cprintf("                      ");

                textcolor(WHITE);

                textbackground(color[0]);  cprintf("   Создать   ");

                textbackground(color[1]);  cprintf("   Открыть   ");

                textbackground(color[2]);  cprintf("   Выход   ");

                textbackground(4);  cprintf("                     ");

                textbackground(1);

                key=bioskey(0);

                if (key == ENTER) {

                        switch(counter) {

                               case 0:

                                       create();break;

                               case 1:

                                       open();break;

                               case 2:

                                       exit(10);

                        }

                }

        }

}

void interface(char *fn)

{

        FILE *fp;

        data st;

        int num=1,key=0,counter=0,color[]={0,4,4,4,4,4};

        clrscr();

        while(1) {

                window(1,1,80,3);

                textbackground(1);  textcolor(WHITE);

                _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 (counter<5) {

                                       color[counter]=4;

                                       color[++counter]=0;

                               }

                               break;

                }

                textbackground(4);cprintf("     ");

                textcolor(WHITE);

                textbackground(color[0]);cprintf("  Добавить  ");

                textbackground(color[1]);cprintf("  Удалить  ");

                textbackground(color[2]);cprintf("  Редактировать  ");

                textbackground(color[3]);cprintf("  Поиск  ");

                textbackground(color[4]);cprintf("  Сортировка  ");

                textbackground(color[5]);cprintf("  Назад  ");

                textbackground(4);cprintf("     ");

                textbackground(1);

                view(fn,num);

                key=bioskey(0);

                switch(key)

                {

                        case UP:    num--;if (num==0)

                               num++;

                               view(fn,num);

                               break;

                        case DOWN: num++;if (num+16>=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;

Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.