Skip to content

Instantly share code, notes, and snippets.

@snorrewb
Created September 5, 2012 14:54
Show Gist options
  • Save snorrewb/3637824 to your computer and use it in GitHub Desktop.
Save snorrewb/3637824 to your computer and use it in GitHub Desktop.
IMT1082 Objekt-Orientert Programmering - Obligatorisk oppgave 2 eller 3
/** 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();
}
@MindTooth
Copy link

MindTooth commented Mar 21, 2019

Hei,

Har du e-posten du sendte til emnelærer? 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment