Фактический бой проекта языка C на базе Linux - локальная система управления учетными записями

Бой проекта разработки языка C:

Язык C — это язык компьютерного программирования общего назначения, который широко используется в низкоуровневой разработке. Целью разработки языка C является предоставление языка программирования, который может быть легко скомпилирован, поддерживает низкоуровневую память, генерирует небольшой объем машинного кода и может работать без какой-либо поддержки операционной среды. Хотя язык C предоставляет множество низкоуровневых функций обработки, он по-прежнему поддерживает хорошую кросс-платформенную функцию.Программа на языке C, написанная в стандартной спецификации, может быть скомпилирована и нормально работать на многих платформах.

Язык C — это процессно-ориентированный язык. Его неотъемлемые характеристики определяют, что он не подходит для написания красивого графического интерфейса. В этом месте автор решил использовать язык C для реализации дизайна входа пользователя, чтобы каждый мог почувствовать C языковой проект Собственно процесс разработки. Следовательно, последующее описание не будет таким официальным и точным, как фактическое описание документации по разработке проекта в компании.

один. Требования к проекту:

1. Консоль пользователя;

2. Функциональные требования, возможность регистрации, хранения и сравнения паролей учетных записей пользователей; 

два. Дизайн проекта:

По требованиям мы можем знать:

1. Макет интерфейса должен иметь ввод учетной записи и пароля, а это значит, что нам нужна идентификация пользователя и пароля в коде.Мы можем использовать функцию printf, предоставляемую стандартной библиотекой C, для печати на терминале, в то же время интерфейс который требует ввода пользователя и пароля, мы можем использовать функцию scanf или gets, предоставляемую стандартной библиотекой C, чтобы реализовать это; аналогично, параметры входа, регистрации и выхода также могут быть реализованы напрямую с использованием вышеуказанных функций и конкретных планировку можно определить индивидуально.

2. В соответствии с функциональными требованиями лучше использовать существующую зрелую базу данных для реализации сравнения пользовательских данных, но здесь мы говорим только о практическом применении языка C, поэтому мы можем использовать некоторые существующие типы данных языка C для реализовать такую ​​функцию. Конечно, это также ограничит производительность нашей программы. Мы можем обнаружить, что связь между пользователем и паролем должна быть взаимно однозначной, поэтому мы можем использовать форму структуры для реализации «привязки» пользователя и соответствующего ему пароля. И у нас не должно быть только одного пользователя, поэтому мы можем использовать форму массива структур для хранения пользовательских данных. (У такого дизайна будет неизбежная проблема. Когда программа завершается, память освобождается, и все данные внутри массива структур исчезают. Если вы также изучите файловый ввод-вывод, я думаю, вы уже сможете решить эту проблему.)

3. Когда пользователь входит в систему, сравнение данных В настоящее время мы можем реализовать функцию входа в систему путем обхода и сравнения. В будущем, когда масштаб проблемы станет большим, базу данных по-прежнему следует использовать для управления соответствующими данными и достижения оптимизации.

три. Код изделия:

1.Можно использовать более профессиональный подход к разделению файла на несколько исходных файлов.Это относительно элементарно и удобно для последующего отображения.Автор решил взять на вооружение самый "НИЗКИЙ" способ,просто и грубо поместить все в один файл посередине;

2. Конкретная реализация кода:

#включать 

#включать 

#включать 

#включать 

данные структуры typedef{

    char name[20]; //сохраняем имя пользователя

    char pass[20];//сохраняем пароль

}данные пользователя;

user_data user[20] = {0}; // Массив структур, способный сохранить 20 пользователей

int last = 0; // бит флага, помечающий количество зарегистрированных аккаунтов

логическое значение reg_string (недействительно)

{

    int i = 0, n;

    если (последнее >= 20){

        вернуть ложь;

    }

    имя символа[20] = {0}, пароль[20] = {0};

printf("пожалуйста, введите ваше имя пользователя:\n");

    ххх:    

    scanf("%s", имя);

getchar(); // читаем грязные символы

    for(i = 0; i <последний; i++){

        n = strcmp(имя, пользователь[i].имя);

        если (0 == п) {

            printf("Пользователь зарегистрирован\n");

            goto xxx; //Если имя пользователя такое же, переходим к повторному вводу

        }

}

    printf("пожалуйста, введите ваш пароль:\n");

    scanf("%s", пройти);

    strcpy(пользователь[фамилия].имя, имя);

    strcpy (пользователь [последний]. пароль, пароль);

    последний++;

    printf("Успешная регистрация\n");

    вернуть истину;

}

bool log_string(void)

{

    если (0 == последний) {

        вернуть ложь;

    }

    инт я, н, м;

    имя символа[20] = {0}, пароль[20] = {0};

    printf("пожалуйста, введите ваше имя пользователя:\n");

    scanf("%s", имя);

    получитьсимвол();

    printf("пожалуйста, введите ваш пароль:\n");

    scanf("%s", пройти);

    получитьсимвол();

for(i = 0; i <последний; i++){

// функция strcmp возвращает значение "0" означает, что две строки одинаковы

        n = strcmp(пользователь[i].имя, имя);         

m = strcmp(user[i].pass, pass);

        если (n == 0 && m == 0){

//В будущем могут быть предоставлены другие интерфейсы для реализации различных пользовательских функций

            printf("Успешный вход!\n"); 

            вернуть истину;

        }

}

//Когда программа доходит до этого шага, это означает, что массив структур был пройден и не было найдено ни одного соответствующего пользователя и //пароля

    printf("Ошибка пользователя или пароля\n"); 

    вернуть ложь;

}

основной ()

{

    инт н;

в то время как (1) {

//Реализуем макет интерфейса

        printf("******************************************\n");

printf("*****1. Зарегистрироваться*****2. Войти*****3. Выйти*****\n"); printf("********** *******************************\n");

ххх:   

        сканф("%d", &n);

        получитьсимвол();

        переключатель (п) {

            Дело 1:

// Вы должны правильно оценить возвращаемое значение при вызове, чтобы убедиться, что соответствующая функция вызывается правильно

                reg_string(); 

                перерыв; 

            случай 2:

                log_string();//логин

                перерыв;

            случай 3:

                вернуть 0;

            по умолчанию:

                перейти на ххх;

        }

    }

}

Примечание:

На этот раз мы в основном познакомимся с фактическим процессом разработки проектов на языке C, поэтому выбор проектов относительно прост, а код не оптимален. Если вы хотите получить глубокое и профессиональное понимание, пожалуйста, свяжитесь с нами.

Встроенному Интернету вещей нужно многому научиться.

Поделитесь пакетом данных со всеми, около 150 G. Учебное содержание, личные писания и проекты в нем относительно новые и законченные! (Нажмите, чтобы найти маленького помощника для получения)

Supongo que te gusta

Origin blog.csdn.net/m0_70911440/article/details/131633011
Recomendado
Clasificación