Created
September 5, 2012 14:54
-
-
Save snorrewb/3637824 to your computer and use it in GitHub Desktop.
IMT1082 Objekt-Orientert Programmering - Obligatorisk oppgave 2 eller 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** Oblig 2 | |
* Objekt-orientert Programmering | |
* Snorre Brecheisen (******) | |
* Spillprogrammering | |
********************************/ | |
/** INCLUDES **/ | |
#include <cstring> | |
#include <cctype> | |
#include <fstream> | |
#include <iostream> | |
#include <listtools.h> | |
using namespace std; | |
/** CONSTANTS **/ | |
const int TLFMIN = 10000000; | |
const int TLFMAX = 99999999; | |
const int MEDMIN = 1; | |
const int MEDMAX = 1000; | |
const int DATMIN = 20000101; | |
const int DATMAX = 20501231; | |
const int STRLEN = 50; | |
/** GLOBAL VARIABLES **/ | |
List *docList; | |
//List *patList; | |
/** FUNCTION DECLARATIONS **/ | |
void menuDisplay (); | |
char menuChoice (); | |
void regPre (); | |
void viewPat (); | |
void viewDoc (); | |
void delOld (); | |
void load (); | |
void save (); | |
void help (); | |
void setChar (); | |
void getNum (); | |
/** CLASSES **/ | |
class Prescription:public Num_element { | |
private: | |
char *name; | |
char *med; | |
int dose; | |
public: | |
Prescription (); | |
Prescription (int date); | |
~Prescription (); | |
void view (); | |
void save (); | |
} | |
class Doctor:public Text_element { | |
private: | |
char *address; | |
int tlf; | |
List *preList; | |
public: | |
Doctor (); | |
Doctor (char name []); | |
~Doctor (); | |
void regPre (); | |
void view (); | |
void save (); | |
void delPre (int date); | |
void delDoc (); | |
int preNum (); | |
} | |
/** MAIN **/ | |
int main () { | |
char choice; | |
docList = new List(Sorted); | |
//load(); | |
menuDisplay(); | |
while (choice != 'Q') { | |
choice = menuChoice(); | |
switch (choice) { | |
case 'R': regPre; break; | |
case 'F': delOld(); break; | |
case 'L': viewDoc; break; | |
case 'P': viewPat; break; | |
case 'U': save(); break; | |
case 'I': load(); break; | |
case 'H': help(); break; | |
case 'Q': cout << "\nAvslutter";break; | |
default: cout << "\nDet skjedde en feil."; | |
menuDisplay(); break; | |
} | |
menuDisplay(); | |
} | |
return 0; | |
} | |
/** FUNCTIONS **/ | |
void menuDisplay () { | |
cout << "\n\nHOVEDMENY:"; | |
cout << "\nR - Registrer en ny resept"; | |
cout << "\nF - Fjern alle gamle resepter"; | |
cout << "\nL - Oversikt over resepter fra bestemte leger"; | |
cout << "\nP - Oversikt over resepter fra bestemte pasienter"; | |
cout << "\nU - Skriv all reseptdata til fil"; | |
cout << "\nI - Les data fra fil"; | |
cout << "\nH - Hjelp"; | |
cout << "\nQ - Avslutter programmet"; | |
} | |
char menuChoice () { | |
char c; | |
cout << "\nTast inn ditt valg: "; | |
cin >> c; | |
cin.ignore(); | |
return (toupper(c)); | |
} | |
void setChar(char *c, char s[], int MIN, int MAX) { | |
cout << '\n' << c << ": "; | |
cin.getline(s, MAX); | |
while (strlen(s) < MIN && strlen(s) > MAX) { | |
cout << "\nDet skjedde en feil."; | |
cout << '\n' << c << " : "; | |
cin.getline(s, MAX); | |
} | |
} | |
int getNum(char *c, const int MIN, const int MAX) { | |
int i; | |
cout << '\n' << c << "(" << MIN << "-" << MAX << "): "; | |
cin >> i; | |
while (i < MIN && i > MAX) { | |
cout << "\nDet skjedde en feil."; | |
cout << '\n' << c << "(" << MIN << "-" << MAX << "): "; | |
cin >> i; | |
} | |
cin.ignore(); | |
return i; | |
} | |
void regPre () { | |
Doctor *temp; | |
char name[STRLEN]; | |
setChar("\nLegens navn", name, 1, STRLEN); | |
if (docList->in_list(name)) { | |
temp = (Doctor*)docList->remove(name); | |
temp->regPre(); | |
doclist->add(temp); | |
} else { | |
temp = new Doctor (name); | |
doclist->add(temp); | |
} | |
} | |
void viewPat () { | |
char name; | |
int docNo, preNo; | |
int count = 0; | |
Doctor *temp; | |
setChar("\nPasientens navn", name, 1, STRLEN); | |
docNo = docList->no_of_elements(); | |
for (int i = 1; i <= docNo; i++) { | |
temp = (Doctor*)docList->remove_no(i); | |
preNo = temp->preNum(); | |
for (int j = 1; j <= preNo; j++) { | |
// | |
if () { | |
//count++; | |
} | |
} | |
docList->add(temp); | |
} | |
if (count == 0) { | |
cout << "\n" << name << " finnes ikke i registeret"; | |
} | |
} | |
void viewDoc () { | |
int name; | |
Doctor *temp; | |
setChar("\nLegens navn", name, 1, STRLEN); | |
if (docList->in_list(name)) { | |
temp = (Doctor*)docList->remove(name); | |
temp->view(); | |
docList->add(temp); | |
} else { | |
cout << "\nLegen finnes ikke i registeret!"; | |
} | |
} | |
void delOld () { | |
int date, docNo; | |
Doctor *temp; | |
date = getNum ("\nSlette alle resepter utstedt før hvilken dato", DATMIN, DATMAX); | |
docNo = docList->no_of_elements(); | |
for (int i = 1; i <= docNo; i++) { | |
temp = (Doctor*)docList->remove_no(i); | |
temp->delPre(date); | |
if (temp->preNum() < 1) { | |
temp->delDoc(); | |
} else { | |
docList->add(temp); | |
} | |
} | |
} | |
void load () { | |
} | |
void save () { | |
} | |
void help () { | |
cout << "\n\nKOMMANDOBESKRIVELSE:"; | |
cout << "\nR - Registrer en ny resept"; | |
cout << "\n\tRegistrer en ny resept (og evt. ny lege) i systemet."; | |
cout << "\nF - Fjern alle gamle resepter"; | |
cout << "\n\tSletter alle resepter utstedt før angitt dato."; | |
cout << "\nL - Oversikt over resepter fra bestemte leger"; | |
cout << "\n\tViser alle resepter utstedt av en enkel lege."; | |
cout << "\nP - Oversikt over resepter fra bestemte pasienter"; | |
cout << "\n\tViser alle resepter utstedt til en enkelt pasient."; | |
cout << "\nU - Skriv all reseptdata til fil"; | |
cout << "\n\tLagrer alle data til fil."; | |
cout << "\nI - Les data fra fil"; | |
cout << "\n\tForkaster nåværende data og leser inn fra en fil."; | |
cout << "\nQ - Avslutter programmet"; | |
} | |
/** CLASS FUNCTIONS **/ | |
Prescription::Prescription () { | |
} | |
Prescription::Prescription (int date):Num_element (date) { | |
name = new char [STRLEN]; | |
med = new char [STRLEN]; | |
setChar("\nPasientens navn", name, 1, STRLEN); | |
setChar("\nMedisinens navn", med, 1, STRLEN); | |
dose = getNum ("\nMedisinens dose", MEDMIN, MEDMAX); | |
} | |
Prescription::~Prescription () { | |
delete [] name; | |
delete [] med; | |
} | |
Prescription::void view () { | |
cout << "\n\nDato for utstedelse: " << number; | |
cout << "\nPasientens navn: " << name; | |
cout << "\nMedisinens navn: " << med; | |
cout << "\nMedisinens dosering: " << dose; | |
} | |
Prescription::void save () { | |
} | |
Doctor::Doctor () { | |
} | |
Doctor::Doctor (char name []):Text_element (name) { | |
preList = new List(Sorted); | |
address = new char [STRLEN]; | |
setChar("\nLegens adresse", address, 1, STRLEN); | |
tlf = getNum ("\nLegens telefonnummer", TLFMIN, TLFMAX); | |
regPre (); | |
} | |
Doctor::~Doctor () { | |
delete [] address; | |
} | |
Doctor::void regPre () { | |
Prescription *newPre; | |
int date; | |
tlf = getNum ("\nDato for resept", DATMIN, DATMAX); | |
newPre = new Prescription (date); | |
preList->add(newPre); | |
} | |
Doctor::void view () { | |
cout << "\n\n\nLegens navn: " << text; | |
cout << "\nLegens adresse: " << address; | |
cout << "\nLegens telefonnummer: " << tlf; | |
Prescription *temp; | |
int preNo = preList->no_of_elements(); | |
for (int i = 1; i <= preNo; i++) { | |
temp = (Prescription*)preList->remove_no(i); | |
temp->view(); | |
preList->add(temp); | |
} | |
} | |
Doctor::void save () { | |
} | |
Doctor::void delPre (int date) { | |
for (int i = DATMIN; i < date; i++) { | |
if (preList->in_list(i)) { | |
preList->destroy(i); | |
} | |
} | |
} | |
Doctor::void delDoc () { | |
docList->destroy(text); | |
} | |
Doctor::int preNum () { | |
return preList->no_of_elements(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hei,
Har du e-posten du sendte til emnelærer? 😄