Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
Proiect aplicatie baza de date
Last Updated: May 05 2018 15:51, Started by
georgecosmin98
, Mar 28 2018 20:13
·
0
#1
Posted 28 March 2018 - 20:13
Buna seara!
Dupa cum stiti din topicurile trecute, am un proiect de facut in consola (c++). M-am gandit sa fac un topic in care sa cer sfaturi. In acest topic o sa las cam toata aplicatia pentru ca toti cei interesati sau cei care vor sa faca ceva asemanator sa aiba un punct de plecare. Am scris putin cod, dar momentan nu e foarte mult si mai am nevoie de timp pentru a ajunge la un nivel care merita postat. Prima intrebare pe care vreau sa o pun e: Vreau sa fac o adaugare intr-un fisier. Pana aici ma descurc, dar intrebarea mea e, cum fac sa adaug in fisier si acel fisier sa se actualizeze direct ( sa nu trebuiasca sa inchid consola) ? Am cautat pe net, dar nu am reusit sa gasesc ceva care sa ma ajute ... Mai jos las clasa stoc #pragma once #include <iostream> #include <string> #include <fstream> class stoc{ private: std::string numeSub; int cantitate; int pretPeUnitate; public: stoc(std::string="",int = 0,int = 0); void setStoc(std::string, int, int); void afStoc(); void adStoc(); void stStoc(); }; Aici e CPP-ul clasei stoc(neterminat). #include "stdafx.h" #include "stoc.h" #include <vector> std::ofstream g("stoc.txt",std::ofstream::app); std::ifstream f("stoc.txt"); stoc::stoc(std::string n,int c,int p) { setStoc(n, c, p); } void stoc::setStoc(std::string n,int c,int p) { numeSub = n; cantitate = c; pretPeUnitate = p; } void stoc::afStoc() { std::cout << "Denumire: " << numeSub << " " << "Cantitate: " << cantitate << " " << "Pret pe unitate: " << pretPeUnitate << std::endl; } void stoc::adStoc() { g << std::endl; g << numeSub << " " << cantitate << " " << pretPeUnitate; } void stoc::stStoc() { } O mare rugaminte am la dumneavoastra. Vreau sa ma corectati daca ma exprim gresit (in limbaj informatic), chiar vreau sa invat si sa imi fixez lucrurile bine! Edited by georgecosmin98, 28 March 2018 - 20:17. |
#2
Posted 28 March 2018 - 20:17
Apeland flush pe streamul in cauza (std::endl apelaza si el un flush)
Sfaturi aditionale:
Edited by dani.user, 28 March 2018 - 20:23. |
#3
Posted 28 March 2018 - 20:32
Multumesc frumos!
Am cautat destul de mult, dar chiar nu m-am gandit sa caut sync. Ma gandeam ca e ceva functie in biblioteca fstream si am citit mult din documentatia acestei biblioteci. afStoc -> Afisare Stoc stStoc -> Sterge Stoc Imi puteti spune cum se dau nume potrivite claselor/metode/variabile? Pentru a face stergerea unei linii din fisier, singura metoda e cu un fisier temporar sau exista si o alta varianta? Edited by georgecosmin98, 28 March 2018 - 20:36. |
#4
Posted 28 March 2018 - 20:41
georgecosmin98, on 28 martie 2018 - 20:32, said:
Imi puteti spune cum se dau nume potrivite claselor/metode/variabile? Mai departe, citeste asta: http://hilton.org.uk...-things-is-hard Apoi trebuie sa raspunzi aici: 1. cat de departe vrei sa mergi cu acest proiect? 2. Vrei sa folosesti OOP corect? 3. Cat de mult "overengineering" esti dispus sa faci? O alta interpretare a acestei intrebari e: cat de multe vrei sa inveti din acest proiect? Edited by OriginalCopy, 28 March 2018 - 20:47. |
#5
Posted 28 March 2018 - 20:45
#6
Posted 28 March 2018 - 20:53
Pai trebuie sa il fac, chiar daca nu la un nivel foarte pro (sunt primul an si e primadata cand lucrez cu clase).
in loc de afStoc e ok daca folosesc, de exemplu, printStock sau print_stock? Si daca da care ar e varianta mai corecta? OriginalCopy, on 28 martie 2018 - 20:41, said: 3. Cat de mult "overengineering" esti dispus sa faci? O alta interpretare a acestei intrebari e: cat de multe vrei sa inveti din acest proiect? Pai vreau sa invat cateva lucruri noi, dar momentan nu stiu daca am timp sa invat foarte multe tinand cont ca in jurul datei de 20 aprilie trebuie sa am deja pregatit un demo al proiectului pentru ca mai apoi sa reusesc pana pe la jumatatea lunii mai sa-l termin. Pe langa aceasta aplicatie mai am si cateva examene partiale pe care trebuie sa le trec, deci sunt putin presat si de timp |
#7
Posted 28 March 2018 - 20:55
georgecosmin98, on 28 martie 2018 - 20:46, said:
Si daca da care ar e varianta mai corecta? Ai numi asta "a stock decorator* for printing stocks on any ostream". *decorator insemnand: https://en.wikipedia...corator_pattern Varianta gresita e sa faci o clasa Stock care face de toate: calcule matematice, afisare, interactiuni cu alte obiecte din domeniu, etc |
#8
Posted 28 March 2018 - 21:06
Am modificat clasa si cpp-ul.
stock.h #pragma once #include <iostream> #include <string> #include <fstream> class stock { private: std::string name; int quantity; int price; public: stock(std::string = "", int = 0, int = 0); void setStock(std::string, int, int); void printStock(); void insertStock(); void deleteStock(); }; stock.cpp #include "stock.h" #include <vector> #include <ostream> std::ofstream g("stock.txt", std::ofstream::app); std::ifstream f("stock.txt"); stock::stock(std::string n, int c, int p) { setStock(n, c, p); } void stock::setStock(std::string n, int c, int p) { name = n; quantity = c; price = p; } void stock::printStock() { std::cout << "Denumire: " << name << " " << "Cantitate: " << quantity << " " << "Pret pe unitate: " << price << std::endl; } void stock::insertStock() { g << std::endl; g << name << " " << quantity << " " << price << std::flush; } void stock::deleteStock() { } |
#10
Posted 28 March 2018 - 21:12
jegmihai, on 28 martie 2018 - 20:45, said:
Ai putea sa oferi mai multe detalii in acest sens? Precompiled headers e o facilitate oferita pentru a reduce timpii de compilare (in special in proiecte mari). Nu e insa ceva standardizat, compilatoarele ce ofera aceasta facilitate oferind-o ca pe un bonus, fiecare cum considera mai bine. Cand schimbi compilatorul s-ar putea sa nu functioneze cum te astepti. Nici #pragma once nu e standard, dar asta macar e suportata de multe compilatoare (si mi se pare mult mai curata fata de alternativa) georgecosmin98, on 28 martie 2018 - 20:32, said:
Pentru a face stergerea unei linii din fisier, singura metoda e cu un fisier temporar sau exista si o alta varianta? Incepi sa te apropii de problemele bazelor de date. Nu exista o solutie universala pentru stergere, trebuie sa alegi un compromis, iar asta il alegi functie de cum consideri ca vor fi utilizate acele date. Daca stergi rar alegi o cale, daca stergi cate doua inregistrari la fiecare trei inserate alegi alta cale, etc. |
|
#11
Posted 28 March 2018 - 21:23
Probabil ca o sa se stearga destul de rar. M-am gandit ca stergerea sa se faca in momentul cand un produs iese de pe piata sau se inlocuieste cu altul. In momentul in care quantity = 0 sa nu se stearga din stoc, pentru ca cel mai probabil acest fisier nu va avea vreodata mai mult de 100-150 de linii.
Ma tot gandesc sa adaug si metoda de a actualiza quantity-ul din stoc si totodata sa sortez acest fisier text pentru a fi mai usor de vizualizat. |
#12
Posted 28 March 2018 - 21:39
Subiectul e vast.
De la abordari pentru fisiere text, la abordari pentru fisiere binare. De la cod scris de tine cap-coada, la cod semi-generat (gen ProtoBuffers), la baze de date adevarate ce stocheaza totul intr-un fisier sau mai multe. De la solutii ce permit unui singur utilizator sa foloaseasca baza de date in acelasi timp, la solutii ce permit mai multora. Edited by dani.user, 28 March 2018 - 21:40. |
#13
Posted 28 March 2018 - 21:46
Aplicatia nu trebuie sa fie o baza de date foarte complexa. O sa am pentru fiecare clasa cate un fisier text cu cateva valori salvate in ele.
Pana la urma, scopul aplicatiei e sa ne fixam clasele. Ni s-a spus ca nu sunt pretentii exagerate gen: sa nu folosim using namespace std, variabile globale,etc. Daca nu le folosim e bine, dar si daca le folosim nu e gresit. Eu am incercat sa nu folosesc nici variabile globale si nici "using namespace std". |
#14
Posted 28 March 2018 - 21:56
#15
Posted 28 March 2018 - 21:58
Se refera la evitarea importului intregului namespace specificand in loc explicit std:: peste tot.
|
|
#16
Posted 30 March 2018 - 18:34
Revin cu un update al aplicatiei.
Am reusit sa fac partea de stergere a elementelor din fisier, dar am cateva probleme in alta parte. Daca vreau sa afisez stock-ul din fisier, totul functioneaza bine, daca dau back spre meniul principal si apoi intru din nou sa afisez stock-ul, nu se mai afiseaza nimic. Momentan ma chinui sa-i fac un debug. Mai jos las o parte din program, astept sfaturi,critici si pareri. O sa mai fac probabil o parte de "actualizare stoc" si o sa termin cu prima parte a programului. stock.h #pragma once #include <iostream> #include <string> #include <fstream> class stock { private: std::string name; int quantity; int price; public: stock(std::string = "", int = 0, int = 0); void setStock(std::string, int, int); void printStock(); void insertStock(); void deleteStock(); void deleteStockLastLine(); }; functii.h #pragma once std::ifstream stockFile("stock.txt"); void read_Stock() { std::string n = ""; int c = 0, p = 0; std::vector<stock> s1; std::cout << "Denumire: "; std::cin >> n; std::cout << "Cantitate: "; std::cin >> c; std::cout << "Pret"; std::cin >> p; s1.push_back(stock(n, c, p)); for (int i = 0; i < 1; i++) s1[i].insertStock(); } void add_Stock() { std::string name = ""; int quantity = 0; int price = 0; std::vector<stock> s1; while (stockFile.good()) { stock s; stockFile >> name; stockFile >> quantity; stockFile >> price; s1.push_back(stock(name, quantity, price)); } for (int i = 0; i < s1.size(); i++) s1[i].printStock(); } void delete_Stock(std::string n) { int price = 0; int quantity = 0; std::string name = ""; std::vector<stock> s; while (stockFile.good()) { stockFile >> name; stockFile >> quantity; stockFile >> price; if (n != name) s.push_back(stock(name, quantity, price)); } stockFile.close(); std::ifstream stockFile("stock.txt", std::ofstream::out | std::ofstream::trunc); std::ofstream temp("stock.txt"); for (int i = 0; i < s.size(); i++) { if (i < s.size() - 1) s[i].deleteStock(); else s[i].deleteStockLastLine(); } } stoc.cpp #include "stock.h" #include <vector> #include <ostream> std::ofstream g("stock.txt", std::ofstream::app); std::ifstream f("stock.txt"); stock::stock(std::string n, int c, int p) { setStock(n, c, p); } void stock::setStock(std::string n, int c, int p) { name = n; quantity = c; price = p; } void stock::printStock() { std::cout << "Denumire: " << name << " " << "Cantitate: " << quantity << " " << "Pret pe unitate: " << price << std::endl; } void stock::insertStock() { g << std::endl; g << name << " " << quantity << " " << price << std::flush; } void stock::deleteStock() { g << name << " " << quantity << " " << price; g << std::endl; } void stock::deleteStockLastLine() { g << name << " " << quantity << " " << price; } Scuzati dezordinea, cand termin toata partea de stoc o sa ma apuc sa fac si o curatenie. |
#17
Posted 30 March 2018 - 19:06
Streamuri globale, chiar mai multe spre acelasi fisier.
|
#18
Posted 30 March 2018 - 20:34
georgecosmin98, on 30 martie 2018 - 18:34, said:
Revin cu un update al aplicatiei. Am reusit sa fac partea de stergere a elementelor din fisier, dar am cateva probleme in alta parte. Daca vreau sa afisez stock-ul din fisier, totul functioneaza bine, daca dau back spre meniul principal si apoi intru din nou sa afisez stock-ul, nu se mai afiseaza nimic. Momentan ma chinui sa-i fac un debug. Ce ai tu semana cu memory leak. Daca definesti array-uri de structuri de date si le alocei cu malloc atunci sa stii pt a elibarea zona de memorie deservita de un astfel de array trebuie sa parcuri urmatorul limbaj pseducod: Pentru i = 0 pana la lungime array -1 executa eliberarea element la pozitia i sfarsit eliberare variabila care stocheaza array-ul Edited by WinstonMontana, 30 March 2018 - 20:36. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users