Вопрос № 181547: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Создать программу (на простом Cи выполненое в visual studo 2008 ,win 32 console aplication)(выполнив функциональное разбиение) реализующую следующие функции работы с бинарн...
Вопрос № 181547:
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Создать программу (на простом Cи выполненое в visual studo 2008 ,win 32 console aplication)(выполнив функциональное разбиение) реализующую следующие функции работы с бинарным файлом. Предусмотреть создание меню со следующими пунктами:(желательно через case ) 1 - Записать в файл введённые с клавиатуры данные 2 - Считать данные из файла и вывести на экран 3 - Корректировка 4 - Сформировать список. 5 - Выход
На
междугородней АТС информация о разговорах содержит: номер телефона абонента; дату разговора; код города, с которым проходил разговор; время разговора; номер телефона в другом городе. ВЫВЕСТИ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ. ВЫПОЛНИТЬ РАСПЕЧАТКУ ЗВОНКОВ ДЛЯ ВВЕДЕННОГО АБОНЕНТА НА УКАЗАННУЮ ДАТУ, ОТСОРТИРОВАВ ЗВОНКИ В ПОРЯДКЕ УБЫВАНИЯ ИХ ДЛИТЕЛЬНОСТИ. Все выводится на консоль.
программа такого типа . При запуске появлется выбор
наподобии " нажмите" 1 - Записать в файл введённые с клавиатуры данные (при этом выборе появляется ввод строк структуры. """""""""""""""Введите количество абонентов. например 6 """"""""""""""" номер телефона абонента1; например 2472522 """"""""""""" дату разговора; например
23.12.11 можно задать как чар. """"""""""""код города, с которым проходил разговор; например 032 """""""""""""""""время разговора,сек; например 4564 """""""""""""""" номер телефона в другом городе. например 36756845 ""&qu
ot;"""""""""""" номер телефона абонента2; например 3576389 Записывает например в file.bin ) Дополнение к заданию: 2 - Считать данные из файла и вывести на экран(считывает из файла)
3 - Корректировка(по строкам,вводиш номер строки и построчноо вводиш новые значения этой строки для """"""""""""""" номер телефона абонента3 """""""""""""
дату разговора; """"""""""""код города, с которым проходил разговор; и тд и тп 4 - Сформировать список. ВЫВОДИТ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ. Появляется вопрос "введите номер абонента"Вводиш номер и для его выводится все звонки отсортированные по дате в порядке убывания длительности разговора . 5 - Выход
/*Создать программу (на простом Cи выполненое в visual studo 2008 ,win 32 console aplication)(выполнив функциональное разбиение) реализующую следующие функции
работы с бинарным файлом. Предусмотреть создание меню со следующими пунктами:(желательно через case ) 1 - Записать в файл введённые с клавиатуры данные 2 - Считать данные из файла и вывести на экран 3 - Корректировка 4 - Сформировать список. 5 - Выход
На междугородней АТС информация о разговорах содержит: номер телефона абонента; дату разговора; код города, с которым проходил разговор; время разговора; номер телефона в другом город
е. ВЫВЕСТИ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ. ВЫПОЛНИТЬ РАСПЕЧАТКУ ЗВОНКОВ ДЛЯ ВВЕДЕННОГО АБОНЕНТА НА УКАЗАННУЮ ДАТУ, ОТСОРТИРОВАВ ЗВОНКИ В ПОРЯДКЕ УБЫВАНИЯ ИХ ДЛИТЕЛЬНОСТИ. Все выводится на консоль.*/ #define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> /* подключение scanf_s и printf_s */ #include <conio.h> /* подключение _getch */ #include <math.h> #include <windows.h> #include <locale.h> //#include <malloc.h>
PrintMenu(); do { switch(_getch()) { //-------------------------------------------------------------------------------------- case '1': EnterStringToFile(); printf_s("Данные
записаны.\n"); PrintMenu(); break; //-------------------------------------------------------------------------------------- case '2': ReadStringFromFile(); PrintMenu(); break; //-------------------------------------------------------------------------------------- case '3': Update(); PrintMenu(); break; //-------
------------------------------------------------------------------------------- case '4': FormList(); PrintMenu(); break; //-------------------------------------------------------------------------------------- case '5': exit(0); } //-------------------------------------------------------------------------------------- } while (true); }
void PrintMenu() { printf_s("\n"); printf_s("1 – Записать в
файл введённые с клавиатуры данные\n"); printf_s("2 – Считать данные из файла и вывести на экран\n"); printf_s("3 – Корректировка\n"); printf_s("4 – Сформировать список.\n"); printf_s("5 – Выход\n"); printf_s("\n"); }
void EnterStringToFile() { int n,i; FILE *out; W zapis; out=fopen("ats.bin", "w"); if(out==NULL) { printf("Cannot op
en the file"); return; }
//-------------------------------------------------------------------------------------
---------------- printf("Введите количество абонентов:"); scanf_s("%d",&n); if(n<=0) exit(0); for(i=0; i<n;++i) { printf_s("%d-ая запись:", i+1); printf_s("\nВведите номер телефона абонента: "); scanf("%s", zapis.number); printf_s("\nВведите дату разговора: "); scanf("%s", zapis.date); printf_s("\nВведите код города, с которым проходил разговор: "); scanf("%s",
zapis.kodgorda); printf_s("\nВведите время разговора,сек: "); scanf("%d", &(zapis.vremya)); printf_s("\nВведите номер телефона в другом городе: "); scanf("%s", zapis.sobesednik_number); fwrite(&zapis, sizeof(razgovor),1,out); //Пишем запись в файл } fclose(out); }
void ReadStringFromFile() { W zapis; FILE *in; if(!(in=fopen("ats.bin", "rb"))) { printf("Ошибка открытия файла.\n"); exit(0); } int count=1; while(fread(&zapis, sizeof(razgovor),1,in)) { if(feof(in)) break; printf("\n #=%d Ф.И.О.=%s номер группы=%s средний балл=%f доход=%f\n", count++, zapis.number, zapis.date, zapis.kodgorda, zapis.vremya,zapis.sobesednik_number); } fclose(in); } //Сформировать список. ВЫВОДИТ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ. //Появляется вопрос "введите номер абонента"Вводиш
номер и для него выводятся все звонки, //отсортированные по дате в порядке убывания длительности разговора . void FormList() { razgovor report[100]; int count=0; razgovor *buffer; char abonent[12]; W zapis; FILE *in;
if(!(in=fopen("ats.bin", "rb"))) { printf("Ошибка открытия файла.\n"); exit(0); }
printf_s("\nВведите номер абонента: "); scanf("%s", &
abonent);
while(fread(buffer, sizeof(razgovor),1,in)) { if(feof(in)) break; // printf("\n #=%d Номер телефона абонента=%s дата разговора=%s код города=%s время =%d сек\n", count+1, // (*(report+count)).number, (*(report+count)).date, (*(report+count)).kodgorda, (*(report+count)).vremya); if (strcmp(abonent,buffer->number)==0) { count++; memmove(&report[count],buffer,sizeof(razgovor));
} } fclose(in);
//Обновление структуры
и сортировка //------------------------------------------------------------------------------------------------------------------------------------------------------ qsort(report,count,sizeof(razgovor),cmp);
int counter=0;
//------------------------------------------------------------------------------------------------------------------------------------------------------ //Запись отсортированой структуры в файл int n,i; FILE
*out; out=fopen("ats.bin", "wb");
for(i=0; i<count;++i) { fwrite(report+i, sizeof(razgovor),1,out); //Пишем запись в файл } fclose(out); //------------------------------------------------------------------------------------------------------- }
void UnderMenu() { printf_s("\n"); printf_s("1 – Добавить новую запись\n"); printf_s("2 – Исправить запись\n"); printf_s("3 – Удалить запись\n"); printf_s("4
- Вернуться в предыдущее меню\n"); printf_s("\n"); }
void Update() { bool ExitUnderMenu=true; UnderMenu(); do { switch(_getch()) { //-------------------------------------------------------------------------------------- case '1': AddNewRecord(); UnderMenu(); break; //--------------------------------------------------------------------------
------------ case '2': EditRecord(); UnderMenu(); break; //------------------------------------------
-------------------------------------------- case '3': DeleteRecord(); UnderMenu(); break; //-------------------------------------------------------------------------------------- case '4': ExitUnderMenu=false; } //-------------------------------------------------------------------------------------- } while(ExitUnderMenu); }
void AddNewRecord() { FILE *out; W zapis; printf_s("\nВведите номер телефона абонента:
"); scanf("%s", zapis.number); printf_s("\nВведите дату разговора: "); scanf("%s", zapis.date); printf_s("\nВведите код города, с которым проходил разговор: "); scanf("%s", zapis.kodgorda); printf_s("\nВведите время разговора,сек: "); scanf("%d", &(zapis.vremya)); printf_s("\nВведите номер телефона в другом городе: "); scanf("%s", zapis.sobe
sednik_number); out=fopen("ats.bin", "ab"); fwrite(&zapis, sizeof(razgovor),1,out); //Пишем запись в файл fclose(out); }
void EditRecord() { W zapis; int counter=0; printf("Введите номер строки, которую нужно отредактировать.\n"); scanf_s("%d", &counter);
FILE *temp1; //Открываем временный файл в текущем директории
с правами wb+ if(!(temp1 = fopen("temp.bin","wb"))){ printf("Ошибка при открытии файла\n"); exit(0);} //Устанавливаем индикатор позиции на начало файла //rewind (temp);
//Считывание данных из файла и запись в буферный файл FILE *in; if(!(in=fopen("ats.bin", "rb"))) { printf("Ошибка открытия файла.\n"); exit(0); } int count=1;
FILE *temp1; //Открываем временный файл в текущем директории с правами wb+ if(!(temp1 = fopen("temp.bin","wb"))){ printf("Ошибка при открытии файла\n"); exit(0);} //Устанавливаем
индикатор позиции на начало файла //rewind (temp);
//Считывание данных из файла и запись в буферный файл FILE *in; if(!(in=fopen("ats.bin", "rb"))) { printf("Ошибка открытия файла.\n"); exit(0); } int count=1;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.