Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая (Восстановлен).docx
Скачиваний:
6
Добавлен:
24.12.2018
Размер:
147.72 Кб
Скачать

2 Описание структур данных и алгоритмов, необходимых для реализации программного обеспечения

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

Была создана глобальная структура struct p, в которой будет храниться информация о пациенте, перед отправкой в файл. Также были созданы:

1) строковая переменная (для хранения в ней нужной нам Мед.Группой),

2) переменная x(для указания пациента, которого нужно редактировать),

3) переменная length и её ссылка dl(для хранения номера положения).

struct p{

int l;//Номер пациента

char f[20];//Фамилия пациента

char i[10];//Имя пациента

char o[20];//Отчество пациента

char date[20];//Дата рождения пациента

char N[10];//Медицинский номер пациента

char g[10];//Медицинская группа пациента

char adress[20];//Адрес пациента

}p;

char s[10];//Для хранения нужной группы

int x;//для указания номера пациента

long length;//для хранения указателя

long& dl = length;//ссылка на length

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

void vvod(){

FILE* fp = fopen("my_file.txt","a");//Открываем файл в режиме добавления

printf("Enter number:");

scanf("%d",&p.l);

printf("Enter Familia:");

scanf("%s",p.f);

printf("Enter Imya:");

scanf("%s",p.i);

printf("Enter Otchestvo:");

scanf("%s",p.o);

printf("Enter date:");

scanf("%s",p.date);

printf("Enter Med.Number:");

scanf("%s",p.N);

printf("Enter Med.Group:");

scanf("%s",p.g);

printf("Enter adress:");

scanf("%s",p.adress);//Записываем данные в структуру p

fprintf(fp,"%d %s %s %s %s %s %s %s \n",p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);//Записываем структуру в файл

printf("\n");

fclose(fp);}//Закрываем файл

Создаём функцию, которая будет выводить на экран всю информацию из файла.

void vivod(){

FILE* fp = fopen("my_file.txt","r");//Открываем файл в режиме чтения

do{

fscanf(fp,"%d %s %s %s %s %s %s %s\n",&p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);//Сканируем файл

printf("%d %s %s %s %s %s %s %s\n",p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);}//Выводим информацию о пациенте

while (!feof(fp));//Выполняем до конца файла

fclose(fp);}//Закрываем файл

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

void sort(){

FILE* fp = fopen("my_file.txt","r");//Открываем файл в режиме чтения

printf("Enter Sort.Med.Group:");

scanf("%s",s);//Вводим группу поиска

do{

fscanf(fp,"%d %s %s %s %s %s %s %s\n",&p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);

if((strcmp(p.g,s)==0))//сканируем пациента на наличие определённой группы

printf("Adress:%s\n",p.adress);}//Выводиим его эдрес на экран

while (!feof(fp));//выполняем до конца файла

fclose(fp);}

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

void redact()

{printf("Search number:");

scanf("%d",&x);//Вводим номер искомого пациента

FILE* fp=fopen("my_file.txt","r+");//Открываем файл в режиме чтения и записи

do {

fscanf(fp,"%d %s %s %s %s %s %s %s\n",&p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);//Ищем в файле пациента с определённым номером

if(p.l==(x-1))

{dl = ftell(fp);}}//Если пациент найден, запомнить номер позиции

while(!feof(fp));

fseek(fp,dl,SEEK_SET);//Устанавливаем указатель на начало записи редактируемого пациента

printf("Enter number:");

scanf("%d",&p.l);

printf("Enter Familia:");

scanf("%s",p.f);

printf("Enter Imya:");

scanf("%s",p.i);

printf("Enter Otchestvo:");

scanf("%s",p.o);

printf("Enter date:");

scanf("%s",p.date);

printf("Enter Med.Number:");

scanf("%s",p.N);

printf("Enter Med.Group:");

scanf("%s",p.g);

printf("Enter adress:");

scanf("%s",p.adress);

fprintf(fp,"%d %s %s %s %s %s %s %s",p.l,p.f,p.i,p.o,p.date,p.N,p.g,p.adress);//Вводим новые данные

fclose(fp);}//Закрываем файл

Создаём меню выбора в программе используя оператор цикла switch.

int _tmain

(int argc, _TCHAR* argv[])

{int a;//Вводим переменную выбора

printf("Select Action from the list\n1-add new patient in file\n2-show all patiens from file\n3-show adress of patients certain group\n4-redact patient whith number:[]\n0-exit program\n");//Информация о выборе

do{//Создаём цикл до введения 0

printf("Action:");

scanf("%d",&a);//Вводим необходимое действие

switch (a){//Оператор цикла switch

case 1:{vvod();}break;//Если 1, то выполняем добавление пациента

case 2:{vivod();}break;//Если 2, то выводим всез пациентов из файла на экран

case 3:{sort();}break;//Если 3, выводим адреса пациентов определённой группы

case 4:{redact();}break;//Если 4, редактируем запись пациента с определённым номером

default:{printf("Error, Try again\n");}break;//Если введённое число не из диапазона [0;4], то вывести на экран ошибку

}}

while(a!=0);//Если 0, завершить программу

return 0;

}