10 лучших идей C++ проекта для начинающих

10 лучших идей C++ проекта для начинающих Изучение

Давайте обсудим проекты C++. Имея так много возможностей, доступных для программистов, мы хотели отобрать лучшие ресурсы. Мы оценивали проекты C++ на основе их способности бросить вызов различным уровням квалификации.

Например, рассмотрим управление запасами книжного магазина. Проект C++ для начинающих строит основы, но более продвинутые программисты могут расширить его с помощью полной системы управления библиотекой. Другой пример — система бронирования железнодорожных билетов. Те, кто ищет более продвинутые проекты на C++, могут предпочесть систему бронирования билетов на автобус.

Что такое С++?

C++ был создан как расширение C и давал программистам более высокий уровень контроля над памятью и системными ресурсами. Если вы знаете какой-либо другой язык программирования, C++ будет легко выучить. Даже в противном случае C++ — дружественный язык, и вы можете изучить его с помощью практических проектов и практики.

Давайте уточним. C++ — это язык программирования, основанный на ООП, который гораздо больше подходит для создания высокопроизводительных приложений. C++ находит свое применение в приложениях, которым требуется высокая скорость и точность, например, в операционных системах, игровых приложениях, графическом интерфейсе пользователя (GUI) и встроенных системах. Для проектов ниже будет использоваться самая популярная IDE для C++ в Visual Studio. Вы также можете писать свои программы в текстовом редакторе, таком как Notepad или Textpad, и скомпилировать их с помощью компилятора, такого как GCC. Некоторые другие популярные IDE — это Eclipse и Code::Blocks. Turbo C++ — одна из проверенных временем IDE, которую можно без проблем использовать для всех программ на C++.

Некоторые существенные особенности C++:

  • Объектно-ориентированный
  • Просто кодировать и понимать
  • Богатый набор библиотек
  • Эффективное управление памятью
  • Мощный и быстрый

Чем вам помогут проекты C++?

Чтобы попрактиковаться в изучении C++, вы можете выполнить множество проектов, от простого до продвинутого уровня. Каждый из этих проектов научит вас чему-то новому, так что вы познакомитесь с наиболее важными темами, которые всегда пригодятся при создании реальных проектов.

Для работы над этими проектами вам необходимо установить IDE. Скачать бесплатную версию Visual Studio можно с официального сайта Microsoft. Или вы можете скачать Code::Blocks с их официального сайта.

Лучшие проекты для улучшения ваших навыков C++

Здесь мы разберем наши самые популярные проекты на C++. Начнем с простых идей. Некоторые из них можно встроить в более сложные проекты C++. Затем мы переходим к более сложным задачам. Полный список читайте дальше.

1. Система входа и регистрации

Это один из самых простых проектов, с которых можно начать изучение файловых систем на C++. Проект включает в себя процесс регистрации пользователя путем запроса имени пользователя и пароля. После успешной регистрации создается файл пользователя с учетными данными. Если пользователь не существует, при входе в систему будет отображена ошибка. Вы также узнаете, как использовать Visual Studio для создания простого проекта.

2. Система аренды автомобилей

Это модный проект, который очень полезен для изучения событий клавиатуры, функций даты и времени и реализации системы входа в систему C++. В программе есть отдельные меню для администратора и других пользователей. Существуют также методы расчета тарифов на основе времени и расстояния, включая отображение сведений об автомобиле, наличии мест и т. д.

Вы можете попробовать другие проекты, такие как управление музыкальными магазинами, бронирование автобусов или систему бронирования железнодорожных билетов, по тем же направлениям, что и выше.

3. Система инвентаризации книжного магазина.

Это простой проект, в котором система поддерживает инвентарь книг в книжном магазине. Если покупатель покупает книгу, количество книг уменьшится; если книга добавлена, она обновляется. Обратите внимание на использование указателей. Вы можете изменить код, добавив идентификатор книги и выполнить поиск на основе идентификатора книги или выполнить поиск, используя только один параметр, дающий несколько результатов, и так далее.

4. Система управления отчетами студентов

Благодаря этому проекту мы сможем многое узнать о потоках ввода/вывода и системе управления файлами C++. Наша программа собирает данные об учениках, такие как имя, номер списка, оценки по каждому предмету, и рассчитывает их оценку. Это простое консольное приложение. Обратите внимание, что в этом проекте мы фокусируемся только на правильных входных данных, и вы можете улучшить его для обработки неправильных входных данных. Вотисходныйкод:

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

// the class that stores data
class student
{
int rollno;
char name[50];
int eng_marks, math_marks, sci_marks, lang2_marks, cs_marks;
double average;
char grade;

public:
void getdata();
void showdata() const;
void calculate();
int retrollno() const;
}; //class ends here

void student::calculate()
{
average = (eng_marks + math_marks + sci_marks + lang2_marks + cs_marks) / 5.0;
if (average >= 90)
grade = ‘A’;
else if (average >= 75)
grade = ‘B’;
else if (average >= 50)
grade = ‘C’;
else
grade = ‘F’;
}

void student::getdata()
{
cout << «\nEnter student’s roll number: «;
cin >> rollno;
cout << «\n\nEnter student name: «;
cin.ignore();
cin.getline(name, 50);
cout << «\nAll marks should be out of 100»;
cout << «\nEnter marks in English: «;
cin >> eng_marks;
cout << «Enter marks in Math: «;
cin >> math_marks;
cout << «Enter marks in Science: «;
cin >> sci_marks;
cout << «Enter marks in 2nd language: «;
cin >> lang2_marks;
cout << «Enter marks in Computer science: «;
cin >> cs_marks;
calculate();
}

void student::showdata() const
{
cout << «\nRoll number of student: » << rollno;
cout << «\nName of student: » << name;
cout << «\nEnglish: » << eng_marks;
cout << «\nMaths: » << math_marks;
cout << «\nScience: » << sci_marks;
cout << «\nLanguage2: » << lang2_marks;
cout << «\nComputer Science: » << cs_marks;
cout << «\nAverage Marks: » << average;
cout << «\nGrade of student is: » << grade;
}

int student::retrollno() const
{
return rollno;
}

// Function declarations
void create_student();
void display_sp(int); // Display particular record
void display_all(); // Display all records
void delete_student(int); // Delete particular record
void change_student(int); // Edit particular record

// MAIN
int main()
{
char ch;
cout << setprecision(2);
do
{
int num;
system(«cls»);
cout << «\n\n\n\tMENU»;
cout << «\n\n\t1. Create student record»;
cout << «\n\n\t2. Search student record»;
cout << «\n\n\t3. Display all students records»;
cout << «\n\n\t4. Delete student record»;
cout << «\n\n\t5. Modify student record»;
cout << «\n\n\t6. Exit»;
cout << «\n\n\tWhat is your Choice (1/2/3/4/5/6): «;
cin >> ch;
system(«cls»);
switch (ch)
{
case ‘1’:
create_student();
break;
case ‘2’:
cout << «\n\n\tEnter The roll number: «;
cin >> num;
display_sp(num);
break;
case ‘3’:
display_all();
break;
case ‘4’:
cout << «\n\n\tEnter The roll number: «;
cin >> num;
delete_student(num);
break;
case ‘5’:
cout << «\n\n\tEnter The roll number: «;
cin >> num;
change_student(num);
break;
case ‘6’:
cout << «Exiting, Thank you!»;
exit(0);
default:
cout << «Invalid choice. Please enter a valid option (1/2/3/4/5/6).»;
}
} while (ch != ‘6’);
return 0;
}

// Write student details to file
void create_student()
{
student stud;
ofstream oFile;
oFile.open(«student.dat», ios::binary | ios::app);
stud.getdata();
oFile.write(reinterpret_cast<char *>(&stud), sizeof(student));
oFile.close();
cout << «\n\nStudent record has been created.»;
cin.ignore();
cin.get();
}

// Read file records
void display_all()
{
student stud;
ifstream inFile;
inFile.open(«student.dat», ios::binary);
if (!inFile)
{
cout << «File could not be opened! Press any key to exit.»;
cin.ignore();
cin.get();
return;
}
cout << «\n\n\n\t\tDISPLAYING ALL RECORDS\n\n»;
while (inFile.read(reinterpret_cast<char *>(&stud), sizeof(student)))
{
stud.showdata();
cout << «\n\n====================================\n»;
}
inFile.close();
cin.ignore();
cin.get();
}

// Read specific record based on roll number
void display_sp(int n)
{
student stud;
ifstream iFile;
iFile.open(«student.dat», ios::binary);
if (!iFile)
{
cout << «File could not be opened… Press any key to exit.»;
cin.ignore();
cin.get();
return;
}
bool flag = false;
while (iFile.read(reinterpret_cast<char *>(&stud), sizeof(student)))
{
if (stud.retrollno() == n)
{
stud.showdata();
flag = true;
}
}
iFile.close();
if (!flag)
cout << «\n\nRecord does not exist.»;
cin.ignore();
cin.get();
}

// Modify record for specified roll number
void change_student(int n)
{
bool found = false;
student stud;
fstream fl;
fl.open(«student.dat», ios::binary | ios::in | ios::out);
if (!fl)
{
cout << «File could not be opened. Press any key to exit…»;
cin.ignore();
cin.get();
return;
}
while (!fl.eof() && !found)
{
fl.read(reinterpret_cast<char *>(&stud), sizeof(student));
if (stud.retrollno() == n)
{
stud.showdata();
cout << «\n\nEnter new student details:» << endl;
stud.getdata();
int pos = (-1) * static_cast<int>(sizeof(stud));
fl.seekp(pos, ios::cur);
fl.write(reinterpret_cast<char *>(&stud), sizeof(student));
cout << «\n\n\tRecord Updated»;
found = true;
}
}
fl.close();
if (!found)
cout << «\n\nRecord Not Found»;
cin.ignore();
cin.get();
}

// Delete record with particular roll number
void delete_student(int n)
{
student stud;
ifstream iFile;
iFile.open(«student.dat», ios::binary);
if (!iFile)
{
cout

5. Игра в угадывание номера казино

Это увлекательный проект, в котором мы узнаем о библиотеке, используемой для случайных чисел: cstdlib. Программа запрашивает сумму ставки, а затем просит пользователя угадать число при броске. Если сгенерированное случайное число соответствует вводу пользователя, он выигрывает, в противном случае деньги вычитаются. Пользователь может продолжать играть до тех пор, пока не потеряет всю внесенную изначально сумму. Вотисходныйкод:

#include <iostream>
#include <string> // Needed to use strings
#include <cstdlib> // Needed to use random numbers
#include <ctime>
using namespace std;
void rules();
int main()
{
string playerName;
int balance; // stores player’s balance
int bettingAmount;
int guess;
int dice; // stores the random number
char choice;
srand(time(0)); // «Seed» the random generator
cout << «\n\t\t========WELCOME TO CASINO WORLD=======\n\n»;
cout << «\n\nWhat’s your Name : «;
getline(cin, playerName);
cout << «\n\nEnter the starting balance to play game : $»;
cin >> balance;
do
{
system(«cls»);
rules();
cout << «\n\nYour current balance is $ » << balance << «\n»;
// Get player’s betting balance
do
{
cout << «Hey, » << playerName<<«, enter amount to bet : $»;
cin >> bettingAmount;
if(bettingAmount > balance)
cout << «Betting balance can’t be more than current balance!\n»
<<«\nRe-enter balance\n «;
}while(bettingAmount > balance);
// Get player’s numbers
do
{
cout << «Guess any betting number between 1 & 10 :»;
cin >> guess;
if(guess <= 0 || guess > 10)
cout << «\nNumber should be between 1 to 10\n»
<<«Re-enter number:\n «;
}while(guess <= 0 || guess > 10);
dice = rand()%10 + 1;
if(dice == guess)
{
cout << «\n\nYou are in luck!! You have won Rs.» << bettingAmount * 10;
balance = balance + bettingAmount * 10;
}
else
{
cout << «Oops, better luck next time !! You lost $ «<< bettingAmount <<«\n»;
balance = balance — bettingAmount;
}
cout << «\nThe winning number was : » << dice <<«\n»;
cout << «\n»<<playerName<<«, You have balance of $ » << balance << «\n»;
if(balance == 0)
{
cout << «You have no money to play «;
break;
}
cout << «\n\n—>Do you want to play again (y/n)? «;
cin >> choice;
}while(choice ==’Y’|| choice==’y’);
cout << «\n\n\n»;
cout << «\n\nThanks for playing the game. Your balance is $ » << balance << «\n\n»;
return 0;
}
void rules()
{
system(«cls»);
cout << «\t\t======CASINO NUMBER GUESSING RULES!======\n»;
cout << «\t1. Choose a number between 1 to 10\n»;
cout << «\t2. Winner gets 10 times of the money bet\n»;
cout << «\t3. Wrong bet, and you lose the amount you bet\n\n»;
}

6. Игра Судоку

Все мы знаем о популярной игре судоку, в которой нам нужно расположить числа от 1 до 9 так, чтобы они появлялись только один раз в строке и столбце сетки 9×9. В программе используется концепция возврата. В этой программе мы жестко запрограммировали начальные значения, но вы также можете получить те же данные от пользователя (хотя для этой программы это будет обременительно). Главное, что нужно понимать, — это обратный поиск для поиска строк и столбцов, которым не присвоены никакие значения (нулевые). Взгляните на программу, выполните ее и увидите результаты:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
#define empty 0
#define N 9
bool isGridSafe(int grid[N][N], int row, int col, int num);
bool isEmptyLocation(int grid[N][N], int &row, int &col);
/* assign values to all the zero (not assigned) values for Sudoku solution
*/
bool SolveSudoku(int grid[N][N])
{
int row, col;
if (!isEmptyLocation(grid, row, col))
return true;
for (int num = 1; num <= 9; num++)
{
if (isGridSafe(grid, row, col, num))
{
grid[row][col] = num;
if (SolveSudoku(grid))
return true;
grid[row][col] = empty;
}
}
return false;
}
/* Check for entries that don’t have a value. */
bool isEmptyLocation(int grid[N][N], int &row, int &col)
{
for (row = 0; row < N; row++)
for (col = 0; col < N; col++)
if (grid[row][col] == empty)
return true;
return false;
}
/* Returns whether the assigned entry n in the particular row matches
the given number num. */
bool UsedInRow(int grid[N][N], int prow, int number)
{
for (int col = 0; col < N; col++)
if (grid[prow][col] == number)
return true;
return false;
}
/* Returns true if the number num matches any number in the column */
bool UsedInCol(int grid[N][N], int pcol, int number)
{
for (int row = 0; row < N; row++)
if (grid[row][pcol] == number)
return true;
else
return false;
//Check if the entry used already in the grid box
bool UsedInBox(int grid[N][N], int boxBeginRow, int boxBeginCol, int number)

{
bool tf = false;
for (int row = 0; row < 3; row++)
for (int col = 0; col < 3; col++)
if (grid[row+boxBeginRow][col+boxBeginCol] == number)
tf = true;
return tf;
}
/* Checks if num can be assigned to a given prow,pcol location. */
bool isGridSafe(int grid[N][N], int prow, int pcol, int number)
{
return !UsedInRow(grid, prow, number) && !UsedInCol(grid, pcol, number) &&
!UsedInBox(grid, prow — prow % 3 , pcol — pcol % 3, number);
}
/* print result */
void printResult(int finalgrid[N][N])
{
for (int row = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
cout<< finalgrid[row][col]<<» «;
cout<<endl;
}
}
/* Main */
int main()
{
int grid[N][N] = {{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 8, 5},
{0, 0, 1, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 5, 0, 7, 0, 0, 0},
{0, 0, 4, 0, 0, 0, 1, 0, 0},
{0, 9, 0, 0, 0, 0, 0, 0, 0},
{5, 0, 0, 0, 0, 0, 0, 7, 3},
{0, 0, 2, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 4, 0, 0, 0, 9}};
if (SolveSudoku(grid) == true)
printResult(grid);
else
cout<<«No solution found»<<endl;
return 0;
}

7. Валидатор кредитной карты

Это простой проект, использующий алгоритм Луна для проверки кредитной карты пользователя. Программа работает для всех популярных карт, таких как Visa, Amex, MasterCard и т. д. Алгоритм Луна проверяет базовые проверки; например, карта Visa должна начинаться с цифры 4, а затем переходить к сложным цифровым расчетам. Это хорошая программа для изучения, поскольку большинство транзакций электронной коммерции требуют проверки кредитной карты.

Читайте также:  Полное руководство по логическим операциям с векторами в ассемблере GAS для Intel x86-64

8. Игра «Вертолет»

Для всех детей 90-х это была одна из самых любимых игр, и ее очень легко реализовать! В этом проекте мы будем использовать графику SDL. Игра заключается в том, чтобы двигать вертолет вперед, не касаясь препятствий. Игрок должен управлять игрой с помощью клавиш: удерживание клавиши перемещает вертолет, а отпускание ее приводит к падению вертолета.

9. Использование графики для рисования и перемещения фигур

В этой графической программе вы научитесь создавать автомобиль, а затем заставлять его двигаться с помощью графики. Это простая программа, написанная с использованием Turbo C++; однако эта же программа будет работать и в других IDE, например Dev C++. Код:: Блоки и Visual Studios. Чтобы программа работала, вам необходимо получить файл Graphics.h.

10. Простая анимация для гонки с пьяным мужчиной от начала до конца

Это интерактивное консольное анимационное приложение, в котором выбранный вами персонаж (любая буква от a до z) будет забавно перемещаться от начала до финиша. Если он финиширует в пределах указанного счетчика (в нашем случае 1000000), то мы печатаем конкретное сообщение.

Звучит как забавный проект на C++? Ознакомьтесь с исходным кодом программы ниже:

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<ctime>
using namespace std;
int main (){
srand(time(0));
const int size=60;
cout << «Enter a letter to begin \n «;
char x; cin>> x;
int position = size /2;
while (true) {
cout << «|START|» ;
for (int i=0; i<size;i++) {
if (i == position)
cout << x;
else cout << » «;}
cout << «|FINISH|» << endl;
int move= rand()%3 — 1;
position = position + move;
if (position <1) {cout << «You could not finish the race!» <<endl; break;}
if (position >size-1) {cout << «Yay! You finished the race» << endl; break;}
for(int sleep=0; sleep< 1000000 ; ++ sleep);
}
return 0;
}

Заключение

В этой статье мы обсудили некоторые важные проекты C++ для начинающих и среднего уровня. Если вы правильно следовали коду, вы должны получить точные результаты. Хотя Visual Studio предлагает множество функций, ее загрузка требует времени, поэтому, если вы хотите использовать любую другую IDE, это тоже нормально. Проекты C++ будут работать в любой IDE. И, пожалуйста, сообщите нам, какой из проектов вы пробовали, в разделе комментариев!

Оцените статью
Блог о программировании
Добавить комментарий