Chciałem się zapytać na jakim poziomie jest stworzony dzisiaj przeze mnie kod.
#include <iostream>
#include "head.h"
int main()
{
string login,haslo;
int zalogowany;
if (logowanie(login,haslo)==1)//poprawnie zalogowany
{
zalogowany=1;
cout<<"**********************************\n"
<<"**\t"<<"Witaj "<<login<<"\t\t**\n"
<<"**********************************\n";
menu(zalogowany);
}
else if(logowanie(login,haslo)==2) cout<<"zaraz przejdziesz do zakladania konta."<<endl;
else cout<<"BLAD KRYTYCZNY";
}
#include <iostream>
#include "head.h"
#define KONIEC 99
int sprawdzenie(string,string);
void nowe_konto();
//*******************************************************************
int logowanie(string &login, string &haslo)
{
char wybor=0;
while(wybor!=KONIEC)
{
cout<<"1.Zaloguj.\n2.Utworz nowe konto.\n";
cin>>wybor;
if(wybor>='0'&&wybor<='9')
{
/*static_cast<int>(wybor); rzutowanie do typu int teraz '1' ma wart 49 zgodnie z ASCII ale brak efektu ??*/
wybor-=48; //zmiana 49 znowu na 1
switch(wybor) //switch dziala tylko dla int!
{
case 1://logowanie
{ int czy_pierwszy=0;
while(sprawdzenie(login,haslo)!=0)
{
if(czy_pierwszy!=0)cout<<"Zla nazwa uzytkownika lub haslo.Sprobuj jeszcze raz!\n";
cout<<"Podaj login: ";cin>>login;
cout<<"Podaj haslo: ";cin>>haslo;
czy_pierwszy++;
}
return 1;
}
break;
case 2://nowe konto
{
cout<<"wybrales nowe konto\n";
nowe_konto();
}
break;
default:
{
cout<<"Nie ma takiej opcji!\n";
}
break;
}
}
else cout<<"Wybrano zle polecenie.\n";
}
return 1;
}
//**************************************************************************
int sprawdzenie(string login,string haslo)
{
string linia;
fstream sprkonto;
bool login_ok;
int linia_ok;
sprkonto.open("lista_uzytkownikow",ios::in);
for(int nr_linii=1;getline(sprkonto,linia);nr_linii++)
{
if ((nr_linii%2==1)&&(linia==login))
{
login_ok=true;
linia_ok=nr_linii;
}
if((nr_linii%2==0)&&(linia==haslo)&&(login_ok)&&(nr_linii==(linia_ok+1)))
{
sprkonto.close();
return 0;
}
}
sprkonto.close();
//return 0;
}
//********************************************************************
void nowe_konto()
{
string nazwa_uzyt,haslo,linia;
cout<<"Podaj nazwe uzytkownika: ";cin>>nazwa_uzyt;
fstream sprkonto;
sprkonto.open("lista_uzytkownikow",ios::in);
for(int nr_linii=1;getline(sprkonto,linia);nr_linii++) //spr. czy juz istnieje taka nazwa uzytkownika
{
if ((nr_linii%2==1)&&(linia==nazwa_uzyt))
{
cout<<"Taka nazwa juz istnieje. \nNazwa uzytkownika: ";cin>>nazwa_uzyt;cout<<endl;
}
}
sprkonto.close();
fstream nkonto; //utworzenie zmiennej plikowej 'plik'
nkonto.open("lista_uzytkownikow",ios::out|ios::app);
cout<<"Podaj haslo: ";cin>>haslo;
nkonto<<nazwa_uzyt<<endl;
nkonto<<haslo<<endl;
nkonto.close();
}
z head.h
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
extern int logowanie(string &,string &);
extern void menu(int &);
z menu
#include "head.h"
void menu(int &zalogowany)
{
if(zalogowany==1)
{
cout<<"Witaj w programie!";
}
}
Program miał:
->logować lub tworzyć nowe konto
->zapisywać dane z logowania
->nie pozwalać zarejestrować dwóch takich samych użytkowników
->w razie zalogowania przywitać użytkownika i coś wypisać
uczę się samemu od jakiegoś miesiąca. Czy to co napisałem to coś na poziomie jednomiesięcznej nauki czy nie?