2016-07-03 9 views
-5

Mit c Sprache, wie können wir speichern 100 Mitarbeiter wie Mitarbeiter Name, Bezeichnung, Gehalt in Variablen und wie wir darauf zugreifen können.Aufzeichnung von 100 Mitarbeitern mit Sprache c

+0

Während dies deine erste Frage ist, sind Sie seit 2 Jahren und 9 Monaten Mitglied! Warum haben Sie während dieser Zeit nicht versucht, [die Hilfeseiten] (http://stackoverflow.com/help) zu lesen, insbesondere die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http: // stackoverflow.com/help/on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (http://stackoverflow.com/help/dont-ask). Du solltest jetzt auch wissen, wie man gute Fragen stellt (http://stackoverflow.com/help/how-to-ask) und wie man ein [minimales, vollständiges und verifizierbares Beispiel] erstellt (http: // stackoverflow.com/help/mcve). –

Antwort

1

Konzeptuell können Sie zunächst eine "Emp" -Struktur (Struktur) mit Attributen wie Name, Gehalt usw. erstellen. Erstellen Sie dann ein Array von (100) solchen Emp-Strukturen.

es zuzugreifen, die Sie gerade Schleife durch diese Anordnung für jede Struktur, können Sie Namen zugreifen, Gehalt, etc ..

Hoffnung, das hilft.

+0

Yup es ist Hilfe, jetzt räume ich die Idee. – user2786133

+0

Gut zu wissen, dass es hilft. Wenn Sie zustimmen, können Sie dies als Antwort akzeptieren. –

0

Hier ein Beispiel:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

#define MAXSTR 50 
#define MAXEMPLOYEES 100 

typedef struct { 
    char name[MAXSTR]; 
    char designation[MAXSTR]; 
    float salary; 
} Employee; 

typedef struct { 
    Employee employeesArray[MAXEMPLOYEES]; 
    int count; 
} Employees; 

void initEmployees(Employees*); 
Employee readEmployee(); 
void addEmployee(Employees*, Employee); 
void showAllEmployees(Employees); 

int main() 
{ 
    int choice; 
    Employee newEmployee; 
    Employees employeesArchive; 
    initEmployees(&employeesArchive); 

    do{ 
     printf("1. Add new Employee.\n"); 
     printf("2. Show all Records.\n"); 
     printf("0. Exit.\n"); 
     printf("Select: "); 
     scanf("%d", &choice); 

     switch(choice){ 
     case 1: 
      newEmployee = readEmployee(); 
      addEmployee(&employeesArchive, newEmployee); 
      break; 

     case 2: 
      showAllEmployees(employeesArchive); 
      break; 
     } 
    }while(choice!=0); 

    return 0; 
} 

void initEmployees(Employees *_employees){ 
    _employees->count = 0; 
} 

Employee readEmployee(){ 
    Employee _newEmployee; 

    printf("NEW RECORD\n"); 
    printf("-> Name: "); 
    scanf("%s", _newEmployee.name); 
    printf("-> Designation: "); 
    scanf("%s", _newEmployee.designation); 
    printf("-> Salary: "); 
    scanf("%f", &_newEmployee.salary); 

    return _newEmployee; 
} 

void addEmployee(Employees *_employees, Employee _newEmployee){ 
    int index; 
    index = _employees->count; 

    strcpy(_employees->employeesArray[index].name, _newEmployee.name); 
    strcpy(_employees->employeesArray[index].designation, _newEmployee.designation); 
    _employees->employeesArray[index].salary = _newEmployee.salary; 

    _employees->count++; 
    printf("New Employee correctly added!\n"); 
    system("pause"); 
} 

void showAllEmployees(Employees _employees){ 
    int i, allRecords; 
    allRecords = _employees.count; 
    for(i=0; i<allRecords; i++){ 
     printf("#%d\nName: %s\tDesignation: %s\tSalary: %f\n", 
      i+1, 
      _employees.employeesArray[i].name, 
      _employees.employeesArray[i].designation, 
      _employees.employeesArray[i].salary); 
     printf("\n"); 
    } 
} 
0

besser erstellen Sie eine verknüpfte Liste.

Es ist die Art von Datenstruktur, in der Sie ein Objekt erstellen müssen, die alle Informationen (des Mitarbeiters in diesem Fall) zusammen mit einem Zeiger enthalten, die auf andere Objekte der Liste zeigen.

(auf Ihre Frage Basierend muss ich Ihnen vorschlagen Struktur zu lesen, welche Daten nach vorn, bevor ..)

Es gibt mehrere Arten von Datenstrukturen wie einzelne verkettete Liste, zirkulargelinkte Liste, Liste Doppel Link, Baum usw .. Aber hier kann man am einfachsten testen zB Single-Link-Liste für Ihre Anforderung.

 #include<stdio.h> 
     #include<stdlib.h> 
     #define LEN=20; 

     //this is our object definition 
     typedef struct EMPLOYER 
      { 
      char name[LEN],designation[LEN]; 
      int salary; 
      struct EMPLOYER* next_object; 
      }; 

     void add_employer_details(); 
     void print_employers_details(); 

    EMPLOYER** main_pointer; 
     char op; 


    int main() 
     { 

      printf("shall we start storing data of employee...?(y/n)\n"); 
      scanf(" %c",&op); 
      while(op=='y' || op=='Y') 

      //to add new employee's detail 
      add_employer_detail(); 

      //print whole database 
      print_employers_detail(); 

     } 

      void add_employer_detail() 
     { 
      //creating a node 
      EMPLOYER *temp; 

      //allocating memory 
      temp=(EMPLOYER*)malloc(sizeof(EMPLOYER)); 
      printf("enter details of employer...\n"); 

      //feeling the data 
      gets(temp->name); 
      gets(temp->designation); 
      scanf("%d",&(temp->salary)); 

      //making the link with other nodes 
      temp->next=main_pointer; 
      main_pointer=temp; 

      printf("want a new entry?(y/n)"); 
      scanf(" %c",&op); 
      } 

    void print_employer_detail() 
    { 
     EMPLOYER* temp=*main_pointer; 
     while(temp) 
     { 
     printf(" name of employee : %20s\n designation of employee : %20s\n salary of employee : %8d\n",temp->name,temp->designation,temp->salary); 
     temp=temp->next; 
     } 
    } 

Es ist immer eine gute Gewohnheit Speicher dynamisch zuzuweisen, wenn es um das Datenmanagement kommt system.But Sie immer darauf achten, dass Sie ausplanen Speicher, wenn Sie nicht mehr benötigen Speicherverlust zu vermeiden. :)

Verwandte Themen