programm c++ struct sort usw

kein_c_fan

Grünschnabel
Tag zusammen,

Ich hoffe ich bin hier richtig. Muss ein Programm in c++ mit visualstudio schreiben, aber der compiler scheint mich zu hassen, soll heißen ich kriegs nicht gebacken.
Ich hab schon mal ein stümperhaftes Programm angefangen, das eigentlich hauptsächlich aus unterprogrammen besteht.
Es soll im Idealfall mal folgendes können:
Daten in eine Struktur einlesen (max 12 strukturen)
die daten in ner datei speichern
die daten aus der datei wieder hochladen
ein bestimmtes element suchen und anzeigen
und die daten (strukturen) sortieren nach dem ersten element alphabetisch

Habe meine sehr dürftigen kenntnisse bereits ausgereizt, und steck jetzt irgendwie fest.
hab schon so ziemlich alles was annähernd brauchbar aussah versucht (vor allem aus dem internet, teils wohl auch hier), aber das ding tut nicht das was ich will.
Vielleicht ist das ja nur n Anfängerfehler und in n paar minuten erledigt, wer weiß.
wäre froh wenn mir jemand n kleinen tipp geben könnte. Primärproblem: Er liest die Daten nicht in die Struktur. Wem sonst noch was aufffällt, nur immer raus damit, bin für jede hilfe dankbar, da ich schon fast verzweifet bin.
Hier mal der Quellcode:

Code:
#include "stdio.h"
#include "goto_clrscr.h"
#include <iostream.h> 
#include <vector> 
#include <algorithm> 
#include <list> 
#include <stdlib.h>

#define N 12
#define NULL 0
#define BOOL int

FILE *fpt;
int i=0;


//Struktur definieren
typedef struct {
					char *name;
					unsigned long matrikelnummer;
					char fachrichtung;
					float note;
					} datensatz;
datensatz student[12];
datensatz *studentptr = 0;


datensatz *new_elem (char * ,unsigned long *, char * , float) ;




//Unterfunktionen deklarieren
int Datensatz_anlegen(void);
int Daten_suchen (void);
int Daten_sortieren (void);
int Daten_speichern (void);
int Daten_laden (void);

int main(void)
{

int auswahl1;





// 
printf("\n\t*** Willkommen zum Programm ***");

	Anfang:;


//Auswahlmenü
	printf("\n\n\nWas moechten Sie tun?\n\n\n1.Datensatz anlegen\n2.Datensatz suchen\n3.Daten speichern\n4.Daten laden\n5.Daten alphabetisch ordnen\n6.Beenden\n\nAuswahl durch Eingabe der Nummer und bestaetigen mit Eingabe-Taste\n\n\nIhre Auswahl:\t");

		//Leeren des Tastaturpuffers//
		fflush (stdin);

			//Einlesen der Auswahl//
		scanf ("%d",&auswahl1);


			//Überprüfen welche Funktion gewählt wurde//
	switch (auswahl1)
	{
		//Fall 1: Datensatz anlegen//
		case 1:
				
			//Bildschirm leeren//
			{clrscr();


			//Unterfunktionaufruf
			Datensatz_anlegen();
			}

			break;

			
			//Fall 2:Datensatz suchen//
		case 2:	
				
			{clrscr();
			
			//Unterfunktionaufruf
			Daten_suchen();
			}

			break;


			//Fall 3: Daten in Datei speichern
		case 3:	
				
			{clrscr();
			

			//Unterfunktionaufruf
			Daten_speichern();
			}

			break;



			//Fall 4: Daten aus Datei laden
		case 4:	
				
			{clrscr();
			

			//Unterfunktionaufruf
			Daten_laden();
			}

			break;


			//Fall 5: Sortieren//
		case 5:
			{clrscr();


			//Unterfunktionaufruf
			Daten_sortieren();

			}

			break;

			//Fall 6: Programm beenden//
		case 6:
			{clrscr();


			//Ausgabe der Verabschiedung
			printf("\nUnd Tschuess\n\n");


			//Sprung zum Ende des Programms
			goto Ende;
			}
	

	}	

	clrscr ();


	// Sprung zum Anfang des Programms
	goto Anfang;


	//Sprungmarke goto Funktion
Ende:;


return 0;
}


//---------------------------------------------------------


		//Erstes Unterprogramm: Datensatz anlegen//

		int Datensatz_anlegen (void)
		{

		unsigned long matr=0;


		datensatz *studentptr = (datensatz *) malloc (sizeof (datensatz)) ;

		 if (studentptr == NULL)
			{
			printf ("Fehler beim Allokieren von Speicherplatz") ;
			system("pause");
			return 1 ;
			}

			datensatz *speichern(datensatz tabelle[], unsigned long matrikelnummer);

			datensatz student[12];

			student[i].matrikelnummer = matr;




			printf("Geben Sie die Daten ein\n\nName:\t");
		
			scanf("%s",&(student[i].name));

			printf("\nMatrikelnummer:\t");
			do	{
				scanf("%ul",&(student)->matrikelnummer);
				}while(getchar()!='\n' );


			scanf("%ul",&matr);

			printf("\nFachrichtung:\t");

			scanf("%s",&(student[i].fachrichtung));

			printf("\nNote:\t");

			scanf("%f",&(student[i].note),i++);







	
			system ("pause");





			return 0;
		

			}

		
//----------------------------------------------------------------------------	

// Zweites Unterprogramm: Suchen von Einträgen//
	int Daten_suchen (void)
	{
	datensatz student[N];



	long matrikelnummer;
	datensatz *pt;

	datensatz *suchen(datensatz tabelle[], long matrikelnummer);
	
	printf("Sie moechten einen Eintrag suchen?\n\n");


	//Einsprungspunkt für goto Funktion//
	Anfang:;


	//Eingabeaufforderung//
	printf("Geben Sie die zu suchende Matrikelnummer ein, \n0 um ins Hauptmenue zurueckzukehren\n\nIhre Suche:\t");
	
	///Einlesen der Eingabe//
	scanf("%ld", &matrikelnummer);


	//While-Schleife wenn eine richtige Matrikelnummer eingegeben wurde//
	while(matrikelnummer !=0) 
			{

			pt = suchen(student, matrikelnummer);

			//If-Schleife ob Eintrag vorhanden oder nicht//
			if(pt != NULL) {
							printf("\nName: %s\n", pt->name);
							printf("\nMatrikel-Nummer: %d\n", pt->matrikelnummer);
							printf("\nFachbereich: %c\n", pt->fachrichtung);
							printf("\nNote: %f\n", pt->note);
							}
			else
			printf("\nEintrag nicht vorhanden, Sie koennen zurueck ins Hauptmenue navigieren \nund den Eintrag erstellen\n\n");
			system ("pause");
			clrscr();
			goto Anfang;
		
			}


	return 0;
	} 


datensatz *suchen(datensatz tabelle[N], long matrikelnummer) 
	{

	int count;

	for(count=0; count<N; ++count) 
		{

		if(tabelle[count].matrikelnummer == matrikelnummer)
		return (&tabelle[count]);
		}
	return (NULL);


	}


//------------------------------------------------------------------


//3.Unterfunktion: Daten in Datei schreiben//
int Daten_speichern (void)
{
	//Datei öffnen
	if ((fpt = fopen("daten.txt", "wb")) == NULL)

		printf("Fehler");
		else
		
		//Daten in Datei schreiben
		fwrite(&student, sizeof(datensatz), 12, fpt);
		student;
		fclose(fpt);
		clrscr();
		printf("Daten wurden gespeichert\n\n");
		system ("pause");
		return 0;
}







//-------------------------------------------------------------------
		
//4.Unterfunktion: Daten aus Datei laden//

int Daten_laden (void)
{
	//Datei öffnen
	if ((fpt = fopen("daten.txt", "wb")) == NULL)

		printf("Fehler");
		else
		
		//Daten aus Datei lesen
		fread(&student, sizeof(datensatz), 12, fpt);
		student;
		fclose(fpt);
		clrscr();
		printf("Datei wurde geoeffnet und Daten stehen nun zur Verfuegung\n\n");
		system ("pause");


		return 0;
}



//-------------------------------------------------

//5. Unterfunktion: Einträge sortieren//

using namespace std;



		int Daten_sortieren (void)
		{


		printf("Moechten Sie die Daten jetzt sortieren?\n\nBestaetigen Sie mit Eingabe um die Sortierung zu starten\n\n");

		system ("pause");

	


		
return 0;
		}

P.S. manche sachen sind überflüssig, zum teil weiß ich das, hab mal alles ausprobiert und konnt mich nicht entscheiden was weg kann und was ich eventuell noch brauchen könnte.

Hoffe jemand hat n kleinen rat für mich,
Vielen Dank schonmal im vorraus und by the way auch schonmal schöne weihnachten:)
 
Zurück