Advertisement
Guest User

StudentRecord

a guest
Mar 26th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.10 KB | None | 0 0
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. typedef char string50[51];
  6. typedef char string08[9];
  7.  
  8. typedef struct
  9. {
  10.     string50 strName;
  11.     string08 strID;
  12.     float fQuiz[3];
  13.     float fMacProb[2];
  14.     float fFinalExam;
  15.     float fRawScore;
  16.     float fFinalGrade;
  17.     float fAveQ, fAveMP;
  18. } STUDENT_RECORD;
  19.  
  20. typedef STUDENT_RECORD CLASS_RECORD[5];
  21.  
  22. #define NAME        1
  23. #define ID          2
  24. #define QUIZ1       3
  25. #define QUIZ2       4
  26. #define QUIZ3       5
  27. #define MP1         6
  28. #define MP2         7
  29. #define FE          8
  30.  
  31. void initialize(CLASS_RECORD c)
  32. {
  33.     int i, j;
  34.     for (i = 0; i < 5; i++)
  35.     {
  36.         strcpy(c[i].strName, "");
  37.         strcpy(c[i].strID, "");
  38.  
  39.         for (j = 0; j < 3; j++)
  40.             c[i].fQuiz[j] = 0;
  41.         for (j = 0; j < 3; j++)
  42.             c[i].fMacProb[j] = 0;
  43.         c[i].fFinalExam = 0;
  44.         c[i].fRawScore = 0;
  45.         c[i].fFinalGrade = 0;
  46.     }
  47. }
  48.  
  49. void displayOption()
  50. {
  51.     cout<<"\n *****************************";
  52.     cout<<"\n [1] Add Record";
  53.     cout<<"\n [2] View Student Record";
  54.     cout<<"\n [3] Modify Student Record ";
  55.     cout<<"\n [4] View Class Record";
  56.     cout<<"\n [5] EXIT";
  57.     cout<<"\n *****************************";
  58. }
  59.  
  60. int searchRecord(CLASS_RECORD c, char str[], int nMode)
  61. {
  62.     int nIndex = -1, i = 0;
  63.     while (i < 5 && nIndex == -1)
  64.     {
  65.         if (nMode == NAME && !strcmp(c[i].strName, str))
  66.             nIndex = i;
  67.         else if (nMode == ID && !strcmp (c[i].strID, str))
  68.             nIndex = i;
  69.         i++;
  70.     }
  71.     return nIndex;
  72. }
  73.  
  74. void viewStudentRecord(CLASS_RECORD c, int n)
  75. {
  76.     int i;
  77.     cout << "\n*****STUDENT RECORD#" << n+1 << "*****\n";
  78.     cout << c[n].strName;
  79.     cout << c[n].strID;
  80.  
  81.     for (i = 0; i < 3; i++)
  82.         cout << "\n*****QUIZ#"<< i+1 ":" <<c[n].fQuiz[i];
  83.     for (i = 0; i < 2; i++)
  84.         cout << "\n*****MACHINE PROBLEM#"<< i+1 ":" <<c[n].fMacProb[i];
  85.     cout << "\n*****FINAL EXAM:" << c[n].fFINALExam;
  86.     cout << "\n*****RAW SCORE:" << c[n].fRawScore;
  87.     cout << "\n*****FINAL GRADE: "<<c[n].fFinalGrade << "\n";
  88. }
  89.  
  90. void addRecord(CLASS_RECORD c, int *n)
  91. {
  92.     cout << "*****ADD RECORD*****\n";
  93.     cout << "STUDENT NAME:";
  94.     cin>> c[*n].strName;
  95.     cout << " STUDENT ID: ";
  96.     cin >> c[*n].strID;
  97.  
  98.     *n = *n+1;
  99. }
  100.  
  101. void displayOptionInput()
  102. {
  103.     cout << "\n****************************************\n";
  104.     cout << "\n [1] Enter New Student Name ";
  105.     cout << "\n [2] Enter New Student ID ";
  106.     cout << "\n [3] Enter Quiz#1 ";
  107.     cout << "\n [4] Enter Quiz#2 ";
  108.     cout << "\n [5] Enter Quiz#3 ";
  109.     cout << "\n [6] Enter Machine Problem#1 ";
  110.     cout << "\n [7] Enter Machine Problem#2 ";
  111.     cout << "\n [8] Enter Final Exam ";
  112.     cout << "\n [9] Enter DISPLAY ";
  113.     cout << "\n [10] EXIT ";
  114.     cout << "\n****************************************\n";
  115. }
  116.  
  117. void computeAveQ(CLASS_RECORD c, int n)
  118. {
  119.     int i;
  120.     c[n].fAveQ = 0;
  121.     for (i = 0; i < 3; i++)
  122.         c[n].fAveQ += c[n].fQuiz[i];
  123.     c[n].fAveQ /= 3;
  124. }
  125.  
  126. void computeAveMP(CLASS_RECORD c, int n)
  127. {
  128.     int i;
  129.     c[n].fAveMP = 0;
  130.     for ( i = 0; i < 2; i++)
  131.         c[n].fAveMP += c[n].fMacProb[i];
  132.     c[n].fAveMP /= 2;
  133. }
  134.  
  135. void computeRawScore(CLASS_RECORD c, int n)
  136. {
  137.     c[n].fRawScore = (c[n].fAveQ + c[n].fAveMP + c[n].fFinalExam) / 3;
  138. }
  139.  
  140. void computeFinalGrade(CLASS_RECORD c, int x)
  141. {
  142.     if (c[x].fRawScore >= 94)
  143.         c[x].fFinalGrade = 1.00;
  144. }
  145.  
  146. void modifyRecord(CLASS_RECORD c, int n)
  147. {
  148.     int mode, num;
  149.     num = n + 1;
  150.     cout << " You are going to modify record #" <<num;
  151.     viewStudentRecord (c, n);
  152.     do {
  153.         displayOptionInput();
  154.         cout << "******************\n";
  155.         cout << "ENTER YOUR OPTION: ";
  156.         cin >> mode ;
  157.         cout << "******************\n";
  158.         switch (mode)
  159.         {
  160.             case NAME:
  161.             {
  162.                 cout << "NEW NAME: ";
  163.                 cin >> c[n].strName;
  164.                 break;
  165.             }
  166.             case ID:
  167.             {
  168.                 cout << "NEW ID: ";
  169.                 cin >> c[n].strID;
  170.                 break;
  171.             }
  172.             case QUIZ1:
  173.             {
  174.                 cout << "NEW Quiz#1: ";
  175.                 cin >> c[n].fQuiz[0];
  176.                 break;
  177.             }
  178.             case QUIZ2:
  179.             {
  180.                 cout << "NEW Quiz#2: ";
  181.                 cin >> c[n].fQuiz[1];
  182.                 break;
  183.             }
  184.             case QUIZ3:
  185.             {
  186.                 cout << "NEW Quiz#3: ";
  187.                 cin >> c[n].fQuiz[2];
  188.                 break;
  189.             }
  190.             case MP1:
  191.             {
  192.                 cout << "NEW MP1:";
  193.                 cin >> c[n].fMacProb[0];
  194.                 break;
  195.             }
  196.             case MP2:
  197.             {
  198.                 cout << "NEW MP2: ";
  199.                 cin >> c[n].fMacProb[1];
  200.                 break;
  201.             }
  202.             case FE:
  203.             {
  204.                 cout << "NEW FE:";
  205.                 cin >> c[n].fFinalExam;
  206.                 break;
  207.             }
  208.             case 9:
  209.             {
  210.                 viewStudentRecord(c, n);
  211.                 break;
  212.             }
  213.         }
  214.         computeAveQ(c, n);
  215.         computeAveQ(c, n);
  216.         computeRawScore(c, n);
  217.         computeFinalGrade(c, n);
  218.     } while (mode != 10);
  219. }
  220.  
  221. void chooseNameOrID(string50 *str, int *nMode)
  222. {
  223.     cout << "[1] Student Name\n";
  224.     cout << "[2] Student Id\n";
  225.     cout << "Choose: ";
  226.     cin >> *nMode;
  227.  
  228.     if (*nMode == NAME)
  229.         cout << "STUDENT NAME: ";
  230.     else if (*nMode == ID)
  231.         cout << "STUDENT ID: ";
  232.     cin >> *str;
  233. }
  234.  
  235. void viewClassRecord(CLASS_RECORD c)
  236. {
  237.     int nInterval = 1, i, nStart = 0, bValid = 1, y;
  238.     char ch = '\0';
  239.  
  240.     do
  241.     {
  242.         bvalid = 1 ;
  243.         cout << "Enter [P]rev, [N]ext or [Q]uit: ";
  244.         cin >> ch;
  245.         if ( ch == 'P' || ch == 'p')
  246.         {
  247.             for (i = 0; i < nInterval; i++)
  248.             {
  249.                 if (nStart == 0)
  250.                     nStart = 4;
  251.                 else
  252.                     nStart --;
  253.             }
  254.         }
  255.         if (ch == 'N' || ch == 'n')
  256.         {
  257.             nStart  = (nStart + nInterval);
  258.             i++;
  259.         }
  260.         if (bValid)
  261.         {
  262.             for (i = 0; i nInterval; i++)
  263.             {
  264.                 y = (nStart + 1) & 5;
  265.                 viewStudentRecord(c, y);
  266.             }
  267.         }
  268.   } while (ch != 'Q' && ch != 'q');
  269. }
  270.  
  271. void main()
  272. {
  273.     clrscr();
  274.     CLASS_RECORD classRec;
  275.     string50 string;
  276.     int mode, numRec, choice, index;
  277.     intialize(classRec);
  278.     strcpy (string , "");
  279.     numRec = 0;
  280.     do
  281.     {
  282.         displayOption();
  283.         cout << "**************\n";
  284.         cout << "OPTION: ";
  285.         cin >> choice;
  286.         cout << "**************\n";
  287.         switch (choice)
  288.         {
  289.             case 1:
  290.             {
  291.                 addRecord(classRec, &numRec);
  292.                 cout << "NUM REC" << numRec;
  293.                 break;
  294.             }
  295.             case 2:
  296.             {
  297.                 chooseNameOrID(&string, &mode);
  298.                 index = searchRecord (classRec, string, mode);
  299.                 viewStudentRecord (classRec, index);
  300.                 break;
  301.             }
  302.             case 3:
  303.             {
  304.                 chooseNameOrID(&string, &mode);
  305.                 index = searchRecord(classRec, string, mode);
  306.                 modifyRecord (classRec, index);
  307.                 break;
  308.             }
  309.             case 4:
  310.             {
  311.                 viewClassRecord(classRec);
  312.                 break;
  313.             }
  314.         }
  315.     } while (choice != 5);
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement