⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.cpp

📁 这是一个族谱的管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
								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 + -