Консультация № 175150
12.12.2009, 02:56
35.00 руб.
0 3 0
Доброго времени суток! Помогите сдклать РГР на Борланд СИ++ , есть 3 программы нужно сделать к ним менюшку с подключением мышки, тоесть что бы при запуске появлялось окно в котором 3 пункта меню с соответствующими лабами, выход и т.д., при наведении курсора на пункт меню появлялось окно с условием задачи (гдето слева, например) при щелчке открывается сама лаба, тоесть необходимо сделать какой то красочный графический интерфейс. Сами лабы в приложенни

Приложение:
********************Лаб1:*****************

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int Ar[100][100];
int main(void) {
short l, r;
short r1,r2;
short dd;
short k,S;
int ch,c; // dop zminna
clrscr();
while(ch!='1'&&ch!='2')
{
clrscr();
printf("1-Show matrix\n");
printf("2-Exit\n");
ch=getchar();
}
if(ch=='2')exit(0);
if(ch=='1')
{
printf("\n");
printf("Vvedit rozmirnist masiva\n");
scanf("%d",&S);
r1=1; r2=S-2; dd=1; k=1;
for (l=0; l<S; l++) {
for (r=0; r<S; r++)
if ((r<r1)||(r>r2)) Ar[l][r]=0;
else Ar[l][r]=k++;
r1+=dd; r2-=dd;
if (r1>r2) dd=-dd;
}
for (l=0; l<S; l++) {
for (r=0; r<S; r++) {
printf("%3d",Ar[l][r]);
}
printf("\n");
}
}
c=getchar();c=getchar();
return 0;
}

*******************Лаб2:*******************

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int ch,n;
int LastPos(char* s, char* s1)

{
char *Prev,*Curr;

for (Prev=NULL,Curr=strstr(s, s1); Curr; Curr=strstr((Prev=++Curr), s1));

if (Prev)
return (Prev-s);
return 0;
}

void main(void)
{
label1: clrscr();
while (ch!='1'&&ch!='2')
{
clrscr();
printf("1- run program\n");
printf("2- exit\n");
ch=getchar();
}
if (ch=='2') exit(0) ;
if (ch=='1')
ch=getchar();
clrscr();
{
clrscr();
printf("Vvedit pidstroku s1:\n");
char s1[50], s[50];
gets(s);
printf("Vvedit stroku s:\n");
gets(s1);
printf("\nPoslednee vhozhdenie stoki '%s' v stroku '%s' na %d-iy pozicii\n",s1,s,LastPos(s,s1));
n=getchar() ;
goto label1;
}
getch();
}

***********************Лаб3:******************

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
#include <string.h>
#define active 5
#define inactive 6
#define text 0
#define work 3
struct tcow{char kname[120];int num1,num13,num3,dead1,dead13,dead3,born1,born13,born3;tcow *next;} *cow1,*ccow;
short n;char ch;
/*---------------------------Paining window---------------------------------*/
void paint(int x1,int y1,int x2,int y2){window(x1,y1,x2,y2);clrscr();}
/*----------------------------Painting main menu----------------------------*/
void paint2(int n,int c){
textcolor(text);textbackground(c);
switch(n){
case 0:paint(1,1,5,2);printf("Print");break;
case 1:paint(7,1,11,2);printf("Input");break;
case 2:paint(13,1,20,2);printf(" Add ");break;
case 3:paint(22,1,33,2);printf(" Destroy ");break;
case 4:paint(35,1,43,2);printf(" Edit ");break;
case 5:paint(45,1,51,2);printf("Sort DB");break;
case 6:paint(53,1,59,2);printf("Save DB");break;
case 7:paint(61,1,67,2);printf("Load DB");break;
case 8:paint(69,1,72,2);printf("Task");break;
case 9:paint(74,1,77,2);printf("Exit");break;}}
/*---------------------------Clearing---------------------------------------*/
void ret(int n){textbackground(0);paint(1,3,80,50);paint2(n,active);}
/*------------------------------Task output---------------------------------*/
void task(){textbackground(inactive);textcolor(text);window(1,6,80,16);clrscr();
printf("\n\n There is structure cow which consists of ");
printf(" Program reads from keyboard or file array of this structures, sorts it, save\n");
printf("changes raplaces or delets som elements and outputs array on the screen or\n");
printf("or to file. Press Tab to navigae, Enter - start.\n");
printf("\n Press any key.");getch();ret(8);}
/*------------------------------------IF end--------------------------------*/

/*--------------------------------Functions---------------------------------*/
/*--------------------------Pint structure----------------------------------*/
print(){ccow=cow1->next;int br=0;textbackground(inactive);paint(1,3,80,30);

if((cow1==NULL)|(cow1->next==NULL)){printf("Error: DB not created. Pres any key");getch();ret(0);return(0);}
printf("| # | Name | Population | Born | Dead |\n");
printf("| | |<1 year|1-3 year|>3 year| <1 | 1-3 | >3 | <1 | 1-3 | >3 |\n");
do{printf("|%2d |%10s|%6d |%6d |%5d |%5d |%5d|%5d|%5d |%5d|%5d|\n",++br,ccow->kname,ccow->num1,ccow->num13,ccow->num3,ccow->dead1,ccow->dead13,ccow->dead3,ccow->born1,ccow->born13,ccow->born3);
ccow=ccow->next;
if(br%20==0){printf("\nPress any key to see next elements");getch();paint(1,5,80,30);}
}while(ccow!=NULL);
printf("\nPress any key for exit to main menu");getch();ret(0);return(0);}
/*-------------------------Add cow to the base-----------------------------*/
void add(){textcolor(0);textbackground(work);paint(1,3,80,25);
printf("Input element of DB:\n");
ccow=cow1;while(ccow->next!=NULL)ccow=ccow->next;
ccow=ccow->next=(tcow *)malloc(sizeof(tcow));ccow->next=NULL;

printf("Write name (length of name <10)\n");
do{fflush(stdin);paint(1,5,80,25);gets(ccow->kname);}while((strlen(ccow->kname)<=0)|(strlen(ccow->kname)>10));

printf("Write population of <1 year(0<x<1000)\n");
do{fflush(stdin);paint(1,7,80,25);}while(!(scanf("%d",&ccow->num1))|(ccow->num1<0)|(ccow->num1>999));

printf("Write population of 1-3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,9,80,25);}while(!(scanf("%d",&ccow->num13))|(ccow->num13<0)|(ccow->num13>999));

printf("Write population of >3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,11,80,25);}while(!(scanf("%d",&ccow->num3))|(ccow->num3<0)|(ccow->num3>999));

printf("Write death number in <1 year(0<x<1000)\n");
do{fflush(stdin);paint(1,13,80,25);}while(!(scanf("%d",&ccow->dead1))|(ccow->dead1<0)|(ccow->dead1>999));

printf("Write death number in 1-3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,15,80,25);}while(!(scanf("%d",&ccow->dead13))|(ccow->dead13<0)|(ccow->dead13>999));

printf("Write death number in >3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,17,80,25);}while(!(scanf("%d",&ccow->dead3))|(ccow->dead3<0)|(ccow->dead3>999));

printf("Write born number in <1 year(0<x<1000)\n");
do{fflush(stdin);paint(1,19,80,25);}while(!(scanf("%d",&ccow->born1))|(ccow->born1<0)|(ccow->born1>999));

printf("Write born number in 1-3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,21,80,25);}while(!(scanf("%d",&ccow->born13))|(ccow->born13<0)|(ccow->born13>999));

printf("Write born number in >3 year(0<x<1000)\n");
do{fflush(stdin);paint(1,23,80,25);}while(!(scanf("%d",&ccow->born3))|(ccow->born3<0)|(ccow->born3>999));
}
/*---------------------------Destroying base--------------------------------*/
void dbdrop(){do{ccow=cow1->next;free(cow1);cow1=ccow;}while(ccow!=NULL);cow1=NULL;}
/*----------------------------Get DB----------------------------------------*/
gethome(){textbackground(work);textcolor(0);paint(1,3,80,10);
if((cow1!=NULL)&(cow1->next!=NULL)){
printf("Warning:DB already exist. Press Enter to destroy it. Other key - cancel.");
if(getch()!=13){ret(1);return(0);}else dbdrop();}
cow1=(tcow *)malloc(sizeof(tcow));cow1->next=NULL;
do{add();printf("Press Enter to input next element or other key to stop");
}while(getch()==13);
ret(1);return(0);}
/*-----------------------------Get cow-------------------------------------*/
getcow(){textbackground(work);textcolor(0);
if((cow1==NULL)|(cow1->next==NULL)){paint(1,3,80,4);
printf("Warning:DB not created. Press Enter to create.\nOther key - exit to main menu.");
if(getch()!=13){ret(2);return(0);}
else{cow1=(tcow *)malloc(sizeof(tcow));cow1->next=NULL;}}
add();printf("cow added successfully.press any key.");getch();ret(2);return(0);}
/*-----------------------------Search element-------------------------------*/
tcow *search(int i){tcow *tmpcow=cow1->next;
while((i>2)&(tmpcow->next!=NULL)){i--;tmpcow=tmpcow->next;}
if(tmpcow->next==NULL)return(NULL);else return(tmpcow);}
/*-------------------------Destroy cow-------------------------------------*/
fdestroy(){textbackground(inactive);paint(1,3,80,10);tcow *tmp;int delindex;
if((cow1==NULL)|(cow1->next==NULL)){printf("Error:DB not created. Press any key.");getch();ret(3);return(0);}
printf("Write index of element you want to destroy (index>0)\n");
do{paint(1,4,80,10);}while(!scanf("%d",&delindex)| delindex<1);
if(delindex==1)tmp=ccow=cow1->next;else{tmp=search(delindex);ccow=tmp->next;}
if(tmp==NULL){printf("Error: Element with this index does not exist. Press any key");getch();ret(3);return(0);}
printf("|%10s|%6d|%6d|%5d|%3d|%4d|%3d|%3d|%4d|%3d\n",ccow->kname,ccow->num1,ccow->num13,ccow->num3,ccow->dead1,ccow->dead13,ccow->dead3,ccow->born1,ccow->born13,ccow->born3);
printf("\nThis is element #%d do you really want to destroy it? (Enter for yes)",delindex);
if(getch()==13){(delindex==1?cow1=cow1->next:tmp->next=ccow->next);free(ccow);
printf("\nElement destroyed. Press any key.");getch();}ret(3);return(0);}
/*-----------------------------Editing cow---------------------------------*/
fedit(){textbackground(inactive);textcolor(0);paint(1,3,80,10);
if((cow1==NULL)|(cow1->next==NULL)){printf("Error:DB not created. Press any key.");getch();ret(4);return(0);}
printf("Write index of cow you want to edit (index>0)\n");
int editindex;do{paint(1,4,80,10);}while(!scanf("%d",&editindex)| editindex<1);
if(editindex==1){ccow=cow1->next;}
else{ccow=search(editindex);
if(ccow==NULL){printf("Error: Element with this index does not exist. Press any key");getch();ret(4);return(0);}
ccow=ccow->next;}
printf("|%10s|%6d|%6d|%5d|%3d|%4d|%3d|%3d|%4d|%3d\n",ccow->kname,ccow->num1,ccow->num13,ccow->num3,ccow->dead1,ccow->dead13,ccow->dead3,ccow->born1,ccow->born13,ccow->born3);
printf("\nThis is element #%d do you really want to overwrite it? (Enter for yes)",editindex);
if(getch()==13){textbackground(work);textcolor(0);paint(1,3,80,21);
printf("Input element of DB:\n");
printf("Write name (length of name <10)\n");
do{paint(1,5,80,25);gets(ccow->kname);}while((strlen(ccow->kname)<=0)|(strlen(ccow->kname)>10));

printf("Write population of <1 year(0<x<1000)\n");
do{paint(1,7,80,25);}while(!(scanf("%d",&ccow->num1))|(ccow->num1<0)|(ccow->num1>999));

printf("Write population of 1-3 year(0<x<1000)\n");
do{paint(1,9,80,25);}while(!(scanf("%d",&ccow->num13))|(ccow->num13<0)|(ccow->num13>999));

printf("Write population of >3 year(0<x<1000)\n");
do{paint(1,11,80,25);}while(!(scanf("%d",&ccow->num3))|(ccow->num3<0)|(ccow->num3>999));

printf("Write death number in <1 year(0<x<1000)\n");
do{paint(1,13,80,25);}while(!(scanf("%d",&ccow->dead1))|(ccow->dead1<0)|(ccow->dead1>999));

printf("Write death number in 1-3 year(0<x<1000)\n");
do{paint(1,15,80,25);}while(!(scanf("%d",&ccow->dead13))|(ccow->dead13<0)|(ccow->dead13>999));

printf("Write death number in >3 year(0<x<1000)\n");
do{paint(1,17,80,25);}while(!(scanf("%d",&ccow->dead3))|(ccow->dead3<0)|(ccow->dead3>999));

printf("Write born number in <1 year(0<x<1000)\n");
do{paint(1,19,80,25);}while(!(scanf("%d",&ccow->born1))|(ccow->born1<0)|(ccow->born1>999));

printf("Write born number in 1-3 year(0<x<1000)\n");
do{paint(1,21,80,25);}while(!(scanf("%d",&ccow->born13))|(ccow->born13<0)|(ccow->born13>999));

printf("Write born number in >3 year(0<x<1000)\n");
do{paint(1,23,80,25);}while(!(scanf("%d",&ccow->born3))|(ccow->born3<0)|(ccow->born3>999));

printf("\nElement overwrited. Press any key.");getch();}ret(4);return(0);}
/*---------------------------Saving DB--------------------------------------*/
savehome(){textbackground(inactive);textcolor(text);paint(1,3,80,10);
if((cow1==NULL)|(cow1->next==NULL)){printf("Error:DB not created. Press any key.");getch();ret(6);return(0);}
printf("Write filename for output:");char fname[120];
do{paint(1,5,80,6);gets(fname);}while((strlen(fname)<=0)|(strlen(fname)>8));
strcpy(fname,strcat(fname,".dat"));
printf("Are you sure to create file? Warning: If %s exist - will be overwrited.\nEnter - ok, other key - exit.",fname);
if(getch()!=13){ret(6);return(0);};
FILE *f=fopen(fname,"w");ccow=cow1->next;

do{fwrite(ccow,sizeof(tcow),1,f);
ccow=ccow->next;}while(ccow!=NULL);fclose(f);

printf("\nDB saved successfully. Press any key");getch();ret(6);return(0);}
/*---------------------------Loading DB-------------------------------------*/
loadhome(){textbackground(inactive);textcolor(text);paint(1,3,80,8);
if((cow1!=NULL)&(cow1->next!=NULL)){printf("Warning:DB already exist. Press Enter to destroy it. Other key - cancel.\n");
if(getch()!=13){ret(7);return(0);}dbdrop();}
printf("Write filename for input:\n");char fname[120];
do{paint(1,5,80,7);gets(fname);}while((strlen(fname)<=0)|(strlen(fname)>8));
strcpy(fname,strcat(fname,".dat"));
printf("Are you sure to load DB from file %s? Enter - ok, other key - exit.",fname);
if(getch()!=13){ret(7);return(0);};
FILE *f=fopen(fname,"r");
if(f==NULL){printf("\nError:File does not exist");getch();ret(7);return(0);}
ccow=cow1=(tcow *)malloc(sizeof(tcow));
tcow *tmp;
do{tmp=ccow;
ccow=ccow->next=(tcow *)malloc(sizeof(tcow));
fread(ccow,sizeof(tcow),1,f);
}while(!feof(f));
tmp->next=NULL;free(ccow);fclose(f);

printf("\nDB loaded successfully. Press any key");getch();ret(7);return(0);}
/*-------------------------Elements swap------------------------------------*/
void swap(tcow *cw1,tcow *cw2){
tcow *tmp=(tcow *)malloc(sizeof(tcow));
strcpy(tmp->kname,cw1->kname);tmp->num1=cw1->num1;tmp->num13=cw1->num13;tmp->num3=cw1->num3;tmp->dead1=cw1->dead1;tmp->dead13=cw1->dead13;tmp->dead3=cw1->dead3;tmp->born1=cw1->born1;tmp->born13=cw1->born13;tmp->born3=cw1->born3;
strcpy(cw1->kname,cw2->kname);cw1->num1=cw2->num1;cw1->num13=cw2->num13;cw1->num3=cw2->num3;cw1->dead1=cw2->dead1;cw1->dead13=cw2->dead13;cw1->dead3=cw2->dead3;cw1->born1=cw2->born1;cw1->born13=cw2->born13;cw1->born3=cw2->born3;
strcpy(cw2->kname,tmp->kname);cw2->num1=tmp->num1;cw2->num13=tmp->num13;cw2->num3=tmp->num3;cw2->dead1=tmp->dead1;cw2->dead13=tmp->dead13;cw2->dead3=tmp->dead3;cw2->born1=tmp->born1; cw2->born13=tmp->born13;cw2->born3=tmp->born3;
free(tmp);}
/*------------------------Sorting structures--------------------------------*/
sorthome(){
textbackground(inactive);textcolor(text);paint(1,3,80,15);
if((cow1==NULL)|(cow1->next==NULL)){printf("Error:DB not created. Press any key.");getch();ret(5);return(0);}
int eflag,sflag1,cflag;
printf("Write property for sorting:\n0 - Name\Number:\n1 - <1\n2 - 1-3\n3 - >3\nDead:\n4 - <1\n5 - 1-3\n6 - >3\nBorn:\n7 - <1\n8 - 1-3\n9 - >3");
do{fflush(stdin);sflag1=getch()-'0';}while((sflag1<0)|(sflag1>9));

do{eflag=0;ccow=cow1->next;
do{cflag=0;
switch(sflag1){
case 0:if(ccow->kname>ccow->next->kname)cflag=1;break;
case 1:if(ccow->num1>ccow->next->num1)cflag=1;break;
case 2:if(ccow->num13>ccow->next->num13)cflag=1;break;
case 3:if(ccow->num3>ccow->next->num3)cflag=1;break;
case 4:if(ccow->dead1>ccow->next->dead1)cflag=1;break;
case 5:if(ccow->dead13>ccow->next->dead13)cflag=1;break;
case 6:if(ccow->dead3>ccow->next->dead3)cflag=1;break;
case 7:if(ccow->born1>ccow->next->born1)cflag=1;break;
case 8:if(ccow->born13>ccow->next->born13)cflag=1;break;
case 9:if(ccow->born3>ccow->next->born3)cflag=1;break;
}

if(cflag){swap(ccow,ccow->next);eflag=1;}
ccow=ccow->next;
}while(ccow->next!=NULL);
}while(eflag);
printf("\nDB sorted successfully. Press any key");getch();ret(5);return(0);}
/*---------------------------------Main-------------------------------------*/
void main(){textmode(64);textbackground(0);textcolor(text);clrscr();
paint(1,1,80,50);int n=0;cow1=ccow=NULL;
paint2(1,inactive);paint2(2,inactive);paint2(3,inactive);paint2(4,inactive);
paint2(5,inactive);paint2(6,inactive);paint2(7,inactive);paint2(8,inactive);paint2(9,inactive);paint2(0,active);

do{ch=getch();
if(ch==9){paint2(n,inactive);n=(n+1)%10;paint2(n,active);}
else
if(ch==13){
switch(n){
case 0:print();break;
case 1:gethome();break;
case 2:getcow();break;
case 3:fdestroy();break;
case 4:fedit();break;
case 5:sorthome();break;
case 6:savehome();break;
case 7:loadhome();break;
case 8:task();break;
case 9:n=10;break;
} } }
while(n!=10);
}

Обсуждение

давно
Старший Модератор
17042
808
14.12.2009, 08:00
общий
Faraon:
Вам непременно нужно псевдографическое меню в Borland C++? Или достаточно графического интерфейса пользователя, сделанного в RAD (например, в Borland C++ Builder)?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
14.12.2009, 09:07
общий
К сожелению нужно псевдографическое меню в Борланд С++ или же в ТурбоСи++
Неизвестный
15.12.2009, 17:53
общий
Мне кто-то сможет помочь?
Форма ответа