Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovaya_po_PTS_PEChAT__33__33 (1).doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
216 Кб
Скачать
☆

2 Описание программы

Алгоритм работы программы представлен в виде блок-схемы в ПРИЛОЖЕНИЕ 1. Полный текст программы (листинг) представлен в ПРИЛОЖЕНИИ 2.

Глобальные переменные, используемые в программе:

1. struct bil – структура записей в базе данных;

2. char num[L] – год рождения сотрудника;

3. char fio[L] – Ф.И.О. сотрудника;

4. char kol[L] – образование;

5. char vir[L] – занимаемая должность;

6. char data[L] – дата поступления в фирму.

Разработанные подпрограммы:

1. void soz – ввод новой базы данных;

2. void openfile – открыть файл данных;

3. void redakt – редактирование записи в файле данных;

4. void sohranenie – сохранение в файле данных;

5. void dop – добавление записи в файл данных;

6. void udalenie – удаление записи из файла данных;

7. void poisknumvir – поиск записей по году рождения в файле данных;

8. void sortfio – Сортировка файла данных по Ф.И.О сотрудника.

3 Тестирование программы

При входе в программу появляется меню с выбором пунктов меню, доступных для любого пользователя (рисунок 1):

1. создать базу данных;

2. открыть базу данных;

3. редактировать базу данных;

4. добавить запись;

5. удалить запись;

6. поиск по полю год рождения;

7. сортировка по полю Ф.И.О. сотрудника;

8. выход.

Рисунок 1 – Главное меню программы

Теперь посмотрим, что происходит при нажатии пользователем каждого пункта меню. При неверном вводе данных во всех пунктах меню выходит сообщение об ошибке. Номера пунктов - номера клавиш на клавиатуре.

1.Создать базу данных

Перед тем, чтоб ввести количество записей и самих данных, необходимо ввести имя создаваемого файла. После введения количества записей последовательно выводятся предложения ввести все данные (рисунок 2):

Рисунок 2 – Создание базы данных

2.Открыть базу данных

В этом пункте пользователь может просмотреть свой файл: (рисунок 3):

Рисунок 3 – Открытие базы данных

3. Редактировать базу данных

Редактирование базы данных производится по каждому полю строки (рисунок 4):

Рисунок 4 – Редактирование базы данных

4. Добавить запись.

Добавление записи происходит путем добавлении строки в базе данных и заполнения ее введенными параметрами (рисунок 5):

Рисунок 5 – Добавление данных в базу данных

5.Удалить запись

Удаление записей производится по номеру строки (рисунок 6):

Рисунок 6 – Удаление данных из базы данных

6. Поиск по полю год рождения

В данном пункте осуществляется поиск лиц пенсионного и предпенсионного возраста больше либо равно заданному значению (рисунок 7):

Рисунок 7 – Поиск по базе данных

7. Сортировка по полю Ф.И.О. сотрудника

База данных до сортировки показана на рисунке 8, после сортировки на рисунке 9.

Рисунок 8 –Базы данных до сортировки

Рисунок 9 –Базы данных после сортировки

8. Выход (рисунок 10).

Рисунок 10 – Выход из базы данных

ЗАКЛЮЧЕНИЕ

В ходе выполнения курсовой работы была создана программа на языке Си. Средой разработки был выбран - С++Builder. Разработанная программа «База данных сотрудников фирмы», содержащая сведения о сотрудниках фирмы. Программа служит для создания новой базы данных, открытие уже имеющейся базы данных, редактирование, добавления, удаление и сортировка записей в базе данных.

ПРИЛОЖЕНИЕ 2. Листинг программы:

#include <cstdlib>

#include <iostream>

#include<fstream>

#include<conio.h>

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<iomanip>

#include <windows.h>

const int L=130;int k,n;

char str[256],filename[130];

struct bil

{

char num[L];

char fio[L];

char kol[L];

char vir[L];

char data[L];

};

const int N=100;

class bils

{

private:

bil a[N];

int n;

int l;

public:

void soz();

void openfile();

void open();

void redakt();

void sohranenie();

void dop();

void udalenie();

void poisknumvir();

void sortfio();

};

int main(int argc, char *argv[])

{

system("CLS");

bils a;

int pm;

while(1)

{

system("CLS");

CharToOem("\n\n Программа выполнена студентом 3 курса группы 113019 Короленко Ф.В.\n\n",str);

cout<<str;

CharToOem("______________________________________________________\n",str);

cout<<str;

CharToOem("| |\n",str);

cout<<str;

CharToOem("| 1 Создать базу данных |\n",str);

cout<<str;

CharToOem("| 2 Открыть базу данных |\n",str);

cout<<str;

CharToOem("| 3 Редактировать базу данных |\n",str);

cout<<str;

CharToOem("| 4 Добавить запись |\n",str);

cout<<str;

CharToOem("| 5 Удалить запись |\n",str);

cout<<str;

CharToOem("| 6 Поиск по полю Год рождения |\n",str);

cout<<str;

CharToOem("| 7 Сортировка по полю Ф.И.О. |\n",str);

cout<<str;

CharToOem("| 8 Выход |\n",str);

cout<<str;

CharToOem("|_____________________________________________________|\n",str);

cout<<str;

CharToOem("\nВведите пункт: \n",str);

cout<<str;

cin>>pm;

cout<<endl<<endl;

switch(pm)

{

case 1:a.soz();break;

case 2:a.openfile();break;

case 3:a.redakt();break;

case 4:a.dop();break;

case 5:a.udalenie();break;

case 6:a.poisknumvir();break;

case 7:a.sortfio();break;

case 8:{system("CLS");CharToOem("\n\nКонЕц работы...\n\n\n",str);cout<<str;system("PAUSE");return EXIT_SUCCESS;}

default:{CharToOem("Такого пункта не существует\n",str);cout<<str;system("PAUSE");break;}

}

}

}

int Check(char b)//Проверка на символы

{

if(isalpha(b)) k=0;

}

int Check1(char b)//Проверка на числа

{

if(isdigit(b)) k=0;

}

void bils::soz()//Создание новой БД

{

int i, j, q, n=0 , y, m;

char t[70], d[L];

system("CLS");

CharToOem("Введите адрес создаваемого файла: \n",str);

cout<<str; cin>>filename;

CharToOem("Введите количество записей", str);

cout<<str<<endl;

do

{

k=1;

cin>>d;

m=strlen(d);

for(i=0; i<m; i++)

{

Check(d[i]);

}

if(k==0)

{ CharToOem("Неверный ввод. Повторите", str);

cout<<str;}

}

while (k==0);

n=atoi(d);

for(i=0; i<n; i++)

{

cout<<"\n#"<<i+1;

CharToOem ("Год рождения: ", str);

cout<<endl<<str;

do

{

k=1;

cin>>a[i].num;

q=strlen(a[i].num);

for(j=0; j<q; j++)

{

Check(a[i].num[j]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число",str);

cout<<str<<endl;

}

}

while (k==0);

CharToOem("Ф.И.О. ", str);

cout<<endl<<str;

do

{

k=1;

cin>>a[i].fio;

q=strlen(a[i].fio);

for(j=0; j<q; j++)

{

Check1(a[i].fio[j]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem("Образование: ", str);

cout<<endl<<str;

do

{

k=1;

cin>>a[i].kol;

q=strlen(a[i].kol);

for(j=0; j<q; j++)

{

Check1(a[i].kol[j]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str); cout<<str<<endl;}

}

while (k==0);

CharToOem("Должность: ", str);

cout<<endl<<str;

do

{

k=1;

cin>>a[i].vir;

q=strlen(a[i].vir);

for(j=0; j<q; j++)

{

Check1(a[i].vir[j]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem("Дата поступления в фирму ДД.ММ.ГГГГ: ", str);

cout<<endl<<str;

do

{

k=1;

cin>>a[i].data;

q=strlen(a[i].data);

for(j=0; j<q; j++)

{

Check(a[i].data[j]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str);

cout<<str<<endl;}

}

while (k==0);

}

n--;

ofstream fout(filename);

if (!fout)

{ CharToOem("Файл не открыт\n",str);cout<<str; }

i=0; fout<<a[i].num<<" "<<a[i].fio<<" "<<a[i].kol<<" "<<a[i].vir<<" "<<a[i].data;

for(i=1; i<=n; i++)

{

fout<<'\n'<<a[i].num<<" "<<a[i].fio<<" "<<a[i].kol<<" "<<a[i].vir<<" "<<a[i].data;

}

fout.close();

system("PAUSE");

}

void bils::openfile()//Просмотр существующей БД

{

int m;

system("CLS");

CharToOem("Введите адрес открываемого файла: \n",str);

cout<<str; cin>>filename;

ifstream fin;

fin.open(filename);

if (!fin)

{

system("CLS");CharToOem("Файл не открыт!\n",str);cout<<str; system("PAUSE");return;

}

int i=0;

CharToOem("\nБаза данных сотрудников фирмы: \n\n",str);

cout<<str;

CharToOem(" №",str);

cout<<setw(3)<<str;

CharToOem(" год рождения",str);

cout<<setw(10)<<str;

CharToOem(" Ф.И.О. ",str);

cout<<setw(18)<<str;

CharToOem("образование " ,str);

cout<<setw(16)<<str;

CharToOem("Должность ",str);

cout<<setw(18)<<str;

CharToOem("Дата поступления в фирму\n\n",str);

cout<<setw(20)<<str;

while(!fin.eof())

{

cout<<setw(3)<<i+1;

fin>>a[i].num; cout<<setw(10)<<a[i].num;

fin>>a[i].fio; cout<<setw(18)<<a[i].fio;

fin>>a[i].kol; cout<<setw(16)<<a[i].kol;

fin>>a[i].vir; cout<<setw(18)<<a[i].vir;

fin>>a[i].data; cout<<setw(20)<<a[i].data<<endl;

i++;

}

n=i--;

fin.close();

cout<<"\n";

system("PAUSE");

}

void bils::open()//Просмотр существующей БД

{

int m;

system("CLS");

ifstream fin;

fin.open(filename);

if (!fin)

{

system("CLS");CharToOem("Файл не открыт!\n",str);cout<<str; system("PAUSE");return;

}

int i=0;

CharToOem("\nБаза данных сотрудников фирмы: \n\n",str);

cout<<str;

CharToOem(" №",str);

cout<<setw(3)<<str;

CharToOem(" год рождения",str);

cout<<setw(10)<<str;

CharToOem(" Ф.И.О. ",str);

cout<<setw(18)<<str;

CharToOem("образование " ,str);

cout<<setw(16)<<str;

CharToOem("Должность ",str);

cout<<setw(18)<<str;

CharToOem("Дата поступления в фирму\n\n",str);

cout<<setw(20)<<str;

while(!fin.eof())

{

cout<<setw(3)<<i+1;

fin>>a[i].num; cout<<setw(10)<<a[i].num;

fin>>a[i].fio; cout<<setw(18)<<a[i].fio;

fin>>a[i].kol; cout<<setw(16)<<a[i].kol;

fin>>a[i].vir; cout<<setw(18)<<a[i].vir;

fin>>a[i].data; cout<<setw(20)<<a[i].data<<endl;

i++;

}

n=i--;

fin.close();

cout<<"\n";

system("PAUSE");

}

void bils::redakt()//Редактирование БД

{

open();

char t[70], d[L];

int y, q, i,m;

CharToOem("Введите номер редактируемой записи: ", str);

cout<<endl<<str;

do

{

k=1;

cin>>d;

q=strlen(d);

for(i=0; i<q; i++)

{

Check(d[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите", str);

cout<<str<<endl;}

}

while (k==0);

y=atoi(d);

y--;

cout<<endl;

cout<<y+1<<" "<<a[y].num<<" "<<a[y].fio<<" "<<a[y].kol<<" "<<a[y].vir<<" "<<a[y].data<<endl<<endl;

CharToOem("Изменить поле год рождения?\n1-да\n2-нет\n",str);cout<<str;

cin>>k;

if(k==1)

{

CharToOem("Новое значение поля год рождения: \n",str);cout<<str;

do

{

k=1;

cin>>a[y].num;

q=strlen(a[y].num);

for(i=0; i<q; i++)

{

Check(a[y].num[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число",str);

cout<<str<<endl;}

}

while (k==0);

}

CharToOem("Изменить поле Ф.И.О.?\n1-да\n2-нет\n",str);cout<<str;

cin>>k;

if(k==1)

{

CharToOem("Новое значение поля Ф.И.О.: \n",str);cout<<str;

do

{

k=1;

cin>>a[y].fio;

q=strlen(a[y].fio);

for(i=0; i<q; i++)

{

Check1(a[y].fio[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str);

cout<<str<<endl;}

}

while (k==0);

}

CharToOem("Изменить поле Образование?\n1-да\n2-нет\n",str);cout<<str;

cin>>k;

if(k==1)

{

CharToOem("Новое значение поля Образование: \n",str);cout<<str;

do

{

k=1;

cin>>a[y].kol;

q=strlen(a[y].kol);

for(i=0; i<q; i++)

{

Check1(a[y].kol[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

}

CharToOem("Изменить поле Должность?\n1-да\n2-нет\n",str);cout<<str;

cin>>k;

if(k==1)

{

CharToOem("Новое значение поля Должность\n",str);cout<<str;

do

{

k=1;

cin>>a[y].vir;

q=strlen(a[y].vir);

for(i=0; i<q; i++)

{

Check1(a[y].vir[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

}

CharToOem("Изменить поле Дата?\n1-да\n2-нет\n",str);cout<<str;

cin>>k;

if(k==1)

{

CharToOem("Новое значение поля Дата ДД.ММ.ГГГГ \n",str);cout<<str;

do

{

k=1;

cin>>a[y].data;

q=strlen(a[y].data);

for(i=0; i<q; i++)

{

Check(a[y].data[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str);

cout<<str<<endl;}

}

while (k==0);

}

sohranenie();

}

void bils::dop()//Добавление новой записи

{

openfile();

bil m;

char t[70];

int q, i;

cout<<endl;

CharToOem ("Введите новые данные\n ", str);cout<<str;

CharToOem ("\nгод рождения: ", str);cout<<str;

do

{

k=1;

cin>>m.num;

q=strlen(m.num);

for(i=0; i<q; i++)

{

Check(m.num[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem ("\nФ.И.О.: ",str);

cout<<str;

do

{

k=1;

cin>>m.fio;

q=strlen(m.fio);

for(i=0; i<q; i++)

{

Check1(m.fio[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Повторите.", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem ("\nОбразование: ",str);

cout<<str;

do

{

k=1;

cin>>m.kol;

q=strlen(m.kol);

for(i=0; i<q; i++)

{

Check1(m.kol[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem("\nДолжность: ",str);

cout<<str;

do

{

k=1;

cin>>m.vir;

q=strlen(m.vir);

for(i=0; i<q; i++)

{

Check1(m.vir[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

CharToOem("\nДата поступления в фирму: ",str);cout<<str;

do

{

k=1;

cin>>m.data;

q=strlen(m.data);

for(i=0; i<q; i++)

{

Check(m.data[i]);

}

if(k==0)

{CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

a[n]=m;

sohranenie();

}

void bils::udalenie()//Удаление записи

{

int i, q,l=1, j,r;

char ch, t[70], d[L];

open();

cout<<endl;

CharToOem("Введите номер удаляемой строки: ",str);

cout<<str;

do

{

k=1;

cin>>d;

q=strlen(d);

for(i=0; i<q; i++)

{

Check(d[i]);

}

if(k==0)

{ CharToOem("Неверный ввод. Введите число", str);

cout<<str<<endl;}

}

while (k==0);

j=atoi(d);

if(j<0||j>n)

{

CharToOem("Ошибка", str);

cout<<str<<endl;

system ("PAUSE");

return;

}

cout<<j<<" "<<a[j-1].num<<" "<<a[j-1].fio<<" "<<a[j-1].kol<<" "<<a[j-1].vir<<" "<<a[j-1].data<<endl;

for(i=j;i<=n;i++)

{

a[i-1]=a[i];

}

CharToOem("Удалить строку? \nДа-1 \nНет-2\n", str);cout<<str;

cin>>r;

if(r==1)

{

l=0;

n--;

sohranenie();

}

}

void bils::poisknumvir()//Поиск по году рождения

{

int q,i,u,r,p=0;

char kol[L];

open();

CharToOem("\nВведите год рождения:",str);cout<<str;

do

{

k=1;

cin>>kol;

q=strlen(kol);

for(u=0; u<q; u++)

{

Check(kol[u]);

}

if(k==0)

{ CharToOem("Неверный ввод. Повторите.", str); cout<<str<<endl;}

}

while (k==0);

system("CLS");

CharToOem(" год рождения",str);

cout<<setw(10)<<str;

CharToOem(" Ф.И.О. ",str);

cout<<setw(18)<<str;

CharToOem("образование " ,str);

cout<<setw(16)<<str;

CharToOem("Должность ",str);

cout<<setw(18)<<str;

CharToOem("Дата поступления в фирму\n\n",str);

cout<<setw(20)<<str;

k=0;

for(i=0; i<n

; i++)

if(strcmpi(kol,a[i].num)>=0)

{

k=1;

cout<<setw(10)<<a[i].num;

cout<<setw(18)<<a[i].fio;

cout<<setw(16)<<a[i].kol;

cout<<setw(18)<<a[i].vir;

cout<<setw(20)<<a[i].data<<endl;

}

system("PAUSE");

CharToOem("Сохранить изменения?\n Да-1\n Нет-2: ",str);

cout<<str;

cin>>r;

if(r==1) {

if (k==1) { system("CLS");

CharToOem("Введите адрес создаваемого файла: \n",str);

cout<<str; cin>>filename;

ofstream fout(filename);

if (!fout)

{ CharToOem("Файл не открыт\n",str);cout<<str; }

for(i=0; i<=n-1; i++)

if(strcmpi(kol,a[i].num)>=0){

fout<<'\n'<<a[i].num<<" "<<a[i].fio<<" "<<a[i].kol<<" "<<a[i].vir<<" "<<a[i].data;}

fout.close(); }

system("PAUSE"); }

if(!k) {CharToOem(" \n\n Поиск не дал результатов.\n",str); cout<<str;

system("PAUSE");}system("CLS");

}

void bils::sortfio()//Сортировка по Ф.И.О.

{

int i,fl,f,r;

open();

bil t;

f=n-1;

do

{

fl=0;

for(i=0;i<n;i++)

{

if (strcmp(a[i].fio,a[i+1].fio)>0)

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

fl=1;

}

}

f--;

}

while(fl==1);

system("CLS");

CharToOem(" год рождения",str);

cout<<setw(10)<<str;

CharToOem(" Ф.И.О. ",str);

cout<<setw(18)<<str;

CharToOem("образование " ,str);

cout<<setw(16)<<str;

CharToOem("Должность ",str);

cout<<setw(18)<<str;

CharToOem("Дата поступления в фирму\n\n",str);

cout<<setw(20)<<str;

for(i=1; i<=n; i++)

{

cout<<setw(10)<<a[i].num;

cout<<setw(18)<<a[i].fio;

cout<<setw(16)<<a[i].kol;

cout<<setw(18)<<a[i].vir;

cout<<setw(20)<<a[i].data<<endl;

}

CharToOem("Сохранить изменения?\n Да-1\n Нет-2: ",str);

cout<<str;

cin>>r;

if(r==1)

sohranenie();

}

void bils::sohranenie()//Сохранение

{

int i;

ofstream fout(filename);

if (!fout)

{ CharToOem("Файл не открыт\n",str);cout<<str; }

i=0; fout<<a[i].num<<" "<<a[i].fio<<" "<<a[i].kol<<" "<<a[i].vir<<" "<<a[i].data;

if (l==0) n--;

for(i=1; i<=n; i++)

{

fout<<'\n'<<a[i].num<<" "<<a[i].fio<<" "<<a[i].kol<<" "<<a[i].vir<<" "<<a[i].data;

}

fout.close(); system("PAUSE");

}