Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Ähnliche Dokumente
Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

9. Vektoren. (auch Felder/array)

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

C/C++ - Programmierung. Formatierte Ausgabe mit cout Seite 1 von 6

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Auswahlen (Selektionen)

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur Informatik WS 2012/13

Klausur in Programmieren

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Algorithmen und Datenstrukturen

Grundlagen der Informatik 6. Arrays I

Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 4. Aufgabenblatt Dateiverarbeitung, Funktionen, Records

ios fstream ifstream

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Grundlagen der Informatik 5. Kontrollstrukturen II

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

C/C++ - Programmierung. Benutzerdefinierte Funktionen Seite 1 von 21

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Grundlagen der Informatik 2. Typen

Einführung in die Programmierung Wintersemester 2008/09

Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen.

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Einführung in die Programmierung Wintersemester 2016/17

Programmieren in C/C++ und MATLAB

4 Schleifen und Dateien

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Vorlesungsprüfung Programmiersprache 1

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Informatik für Elektrotechnik und Informationstechnik

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Pseudo-Programmiersprache

Klausur Programmieren 1 SS 2017

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik

Erste Java-Programme (Scopes und Rekursion)

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

DAP2 Praktikum Blatt 1

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Ein- und Ausgabe (I/O)

Zeiger und dynamischer Speicher

Grundlagen der Informatik

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

8. Referenzen und Zeiger

Einführung in die Programmierung

5. Elementare Befehle und Struktogramme

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Klausur: Informatik, am 13. August 2015 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Angewandte Mathematik und Programmierung

Java Einführung Methoden. Kapitel 6

Ein kleiner Blick auf die generische Programmierung

Informatik Repetitorium SS Volker Jaedicke

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

1 EINFÜHRUNG PROGRAMMAUFBAU IN C++

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Ein- und Ausgabe mit Dateien

Kurze Einführung in die Programmiersprache C++ und in Root

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Programmierung und Angewandte Mathematik

Ein paar Kleinigkeiten zum Einstieg

Übung Notendarstellung

Transkript:

Projekt: Artikelverwaltung Seite 1 von 5 Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Legen Sie global einen benutzerdefinierten Datentyp artikel an: struct artikel int nr; char name[30]; int anzahl; uble preis; ; //Artikelnummer //Artikelbezeichnung //Artikelanzahl //Artikelpreis Im Hauptprogramm (main()-funktion) werden folgende Datentypen vereinbart:... artikel teil[100]; //Bis zu 100 Datensätze int anzahl; //Anzahl der tatsächlich eingegebenen bzw. gelesenen Datensätze... Die Bedienung des Programms erfolgt menügesteuert. Nach Start des Programms soll folgendes Auswahlmenü erscheinen: '1'=Daten eingeben '2'=Daten ausgeben '3'=Daten speichern '4'=Daten laden '5'=Daten aendern '6'=Daten loeschen '7'=Daten sortieren '8'=Daten suchen 'ESC'=Beenden Bitte waehlen... Die Funktionalität des Programms erfolgt ausschließlich durch Aufrufen von Funktionen in Abhängigkeit von dem gewählten Menüpunkt. Für die einzelnen Menüpunkte werden folgende Funktionen deklariert: int eingeben(artikel*, int); Rückgabewert: Anzahl der eingegebenen Datensätze. Die Funktion kann zur Laufzeit des Programms öfter aufgerufen werden. Die Anzahl der Datensätze (Variable anzahl des Hauptprogramms) wird bei jedem Aufruf um die Anzahl der eingegebenen Datensätze erhöht. Die Artikelnummer muss eindeutig sein, sonst erfolgt eine Fehlermeldung. void ausgeben(artikel*, int);. Die Funktion gibt alle Datensätze formatiert auf den Bildschirm aus. Artikelverwaltung.cx - 1 -

Projekt: Artikelverwaltung Seite 2 von 5 void speichern(artikel*, int);. Die Funktion speichert die Datei unter einem frei wählbaren Namen. int laden(artikel*); Übergabeparameter: Zeiger auf den Beginn des Datenfeldes Rückgabewert: Anzahl der gelesenen Datensätze. Die Funktion liest die Datei (sofern vorhanden) in das Datenfeld teil[100] ein und legt die Anzahl der gelesenen Datensätze in der Variablen anzahl ab! void aendern(artikel*, int); Die Funktion erwartet als Eingabe die Artikelnummer des Datensatzes. Dieser Datensatz wird dann angezeigt und kann neu eingegeben werden. Liegt der Index außerhalb des gültigen Bereiches oder ist die neue Artikelnummer bereits vorhanden soll eine Fehlermeldung erfolgen. int loeschen(artikel*, int); Rückgabewert: Anzahl der Datensätze, um 1 niedriger als die Anzahl der übergebenen Datensätze, wenn der Datensatz gelöscht wurde. Die Funktion erwartet die Eingabe der Artikelnummer. Dieser Datensatz wird aus dem Datenfeld entfernt und von den folgenden Datensätzen überschrieben, so dass sich die Anzahl der Datensätze um 1 verringert. void sortieren(artikel*, int); Die Funktion sortiert wahlweise nach Artikelnummer oder Artikelname. Das Datenfeld wird nur in sich sortiert. Die Ausgabe der sortierten Datei erfolgt mit dem Menüpunkt 'ausgeben'. void suchen(artikel*, int); Die Funktion erwartet wahlweise zur Eingabe eine Artikelnummer oder einen Artikelnamen. Danach werden alle Datensätze angezeigt, die dieser Eingabe (genau) entsprechen. (Ergänzung: Es sollen alle Artikel ausgegeben werden, welche auch nur Teile des eingegebenen Artikelnamens enthalten) Zu allen Funktionen ist ein Struktogramm zu entwickeln! Artikelverwaltung.cx - 2 -

Projekt: Artikelverwaltung Seite 3 von 5 Die folgende Vorgabe des Hauptprogramms und die Vereinbarungen der Funktionen sind verbindlich und dürfen nicht geändert werden! int main() - Artikelverwaltung Deklaration artikel teil[100] int i=0 (Artikelanzahl) char w ahl system("cls") Menü zeigen: '1'=Daten eingeben *2*=Daten ausgeben '3'=Daten speichern '4'=Daten laden '5'=Daten aendern '6'=Daten loeschen '7'=Daten sortieren '8'=Daten suchen 'ESC'=Beenden Eingabe w ahl w ahl? '1' '2' '3'... 0x1b Sonstige i=eingeben(...) ausgeben(...) speichern(...)... Fehlermeldung w iederhole, solange w ahl!= 0x1b return(0) Artikelverwaltung.cx - 3 -

Projekt: Artikelverwaltung Seite 4 von 5 #include <iostream> #include<iomanip> #include<conio.h> using namespace std; struct artikel //Der neue Typ ist artikel' // artikel ist global in allen folgenden Funktionen gültig int nr; //'nr' ist vom Typ integer char name[24]; //'name' ist ein string mit maximal 24 Stellen int anzahl; //'anzahl' ist vom Typ integer uble preis; //'preis' ist vom Typ uble ; //Achtung: struct-anweisung unbedingt mit ;' abschließen /***********Prüfen ob 'zahl' ein Int-Wert ist **************/ /************** n = max.stellenzahl *****************/ int IntTest(char* zahl, int n) int i = 0, m = 0; if (strlen(zahl) > n) return 0; else while (zahl[i]!= 0x00) if (zahl[i] < 0x30 zahl[i]>0x39) return 0; return 1; /***********Prüfen ob 'zahl' ein Double-Wert ist **************/ /************** n = max.stellenzahl *****************/ int DoubleTest(char* zahl, int n) int i = 0, m = 0; if (strlen(zahl) > n) return 0; else while(zahl[i]!=0x00) if (zahl[i] == 0x2e) m++; if (m > 1) return 0; else if (zahl[i] < 0x30 zahl[i]>0x39) return 0; return 1; Artikelverwaltung.cx - 4 -

Projekt: Artikelverwaltung Seite 5 von 5 int main() artikel teil[100], dummy; int i = 0, anzahl = 0; char zahl[24]; /************** Eingabe der Datensätze *********************/ cout << endl; cout << i + 1 << ". Datensatz eingeben \n"; cout << "\nnummer: "; if (!IntTest(zahl, 4)) cout << "\nfehler!\n"; dummy.nr = atoi(zahl); //String in int wandeln cout << "\nname: "; cin.ignore(); //Ignoriert das erste Zeichen im Eingabepuffer (=CR von voriger Eingabe) cin.getline(dummy.name, sizeof(dummy.name)); cout << "\nanzahl: "; if (!IntTest(zahl, 4)) cout << "\nfehler!\n"; dummy.anzahl = atoi(zahl); cout << "\npreis: "; if (!DoubleTest(zahl, 8)) cout << "\nfehler!\n"; dummy.preis = atof(zahl); //String in uble wandeln teil[i] = dummy; anzahl++; cout << "\n\n'esc' = Ende... " << endl; while (_getch()!= 0x1b); /**************** Formatierte Ausgabe ***********************/ cout << setw(3) << "Nr" << setw(24) << "Name" << setw(15) << "Anzahl" << setw(12) << "Preis" << endl; for (i = 0; i < anzahl; i++) cout << setw(4) << teil[i].nr; cout << setw(30) << teil[i].name; cout << setw(7) << teil[i].anzahl; cout << setw(13) << setiosflags(ios::fixed) << setprecision(2) << teil[i].preis << endl; _getch(); return(0); Artikelverwaltung.cx - 5 -