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
Antwort
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.
Yup es ist Hilfe, jetzt räume ich die Idee. – user2786133
Gut zu wissen, dass es hilft. Wenn Sie zustimmen, können Sie dies als Antwort akzeptieren. –
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");
}
}
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. :)
- 1. Liste Paar von Mitarbeitern, die
- 2. Ist Boo 100% C# kompatibel?
- 3. C Sprache: Bedeutung von Operator "#"?
- 4. Aufzeichnung des Ausführungspfades eines C# -Programms?
- 5. Twisted-Network-Client mit Multiprocessing-Mitarbeitern?
- 6. Ausführen von Sidekiq-Mitarbeitern ohne Datenbankverbindung
- 7. Verwendung von Web-Mitarbeitern in Phonegap
- 8. Wie funktioniert die Initialisierung mit Puffer [100] = {0,} in C-Sprache?
- 9. Abrufen von Protokollausgaben von Spark-Mitarbeitern in Google Cloud
- 10. Einstellung von Django WSGI-Mitarbeitern mit langer externer API-Antwort
- 11. Aufzeichnung von ASP.NET MVC-Leistungsmetriken
- 12. Ausblenden von Einstellungen von Mitarbeitern in Visual Studio
- 13. C# Dynamisch typisierte Sprache
- 14. Sprache ändern in C#
- 15. C-Sprache, HTML-Quelle
- 16. Verwenden eines C++ - Headers mit .NET-Sprache
- 17. Aufzeichnung von Videoaufzeichnungen von Webview-Aktivitäten
- 18. Verknüpfungsfehler von C Sprache in Fortran-Bibliothek
- 19. VBA berechnen einzelne Stunden, aus der Liste von mehreren Mitarbeitern
- 20. Zuweisung von Speicher zu char * C Sprache
- 21. Ausführungszeit in C-Sprache
- 22. C# Sprache erweitern?
- 23. Windows-Sprache C++
- 24. C als objektorientierte Sprache
- 25. finden Neueste Aufzeichnung von Datum für jede einzelne Spalte Wert
- 26. C Sprache Fixed Point Math
- 27. Show, die Aufzeichnung unter Verwendung von Trigger
- 28. Best Practice für die Aufzeichnung von Seitenaufrufen mit PHP?
- 29. Ist die Aufzeichnung mit Java-Applets möglich?
- 30. Maximum Datum der Aufzeichnung mit LINQ
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). –