вот исходник
Код: Выделить всё
#include <stdio.h>
#include <string.h>
#include <windows.h>
int count = 1;
struct phonebook{
char firstname[20];
char name[20];
char lastname[20];
char street[20];
char home[4];
char apartament[4];
char phone[6];
};
void phonebook();
void line(char, int);
char* Rus(const char* text);
void StringToSpace(char*, int);
void main(void){
phonebook();
}
void phonebook(){
system("cls");
const int maxRecord = 255;
static struct phonebook book[maxRecord];
static int count;
char select;
const int size = 5;
int aWitdhCol[size] = { 20, 20, 20, 30, 10 };
char *aNameCol[size] = { "Фамилия", "Имя", "Отчетво", "Адрес", "Телефон" };
int witdh = 0;
for (int i = 0; i < size; i++){
witdh += aWitdhCol[i];
}
witdh += size - 1;
printf("%c", char(218));
line(char(196), witdh);
printf("%c\n", char(191));
printf("%c", char(179));
StringToSpace(Rus("Программа \"Телефонная книга\""), witdh);
printf("%c\n", char(179));
printf("%c", char(195));
line(char(196), witdh);
printf("%c\n", char(180));
printf("%c", char(179));
StringToSpace(Rus("1 - Добавить запись; 0 - выйти из программы"), witdh);
printf("%c\n", char(179));
printf("%c", char(195));
line(char(196), witdh);
printf("%c\n", char(180));
printf("%c", char(195));
for (int i = 0; i < size; i++){
line(char(196), aWitdhCol[i]);
if (i != size - 1){
printf("%c", char(194));
}
}
printf("%c\n", char(180));
printf("%c", char(179));
for (int i = 0; i < size; i++){
StringToSpace(Rus(aNameCol[i]), aWitdhCol[i]);
printf("%c", char(179));
}
printf("\n");
printf("%c", char(195));
for (int i = 0; i < size; i++){
line(char(196), aWitdhCol[i]);
if (i != size - 1){
printf("%c", char(197));
}
}
printf("%c\n", char(180));
for (count; count < maxRecord; count++){
if (*book[count].firstname == NULL){
break;
}
}
if (count == 0){
printf("%c", char(179));
StringToSpace(Rus("В телефонной книге нет записей"), witdh);
printf("%c\n", char(179));
}
else{
for (int i = 0; i < count; i++){
int lenAdress=strlen(book[i].street) + strlen(book[i].home) + strlen(book[i].apartament) + 4;
printf("%c", char(179));
StringToSpace(book[i].firstname, aWitdhCol[0]);
printf("%c", char(179));
StringToSpace(book[i].name, aWitdhCol[1]);
printf("%c", char(179));
StringToSpace(book[i].lastname, aWitdhCol[2]);
printf("%c", char(179));
printf("%s, %s, %s", book[i].street, book[i].home, book[i].apartament);
line(*(" "), aWitdhCol[3]-lenAdress);
printf("%c", char(179));
StringToSpace(book[i].phone, aWitdhCol[4]);
printf("%c\n", char(179));
}
}
printf("%c", char(192));
for (int i = 0; i < size; i++){
line(char(196), aWitdhCol[i]);
if (i != size - 1){
printf("%c", char(193));
}
}
printf("%c\n", char(217));
printf(Rus("Введите номер действия: "));
do{
select = getchar();
} while ((select != '0') && (select != '1'));
if (select == '1'){
printf(Rus("Добавить новую запись\n"));
StringToSpace(Rus("Фамилия"), 20);
scanf("%20s", &book[count].firstname);
StringToSpace(Rus("Имя"), 20);
scanf("%20s", &book[count].name);
StringToSpace(Rus("Отчество"), 20);
scanf("%20s", &book[count].lastname);
StringToSpace(Rus("Улица"), 20);
scanf("%20s", &book[count].street);
StringToSpace(Rus("№ дома"), 20);
scanf("%4s", &book[count].home);
StringToSpace(Rus("№ квартиры"), 20);
scanf("%4s", &book[count].apartament);
StringToSpace(Rus("№ телефона"), 20);
scanf("%6s", &book[count].phone);
count++;
phonebook();
}
}
void line(char simbol, int count){
for (int i = 0; i < count; i++){
printf("%c", simbol);
}
}
void StringToSpace(char *string, int witdh){
int len = strlen(string);
int space = witdh - len;
printf("%s", string);
line(*(" "), space);
}
char bufRus[256];
char* Rus(const char* text){
CharToOemA(text, bufRus);
return bufRus;
}