Разработка программного обеспечение хранения информации о клиентах банка

База данных как сведение данных по интересующим объектам, созданная с использованием команд в виде специальной таблицы. Приёмы графики в программе Си и её функции. Структура и интерфейс программы Си++, разработки алгоритмов подпрограмм и программ.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.08.2011
Размер файла 411,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

Содержание

Введение

1. Постановка задачи

2. Теоретический материал

2.1 Динамические структуры

2.2 Структуры

2.3 Графика в Си

3. Блок схема программы

4. Структура программы

5. Интерфейс программы

Вывод

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

Список литературы

Введение

В современном мире компьютерных технологий для облегчения решения многих экономических задач, программистами разных стран разрабатываются специальные приложения, в которых вырабатываются расчеты практически всех экономических процессов и отдельных операций. На специальности Экономическая кибернетика студентам представляется, возможность изучать параллельно экономические и компьютерные дисциплины. В экономическом направлении, студенты изучают теоретическую часть операций произведенных в области экономики. В области же компьютерной техники и программирования, студенты получают практические познания в организации экономических программ, составлении алгоритмов к ним, баз данных и специальных приложений.

У миру существует множество систем управления базами данных. Несмотря на то, что они могут по-разному работать с разными объектами и предоставляют пользователю разные функции и средства, большинство СУБД опираются на единый отстоявшийся комплекс основных понятий.

Язык С++ разработан так, чтобы дать возможность умным образом структурировать большие программы. Кроме того, он имеет возможности, предназначенными для того, чтобы непосредственно и эффективно работать с аппаратными средствами, не заботясь о безопасности или простоте понимания. Он также имеет возможности, которые разрешают прятать такие программы за элегантными и надежными интерфейсами.

1. Постановка задачи

Цель задачи. Цель моей задачи - разработать программное обеспечение хранения информации о клиентах банка.

В данном курсовом проекте разрабатывается программное обеспечение именно для достижения этой цели.

Методы решения. В основу программы положенная специально созданная база данных, с помощью С++.

База данных - это сведение данных по интересующим нас объектам, созданное с использованием команд СУБД в виде специальной таблицы. Особенностями этой таблицы можно выделить специальные поля (столбики), названные соответственно с указанными данными в этих таблицах. Использование полей облегчает постановку формул при составлении решения задачи.

Для программы создаем специальную базу данных ххх.dat. В ней 8 полей, в которых указанные соответствующие значения.

2. Теоретический материал

2.1 Динамические структуры

Использование динамических величин предоставляет программисту ряд дополнительных возможностей.

Во-первых, подключение динамической памяти разрешает увеличить объем обрабатываемых данных.

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

В-третьих, использование динамической памяти разрешает создавать структуры данных сменного размера.

Работа с динамическими величинами связана с использованием ссылочного типа данных. Величины, которые имеют ссылочный тип, называют указателями.

Указатель содержит адрес поля в динамической памяти, которая сохраняет величину определенного типа. Сам указатель располагается в статической памяти.

Адрес величины -- это номер первого байта поля памяти, в котором располагается величина. Размер поля однозначно определяется типом.

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

Из определения надо, что каждый элемент списка содержит поле данных (Inf) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (Next). Поле ссылки последнего элемента должно содержать пустой указатель (Null).

Здесь Inf -- информационная часть звена списка (величина любого простого или структурированного типа, кроме файлового);

Next -- указатель на следующее звено списка;

First -- указатель на заглавное звено списка.

Соответственно определению, список располагается в памяти, которые распределяет динамично, в статической памяти сохраняется лишь указатель на заглавное звено. Структура, в отличие от массива, есть действительно динамической: звена создаются и отдаляются по мере необходимости, в процессе выполнения программы.

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

2.2 Структуры

В Си++ структуры («struct») и объединение («union») стали создавать полноправные типы данных. Кроме того, каждая структура и объединения (как и, разумеется, каждый класс) получили свое полноправное пространство имен.

Например, вы можете написать:

struct Foo{

typedef unsigned char byte;

byte data;

};

В структуре определенное имя «byte». Но оно «просто так» не видно за пределами данной структуры. Если вы захотите воспользоваться типом «byte» со структуры «Foo», то вот как это говорят в Си++: «Foo::byte». Например:

int main(){

Foo::byte x;

x = 17;

}

Двойное двоеточие называется оператором разрешения области видимости, но, я думаю, не обязательно задумываться об этом названии. Оно употребится, чтобы указать «путь», по которому можно добраться к нужному имени.

Заметим, что в таком пространстве имен можно определять все, что вам захотится. Например, другие структуры:

struct Foo {

struct Bar {

struct Boz {

int x, y;

};

};

};

int main(){

Foo::Bar::Boz wow;

wow.x = 7;

wow.y = 11;

}

2.3 Графика в Си

Модуль Graph Cи содержит возле пятидесяти разных процедур и функции, предназначенных для работы с графическим экраном. В этом же модуле некоторые встроенные константы, которые могут быть использованы в графических программах. Для того чтобы воспользоваться всеми возможностями модуля Graph, в начале программы (после заголовка) необходимо поместить оператор использования:

Uses Graph;

Основную часть модуля представляют процедуры введения базовых графических элементов, таких как точки, отрезки прямых линий, дуги и целые окружности и др.

Функция GraphErrorMsg. Возвращает значение типа Char которому по указанному коду ошибки дается соответствующее текстовое сообщение.

Заголовок:

Fanctional GraphErrorMsg(Code: Int): Char;

Здесь Code - код ошибки, которая возвращает функцией GraphResult.

Функция CloseGraph. Завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана.

3. Блок схема программы

void main()

void open()

void interface(char *)

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

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

oldfs,newfs - флаги (пометки).

4. Структура программы

В программе, для управления интерфейсом и самым приложением используются специальные диалоги. Эти диалоги реализованы с помощью функций.

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

- 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, для определения идентичности данных;

- void main() - функция вывода диалогового меню выбора режима работы базы данных. Функция не использует входные сменные и не возвращает значения.

- void user() - функция вывода диалогового меню обработки возможность операций с БД обычным пользователем. Функция не использует входные сменные и не возвращает значения.

- void admin() - функция вывода диалогового меню возможностей операций с БД для библиотекаря и ввода пароля. Функция не использует входные сменные и не возвращает значения.

5. Интерфейс программы

После запуска базы данных с помощью файла Base.EXE появляется меню режима работы по БД.

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

Если работать с БД в режиме администратор, возможно, создавать новые БД и в созданной БД редактировать записи. В режиме пользователя возможности редактирования записей запрещены, пользователь может только осуществлять обзор записей или поиск их.

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

После завершения добавления записи программа возвращается к списку записей.

Вывод

программирование язык си алгоритм программа

В результате выполнения данной курсовой работы мной были полученные привычки разработки алгоритмов подпрограмм, программ. Освоены некоторые приемы работы с файлами и разными типами данных, а также приемы программирования графики языком СИ++.

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

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

// Bank.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <io.h>

#include <iostream>

#include <string.h>

#include <time.h>

#include <windows.h>

#include <process.h>

#define ENTER 13

#define ESC 27

#define LEFT 75

#define RIGHT 77

#define UP 80

#define DOWN 72

using namespace std;

typedef struct {

int num;

char FIO[20];

char num_schet[10];

char adres[20];

float stavka;

int srok;

char Tip[10];

float Balans;

char data[9];

} data;

char pas[]="1";

int guest=1;

HANDLE hConsole;

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

//Цвет

enum ConsoleColor

{

Black = 0,

Blue = 1,

Green = 2,

Cyan = 3,

Red = 4,

Magenta = 5,

Brown = 6,

LightGray = 7,

DarkGray = 8,

LightBlue = 9,

LightGreen = 10,

LightCyan = 11,

LightRed = 12,

LightMagenta = 13,

Yellow = 14,

White = 15

};

void interfac(char *);

void add(char *);

void del(char *);

void edit(char *);

void view(char *, int );

void find(char *);

void sort(char *);

void SetColor(ConsoleColor text, ConsoleColor background);

void SetColorm(int Colort, int Colorb);

void user();

void admin();

void diagramm(char *, int );

int find_max_num(char *);

int get_number(char *);

void create();

void open();

void user();

int check(char *, data);

void GotoXY(int X, int Y);

void SetColor(ConsoleColor text, ConsoleColor background)

{

SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));

}

void SetColorm(int Colort, int Colorb)

{

SetConsoleTextAttribute(hStdOut, (WORD)((Colorb << 4) | Colort));

}

void GotoXY(int X, int Y)

{

COORD coord = { X, Y };

SetConsoleCursorPosition(hStdOut, coord);

}

void main()

{

setlocale(LC_ALL,".1251");

int key=0,counter=0;

int color[]={2,8,8};

while (1) {

SetColor(White,White);

system("cls"); SetColor(LightGreen,White);

switch(key) {

case LEFT: if (counter>0) {

color[counter]=8;

color[--counter]=2;

}

break;

case RIGHT: if (counter<2){

color[counter]=8;

color[++counter]=2;

}

break;

}

SetColor(Black,White);

cprintf(" "

" "

" "

" "

" "

" "

" "

" ");

SetColor(White,Black);

cprintf("===========================");

cprintf("| ");

SetColorm(12,color[0]);

cprintf(" П"); SetColorm(14,color[0]);cprintf("ользователь ");

SetColorm(12,color[1]);

cprintf(" А"); SetColorm(14,color[1]); cprintf("дминистаратор ");

SetColorm(14,8);cprintf(" ");

SetColorm(12,color[2]);

cprintf(" Выход ");

SetColor(White,Black);

cprintf(" |");

cprintf("================");

SetColor(Black,White);

cprintf(" "

" "

" "

" "

" "

" "

" "

" "

" "

" "

" "

" ");

key=getch();

if (key == ENTER) {

switch(counter) {

case 0:

user();break;

case 1:

admin(); break;

case 2:

exit(10);

}

}

}

}

void user()

{

int key=0,counter=0;

int color[]={3,8,8,8};

guest=1;

while (1) {

SetColor(White,White);

system("cls"); SetColor(LightGreen,White);

switch(key) {

case LEFT: if (counter>0) {

color[counter]=8;

color[--counter]=2;

}

break;

case RIGHT: if (counter<2) {

color[counter]=8;

color[++counter]=2;

}

break;

}

SetColor(LightGreen,DarkGray); cprintf(" ");

SetColorm(12,color[0]);

cprintf(" Н"); SetColorm(14,color[0]);cprintf("азат ");

SetColorm(12,color[1]);

cprintf(" O"); SetColorm(14,color[1]); cprintf("ткрыть ");

SetColorm(14,8); cprintf(" ");

SetColorm(12,color[2]);

cprintf(" Выход ");

SetColorm(12,8); cprintf(" ");

SetColor(Black,White);

cprintf(" 2009 "

" "

" "

" "

" "

" "

" "

" "

" "

"Информационная система"

" "

"Клиенты банка"

" "

" "

" "

" "

" "

" "

" "

" "

" "

" "

" ");

key=key = getch();

if (key == ENTER){

switch(counter){

case 0:

main();break;

case 1:

open();break;

case 2:

exit(10);

}

}

}

}

void admin()

{

int key=0,counter=0;

int color[]={3,8,8,8};

char temp[8];

SetColor(Black,White);

cprintf(" Введите пароль:");

cin>>temp;

if (strcmp(temp,pas) != 0) main();

guest=0;

while (1) {

SetColor(White,White);

system("cls"); SetColor(LightGreen,White);

switch(key) {

case LEFT: if (counter>0) {

color[counter]=8;

color[--counter]=2;

}

break;

case RIGHT: if (counter<3) {

color[counter]=8;

color[++counter]=2;

}

break;

}

SetColorm(8,8); cprintf(" ");

SetColorm(10,color[0]);

cprintf(" Н"); SetColorm(14,color[0]);cprintf("азат ");

SetColorm(10,color[1]);

cprintf(" C"); SetColorm(14,color[1]); cprintf("оздать ");

SetColorm(10,color[2]);

cprintf(" O"); SetColorm(14,color[2]); cprintf("ткрыть ");

SetColorm(10,8); cprintf(" ");

SetColorm(10,color[3]);

cprintf(" Выход ");

SetColorm(10,8); cprintf(" ");

SetColor(Black,White);

cprintf(" 2011 "

" "

" "

" "

" "

" "

" "

" "

" "

"Информационная система"

" "

"Клиенты банка"

" "

" "

" "

" "

" "

" "

" "

" "

" "

" "

" ");

key= getch();

if (key == ENTER) {

switch(counter) {

case 0:

main();break;

case 1:

create();break;

case 2:

open();break;

case 3:

exit(10);

}

}

}

}

void interfac(char fn)

{

FILE *fp;

data st;

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

system("cls");

while(1) {

SetColor(White,DarkGray);

GotoXY(0,0);

cprintf(" ");

SetColor(LightRed,DarkGray);

cprintf(" - - Клиенты - - ");

SetColorm(10,DarkGray);

cprintf(" ");

switch(key)

{

case LEFT: if (counter>0) {

color[counter]=7;

color[--counter]=2;

}

break;

case RIGHT: if (counter<5) {

color[counter]=7;

color[++counter]=2;

}

break;

}

SetColorm(10,7); cprintf(" ");

SetColorm(10,color);

cprintf(" Д"); SetColorm(0,color); cprintf("обавить");

SetColorm(10,color);

cprintf(" У"); SetColorm(0,color); cprintf("далить");

SetColorm(10,color[2]);

cprintf(" И"); SetColorm(0,color[2]); cprintf("зменить");

SetColorm(10,color[3]);

cprintf(" П"); SetColorm(0,color[3]); cprintf("оиск");

SetColorm(10,color[4]);

cprintf(" С"); SetColorm(0,color[4]); cprintf("ортировать");

SetColorm(10,7); cprintf(" ");

SetColorm(10,color[5]);

cprintf(" Н"); SetColorm(0,color[5]); cprintf("азат");

SetColorm(10,7); cprintf(" ");

view(fn,num);

SetColor(Black,White);

key= getch();

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==ESC)

return;

if (key == ENTER)

{

switch(counter) {

case 0: if (guest ==1)break; else add(fn); system("cls"); break;

case 1: if (guest ==1)break; else del(fn); break;

case 2: if (guest ==1)break; else edit(fn); system("cls"); break;

case 3: find(fn); break;

case 4: sort(fn); break;

case 5: return;

}

}

}

}

void add(char fn[10])

{

FILE *fp;

data st;

int pr;

while (1) {

st.num=find_max_num(fn)+1;

system("cls");

GotoXY(20,6);cout<<"Ф. И. О. : "; cin>>st.FIO;

GotoXY(20,8); cout<<"Номер счета : "; cin>>st.num_schet;

GotoXY(20,10); cout<<"Тип счета : "; cin>>st.Tip;

GotoXY(20,12); cout<<"Адрес : "; cin>>st.adres;

GotoXY(20,14);cout<<"Срок : "; cin>>st.srok;

GotoXY(20,16);cout<<"Ставка : "; cin>>st.stavka;

GotoXY(20,18);cout<<"Баланс : "; cin>>st.Balans;

GotoXY(20,20);cout<<"Дата : "; cin>>st.data;

fflush(stdin);

if (!check(fn, st)) {

if ((fp = fopen(fn,"ab+")) == NULL) {

printf("не возможно открыть файл.\n");

return;

}

fwrite(&st, sizeof(data),1,fp);

fclose(fp);

return;

}

else {

GotoXY(20,20);

cout<<"Запись уже существует";

getch();

}

}

}

void del(char fn[10])

{

FILE *fp,*temp;

data st;

int pr=1;

int number;

GotoXY(4,25);

SetColor(LightCyan,White);

cprintf("Введите номер записи : ");

SetColor(Yellow,White);

GotoXY(36,25);

int key = 0;

cscanf("%d",&number);

SetColor(Black,White);

while(kbhit())

if (!(key=getch()))

key << 8;

if( key == '\r' ) {

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

cout<<"Ошибка - фаил отсутствует.";

return;

}

if ((temp=fopen("temp.$$$","wb")) == NULL) {

cout<<"Ошибка - невозможно создать временой файл";

return;

}

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

if (feof(fp))

break;

if (st.num != number)

fwrite(&st,sizeof(data),1,temp);

else

pr=0;

}

fclose(fp);

fclose(temp);

if (remove(fn) == -1) {

perror("преименование");

return;

}

if (rename("temp.$$$",fn) == -1) {

perror("переименование");

return;

}

if (pr) {

SetColor(LightGreen,DarkGray);

GotoXY(4,25);

cprintf("\r Ошибка - запись не существует ");

getch();

}

}

system("cls");

}

void edit(char fn[10])

{

FILE *fp;

data st;

int pr=1;

int number,size=sizeof(data);

fpos_t filepos;

GotoXY(4,25);

SetColorm(11,15);

cprintf("Введите номер записи : ");

SetColor(Yellow,White);

GotoXY(44,25);

int key = 0;

cscanf("%d",&number);

SetColor(Black,White);

while( kbhit())

if( !(key = getch()))

key << 8;

if( key == '\r' )

{

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

{

printf("Ошибка - невозможно открыть файл.\n");

return;

}

while(fread(&st,size,1,fp))

{

if (feof(fp))

break;

if (st.num == number)

{

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

fgetpos(fp,&filepos);

pr=1;

break;

}

else

pr=0;

}

if (pr)

{

while (1)

{

system("cls");

GotoXY(20,6);cout<<"Ф. И. О. : "; cin>>st.FIO;

GotoXY(20,8); cout<<"Номер счета : "; cin>>st.num_schet;

GotoXY(20,10); cout<<"Тип счета : "; cin>>st.Tip;

GotoXY(20,12); cout<<"Адрес : "; cin>>st.adres;

GotoXY(20,14);cout<<"Срок : "; cin>>st.srok;

GotoXY(20,16);cout<<"Ставка : "; cin>>st.stavka;

GotoXY(20,18);cout<<"Баланс : "; cin>>st.Balans;

GotoXY(20,20);cout<<"Дата : "; cin>>st.data;

fflush(stdin);

if (!check(fn, st))

{

fsetpos(fp,&filepos);

fwrite(&st, sizeof(data),1,fp);

break;

}

else {

GotoXY(20,18);

cout<<"Запись уже существует";

getch();

}

}

}

else {

SetColorm(14,8);

GotoXY(4,25);

cprintf("\r Ошибка - стаким номером запись не существует ");

getch();

}

fclose(fp);

}

}

void view(char fn[10],int n)

{

void ramka();

FILE *fp;

data st;

char c;

int counter=0;

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

printf("Невозможно открыть файл.\n");

return;

}

ramka();

fseek(fp,(n-1)*sizeof(data),SEEK_SET);

while (counter != 18)

{

fread(&st,sizeof(data),1,fp);

if (feof(fp))

break;

else

{

SetColor(Black,White);

printf("%3d %-13s %-9s %-8s %-11s %-2d %-2.2f %-5.0f %-5s\n"

st.num,st.FIO,st.num_schet,st.Tip,st.adres,st.srok,st.stavka,st.Balans,st.data);

counter++;

}

}

GotoXY(0,22);

cprintf("-----------------------------------"

"---------------------------------------------");

cprintf(" %c - верх, %c - вниз , %c - влево,"

" %c - вправо, ESC - отмена ",0x018,0x019,0x01B,0x01A);

SetColor(Green,White); cprintf("%14s",fn);

SetColor(Black,White);

fclose(fp);

}

void sort(char fn[10])

{

FILE *fp;

data s1,s2;

int num=1,size=sizeof(data),counter=0,key=0;

int oldfs,newfs,color[]={2,7,7,7,7};

while(1)

{

SetColor(Red,White);

GotoXY(0,0);

cprintf(" Меню сортировки"

" ");

switch(key)

{

case LEFT: if (counter>0) {

color[counter]=7;

color[--counter]=2;

}

break;

case RIGHT: if (counter<4) {

color[counter]=7;

color[++counter]=2;

}

break;

}

SetColorm(10,7); cprintf(" ");

SetColorm(10,color[0]); cprintf(" по "); SetColorm(1,color[0]); cprintf("номеру ");

SetColorm(10,color[1]); cprintf(" по "); SetColorm(1,color[1]); cprintf("Ф.И.О. ");

SetColorm(10,color[2]); cprintf(" по "); SetColorm(1,color[2]); cprintf("адресу ");

SetColorm(10,color[3]); cprintf(" по "); SetColorm(1,color[3]); cprintf("срок ");

SetColorm(1,7); cprintf(" ");

SetColorm(10,color[4]); cprintf(" Н"); SetColorm(1,color[4]); cprintf("азат");

SetColorm(1,7); cprintf(" "); SetColor(White,Black);

view(fn,num);

SetColor(Black,White);

key=getch();

switch(key)

{

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

num=1;

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)

{

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

{

cout<<"Ошибка - невозможно прочитать файл";

return;

}

switch(counter) {

case 1:

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.FIO,s2.FIO) > 0) {

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

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

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

newfs=1;

}

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.adres,s2.adres) > 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.srok < s2.srok) {

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[10])

{

void ramka();

FILE* fp;

data st;

char string[15];

int pr,prs;

int key=0,counter=0;

int color[]={2,7,7,7,7};

while (1) {

system("cls"); SetColor(Red,LightGray);

GotoXY(0,0);

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

" ");

SetColorm(15,7);

cprintf(" ");

switch(key)

{

case LEFT: if (counter>0) {

color[counter]=7;

color[--counter]=2;

} break;

case RIGHT: if (counter<4) {

color[counter]=7;

color[++counter]=2;

} break;

}

SetColorm(10,color[0]);

cprintf(" по "); SetColorm(0,color[0]); cprintf("номеру ");

SetColorm(10,color[1]);

cprintf(" по "); SetColorm(0,color[1]); cprintf("номеру счета ");

SetColorm(10,color[2]);

cprintf(" по "); SetColorm(0,color[2]); cprintf("адресу ");

SetColorm(10,color[3]);

cprintf(" по "); SetColorm(0,color[3]); cprintf("Ф.И.О. ");

SetColorm(10,7); cprintf(" ");

SetColorm(10,color[4]);

cprintf(" О"); SetColorm(0,color[4]); cprintf("тмена ");

SetColorm(10,7);

cprintf(" ");

SetColor(Black,White);

key=getch();

if (key==283)

return;

if (key == ENTER)

{

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

puts("Не возможно открыть фаил");

return;

}

switch(counter)

{

case 0:

int number;

pr=0;

prs=1;

cout<<"Введите номер записи : ";

fflush(stdin);

scanf("%d",&number);

rewind(fp);

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

if (feof(fp)) {

break;

}

if(st.num == number) {

if (prs) {

ramka();

GotoXY(1,6);

prs=0;

}

printf("%3d %-13s %-9s %-8s %-11s %-2d %-2.2f %-5.0f %-5s\n"

st.num,st.FIO,st.num_schet,st.Tip,st.adres,st.srok,st.stavka,st.Balans,st.data);

pr=1;

}

}

if(!pr) {

cout<<"\nНет данных";

}

getch();

break;

case 1:

prs=1;

pr=0;

cout<<"Введите номер счета : ";

fflush(stdin);

cin>>string;

rewind(fp);

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

if (feof(fp))

break;

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

if (prs) {

ramka();

GotoXY(1,6);

prs=0;

}

printf("%3d %-13s %-9s %-8s %-11s %-2d %-2.2f %-5.0f %-5s\n"

st.num,st.FIO,st.num_schet,st.Tip,st.adres,st.srok,st.stavka,st.Balans,st.data);

pr=1;

}

}

if(!pr) {

cout<<"\Нет данных";

}

getch();

break;

case 2:

prs=1;

pr=0;

cout<<"Введите адрес : ";

fflush(stdin);

cin>>string;

rewind(fp);

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

if (feof(fp))

break;

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

if (prs) {

ramka();

GotoXY(1,6);

prs=0;

}

printf("%3d %-13s %-9s %-8s %-11s %-2d %-2.2f %-5.0f %-5s\n"

st.num,st.FIO,st.num_schet,st.Tip,st.adres,st.srok,st.stavka,st.Balans,st.data);

pr=1;

}

}

if(!pr) {

cout<<"\nНет данных";

}

getch();

break;

case 3:

prs=1;

pr=0;

cout<<"Введите название : ";

fflush(stdin);

cin>>string;

rewind(fp);

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

if (feof(fp))

break;

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

if (prs) {

ramka();

GotoXY(1,6);

prs=0;

}

printf("%3d %-13s %-9s %-8s %-11s %-2d %-2.2f %-5.0f %-5s\n"

st.num,st.FIO,st.num_schet,st.Tip,st.adres,st.srok,st.stavka,st.Balans,st.data);

pr=1;

}

}

if(!pr) {

cout<<"\Нет данных";

}

getch();

break;

case 4:

fclose(fp);

return;

}

fclose(fp);

}

}

}

void ramka()

{

SetColorm(1,15);

cprintf("======================");

SetColorm(3,15);

cprintf("%3s %-13s %-9s %-8s %-12s %-4s %-6s %-6s %-8s ",

"#","Ф. И. О. ","№ счета","Тип","Адрес","Срок","Ставка"," Баланс ","Дата");

SetColorm(1,15);

cprintf("========================");

}

int find_max_num(char fn[10])

{

FILE*fp;

data st;

int max;

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

printf("не возможно открыть файл.\n");

return -1;

}

max=0;

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

if (feof(fp))

break;

if (st.num>max)

max=st.num;

}

fclose(fp);

return max;

}

int get_number(char fn[10])

{

FILE *fp;

int fd,n=0;

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

{

printf("Не возможно открыть файл.\n");

return -1;

}

fd=fileno(fp);

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

fclose(fp);

return n;

}

void create()

{

FILE *fp;

char fn[10];

SetColor(Black,White);

cprintf(" Введите название базы: ");

fflush(stdin);

cscanf("%s",fn);

strcat(fn,".dat");

SetColor(LightRed,White);

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

cout<<"Ошибка - не возможно создать файл.\n";

getch();

exit(10);

}

fclose(fp);

SetColor(Black,White);

interfac(fn);

}

void open()

{

FILE *fp;

char fn[10];

SetColor(Black,White);

cprintf(" Введите название базы : ");

fflush(stdin);

cin>>fn;

strcat(fn,".dat");

SetColor(LightRed,White);

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

cout<<"Ошибка - не возможно создать файл.\n";

getch();

exit(10);

}

fclose(fp);

SetColor(Black,White);

interfac(fn);

}

int check(char fn[10], data st)

{

FILE *fp;

data temp;

int pr=0;

SetColor(LightRed,White);

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

printf("Ошибка - не возможно создать файл.\n");

return 0;

}

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

if (feof(fp))

break;

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

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

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

&& (st.srok == temp.srok)

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

&& (st.Balans == temp.Balans)

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

&& (st.stavka == temp.stavka))

{

pr=1;

break;

}

} fclose(fp);

SetColor(Black,White);

return pr;

}

Список литературы

Том Сван. Программирование для Windows в Borland C++. М: Бином, 1996г. - 480с.

В.В. Подбельский. Язык Сии++. М:Финансы и статистика, 2000г. - 560с.

Джефф Елджер. Библиотека программиста С++. С.-Петербург: Питер, 2000г. - 320с.

Г. Уинер. Язык Турбо С.М.: Мир, 1991г. - 384с.

Подготовительные текстовые файлы по изучению Borland C++. лаборатория ВОТ, 1999г. - 250с.

Типичные примеры программ на Borland C++ файлы проектов ОТ1-ОТ5

Размещено на Allbest.ru


Подобные документы

  • Проведение системного анализа предметной области и разработка проекта по созданию базы данных для хранения информации о перевозках пассажиров и грузов. Обоснование выбора системы управления базой данных и разработка прикладного программного обеспечения.

    курсовая работа [1,1 M], добавлен 18.07.2014

  • Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.

    курсовая работа [532,7 K], добавлен 20.07.2014

  • Структура, классификация и этапы проектирования баз данных. Системы управления базами данных, их жизненный цикл. Разработка и реализация базы данных в MS Access. Организация входных и выходных данных. Защита данных от внешних угроз. Сведение о программе.

    курсовая работа [558,6 K], добавлен 21.06.2012

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

  • Разработка программного обеспечения для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах с использованием языка программирования С# и MySQL. Проектирование интерфейсов системы. Схема алгоритма работы программы.

    курсовая работа [665,6 K], добавлен 02.04.2015

  • Проектирование базы данных "Вклад", в которой вкладчики делают вклады разного вида в одном из нескольких филиалов банка. Интерфейс в режиме конструктора. Создание таблицы "Учет вкладов" в виде ленточной формы. Схема данных, кнопка выхода в интерфейс.

    курсовая работа [1,4 M], добавлен 24.03.2015

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Модели баз данных. Локальная, файл-серверная, клиент-серверная и распределенная архитектуры. Технология BDE для доступа к данным. Драйверы баз данных. Создание таблицы, интерфейс программы, дерево объектов, инсталлятор. Системы визуальной разработки.

    курсовая работа [989,5 K], добавлен 04.06.2013

  • Создание баз данных с использованием Database Desktop. Проведение автоматизации рабочего места кассира. Описание входной и выходной информации. Выбор среды реализации, состава и параметров технических средств. Проектирование интерфейса программы.

    курсовая работа [1021,5 K], добавлен 22.01.2015

  • Разработка и реализация базы данных для библиотеки, обеспечение хранения, накопления и предоставления информации о деятельности библиотеки. Компьютерное обеспечение информационных процессов, проектирование структуры входящей информации и выходных данных.

    курсовая работа [2,5 M], добавлен 17.09.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.