📄 mainframe.cpp
字号:
else
if(mouseclickl(hOut,hIn,e[3],mouseRec))
{
//添加粘贴函数
break;
}
else
if(mouseclickl(hOut,hIn,e[4],mouseRec))
{
//添加删除函数
break;
}
else
break;
}
}
mousemove(hOut,hIn,d[0],mouseRec); //新建菜单
if(mouseclickl(hOut,hIn,d[0],mouseRec))
{
setmenu1(d,4,hOut);
for(;;)
{
a.p=false;
b.p=false;
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,d[1],mouseRec);
mousemove(hOut,hIn,d[2],mouseRec);
mousemove(hOut,hIn,d[3],mouseRec);
if(mouseclickl(hOut,hIn,d[0],mouseRec));
if (mouseRec.EventType == MOUSE_EVENT)
if (mouseRec.Event.MouseEvent.dwEventFlags ==MOUSE_MOVED);
else
if(mouseclickl(hOut,hIn,d[1],mouseRec))
{ //在此添加新建文件函数
bitree t;
t=create(hOut,hIn);
if(t!=NULL)
windows2(hOut,hIn,t);
else
{
COORD posz={22,12},posx={90,30};
clearscreen(hOut,posz,posx);
}
break;
}
else
if(mouseclickl(hOut,hIn,d[2] ,mouseRec))
{
//添加打开文件函数
bitree t;
t=openfile(hOut);
if(t)
windows2(hOut,hIn,t);
clearscreen(hOut,posq1,posq2);
break;
}
else
if(mouseclickl(hOut,hIn,d[3],mouseRec))
{ //退出
if(frame1(hOut,hIn))
return;
else
break;
}
else
{
break;
}
}
}
if(mouseclickl(hOut,hIn,a,mouseRec)) //全屏切换
{
setmenu0(d,4,hOut);
tal=fullScreen(tal,a,hOut,hIn);
}
mousemove (hOut,hIn,a,mouseRec);
mousemove(hOut,hIn,c[0],mouseRec);
mousemove (hOut,hIn,b,mouseRec);
if(mouseclickl(hOut,hIn,b,mouseRec)) //退出按钮
{
setmenu0(d,4,hOut);
if(frame1(hOut,hIn))
return;
}
}
return;
}
void windows2(HANDLE hOut,HANDLE hIn,bitree &t) //新建/打开窗口
{
button *pp;
int x=0;
BOOL pal; //判断树形按钮是否有效
BOOL save=true; //判断文件是否被修改,保存
BOOL tal=true;
INPUT_RECORD mouseRec;
DWORD state = 0, res;
/* hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
hIn = GetStdHandle(STD_INPUT_HANDLE); // 获取标准输入设备句柄*/
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
GetConsoleScreenBufferInfo(hOut, &bInfo );// 获取窗口缓冲区信息
SetConsoleTextAttribute(hOut,14);
COORD size = {200, 200},posText={0,0};
COORD posa={53,5},pos1={10,15},posb={66,5},posc0={34,2};
COORD posc1={33,1},posc2={33,3},posc3={32,2},posc4={48,2};
/*SetConsoleScreenBufferSize(hOut,size); // 重新设置缓冲区大小
SMALL_RECT rc = {20,20, 200-1,200-1}; // 重置窗口位置和大小*/
// SetConsoleWindowInfo(hOut,true ,&rc);
COORD p={1,12},poss={0,10},poss1={0,0},poss2={20,11};
/* FillConsoleOutputAttribute(hOut, 14, bInfo.dwSize.X*bInfo.dwSize.Y-1, posText, NULL);
SetConsoleTextAttribute(hOut,14); //设置窗口属性*/
FillConsoleOutputCharacter(hOut, ' ', bInfo.dwSize.X*bInfo.dwSize.Y-1, posText, NULL);//清屏
SetConsoleCursorPosition(hOut,p); //设置光标的位置
FillConsoleOutputAttribute(hOut, 187, 199, poss, NULL);
FillConsoleOutputAttribute(hOut, 187, 199, poss1, NULL);
for(;poss1.Y<199;poss1.Y++)
{
if(poss2.Y<=poss1.Y)
{
FillConsoleOutputAttribute(hOut, 187, 1, poss2, NULL);
poss2.Y++;
}
FillConsoleOutputAttribute(hOut, 187, 1, poss1, NULL);
}
button a,b,c[5],d[5]; //全屏按钮,退出按钮
COORD posd0={5,5},posd1={5,6},posd2={5,7},posd3={5,8},posd4={5,9};
a.createbutton(posa,"【全屏切换】",14,236,hOut);
// a.hidebutton(hOut,false);
b.createbutton(posb,"【 退 出 】",14,236,hOut);
c[0].createbutton(posc0," 家谱管理系统 ",14,180,hOut);
c[1].createbutton(posc1,"︽︽︽︽︽︽︽︽",14,110,hOut);
c[2].createbutton(posc2,"︾︾︾︾︾︾︾︾",14,110,hOut);
c[3].createbutton(posc3,"§",14,110,hOut);
c[4].createbutton(posc4,"§",14,110,hOut);
d[0].createbutton(posd0,"【 操 作 】",14,236,hOut); //第一个菜单 新建菜单
d[1].createbutton(posd1,"【 添 加 】",14,236,hOut);
d[2].createbutton(posd2,"【 删 除 】",14,236,hOut);
d[3].createbutton(posd3,"【 修 改 】",14,236,hOut);
d[4].createbutton(posd4,"【 保 存 】",14,236,hOut);
//菜单可见性
button e[4]; //编辑菜单
COORD pose0={17,5},pose1={17,6},pose2={17,7},pose3={17,8};
e[0].createbutton(pose0,"【 查 看 】",14,236,hOut);
e[1].createbutton(pose1,"【 打 印 】",14,236,hOut);
e[2].createbutton(pose2,"【 查 询 】",14,236,hOut);
e[3].createbutton(pose3,"【 统 计 】",14,236,hOut);
COORD posg={29,5};
button g; //返回按钮
g.createbutton(posg,"【 返 回 】",14,236,hOut);
button f[3]; //帮助菜单
COORD posf0={41,5},posf1={41,6},posf2={41,7};
f[0].createbutton(posf0,"【 帮 助 】",14,236,hOut);
f[1].createbutton(posf1,"【 关 于 】",14,236,hOut);
f[2].createbutton(posf2,"【 帮 助 】",14,236,hOut);
button h[8]; // ╋ ╳ ↖
COORD posh0={33,9},posh1={40,9},posh2={47,9};
COORD posh3={6,13};
h[0].createbutton(posh0," ╋ ",14,236,hOut);
h[1].createbutton(posh1," ╳ ",14,236,hOut);
h[2].createbutton(posh2," ↖ ",14,236,hOut);
h[3].createbutton(posh3,"【修 改】",14,236,hOut);
posh3.Y+=2;
h[4].createbutton(posh3,"【查 询】",14,236,hOut);
posh3.Y+=2;
h[5].createbutton(posh3,"【统 计】",14,236,hOut);
posh3.Y+=2;
h[6].createbutton(posh3,"【打 印】",14,236,hOut);
posh3.Y+=2;
h[7].createbutton(posh3,"【保 存】",14,236,hOut);
COORD posq1={21,12},posq2={180,180},posw={1,1};//用于清屏
pal=false;
for(;;)
{
setmenu0(d,5,hOut); //文件菜单
setmenu0(e,4,hOut); //编辑菜单
setmenu0(f,3,hOut); //帮助菜单
a.p=true;b.p=true; //p为true时鼠标事件有效
ReadConsoleInput(hIn, &mouseRec, 1,&res);
for(int i=0;i<8;i++)
mousemove(hOut,hIn,h[i],mouseRec);
mousemove(hOut,hIn,f[0],mouseRec); //帮助菜单
if(mouseclickl(hOut,hIn,f[0],mouseRec))
{
setmenu1(f,3,hOut);
for(;;)
{
a.p=false;
b.p=false;
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,f[1],mouseRec);
mousemove(hOut,hIn,f[2],mouseRec);
if(mouseclickl(hOut,hIn,f[0],mouseRec));
if (mouseRec.EventType == MOUSE_EVENT)
if (mouseRec.Event.MouseEvent.dwEventFlags ==MOUSE_MOVED);
else
if(mouseclickl(hOut,hIn,f[1],mouseRec))
{
//添加"关于"函数
clearscreen(hOut,posq1,posq2);
about(hOut);
button _a;
COORD poo={48,26};
_a.createbutton(poo,"【确定】",14,236,hOut);
for(;;)
{
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,_a,mouseRec);
if(mouseclickl(hOut,hIn,_a,mouseRec))
break;
}
clearscreen(hOut,posq1,posq2);
break;
pal=false;
break;
}
else
if(mouseclickl(hOut,hIn,f[2],mouseRec))
{
//添加帮助函数
pal=false;
break;
}
else
{
pal=false;
break;
}
}
}
mousemove(hOut,hIn,e[0],mouseRec); //查看菜单
if(mouseclickl(hOut,hIn,e[0],mouseRec))
{
setmenu1(e,4,hOut);
for(;;)
{
a.p=false;
b.p=false;
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,e[1],mouseRec);
mousemove(hOut,hIn,e[2],mouseRec);
mousemove(hOut,hIn,e[3],mouseRec);
// mousemove(hOut,hIn,e[4],mouseRec);
if(mouseclickl(hOut,hIn,e[0],mouseRec));
if (mouseRec.EventType == MOUSE_EVENT)
if (mouseRec.Event.MouseEvent.dwEventFlags ==MOUSE_MOVED);
else
if(mouseclickl(hOut,hIn,e[1],mouseRec))
{
x=countnode(t);
pp=print1(t,pp,x,hOut);
pal=true; //树形按钮有效
//在此添加打印函数
break;
}
else
if(mouseclickl(hOut,hIn,e[2],mouseRec))
{
//查询
if(t)
{
button k[2];
COORD posk0={3,23};
k[0].createbutton(posk0,"按基本信息查询",14,236,hOut);
posk0.Y+=2;
k[1].createbutton(posk0,"按亲属关系查询",14,236,hOut);
for(;;)
{
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove1(hOut,hIn,k[0],mouseRec);
mousemove1(hOut,hIn,k[1],mouseRec);
if(mouseclickl(hOut,hIn,k[0],mouseRec))
{
//添加基本信息查询函数
bitree a;//=new bitnode;
COORD pot={22,13};
clearscreen(hOut,posq1,posq2);
SetConsoleCursorPosition(hOut,pot);
cout<<"不清楚的项可不填或填上###";
a=searchperson(hOut,t);
clearscreen(hOut,posq1,posq2);
COORD po2={40,13};
SetConsoleCursorPosition(hOut,po2);
cout<<"查询结果";
if(a)
{
if(!strcmp(a->a.parentname,"######"))
{
k[0].hidebutton(hOut,false);
k[1].hidebutton(hOut,false);
clearscreen(hOut,posq1,posq2);
break;
}
bitree c=a;
int xx=0;
button *aa;
COORD poi={22,14};
while(c)
{
c=c->lchild;
xx++;
}
aa=new button[xx];
int y=0;
while(a)
{
aa[y].createbutton(poi,a->a.name,14,236,hOut);
poi.X+=12;
y++;
if(!(y%5))
{
poi.X-=60;
poi.Y++;
}
a=a->lchild;
}
for(;;)
{
ReadConsoleInput(hIn, &mouseRec, 1,&res);
for(int i=0;i<xx;i++)
{
mousemove1(hOut,hIn,aa[i],mouseRec);
}
mousemove(hOut,hIn,h[2],mouseRec);
mousemove(hOut,hIn,g,mouseRec);
if(mouseclickl(hOut,hIn,g,mouseRec)||mouseclickl(hOut,hIn,h[2],mouseRec))
{
clearscreen(hOut,posq1,posq2);
break;
}
for(int j=0;j<xx;j++)
{
if(mouseclickl(hOut,hIn,aa[j],mouseRec))
{
posq1.Y+=6;
clearscreen(hOut,posq1,posq2);
coutnode(search(t,aa[j].buttonname),hOut);
posq1.Y-=6;
}
}
}
}
else
{
frame2(hOut,hIn," 查无此人!!");
clearscreen(hOut,posq1,posq2);
}
k[0].hidebutton(hOut,false);
k[1].hidebutton(hOut,false);
break;
}
if(mouseclickl(hOut,hIn,k[1],mouseRec))
{
//添加亲属关系查询函数
search1(t);
k[0].hidebutton(hOut,false);
k[1].hidebutton(hOut,false);
clearscreen(hOut,posq1,posq2);
break;
}
}
}
else
frame2(hOut,hIn,"家谱为空!!");
break;
}
else
if(mouseclickl(hOut,hIn,e[3],mouseRec))
{
//添加统计函数
clearscreen(hOut,posq1,posq2);
if(t)
{
double age=0;
float stature=0;
int xx=0,yy=0,mannum=0;
int aa =8,bb=1;
int nn;
nn=countnode(t);
stat(t,age,stature,mannum,xx,yy,aa,bb);
COORD pol={23,14};
SetConsoleCursorPosition(hOut,pol);
cout<<"平均寿命:"<<age/yy;
pol.Y+=2;
SetConsoleCursorPosition(hOut,pol);
cout<<"平均身高:"<<stature/xx<<" cm";
pol.Y+=2;
SetConsoleCursorPosition(hOut,pol);
cout<<"男女比例:男"<<mannum<<" 女"<<nn-mannum;
pol.Y+=2;
SetConsoleCursorPosition(hOut,pol);
coutxueli(aa);
pol.Y+=2;
SetConsoleCursorPosition(hOut,pol);
coutxueli1(bb);
pol.Y+=2;
SetConsoleCursorPosition(hOut,pol);
cout<<"家族中人口:"<<nn;
pol.Y+=2;
pol.X+=15;
button ii;
ii.createbutton(pol,"【确定】",14,236,hOut);
for(;;)
{
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,ii,mouseRec);
if(mouseclickl(hOut,hIn,ii,mouseRec))
{
ii.hidebutton(hOut,false);
clearscreen(hOut,posq1,posq2);
break;
}
}
}
else
frame2(hOut,hIn,"家谱为空!!");
pal=false;
break;
}
else
break;
}
}
if(pal)
{
for(int k=0;k<x;k++)
{
if(!pp[k].p)
pp[k].hidebutton(hOut,true);
mousemove1(hOut,hIn,pp[k],mouseRec);
}
for(int j=0;j<x;j++)
{
if(mouseclickl(hOut,hIn,pp[j],mouseRec))
{
for(int l=0;l<x;l++)
pp[l].hidebutton(hOut,false);
pal=false;
clearscreen(hOut,posq1,posq2);
COORD w1={36,16};
SetConsoleCursorPosition(hOut,w1);
cout<<pp[j].buttonname<<"的信息";
coutnode(search(t,pp[j].buttonname),hOut);
break;
}
}
}
mousemove(hOut,hIn,d[0],mouseRec); //操作菜单
if(mouseclickl(hOut,hIn,d[0],mouseRec))
{
setmenu1(d,5,hOut);
for(;;)
{
a.p=false;
b.p=false;
ReadConsoleInput(hIn, &mouseRec, 1,&res);
mousemove(hOut,hIn,d[1],mouseRec);
mousemove(hOut,hIn,d[2],mouseRec);
mousemove(hOut,hIn,d[3],mouseRec);
mousemove(hOut,hIn,d[4],mouseRec);
if(mouseclickl(hOut,hIn,d[0],mouseRec));
if (mouseRec.EventType == MOUSE_EVENT)
if (mouseRec.Event.MouseEvent.dwEventFlags ==MOUSE_MOVED);
else
if(mouseclickl(hOut,hIn,d[1],mouseRec))
{ //添加添加函数
// bitree tt;
// tt=t;
clearscreen(hOut,posq1,posq2);
t=insert(t);
pal=false;
save=false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -