my name is Aziz Mansur. im a grade 12 student (CBSE in indian curriculum) studyin in Dubai, UAE.
neways for my final exam i have to submit a project and mine is making a student database management software.
i started wit the displays first as the coding for the actual working of the software is pretty simple and also because i know nothing bout graphics in c++ (as it is not part of our portion but v do have to use basic graphics for the prroj) whatever graphics i have used, i have learnt from the compiler help files
1) the main problem is that after the toggle there is still some bits of colour in the prev selection i tried the functions setviewport and clearviewport but either i didnt understand how to use them properly or they are not ment for the purpose i dont know cause they didnt work
3) also could someone tell me how to implement the ascii value for F1 as i want to use it to invoke the help function of the program
/* THE FOLLOWING ARE JUST SNIPPITS OF THE WHOLE PROGRAM WHICH I HAVE
EDITTED IN ORDER TO MAKE EXECUTABLE FOR TESTING
ALSO CODEING AND FORMATTING IS YET NOT COMPLETING*/
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <graphics.h>
#include <process.h>
/* This function makes the page border*/
void border ()
{
setbkcolor (1);
setcolor (15);
rectangle (0, 0, 639, 479);
rectangle (5, 5, 634, 474);
struct time t; struct date d;
rectangle (535, 5, 634, 55);
rectangle (530, 5, 634, 60);
gotoxy (72, 2);
gettime (&t);
printf("%2d:%02d\n",t.ti_hour, t.ti_min);
gotoxy (70, 3);
getdate(&d);
printf("%d/%d/%d", d.da_day, d.da_mon, d.da_year);
// x1 y1 x2 y2
line ( 5, 396, 634, 396);
line ( 5, 391, 634, 391);
}
/*This function makes the selection box*/
void box (int n, int sel)
{
int top = ( (140 + ( (--n)*30) ) ), bot = ( (160 + ( (n)*30) ) );
// the values for top and bottom are got from the formula of an arithmetic series
int color_line, color_fill;
if (sel) color_line = 15, color_fill = 3;
//to select a particular option, sel will be passed as 1
else if (!sel) color_line = 15, color_fill = 7;
//to unselect an option, sel will be passed as 0
setcolor (color_line);
rectangle (200, top, 450, bot);
setfillstyle (1, color_fill) ;
floodfill (201, (bot-1), color_line);
}
/*this function performs a toggle between the current and prev selections*/
void toggle (int current, int prev)
{
// current = current selection and prev = previous selection
char m1[] = "1: See Student Details",
m2[] = "2: List of Students",
m3[] = "3: Add New Student",
m4[] = "4: Edit Student Details",
m5[] = "5: Delete Student Details",
m6[] = "6: LOGOUT",
m7[] = "7: QUIT";
if (current == 0)
current = 7;
if (prev == 0)
prev = 7;
setusercharsize (1,2,1,2);
switch (prev)
{
case 1:
box(1,0);
outtextxy (210, 140, m1);
break; //This part of the function
//unselects the previous selection
case 2: //by printing a new box and text
box(2,0); //over the old 1
outtextxy (210, 170, m2);
break;
case 3:
box(3,0);
outtextxy (210, 200, m3);
break;
case 4:
box(4,0);
outtextxy (210, 230, m4);
break;
case 5:
box(5,0);
outtextxy (210, 260, m5);
break;
case 6:
box(6,0);
outtextxy (210, 290, m6);
break;
case 7:
box(7,0);
outtextxy (210, 320, m7);
break;
}
switch (current)
{
case 1:
box(1,1);
outtextxy (210, 140, m1);
break; //This part of the function
//selects the new selection
case 2: //by printing a new box and text
box(2,1); //over the old 1
outtextxy (210, 170, m2);
break;
case 3:
box(3,1);
outtextxy (210, 200, m3);
break;
case 4:
box(4,1);
outtextxy (210, 230, m4);
break;
case 5:
box(5,5);
outtextxy (210, 260, m5);
break;
case 6:
box(6,6);
outtextxy (210, 290, m6);
break;
case 7:
box(7,7);
outtextxy (210, 320, m7);
break;
}
}
void main()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
clrscr();
cleardevice ();
border ();
settextstyle (1,0,3); //just some of the page background
outtextxy (240, 20, "WELCOME");
gotoxy (45,3) ; cout << "Aziz"; // this is just a temp name in the actual prog, the name will come from the class
setusercharsize (1, 2, 1, 2) ;
outtextxy (180, 50, "You are logged in as REGISTRAR");
settextstyle (1, 0, 3);
outtextxy (270, 90, "Options");
settextstyle (1, 0, 0);
setusercharsize (1, 2, 2, 5);
outtextxy (50, 405, "IN THE ACTUAL PROGRAM THIS BOX IS FOR POSTING COMMENTS FOR EG:");
outtextxy (100, 440, "Press F1 For Help");
outtextxy (350, 440, "Press ESC To Quit");
char m1[] = "1: See Student Details",
m2[] = "2: List of Students",
m3[] = "3: Add New Student",
m4[] = "4: Edit Student Details",
m5[] = "5: Delete Student Details",
m6[] = "6: LOGOUT",
m7[] = "7: QUIT";
box(1,1);
box(2,0); // makes the boxes for all the
box(3,0); //options (the 1st one selected by default)
box(4,0);
box(5,0);
box(6,0);
box(7,0);
setusercharsize (1,2,1,2);
outtextxy (210, 140, m1 );
outtextxy (210, 170, m2 ); // displays the options
outtextxy (210, 200, m3 );
outtextxy (210, 230, m4 );
outtextxy (210, 260, m5 );
outtextxy (210, 290, m6 );
outtextxy (210, 320, m7 );
int choice = 1, temp ; // temp keeps track of the prev selection
char ch;
do
{
ch = getch (); // gets input from user and
temp=choice; // and acts on it using ascii values
ch=getch();
switch (ch)
{
case 72:
case 75: choice=((--choice+7)%7);
toggle(choice,temp);
break;
case 77:
case 80: choice=(++choice%7);
toggle(choice,temp);
break;
case 73: choice=(choice+12)%7;
toggle(choice,temp);
break;
case 81: choice=(choice+2)%7;
toggle(choice,temp);
break;
case 71:
case 49: choice=1;
toggle(choice,temp);
break;
case 50: choice=2;
toggle(choice,temp);
break;
case 51: choice=3;
toggle(choice,temp);
break;
case 52: choice=4;
toggle(choice,temp);
break;
case 53: choice=5;
toggle(choice,temp);
break;
case 54: choice=6;
toggle(choice,temp);
break;
case 79:
case 55: choice=0;
toggle(choice,temp);
break;
case 27: choice=0;
toggle(choice,temp);
case 13:
exit (0);
}
} while (ch != 13);
closegraph ();
}