Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <time.h>
- #include <stdio.h>
- #include <stdlib.h>//Для exit
- #include <stdbool.h>
- #include <string.h>
- #include<locale.h>
- int xsize = 100;//Размер склада //Для изменения размера парковки, его нужно поменять в этой строке
- int freespace = 100;//Свободные места //И в этой
- int price;//Цена за хранение посылки на складе
- int polki = 10;
- int polet = 45;
- int stelash = 30;
- int postsize;
- //
- struct Post //
- { //
- char id[7];//Номер посылки //
- bool busy;//Свободно или занято //
- char surname[11];//Марка авто фамилия получетеля //
- char postname[10];//Цвет авто название посылки //
- int time;//Время
- char position[10]; //расположение посылки
- char postsize1[10];
- } space[100]; //И в этой строке тоже
- void New();
- void Out();
- int Search();
- void Get();
- void Fileout();
- void Filein();
- int main()
- {
- setlocale(LC_ALL, "Russian");
- short int mode;
- while (1)
- {
- system("clear");
- printf("================================================================");
- printf("\nНа складе %i свободных мест из %i.\n\n", freespace, xsize);
- printf("Выберите действие и введите соответствующую команду.\n1 - Ввести данные новой посылки.\n2 - Стереть данные посылки\n");
- printf("3 - Открыть данные о занятых местах на складе.\n4 - Загрузить данные о местах с компьютера.\n");
- printf("0 - Чтобы закрыть программу.\n\nДействие:\t");
- scanf("%hd", &mode);
- getchar();
- switch (mode)
- {
- case 1:
- New();
- break;
- case 2:
- Out();
- break;
- case 3:
- Get();
- break;
- case 4:
- Filein();
- break;
- default:
- printf("\nХотите сохранить данные в файл перед выходом? (Введите: 1 - Да, 0 - Нет)\nДействие:\t");
- scanf("%hd", &mode);
- if (mode == 1) {
- if (freespace == xsize) printf("\n Данные отсутствуют.\n");
- else Fileout();
- }
- printf("\nДо встречи!\n\n");
- exit(0);
- }
- }
- return 0;
- }
- void Out()
- {
- if (freespace < xsize)
- {
- int i;
- printf("Введите номер освобожденного места на складе: ");
- scanf("%i", &i);
- i--;
- space[i].busy = 0;
- freespace++;
- postsize == (int) space[i].postsize1;
- if (postsize <= polki) {
- price = (((time(NULL) - space[i].time) / 60 + 1) / 60 + 1) * polki;
- printf("Посылка была расположена на полках: ");
- }
- if (postsize > polki && postsize <= stelash) {
- price = (((time(NULL) - space[i].time) / 60 + 1) / 60 + 1) * stelash;
- printf("Посылка была расположена на стелажах: ");
- }
- if (postsize > stelash && postsize <= polet) {
- price = (((time(NULL) - space[i].time) / 60 + 1) / 60 + 1) * polet;
- printf("Посылка была расположена на полетах: ");
- }
- //price = (((time(NULL) - space[i].time) / 60 + 1) / 60 + 1) * polet;
- printf("\nК оплате: %i руб.\n", price);
- printf("\n(По завершении оплаты нажмите на Enter)");
- getchar();
- getchar();
- }
- else
- {
- printf("\nОтсутствует на складе\n\n(Нажмите Enter)");
- getchar();
- getchar();
- }
- }
- void New()
- {
- if (freespace > 0)
- {
- int i = Search();
- space[i].time = time(NULL);
- printf("\nВведите данные посылки.\n\tНомер:\t");
- scanf("%s", space[i].id);
- printf("\tФамилию получателя:\t");
- scanf("%s", space[i].surname);
- printf("\tНазвание посылки:\t");
- scanf("%s", space[i].postname);
- printf("\tРазмер посылки:\t");
- scanf("%d", space[i].postsize1);
- space[i].busy = 1;
- freespace--;
- printf("Складеное место номер: %i\n", i + 1);
- printf("\n(Нажмите на Enter)");
- getchar();
- getchar();
- }
- else
- {
- printf("\nСвободных мест нет!\n\n(Нажмите на Enter)");
- getchar();
- getchar();
- }
- }
- int Search()
- {
- int i;
- for (i = 0; i < xsize; i++)
- {
- if (space[i].busy == 0)
- break;
- }
- return i;
- }
- void Get()
- {
- int md;//Режим
- printf("\nИнформация о посылках на складе:\n");
- if (freespace < xsize)
- {
- printf("\n%s%s%s%-15s%s\n", "№ места ", "Фамилия\t ", "Название посылки ", "№ посылки ", "Время(мин.)", "Размер посылки");
- for (int i = 0; i < xsize; i++)
- {
- if (space[i].busy == 1)
- printf("%-8i%-12s%-10s%-14s%ld\n", i + 1, space[i].surname, space[i].postname, space[i].id, (time(NULL) - space[i].time) / 60 + 1, space[i].postsize1);
- }
- printf("\nВведите 1, если хотите сохранить информацию о посетителях в файл.\n");
- printf("\nДействие:\t");
- scanf("%i", &md);
- if (md == 1) Fileout();
- }
- else
- {
- printf("\nНет посылок.\n");
- }
- printf("\n\n(Нажмите Enter)");
- getchar();
- getchar();
- }
- void Fileout()
- {
- FILE *Pd = fopen("PostData.txt", "w");
- fprintf(Pd, "Информация о посылках на скаде:\n\n");
- fprintf(Pd, "№ места Фамилия\t Название посылки № посылки Время(мин.) Размер посылки *data\n");
- for (int i = 0; i < xsize; i++)
- {
- if (space[i].busy == 1)
- fprintf(Pd, "%-8i%-12s%-10s%-14s%ld\n", i + 1, space[i].surname, space[i].postname, space[i].id, (time(NULL) - space[i].time) / 60 + 1, space[i].postsize1);
- }
- fclose(Pd);
- printf("Данные сохранены в файле PostData.txt в папке с программой.\n");
- }
- void Filein()
- {
- int md;
- printf("\n================================================================");
- printf("\nВнимание!\nФайлы, вводимые с компьютера и содержащие данные, должны быть должным образом отформатированы!\n");
- printf("================================================================");
- printf("\n\nЧтобы посмотреть указания к форматированию, введите 1. Иначе введите что-то другое.\n\nДействие:\t");
- scanf("%i", &md);
- if (md == 1)
- {
- system("clear");
- printf("================================================================");
- printf("\n Указания к форматированию загружаемого файла:\n\n\t1/ Файл для загрузки должен быть сохранен с расширением (.txt) в той же папке, что и программа.");
- printf("\n\n\t2/ Начало списка данных в файле должно быть обозначено специальным маркером (*data), после которого непосредственно начинается список данных.");
- printf("\n\n\t3/ Каждая строка соответствует набору данных одного места на складе. Данные должны заполняться в определенном порядке и разделяться одним или несколькими пробелами.");
- printf("\n\t Порядок заполнения данных: № места Фамилия Название посылки № посылки Время(мин.) Размер посылки");
- printf("\n\t Параметр \"Время\" должен быть выражен натуральным числом (минут).");
- printf("\n\n\t5/ После списка данных в файле не долно быть записано ничего.");
- printf("\n\n Пример содержания файла с данными:\n\n");
- printf("\n\nВы действительно хотите загрузить файл с данными с компьютера? Введите 1, если да, иначе введите что-то другое.\n\nДействие\t");
- scanf("%i", &md);
- if (md == 1)
- {
- system("clear");
- printf("================================================================\n");
- char name[20];
- printf("Ведите имя файла с расширением (он должен располагаться в папке с программой).\n\nИмя файла:\t");
- scanf("%s", name);
- FILE *Pd = fopen(name, "r");
- char s[20];
- fscanf(Pd, "%s", s);
- for (; strcmp(s, "*data");) {
- fscanf(Pd, "%s ", s);
- }
- for (int i = 0; i < xsize; i++)
- {
- if (space[i].busy == 0)
- {
- space[i].busy = 1;
- freespace--;
- fscanf(Pd, "%s", s);
- if (feof(Pd)) {
- space[i].busy = 0;
- freespace++;
- break;
- }
- fscanf(Pd, "%s", space[i].surname);
- fscanf(Pd, "%s", space[i].postname);
- fscanf(Pd, "%s", space[i].id);
- fscanf(Pd, "%i", &space[i].time);
- //fscanf("%s", space[i].postsize1);
- space[i].time = time(NULL) - space[i].time * 60;
- }
- }
- fclose(Pd);
- printf("\nГотово!\a\n");
- printf("\n(Нажмите Enter)");
- getchar();
- getchar();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement