Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <windows.h>
- #include <stdlib.h>
- using namespace std;
- struct num{
- bool show_flag;
- char name[20];
- char number[12];
- char surname[20];
- long int index;
- } cur_num;
- void delNum (FILE *fp, num &cur_num){
- cur_num.show_flag = false;
- fpos_t cur_pos;
- fgetpos(fp, &cur_pos);
- fseek(fp,-sizeof(num), SEEK_CUR);
- fwrite(&cur_num, sizeof(num), 1, fp);
- cout << "Number " << cur_num.number << " of " << cur_num.name << " " << cur_num.surname <<" has been deleted successfully." << endl;
- fseek(fp, cur_pos, SEEK_SET);
- }
- int main(){
- char c;
- long int ind = 0;
- FILE* fp = fopen("D:\\Programming\\number.txt", "r+b");
- while (c!=27){
- cout << "1) Enter number." << endl;
- cout << "2) Show all numbers." << endl;
- cout << "3) Delete number by index." << endl;
- cout << "4) Delete number by name." << endl;
- cout << "5) Delete number by surname." << endl;
- cout << "6) Searching by name." << endl;
- cout << "7) Searching by surname." << endl;
- cout << "8) Searching by first letters. (beta)" << endl;
- cout << "Press ESC to quit" << endl;
- c = getch();
- system("cls");
- switch(c){
- case '1': {
- fseek(fp, -sizeof(long int), SEEK_END);
- if (fread(&ind,sizeof(long int), 1, fp))
- cur_num.index = ind + 1; else
- cur_num.index = 1;
- cur_num.show_flag = true;
- cout << "Enter name: ";
- //cin >> cur_num->name;
- scanf("%s",&cur_num.name);
- cout << "Enter surname: ";
- scanf("%s",&cur_num.surname);
- cout << "Enter number: ";
- //cin >> cur_num->number;
- scanf("%s",&cur_num.number);
- fseek(fp, 0, SEEK_END);
- fwrite(&cur_num, sizeof(num), 1, fp);
- } break;
- case '2': {
- fseek(fp, 0, SEEK_SET);
- while (!feof(fp))
- {
- if (fread(&cur_num,sizeof(num),1,fp))
- {
- cout << "__________________" << endl;
- cout << "Name: " << cur_num.name << endl;
- cout << "Surname: " << cur_num.surname << endl;
- cout << "Number: " << cur_num.number << endl;
- cout << "Index: " << cur_num.index << endl;
- cout << "Flag: " << cur_num.show_flag << endl;
- cout << "__________________" << endl;
- }
- }
- } break;
- case '3': {
- cout << "Enter index to delete: ";
- //cin >> &ind;
- scanf("%d",&ind);
- fseek(fp, 0, SEEK_SET);
- while (!feof(fp))
- if (fread(&cur_num,sizeof(num), 1, fp) && cur_num.show_flag && cur_num.index == ind)
- delNum(fp,cur_num);
- } break;
- case '4': {
- cout << "Enter name to delete: ";
- char num_name[20];
- //cin >> &num_name;
- scanf("%s",&num_name);
- fseek(fp, 0, SEEK_SET);
- while (!feof(fp))
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.name, num_name) == 0)
- delNum(fp, cur_num);
- } break;
- case '5': {
- cout << "Enter surname to delete: ";
- char num_surname[30];
- scanf("%s", &num_surname);
- fseek(fp, 0, SEEK_SET);
- while(!feof(fp))
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.surname, num_surname) == 0)
- delNum(fp, cur_num);
- } break;
- case '6': {
- cout << "Enter name of human you would like to find: ";
- char num_name[20];
- scanf("%s", num_name);
- fseek(fp, 0, SEEK_SET);
- while(!feof(fp))
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.name, num_name) == 0){
- fread(&cur_num,sizeof(num),1,fp);
- cout << "__________________" << endl;
- cout << "Name: " << cur_num.name << endl;
- cout << "Surname: " << cur_num.surname << endl;
- cout << "Number: " << cur_num.number << endl;
- cout << "Index: " << cur_num.index << endl;
- cout << "Flag: " << cur_num.show_flag << endl;
- cout << "__________________" << endl;
- }
- } break;
- case '7': {
- cout << "Enter name of human you would like to find: ";
- char num_surname[20];
- scanf("%s", num_surname);
- fseek(fp, 0, SEEK_SET);
- while(!feof(fp))
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(cur_num.surname, num_surname) == 0){
- fread(&cur_num,sizeof(num),1,fp);
- cout << "__________________" << endl;
- cout << "Name: " << cur_num.name << endl;
- cout << "Surname: " << cur_num.surname << endl;
- cout << "Number: " << cur_num.number << endl;
- cout << "Index: " << cur_num.index << endl;
- cout << "Flag: " << cur_num.show_flag << endl;
- cout << "__________________" << endl;
- }
- } break;
- case '8': {
- cout << "Enter first 3 letters humans surname you would like to find: ";
- char num_surname[3];
- char beta_surname[3];
- scanf("%s", num_surname);
- fseek(fp, 0, SEEK_SET);
- for (int i = 0; i < 3; i++){
- beta_surname[i] = cur_num.surname[i];
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag && strcmp(beta_surname, num_surname) == 0){
- fread(&cur_num,sizeof(num),1,fp);
- cout << "__________________" << endl;
- cout << "Name: " << cur_num.name << endl;
- cout << "Surname: " << cur_num.surname << endl;
- cout << "Number: " << cur_num.number << endl;
- cout << "Index: " << cur_num.index << endl;
- cout << "Flag: " << cur_num.show_flag << endl;
- cout << "__________________" << endl;
- }
- }
- } break;
- }
- FILE* temp = fopen("D:\\Programming\\temporary.txt", "wb");
- fseek(fp, 0, SEEK_SET);
- while (!feof(fp))
- if (fread(&cur_num, sizeof(num), 1, fp) && cur_num.show_flag == true)
- fwrite(&cur_num, sizeof(num), 1, temp);
- fclose(fp);
- fclose(temp);
- remove("D:\\Programming\\number.txt");
- rename("D:\\Programming\\temporary.txt", "D:\\Programming\\number.txt");
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement