Система записи сотрудников в C с использованием обработки файлов
Система учета сотрудников — это программное обеспечение, созданное для выполнения основных функций хозяйственного ведения компании. ERS помогает компаниям отслеживать всех сотрудников и их записи. Он используется для управления компанией с помощью компьютеризированной системы. Это программное обеспечение создано для обработки записей сотрудников любой компании. Это поможет компаниям отслеживать все записи сотрудников в файле.
Цель системы записи сотрудников: пользователю будет предоставлено 5 вариантов:
- Добавить новую запись.
- Удалить запись.
- Изменить запись.
- Посмотреть все записи.
- Выход.
Данные сотрудников:
- Имя.
- Возраст.
- Зарплата.
- Идентификатор сотрудника.
Подход: Все функции будут предоставлены в случае переключателей. Идея состоит в том, чтобы использовать концепции обработки файлов для записи данных в текстовый файл и чтения записанных данных. Нам также нужно добавить файл data.txt в ту же папку.
Подход:
- Открывающий фрейм состоит из имени приложения и имени разработчика: он создается с помощью нескольких операторов printf и предопределенной функции system(). Функция system() является частью стандартной библиотеки C/C++. Он используется для передачи команд, которые могут быть выполнены в командном процессоре или терминале операционной системы, и, наконец, возвращает команду после ее завершения.
- system("Color 3F") изменит цвет консоли, т.е. фон (3), и текст на консоли, т.е. передний план (F).
- system("pause" ) приостановит экран, поэтому пользователь получит сообщение: Нажмите любую клавишу, чтобы продолжить. . .
- Функция gotoxy(): поможет установить координаты отображаемых данных.
- Случай переключения : требуемая функция в случаях переключения будет выполняться в соответствии с вводом пользователя. Для разработки кода используются простые концепции обработки файлов, такие как открытие файла, закрытие файла, запись в файл, чтение файла и т. д.
Ниже приведена программа C для системы записей сотрудников:
C
// C program for the above approach #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> // Structure of the employee struct emp { char name[50]; float salary; int age; int id; }; struct emp e; // size of the structure long int size = sizeof (e); // In the start coordinates // will be 0, 0 COORD cord = { 0, 0 }; // function to set the // coordinates void gotoxy( int x, int y) { cord.X = x; cord.Y = y; SetConsoleCursorPosition( GetStdHandle(STD_OUTPUT_HANDLE), cord); } FILE *fp, *ft; // Function to add the records void addrecord() { system ( "cls" ); fseek (fp, 0, SEEK_END); char another = "y" ; while (another == "y" ) { printf ( "
Enter Name : " ); scanf ( "%s" , e.name); printf ( "
Enter Age : " ); scanf ( "%d" , &e.age); printf ( "
Enter Salary : " ); scanf ( "%f" , &e.salary); printf ( "
Enter EMP-ID : " ); scanf ( "%d" , &e.id); fwrite (&e, size, 1, fp); printf ( "
Want to add another" " record (Y/N) : " ); fflush (stdin); scanf ( "%c" , &another); } } // Function to delete the records void deleterecord() { system ( "cls" ); char empname[50]; char another = "y" ; while (another == "y" ) { printf ( "
Enter employee " "name to delete : " ); scanf ( "%s" , empname); ft = fopen ( "temp.txt" , "wb" ); rewind (fp); while ( fread (&e, size, 1, fp) == 1) { if ( strcmp (e.name, empname) != 0) fwrite (&e, size, 1, ft); } fclose (fp); fclose (ft); remove ( "data.txt" ); rename ( "temp.txt" , "data.txt" ); fp = fopen ( "data.txt" , "rb+" ); printf ( "
Want to delete another" " record (Y/N) :" ); fflush (stdin); another = getche(); } } // Function to display the record void displayrecord() { system ( "cls" ); // sets pointer to start // of the file rewind (fp); printf ( "
=========================" "===========================" "======" ); printf ( "
NAME AGE SALARY " " ID
" , e.name, e.age, e.salary, e.id); printf ( "===========================" "===========================" "====
" ); while ( fread (&e, size, 1, fp) == 1) printf ( "
%s %d %.2f %10d" , e.name, e.age, e.salary, e.id); printf ( "
" ); system ( "pause" ); } // Function to modify the record void modifyrecord() { system ( "cls" ); char empname[50]; char another = "y" ; while (another == "y" ) { printf ( "
Enter employee name" " to modify : " ); scanf ( "%s" , empname); rewind (fp); // While File is open while ( fread (&e, size, 1, fp) == 1) { // Compare the employee name // with ename if ( strcmp (e.name, empname) == 0) { printf ( "
Enter new name:" ); scanf ( "%s" , e.name); printf ( "
Enter new age :" ); scanf ( "%d" , &e.age); printf ( "
Enter new salary :" ); scanf ( "%f" , &e.salary); printf ( "
Enter new EMP-ID :" ); scanf ( "%d" , &e.id); fseek (fp, -size, SEEK_CUR); fwrite (&e, size, 1, fp); break ; } } // Ask for modifying another record printf ( "
Want to modify another" " record (Y/N) :" ); fflush (stdin); scanf ( "%c" , &another); } } // Driver code int main() { int choice; // opening the file fp = fopen ( "data.txt" , "rb+" ); // showing error if file is // unable to open. if (fp == NULL) { fp = fopen ( "data.txt" , "wb+" ); if (fp == NULL) { printf ( "
Cannot open file..." ); exit (1); } } system ( "Color 3F" ); printf ( "
=============" "=============================" "===========" ); printf ( "
~~~~~~~~~~~~~~~~~~~" "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" "~~~~~" ); printf ( "
===================" "=============================" "=====" ); printf ( "
[|:::>:::>:::>::> " "EMPLOYEE RECORD <::<:::<:::" "<:::|] " ); printf ( "
===================" "=============================" "=====" ); printf ( "
~~~~~~~~~~~~~~~~~~~~" "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" "~~~" ); printf ( "
=====================" "==============================
" ); printf ( "
" "Developer : @Sushant_Gaurav" "
" ); system ( "pause" ); while (1) { // Clearing console and asking the // user for input system ( "cls" ); gotoxy(30, 10); printf ( "
1. ADD RECORD
" ); gotoxy(30, 12); printf ( "
2. DELETE RECORD
" ); gotoxy(30, 14); printf ( "
3. DISPLAY RECORDS
" ); gotoxy(30, 16); printf ( "
4. MODIFY RECORD
" ); gotoxy(30, 18); printf ( "
5. EXIT
" ); gotoxy(30, 20); printf ( "
ENTER YOUR CHOICE...
" ); fflush (stdin); scanf ( "%d" , &choice); // Switch Case switch (choice) { case 1: // Add the records addrecord(); break ; case 2: // Delete the records deleterecord(); break ; case 3: // Display the records displayrecord(); break ; case 4: // Modify the records modifyrecord(); break ; case 5: fclose (fp); exit (0); break ; default : printf ( "
INVALID CHOICE...
" ); } } return 0; } |
Выход:
- Сначала отображается название программного обеспечения:
- Отображение всех параметров:
- Добавление записей:
- Отображение записей:
- Удалить запись:
- Запись после удаления:
- Изменение или редактирование записи:
- Запись после модификации: