C++ elektronická kniha jízd – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ elektronická kniha jízd – C / C++ – Fórum – Programujte.comC++ elektronická kniha jízd – C / C++ – Fórum – Programujte.com

 

Roman
~ Anonymní uživatel
134 příspěvků
9. 1. 2018   #1
-
0
-

Dobrý den všem,
našla by se nějaká dobrá duše a koukla by se mi na tento program, mám ho udělat do školy. Nevím si s tím rady, protože jsem v životě neprogramoval a doufám, že už nebudu muset... 
Jde o to, že bych to potřeboval nějak odladit, tak aby to fungovalo. Měla by to být elektronická kniha jízd (jako konzolová aplikace c++) , kde si přidáte nějaké své udaje.... atd... jenže když chci něco přidat, tak se mi to jaksi vypne, vůbec tomu nerozumím. 
Byl bych moc vděčný za pomoc. Všem předem děkuji.  

#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <cstdio>

using namespace std;

void pridat();
void hledatjmeno();

void hledatznacku();
void quit();
void zobrazitvse();
void hledat();
void smazat();
void upravit();

int main()
{
	int volba;
	cout << "1.Pridat novy zaznam" << endl;
	cout << "2.Hledat" << endl;
	cout << "3.Smazat zaznam" << endl;
	cout << "4.Upravit zaznam" << endl;
	cout << "5.Exit program" << endl;
	cin >> volba;

	switch (volba) {
	case 1:
		pridat();
		break;
	case 2:
		hledat();
		break;
	case 3:
		smazat();
		break;
	case 4:
		upravit();
		break;
	case 5:
		quit();
		break;

		cin.get();


	}
}
void upravit()
{
	string jmeno, input, newName, decision;
	int vzdalenost;
	double auticko;
	double odkud;
	double kam;
	ifstream employee("newemployee.txt");
	if (!employee.eof()) {
		employee >> jmeno >> auticko >> odkud >> kam >> vzdalenost;
	}
	system("cls");

	cout << "Zadejte jmeno:";
	cin >> input;

	if (input == jmeno)
	{

		cout << jmeno << ' ' << auticko << ' ' << odkud << ' ' << kam << ' ' << vzdalenost << endl;
		cout << "Je to spravny zaznam?[a][n]:";
		cin >> decision;
		if (decision == "a") {
			cout << "Zadejte nove jmeno:";
			cin >> newName;
			jmeno = newName;
		}

		employee.close();
	}

	ofstream employee2("newemployee.txt", ios::app);
	employee2 << jmeno << ' ' << auticko << ' ' << odkud << ' ' << kam << ' ' << vzdalenost << endl;
	employee2.close();
	system("pause");
	main();
}

void pridat()
{
	string jmeno;
	double auticko;
	double odkud;
	double kam;
	int vzdalenost;
	ofstream newemployee("newemployee.txt", ios::app);
	system("cls");
	cout << "zadejte jmeno" << endl;
	cin >> jmeno;
	cin.sync();
	system("cls");
	cout << "zadejte znacku auta." << endl;
	cin >> auticko;
	system("cls");
	cout << "zadejte odkud" << endl;
	cin >> odkud;
	system("cls");
	cout << "zadejte kam" << endl;
	cin >> kam;
	system("cls");

	cout << "zadejte vzdalenost" << endl;
	cin >> vzdalenost;


	newemployee << jmeno << ' ' << auticko << ' ' << odkud << ' ' << kam << ' ' << vzdalenost << endl;
	newemployee.close();
	main();
}
void hledatjmeno()
{
	ifstream employee("newemployee.txt");
	string jmeno;
	string str, line;
	double auticko;
	double odkud;
	double kam;
	int vzdalenost;
	system("CLS");
	cout << "Zadejte jmeno:";
	cin >> str;

	while (employee >> jmeno >> auticko >> odkud >> kam >> vzdalenost) {
		if (str == jmeno) {
			system("CLS");
			cout << "Hledat" << endl;
			cout << jmeno << ' ' << auticko << ' ' << odkud << ' ' << kam << ' ' << vzdalenost << endl;
			cout << "---------------" << endl;
			cout << jmeno << ' ' << auticko << ' ' << "$" << vzdalenost << endl;
		}
	}


	while (employee >> jmeno) {
		if (str != jmeno) {
			system("CLS");
			cout << "Nikdo takovy neexistuje" << endl;

		}
	}
	system("pause");
	main();


}

void hledatznacku()
{
	ifstream employee("newemployee.txt");
	string jmeno;
	double auticko;
	double odkud;
	double kam;
	int vzdalenost;
	int fauticko;
	system("CLS");
	cout << "zadjete znacku auta:";
	cin >> fauticko;
	while (employee >> jmeno >> auticko >> odkud >> kam >> vzdalenost) {
		if (fauticko == auticko) {
			system("cls");
			cout << "Zaznam nenalezen" << endl;
			cout << "Jmeno" << ' ' << "Znamcka auta" << ' ' << odkud << ' ' << kam << ' ' << "Ujeta vzdalenost" << endl;
			cout << "---------------" << endl;
			cout << jmeno << ' ' << auticko << ' ' << "$" << odkud << ' ' << kam << ' ' << vzdalenost << endl;

		}
	}
	while (employee >> auticko) {
		if (fauticko != auticko) {
			system("CLS");
			cout << "Zaznam nenalezen" << endl;
		}
	}
	system("pause");
	cin.get();
	main();
}
void quit()
{
	system("CLS");
	cout << "" << endl;
	system("pause");
	cin.get();
}
void zobrazitvse()
{
	ifstream employee("newemployee.txt");
	double auticko;
	double odkud;
	double kam;
	int vzdalenost;
	string jmeno;
	system("CLS");
	cout << "Cela databaze" << endl;
	cout << "Jmeno" << ' ' << "Znamcka auta" << ' ' << "odkud" << ' ' << "kam" << ' ' << "ujeta vzdalenost" << endl;
	cout << "---------------" << endl;
	while (employee >> jmeno >> auticko >> odkud >> kam >> vzdalenost) {
		cout << jmeno << ' ' << auticko << ' ' << "$" << odkud << ' ' << kam << ' ' << vzdalenost << endl;
	}
	system("pause");
	cin.get();
	main();

}
void hledat()
{



	string jmeno;

	int choice2;
	system("CLS");

	cout << "1. Hledat podle jmena" << endl;
	cout << "3. Hledat podle znacky auta" << endl;
	cout << "4. Zobrazit vse" << endl;
	cout << "5. Zpet" << endl;
	cout << "6.Exit program" << endl;
	cin >> choice2;

	switch (choice2) {
	case 1:
		hledatjmeno();
		break;
	case 3:
		hledatznacku();
		break;
	case 4:
		zobrazitvse();
		break;
	case 5:
		main();
		break;
	case 6:
		quit();
		break;
	}




}
void smazat()
{

	string decision;
	cout << "Jsi si jisty?[a]no[n]e" << endl;
	cin >> decision;
	if (decision == "a") {
		ofstream employee("newemployee.txt");
		system("cls");
		cout << "zaznamy byly smazany!" << endl;
		system("pause");
		employee.close();
		main();
	}
	else {
		main();
	}
}
Nahlásit jako SPAM
IP: 46.13.60.–
KIIV
~ Moderátor
+43
God of flame
9. 1. 2018   #2
-
0
-

Pokracovat v programu tim, ze se cim dal vice zanorujes do funkci a mainu je prisernej napad.

Znacka auta jako double je dalsi. Jak tam chces zadat  2A42234?  To do double proste nenacpes.

Zaroven, pokud cokoliv v input streamu selze, uz nikdy nic nenacte a rovnou preskakuje jakekoliv dalsi pokusy o nacteni cehokoliv. Coz bude nejspis i tvuj problem. Ani cin.get() tomu nezabrani (kdyby tedy byl nekde, kde muze byt vykonan)

To priserne zanorovani bude taky zajimave, az budes v 10000 urovni zanoreni a budes chtit skoncit. Good luck with that... Budes mackat klavesnici az do zblbnuti (ne ze by te to na neco takoveho upozornilo)

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Roman
~ Anonymní uživatel
134 příspěvků
9. 1. 2018   #3
-
0
-

#2 KIIV

Děkuji za odpověď. 
Double tam je protože jsem měl na mysli značku jako třeba Škoda nebo Fiat... 
A když tam mám zadat tu značku, tak někde v tom bodě to dál už nejde... 

Nahlásit jako SPAM
IP: 46.13.60.–
KIIV
~ Moderátor
+43
God of flame
9. 1. 2018   #4
-
0
-

#3 Roman
To jako mas nejakou ciselnou reprezentaci tech automobilek? Pokud se do double snazis narvat "Fiat", tak se vubec nedivim, ze si s tim ten stream nedokaze poradit.

Edit:

  • int - cele cislo
  • double - realne cislo (vhodne napriklad na ujetou vzdalenost, pokud je potreba lepsi rozliseni nez na kilometry - jinak staci int)
  • string - retezec (napriklad jmeno zamestnance, jmeno automobilky)

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Roman
~ Anonymní uživatel
134 příspěvků
9. 1. 2018   #5
-
0
-

#4 KIIV
Ouu, já jsem blbec, nevšiml jsem si. Děkuji za ochotu... Pomohl jste mi! 

Nahlásit jako SPAM
IP: 46.13.60.–
Yenkee0
Newbie
9. 1. 2018   #6
-
0
-

#5 Roman

Při deklaraci proměnných je vždy inicializuj (int a = 0; std::string b = "";), snadno se ti pak stane, že program dělá co nemá, protože nemáš jistotu, co na daných adresách je. Dále bych si zvolil pouze jeden jazyk pro názvy proměnných a metod, půlka česky a druhá půlka anglicky mi moc do oka nejde :-) a poslední věc ... nebylo by na škodu předělat to do objektů .. to je vše co mne k tomu napadlo, možná někdo bude mít jiný názor

Nahlásit jako SPAM
IP: 188.120.210.–
Roman
~ Anonymní uživatel
134 příspěvků
9. 1. 2018   #7
-
0
-

#6 Yenkee
Děkuji za rady ;) 
To půlka anglicky půlka česky je způsobena tím, že jsem k tomu použil svůj předešlí program, který byl ryze anglický... Jinak všem děkuji za rady. program mi již funguje a vylepšil jsem ho. 

Nahlásit jako SPAM
IP: 46.13.60.–
gna
~ Anonymní uživatel
1884 příspěvků
9. 1. 2018   #8
-
0
-

#7 Roman
Ještě všude vyhoď to volání main. Po skončení funkce program pokračuje v místě odkud jsi ji volal. Na opakování použij nějaký cyklus.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

Podobná vlákna

Kniha — založil wokena

Kniha — založil Tomáš Bosek

Kniha o C++ — založil Markaos

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý