Разработка программного обеспечение хранения информации о клиентах банка
База данных как сведение данных по интересующим объектам, созданная с использованием команд в виде специальной таблицы. Приёмы графики в программе Си и её функции. Структура и интерфейс программы Си++, разработки алгоритмов подпрограмм и программ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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