#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
#include <locale.h>
#include <windows.h>
HANDLE hConsole,hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
void vuvid(int y);
void vvid(int u);
void del();
void sort();
void spysok();
void spysokPr();
void spysokRik();
void SetColor(int text,int background);
char menu(int nom);
void GotoXY(int X,int Y){ COORD coord={X,Y};SetConsoleCursorPosition(hStdOut,coord);}
/////////////////////////////
bool check(char c[])
{ bool ch=true;
int j;
for(j=0;c[j]!=0;j++)
if((IsCharAlpha(c[j])==0)||(isalpha(c[j])!=0)){ch=false;break;}
return ch;
}
///////////////////////
struct sgStruct
{
char name[10];
char date[10];
char type[10];
int countEmpl;
char mainProduct[10];
char isNewTec[10];
float grnPerMounth;
int bday;
int bmonth;
int byear;
}
db[100],term;
///////////////////////
int fcount(char a[])
{char c;
int count = 0;
FILE *fp = fopen(a,"r");
while (!feof(fp)) if ((c=fgetc(fp))=='\n')count++;
return count;}
////////////////////////////
main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char t,sw;
int nom = 1;
system("Color 70");
menu(nom);
for(;;)
{
if(sw == 'i') int xp;
if(sw == 72) { nom--; }
if(sw == 80) { nom++; }
if(nom==0) nom=7;
if(nom==8) nom=1;
menu(nom);
sw=_getch();
if(sw == 13)
{
switch(nom)
{
case 1: vuvid; break;
case 2: vvid; break;
case 3: del; break;
case 4: sort; break;
case 5: spysok; break;
case 6: spysokPr; break;
case 7: spysokRik; break; }
}
}
}
/////
char menu(int nom)
{
system("mode con cols=57 lines=18");
system("cls");
// MENU
setlocale(LC_ALL, "Ukrainian");
cout<<"========================================================\n";
cout<<"||--------------- Сiльське господарство --------------||\n";
cout<<"========================================================\n";
if(nom==1)
cout<<"||>1. BИBЕСТИ ВСI ДАНI. \33\33\33||\n";
else
cout<<"|| 1. Вивести всi данi. ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==2)
cout<<"||>2. ДОДАТИ НОВИЙ ЗАПИС. \33\33\33||\n";
else
cout<<"|| 2. Додати новий запис. ||\n";
cout<<"||----------------------------------------------------||\n";
//ColorMatchToTarget(12,12,'qwqw');
if(nom==3)
cout<<"||>3. ВИДАЛИТИ ЗАПИС. \33\33\33||\n";
else
cout<<"|| 3. Видалити запис. ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==4)
cout<<"||>4. СОРТУВАТИ ЗАПИСИ ПО ЗРОСТАННЮ. \33\33\33||\n";
else
cout<<"|| 4. Сортувати записи по зростанню. ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==5)
cout<<"||>5. СПИСОК ПЕРЕДОВИХ ВИДIВ ВЛАСНОСТI. \33\33\33||\n";
else
cout<<"|| 5. Список передових видiв власностi. ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==6)
cout<<"||>6. СПИСОК ПРИБУТКУ. \33\33\33||\n";
else
cout<<"|| 6. Список прибутку. ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==7)
cout<<"||>7. ПIДПРИЄМСТВA СТВОРЕНI ЦЬОГО РОКУ. \33\33\33||\n";
else
cout<<"|| 7. Пiдприємствa створенi цього року. ||\n";
cout<<"========================================================\n";
//cout<<"Info - натиснiть i ";
}
/////
void vvid(int u)
{
unsigned int k,n,i,f;
FILE *fp;
system("cls");
char f1;
char type1[8]="ДЕРЖ"; //Для введення статі
char type2[8]="ПРИВАТ";
char isNewTec1[4]="ТАК"; //Для введення статі
char isNewTec2[4]="НІ";
if((fp=fopen("D:\A.txt","a"))==NULL) { //Відкриття файлу
// puts("Cannot open file!\n");
}
printf(" Скiльки записiв ви бажаєте додати?\n ");
scanf("%d",&n);
for (i=1;i<=n;i++) {
system("cls");
printf(" Ведіть назву сільського господарства:\n ");
scanf("%s",db[i].name);
f=check(db[i].name);
while(f!=0){
printf("Ведіть назву сільського господарства:\n ");
scanf("%s",db[i].name);
f=check(db[i].name);
}
f=0;
while (f==0) {
printf(" День реєстрації?:\n ");
scanf("%d",&db[i].bday);
if (db[i].bday<=0 || db[i].bday>31) {
printf("\n ПОМИЛКА!Введено не правильне число (>31). Спробуйте знову:\n");
}
else f=1;
}
f=0;
while (f==0) {
printf(" Мiсяць реєстрації?:\n ");
scanf("%d",&db[i].bmonth);
if (db[i].bmonth<=0 || db[i].bmonth>12) {
printf("\n ПОМИЛКА!Введено не правильне число (>12 або <0). Спробуйте знову:\n");
}
else f=1;
}
f=0;
while (f==0) {
printf(" Рiк реєстрації?:\n ");
scanf("%d",&db[i].byear);
if (db[i].byear<1900) {
printf("\n ПОМИЛКА!Введено не правильне число (<1900). Спробуйте знову:\n");
}
else f=1;
}
f=0;
while (f==0){
printf(" Виберіть тип власності:\n\n Натисніть 1 для вибору ДЕРЖАВНОЇ статі або 2 для ПРИВАТНОЇ!:\n ");
f1=_getch();
if (f1==49) {
strcpy(db[i].type,type1);
f=1;
}
else if (f1==50) {
strcpy(db[i].type,type2);
f=1;
}
else printf(" Помилка! \n");
}
printf("введiть число працівників:");
scanf("%s",db[i].countEmpl);
getchar();
printf(" Введіть основний вид продукції:\n ");
scanf("%s",db[i].mainProduct);
f=check(db[i].mainProduct);
while(f!=0){
printf(" Введіть основний вид продукції:\n ");
scanf("%s",db[i].mainProduct);
f=check(db[i].mainProduct);
}
f=0;
while (f==0){
printf(" Введiть чи є передовим в освоєнні нової технології:\n\n Якщо ТАК натисніть 1 , Якщо НІ натисніть 2!:\n ");
f1=_getch();
if (f1==49) {
strcpy(db[i].isNewTec,isNewTec1);
f=1;
}
else if (f1==50) {
strcpy(db[i].isNewTec,isNewTec2);
f=1;
}
else printf(" Помилка! \n");
}
printf("введiть прибуток:");
scanf("%s",db[i].grnPerMounth);
getchar();
}
}
/////////////////////////////
void sort()
{
int k,i=0;
sgStruct zapus,*pst,*pst1,*pst2;
FILE *fp;
sgStruct *mas=new sgStruct[fcount("D:\A.txt")];
fp=fopen("D:\A.txt","r");
while(!feof(fp))
{
fscanf(fp,"%s%s%d%d%d%s%s%d\n",&mas[i].name,&mas[i].date,&mas[i].type,&mas[i].countEmpl,&mas[i].mainProduct,&mas[i].isNewTec,&mas[i].grnPerMounth);
i++;
}
for(k=0;k<i;k++){
pst1=mas; pst2=mas+1;
for( ; pst2<mas+i-k;pst1++,pst2++)
if((pst1->mainProduct > pst2->mainProduct)||((pst1->mainProduct == pst2->mainProduct)||(pst1->mainProduct == pst2->mainProduct)))
{
zapus=*pst1;
*pst1=*pst2;
*pst2=zapus;}
}
// SetColor(1,15);
printf(" Назва * Дата реєстрації * Вид власності * К-сть працівників * Основний вид продукції * Чи є основним в освоєнні нової технології * Прибуток \n");
printf(" * * * * * \n");
for(k=0,pst=mas;k<i;k++,pst++){
if((k%2)!=0)SetColor(0,15);else SetColor(0,7);
printf("%-20s * %-10s * %4d/%2d/%2d * %-25s * %-19s* %2d \n",pst->name,pst->date,pst->type,pst->countEmpl,pst->mainProduct,pst->isNewTec,pst->grnPerMounth);
printf(" * * * * * \n");
}
SetColor(0,15);
delete [] mas;
}
/////////////////////////////////////////////////
void del()
{
int j,k,i,kt;
bool n=false;
char name1[20];
FILE *fp;
sw: sgStruct *z=new sgStruct[fcount("D:\A.txt")];
fp=fopen("D:\A.txt","r");
printf("Введiть назву сільського господарства яке потрібно видалити:\n");
while(1) {
scanf("%s",&name1);
if(check(name1)==false){Beep(500,200);Beep(500,200);printf("Ви ввели невiрну назву...Повторiть ввiд: \n");}
else break;
}
i=-1;
while(!feof(fp))
{i++;
fscanf(fp,"%s%s%d%d%d%s%s%d\n",&z[i].name,&z[i].date,&z[i].type,&z[i].countEmpl,&z[i].mainProduct,&z[i].isNewTec,&z[i].grnPerMounth);
}
for(j=0;j<=i;j++)
if(!strcmp(z[j].name,name1))
{n=true;
for(k=j;k<i;k++)z[k]=z[k+1];
break;
} else n=false;
fclose(fp);
if(n==true){
fp=fopen("D:\A.txt","w");
for(k=0;k<i;k++)fprintf(fp,"%20s %10s %04d %02d %02d %20s %10s %2d\n",z[k].name,z[k].date,z[k].type,z[k].countEmpl,z[k].mainProduct,z[k].isNewTec,z[k].grnPerMounth);
fclose(fp);
delete [] z;
}
else {printf("Даного сільського господарства не знайдено...Спробуйте ще раз\n");delete [] z;goto sw;}
}
////////////////////////////////////////
/*void vuvid(int y);
{
int rik1,mis1,rk,den1,i=1;
sgStruct z;
FILE *fp;
char dat[9],rik[3]=" ",mis[3]=" ",den[3]=" ";
fp=fopen("D:\A.txt","r");
_strdate(dat);
mis[0]=dat[0]; mis[1]=dat[1];
den[0]=dat[3]; den[1]=dat[4];
rik[0]=dat[6]; rik[1]=dat[7];
den1=atoi(den);
mis1=atoi(mis);
rik1=atoi(rik)+2000;
if(y==3){printf("Введіть вік:");
while(1)
{
if( ((scanf("%d",&rk))!=0)&&(rk<60))break;
else{Beep(500,200);Beep(500,200); printf("Ви ввели невiрну iнформацiю...Повторiть ввiд: \n");}
fflush(stdin);
}
}
SetColor(9,15);
printf("________________________________________________________________________________________________________________________________________________________\n");
printf(" Назва /*/ /*/ Тип /*/ /*/ Основний вид продукції /*//*/ Прибуток \n");
printf("_______________/*//*/______/*//*/__________________________/*//*/_______________\n");
SetColor(0,15);
sw:while(!feof(fp))*/
/*{
fscanf(fp,"%s%s%d%d%d%s%s%d\n",&z.name,&z.date,&z.type,&z.countEmpl,&z.mainProduct,&z.isNewTec,&z.grnPerMounth);
switch(y){
case 2:if( (z.grnPerMounth>10)
((z.year>(rik1-45))||((z.==(rik1-45))&&(z.mounth>mis1))||((z.year==(rik1-45))&&(z.mounth==mis1)&&(z.day>den1)) ) )break;else goto sw;
case 3:if( (z.year<(rik1-rk))||((z.year==(rik1-rk))&&(z.mounth<mis1))||((z.year==(rik1-rk))&&(z.mounth==mis1)&&(z.day<den1)) )break;else goto sw;
case 4:if(!strcmp(z.,"інженер"))break;else goto sw;
}
i++;
if((i%2)!=0)SetColor(0,15);else SetColor(0,7);
printf("%-20s * %-10s * %4d/%2d/%2d * %-25s * %-19s* %2d \n",z.prizv,z.name,z.year,z.mounth,z.day,z.adresa,z.spec,z.stag);
printf(" * * * * * \n");
}*/
//SetColor(0,15);
//fclose(fp);
///////////////////////////////////////////////////////////////////
///////////////////////////////////////
void SetColor(int text,int background)
{
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut,(WORD)((background<<4)|text));
}