Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- typedef struct {
- float firstYear;
- float secondYear;
- float thirdYear;
- float fourthYear;
- float fifthYear;
- }income;
- typedef struct {
- char taxRegistryNumber[13];
- char name[40];
- income incomePerYear;
- char dateRegistry[50];
- }firm;
- typedef struct node{
- firm frm;
- struct node *next;
- }node;
- firm addFirm(void);
- node * makeList(node * head, FILE *f);
- int main()
- {
- int n;
- int keyValidation;
- menu(keyValidation);
- return 0;
- }
- void menu(int keyValidation) {
- FILE *fp;
- firm fr;
- node *head = NULL;
- fp = fopen("C:\\Users\\Димитър\\Desktop\\firma.txt","wb");
- if(fp == NULL) {
- printf("NE moje da bude otvoren faila");
- exit(1);
- }
- do {
- printf("1.Dobavqne na nova firma...\n");
- printf("2.Aktualizirane na informaciq za firmata...\n");
- printf("3.Spravka za vsichki firmi imashti pechalba za poslednite 5 godini v zadaden interval...\n");
- printf("4.Po zadaden danuchen nomer da se razpechatva info za firmata...\n");
- printf("Vavedi key...\n");
- scanf("%d",&keyValidation);
- if(keyValidation == 1) {
- do{
- fr = addFirm();
- fwrite(&fr,sizeof(fr),1,fp);
- printf("Dobavqqne na nova firma? Y/N?\n");
- } while(toupper(getch()) == 'Y');
- fclose(fp);
- head = makeList(head,fp);
- } else if(keyValidation == 2) {
- char name[40];
- printf("Vavedete ime na firma\n");
- fflush(stdin);
- gets(name);
- update(name,head);
- } else if(keyValidation == 3) {
- average(head);
- } else if(keyValidation == 4) {
- info(head);
- }
- printf("Spirane s vurteneto?Y/N\n");
- } while(toupper(getch()) == 'N');
- prt(head);
- }
- void info(node *head) {
- char tax[50];
- printf("Vuvedete danuchen nomer za firmata\n");
- fflush(stdin);
- gets(tax);
- while(head) {
- if(strcmp(head->frm.taxRegistryNumber,tax) == 0) {
- printf("Ime na firmata :%s\n",head->frm.name);
- printf("Dohod za pyrvata godina %.2f\n",head->frm.incomePerYear.firstYear);
- printf("Dohod za vtorata godina %.2f\n",head->frm.incomePerYear.secondYear);
- printf("Dohod za tretata godina %.2f\n",head->frm.incomePerYear.thirdYear);
- printf("Dohod za chetvurtata godina %.2f\n",head->frm.incomePerYear.fourthYear);
- printf("Dohod za petata godina %.2f\n",head->frm.incomePerYear.fifthYear);
- printf("Data na registrirane: %s",head->frm.dateRegistry);
- }
- head = head->next;
- }
- }
- void average(node *head) {
- int nachalenInterval;
- float average = 0.0;
- while(head) {
- printf("Vavedete interval ot 1-vata do 5-tata godina za tazi firma...\n");
- scanf("%d",&nachalenInterval);
- printf("Firma :%s ima sredna pechalba ",head->frm.name);
- if(nachalenInterval == 1) {
- average = (head->frm.incomePerYear.firstYear + head->frm.incomePerYear.secondYear + head->frm.incomePerYear.thirdYear + head->frm.incomePerYear.fourthYear + head->frm.incomePerYear.fifthYear)/5;
- } else if(nachalenInterval == 2) {
- average = (head->frm.incomePerYear.secondYear + head->frm.incomePerYear.thirdYear + head->frm.incomePerYear.fourthYear + head->frm.incomePerYear.fifthYear)/4;
- } else if(nachalenInterval == 3) {
- average = (head->frm.incomePerYear.thirdYear + head->frm.incomePerYear.fourthYear + head->frm.incomePerYear.fifthYear)/3;
- } else if(nachalenInterval == 4) {
- average = (head->frm.incomePerYear.fourthYear + head->frm.incomePerYear.fifthYear)/2;
- } else if(nachalenInterval == 5) {
- average = (head->frm.incomePerYear.fifthYear)/1;
- }
- printf("%.2f leva\n",average);
- head = head->next;
- average = 0.0;
- }
- }
- firm addFirm() {
- firm f;
- printf("Vavedi Tax registry Number\n");
- fflush(stdin);
- gets(f.taxRegistryNumber);
- printf("Vavedi ime na firmata\n");
- fflush(stdin);
- gets(f.name);
- printf("Dohod za purvata godina\n");
- scanf("%f",&(f.incomePerYear.firstYear));
- printf("Dohod za vtorata godina\n");
- scanf("%f",&(f.incomePerYear.secondYear));
- printf("Dohod za tretata godina\n");
- scanf("%f",&(f.incomePerYear.thirdYear));
- printf("Dohod za chetvurtata godina\n");
- scanf("%f",&(f.incomePerYear.fourthYear));
- printf("Dohod za petata godina\n");
- scanf("%f",&(f.incomePerYear.fifthYear));
- printf("Data na registraciq v format GGGG//DD//MM\n");
- fflush(stdin);
- gets(f.dateRegistry);
- return f;
- }
- update(char *name,node *current) {
- while(current) {
- if(strcmp(current->frm.name,name)==0) {
- printf("Vavedi novite danni...\n");
- printf("Vavedi tax registry number....\n");
- fflush(stdin);
- gets(current->frm.taxRegistryNumber);
- printf("Vavedi novi dohodi za purvata godina...\n");
- scanf("%f",&(current->frm.incomePerYear.firstYear));
- printf("Vavedi novi dohodi za vtorata godina...\n");
- scanf("%f",&(current->frm.incomePerYear.secondYear));
- printf("Vavedi novi dohodi za tretata godina...\n");
- scanf("%f",&(current->frm.incomePerYear.thirdYear));
- printf("Vavedi novi dohodi za chetvurtata godina...\n");
- scanf("%f",&(current->frm.incomePerYear.fourthYear));
- printf("Vavedi novi dohodi za petata godina...\n");
- scanf("%f",&(current->frm.incomePerYear.fifthYear));
- printf("Vavedi nova data na izdavane format GGGG//DD//MM");
- fflush(stdin);
- gets(current->frm.dateRegistry);
- }
- current = current->next;
- }
- }
- node *makeList(node * head, FILE *f) {
- node *p;
- f = fopen("C:\\Users\\Димитър\\Desktop\\firma.txt","rb");
- if(f == NULL) {
- printf("Error");
- exit(1);
- }
- do {
- p = (node*)malloc(sizeof(node));
- if(p==NULL) {
- printf("Memory error!");
- exit(1);
- }
- p->next = NULL;
- if(!fread(&(p->frm),sizeof(firm),1,f)) {
- free(p);
- break;
- }
- p->next = head;
- head = p;
- }while(1);
- return head;
- }
- void prt(node *current) {
- printf("The list is: \n");
- while(current) {
- printf("Tax registry :%s\n",current->frm.taxRegistryNumber);
- printf("Firm name :%s\n",current->frm.name);
- printf("Dohod za purva godina %.2f \n",current->frm.incomePerYear.firstYear);
- printf("Dohod za vtora godina %.2f \n",current->frm.incomePerYear.secondYear);
- printf("Dohod za treta godina %.2f \n",current->frm.incomePerYear.thirdYear);
- printf("Dohod za chetvurta godina %.2f\n",current->frm.incomePerYear.fourthYear);
- printf("Dohod za peta godina %.2f \n",current->frm.incomePerYear.fifthYear);
- printf("Data na registraciq %s\n",current->frm.dateRegistry);
- current = current->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement