filmdatenbank
-
hallo,
ich habe mir eine eigene kleine datenbank zum archivieren von filmen geschrieben, die soweit schon eine ganze menge an funktionaliteat bietet.
ich habe die datenbank nun schon seit einiger zeit immer weiter ausgebaut, wodurch sie immer komplexer geworden ist.ich wollte sie nun testen lassen und habe deswegen auch den threat eroeffnet...
ich waere dankbar, wenn der ein oder andere sich meine anwendung anschauen wuerde und mir eventuelle fehler mitteilt. ganz mutige koennen sich ja auch mal den frikelcode anschauen .fuer kritik jeglicher art bin ich sehr dankbar und nehme auch gerne verbesserungsvorschlaege entgegen.
vielleicht kann ja auch jemand nutzen aus meinem programm ziehen.
die datenbank bietet folgende funktionen:
-hinzufuegen von filmen (name, art, laenge, groesse, anzahl parts [bsp. vcd])
-editieren von datensaetzen
-loeschen von datensaetzen
-sortierung nach verschiedenen kriterien
-suche nach titeln
-sortierte ausgabe
-exportieren der daten in eine html datei
-speichern von datensaetzen
-laden von datensaetzen
-
fuer kritik jeglicher art bin ich
Keine Fehler behandlung. Es reicht anstelle einer Zahl Buchstaben einzugeben und das Programm kapituliert.
Am bestem schreib dir Funktionen zum Einlesen von Zahlen mit Fehlerbehandlung.
-
Keine Fehler behandlung. Es reicht anstelle einer Zahl Buchstaben einzugeben und das Programm kapituliert.
Am bestem schreib dir Funktionen zum Einlesen von Zahlen mit Fehlerbehandlung.hatte ich schon an einigen stellen eingefuegt, aber an den meisten dann doch wieder vergessen...
habs jetzt komplett drin.kannst es dir ja noch einmal anschauen.
mich wuerde auch interessieren wie du das programm allgemein so findest......und ich hoffe dass sich noch ein paar andere meine kleine datenbank anschauen...
-
mich wurde auch interessieren wie du das Programm allgemein so findest...
Naja, so allgemein ist das ganz brauchbares Programm, natürlich wird heut zu tage ein derartiges Programm ohne super geile GUI wohlkaum der Renner sein(was du wahrscheinlich schon gemerkt hast).Ich habe nicht alles getestet aber es scheint dass das meiste schon funktioniert.Html Export finde ich auch super,obwohl da anscheinend noch ein Problem gibt, bei mir wird nicht immer korrekte Html-Datei gespeichert, sondern die erste Hälfte der Html-Datei ist abgeschnitten.
Selbstverständlich muss noch eine Menge Verbesserungen vorgenommen werden.Ich würde folgende Änderungen vorschlagen:
1.Da wo mit yes/no geantwortet werden soll, sollte man mit y/n antworten können z.B:Do you still want to quit ? (y/n):
Kann ich dir sogar eine Funktion postetn die so was übernehmt.
2.Anstatt:
press any key
lieber:
press Enter
3. Ein extra Menü-Punkt "Export als Html" anstatt, dass nach dem speichern danach gefragt wird.
4. Ein konkreten Fehler habe ich gefunden, wenn dann Filme hinzugefügt hat, und
dann alles gespeichert, meckert das Programm trotzdem das neuer Film hinzugefügt wurde und nicht gespeichert.
-
press any key
logisch, hab ich gleich geaendert...
Do you still want to quit ? (y/n):
ich glaube das ist eine reine geschmackssache, ich finde das jetzige besser
und die exportfunktion soll auch dort sitzen bleiben, das hat einen tieferen sinn...
Selbstverständlich muss noch eine Menge Verbesserungen vorgenommen werden.
was waeren das denn fuer aenderungen? jetzt mit ausnahme des GUIs (kommt bestimmt auch noch, aber was genau ich da nehmen soll weiss ich nicht->von wegen plattformunabhaengig und in C usw...)
-
was waeren das denn fuer aenderungen?
1. Auf mich wirkt das Menü unruhig. ich würde die ------ zwischen Menüpunkten weglassen, obwohl ich verstehe natürlich warum du das so gemacht hast.
2.Ich würde dieses "please choose optio"n unter dem Menü ausgeben soetwa:........... 0: exit ------------------------------------------------------------ please choose option:
Das gleiche gilt für andere Aufforderungsmeldungen.
3.Die Fehler behandlung ist unvollständig, wenn ich an statt einer Zahl
z.B abc eingebe müsste das Programm zumindest eine Meldung ausgeben z.B:Unzlaessige Eingabe!
Dann eventuell.
Wollen Sie die Eingabe wiederholen? (j/n):
4. Hinzufügen von Filmen: bei Eingabe einer leern Zeile sollte das Feld automatisch mit einem Standardwert belegt werden z.B:
Eingegeben:enter name of film (50 characters) enter genre(s) of film (50 characters)
Die Felder werden automatisch mit "unbekannt" beglegt:
name..........unbekannt genre.........unbekannt ......
5. Das Programm braucht Fehler behandlung für korrupte *.fdb Dateien.
Ausserdem, was den Quellcode angeht, ist mir rätselhaft warum du manche Schachen so Programiert hast z.B:
1.Wieso:
void input_int(int *choice)
und nicht:
int input_int()
Es wäre es doch viel leichter zu handhaben.
2. Hat das eine Sinn das du sie Funktion strcmp nachgebaut hast ?:
int str_cmp(char *to_cmp1, char *to_cmp2)
3.Hat das einen tieferen Sinn dass der Pointer load static ist ?
struct dvd *load(char string[MAX_WHOLE]) { static struct dvd *load;[cpp] ............
Es ist nicht ersichtlich wozu man das braucht.
So das wären ein paar Anmerkungen von mir.
-
zu den allgemeinen anmerkungen:
zu2:
finde ich sinnvollzu 3:
gute ideezu 4:
sehr gute ideezu 5:
hab ich mir auch schon ueberlegt, weiss allerdings noch nicht so recht wie ich das anstellen koenntezu den quellcodefragen:
zu 1:
dann brauch ich keine zusaetzliche variable die speicher belegt und kann direkt in die entsprechende schreiben... erschien mir als resourcenschonender (wenn auch ueberfluessig) aber was ist an deiner variante leichter zu handhaben?zu 2:
die funktion ist kein richtiges stringcompare, sie vergleicht die zwei strings die man ihr giebt und sagt welcher der beiden bei alpabetischer sortierung weiter vorne steht...zu3:
static deshalb, damit der speicher nicht gleich wieder freigegeben wird, wenn man die funktion verlaesst...//edit: ich bin mir momentan gar nicht mehr so sicher, muss ich mir noch mal anschauen
btw: ich danke dir, dass du dich so intensiv mit meinem programm auseinandersetzt
-
kennst du vielleicht diesen satz:
90% der zeit werden in 10% des codes verbraucht..ich glaube das aufrufen der funktionen usw gehoert nicht zu den 10%. lass also das optimieren lieber und schreib schoeneren code.
und vermeide pointer wann immer es moeglich ist..
nur so als gut gemeinter rat..
mfg aman..
-
und vermeide pointer wann immer es moeglich ist..
aber warum? ohne begruendung glaub ich gar nichts
-
because they are evil..
man hat mit pointer viel mehr zu tun, ein new muss her, am ende ein delte, beim vergleichen muss man aufpassen, usw usw..
pointer sollten me nur verwendet werden, wenn es noetig ist..
statt
int str_cmp(char *to_cmp1, char *to_cmp2)
wuerde ich
int str_cmp(const char &to_cmp1, const char &to_cmp2)
schreiben..
mfg aman..
-
@aMan
Ist dir aufgefallen, dass das ein C Programm ist ?was ist an deiner variante leichter zu handhaben?
Ich finde das:
choice = input_int();
leichter verstänlicher wirkt als:
input_int(&choice);
Außerdem lässt sich die Funktion auch ohne extra Variable verwenden:
if (input_int() == 5)
Ich finde halt meine Version bequemer, die andere Version ist aber auch ok.
sagt welcher der beiden bei alpabetischer sortierung weiter vorne steht...
Naja, strcmp tut es eigentlich auch, deshalb meine Frage.
nicht gleich wieder freigegeben wird
Ja stimmt, aber es gibt keine Grund dies nicht zu tun.
Der Zeiger den du über Funktionswert erhälst muss sowieso woanders gespeichert werden, damit ist es egal was mit ihm passiert.
-
Naja, strcmp tut es eigentlich auch, deshalb meine Frage.
wusste ich gar nicht... wieder was dazugelernt
Ja stimmt, aber es gibt keine Grund dies nicht zu tun.
Der Zeiger den du über Funktionswert erhälst muss sowieso woanders gespeichert werden, damit ist es egal was mit ihm passiert.hast recht, hab ich falsch gedacht
hab die ueberarbeitete fassung mit allen aenderungen hochgeladen
-
ah, du meinst wegen new usw?
stimmt, hab mich vertan.
aber mit malloc usw gilt ja das gleiche, oder?
mfg aman..
-
aber mit malloc usw gilt ja das gleiche
was meinst du damit?
-
dass gleiche wie mit new.
man hat mit pointer viel mehr zu tun, ein new muss her, am ende ein delte, beim vergleichen muss man aufpassen, usw usw..
ich hab mich nie laenger mit c befasst, nur ganz am anfang. aber diese "regel" sollte doch aehnlich sein, oder?
mfg aman..
-
naja c ist:
ein malloc am anfang ein free am ende
dass man immer dereferenziert wenn man vergleicht sollte einem c programmierer eigentlich klar sein...
-
@aMan
Das geht in C auch nicht:int str_cmp(const char &to_cmp1, const char &to_cmp2)
Und diese Pointer-Furcht verstehe ich auch nicht. Ja ich weiss dass einige dieser Meinung sind, aber es ist eher idologisch bedingt.
Zeiger sind technisch unproblematisch und jedenfalls hier, verschlechtern sie die Lesbarkeit des Codes nicht.man hat mit pointer viel mehr zu tun, ein new muss her, am ende ein delte
Unabhänig davon ob das C oder C++ ist, wie soll man so ein Programm sonst Programieren alles auf den Stack packen ? Ich wüsste nicht wie man das hier ohne malloc beweltigen könnte.
-
Kritik:
- Size of film --> In welchen Angaben? In Äpfeln?
- Length of film --> Das gleiche
Also die Angaben sollten deutlicher werden. Nicht jeder weiß, dass in Length die Minuten angegeben werden - und nur eine Zahl... - ich habe "3 Stunden" geschrieben; glücklicherweise fängst du soetwas jetzt ja ab.
Also einfach nochmal überarbeiten.
Was die GUI angeht: Ich bin ein Fan von grafischen Oberflächen, am besten du arbeitest gleich mit DirectX und machst bei jeder Menüauswahl einen Special-Effect.
-
Also die Angaben sollten deutlicher werden. Nicht jeder weiß, dass in Length die Minuten angegeben werden
ich hatte das eigentlich schon eingebaut, ist wohl irgendwie verloren gegeangen... ist jetzt aber wieder drin, die windows executable fehlt allerdings noch
Was die GUI angeht: Ich bin ein Fan von grafischen Oberflächen, am besten du arbeitest gleich mit DirectX und machst bei jeder Menüauswahl einen Special-Effect.
das ganze sollte moeglichst plattformunabhaengig sein, weshalb directx schon mal ausscheidet. allerdings halte ich das auch fuer ein wenig ueberdimensioniert mit solch einer api oder einer anderen vergleichbaren, die ja nicht gerade fuer fensterchen ausgelegt ist eine GUI zu basteln...
ich bin immer noch auf der suche nach etwas, mit dem ich auch meinen c code gut einbauen kann und halt, wie gesagt, plattform unabhaengig ist. vielleicht hat ja auch da jemand tipps?
-
Enter parts of film --> Enter number of parts
-
war schon in der linux version, hab es nur noch nicht fuer windows compiled, aber danke