home *** CD-ROM | disk | FTP | other *** search
/ Shareware Supreme Volume 6 #1 / swsii.zip / swsii / 220 / MMPI.ZIP / MMPI.HPP < prev    next >
Text File  |  1992-03-21  |  3KB  |  130 lines

  1. // Enum for bit-fields in MMPIQuestion
  2.  
  3.  
  4. #include <fstream.h>
  5. #include <iostream.h>
  6.  
  7. enum MMPIScales {
  8.     Q,                // ?    Unanswered question
  9.     F,                // F     Validity
  10.     K,                // K     Correction
  11.     Hs,            // Hs    Hypochondriasis
  12.     D,                // D     Depression
  13.     Hy,            // Hy    Hysteria
  14.     Pd,            // Pd    Psychopathic deviant
  15.     Mf_M,            // Mf    Masculinity-femininity    Male
  16.     Mf_F,            // Mf    Masculinity-femininity    Female
  17.     Pa,            // Pa    Paranoia
  18.     Pt,            // Pt    Psychasthenia
  19.     Sc,            // Sc    Schizophrenia
  20.     Ma,            // Ma    Hypomania
  21.     Si,            // Si    Social introversion
  22.     L,                // L     Lie
  23.     NUM_SCALES    // Total count of above scales
  24. };
  25.  
  26. #define MALE   'M'
  27. #define FEMALE 'F'
  28.  
  29.  
  30. // ASCII equivalents for 'MMPIScales' enum is in MMPI.CPP
  31. extern char *aScale[];
  32.  
  33. struct MMPITotal {
  34.     short total[NUM_SCALES];
  35.  
  36.     MMPITotal();
  37.     void clear();
  38.  
  39.     MMPITotal scale(int);
  40.     MMPITotal getCorrection();
  41.     friend MMPITotal& operator+= (MMPITotal&, MMPITotal&);
  42.  
  43.     friend int show();
  44. };
  45.  
  46.  
  47. class MMPIQuestion {
  48. public:
  49.     char    *text;
  50.     char    scale[NUM_SCALES];
  51.     char    response;        // User answer to this question
  52.  
  53.     MMPIQuestion(char *);    // Duplicate string into 'text'
  54.     ~MMPIQuestion();
  55.     
  56.     void    clearScales();        // Set scales to ' '
  57.     int    setScale(char *);    // Attempt to set a scale from an ASCII scale set
  58.  
  59.     char    getScale(int);        // Return a T/F/' '
  60.     
  61.     MMPITotal eval();            // Evaluate a test response
  62. };
  63.  
  64.  
  65. typedef struct MMPINode {
  66.     MMPIQuestion *dat;
  67.     struct MMPINode *prev;
  68.     struct MMPINode *next;
  69.     
  70.     MMPINode(MMPIQuestion *);
  71.     MMPIQuestion *unlink();
  72. } MMPINode;
  73.  
  74. #define NO_NODE (MMPINode *)0;
  75.  
  76. class MMPITest {
  77. private:
  78.     MMPINode *curr;
  79.     
  80.     MMPINode *head;    // First randomized node
  81.     MMPINode *tail;    // Last randomized node
  82.  
  83.     MMPINode *find(MMPIQuestion *);    // Find a node
  84.     MMPINode *goPosn(int);        // Go to sequential node
  85.  
  86. public:
  87.     int size;            // Total number of objects
  88.  
  89.    MMPITest(char *file = "TEST.DAT");
  90.     ~MMPITest();
  91.     
  92.     MMPINode *add(MMPIQuestion *obj);
  93.     void del(MMPIQuestion *obj);
  94.  
  95.     MMPIQuestion *first();
  96.     MMPIQuestion *last();
  97.  
  98.     MMPIQuestion *at(int pos);
  99.  
  100.     MMPIQuestion *next();
  101.     MMPIQuestion *prev();
  102.  
  103.     MMPIQuestion *current();
  104.     void flush();
  105.     
  106.     char    name[17];
  107.     char    gender;
  108.  
  109.     unsigned int    total;
  110.  
  111.     MMPITotal results;
  112.     MMPITotal Correction;
  113.     MMPITotal Adjusted;
  114.     MMPITotal Scale;
  115.  
  116.    int isEmpty();
  117.    MMPIQuestion* isNotComplete();
  118.    
  119.    int eval();
  120.     
  121.    int load(char *file);
  122.  
  123.     void clearAnswers();
  124.     int saveAnswers(char *);
  125.     int loadAnswers(char *);
  126.    
  127.     int ResultForm(char *fName="REPORT.RPT");
  128. };
  129.  
  130.