栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++表格类封装设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++表格类封装设计

门诊预约系统中查询功能需要表格类设计封装

36.CTools.h .cpp

#ifndef CTOOLS_H
#define CTOOLS_H
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_ESC 27
#define KEY_ENTER 13
#define KEY_BACKSPACE 8

class CTools  //CTools::gotoxy();  静态成员函数调用的方法
{
public:
static void paintWindow(int startX,int startY,int width,int height);//打印窗口
static void gotoxy(int x,int y);//形参  光标定位


static void glb_string(int maxLen,int inputType,int ips,char str[]); 


static int getkey();
//显示时间
static char * showTime();
//static void checkerBorad(int x,int y,int lie,int hang);
static void paintRowCol(int row,int col,int startX,int startY,int width,int height);
static void paintRowCol();
};

#endif
#include "CTools.h"
#include    //引用库头文件
#include
#include
#include

void CTools::gotoxy(int x,int y)//形参
{
	HANDLE hOut;
	COORD pos= {x,y};
	// 光标的起始位(第1列,第3行) 0是第1列 2是第3行
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOut, pos);
	//printf("定位光标位置搜索(%d,%d)n",pos.X,pos.Y);
}

void CTools::paintWindow(int startX,int startY,int width,int height)  //打印窗口 可以设置窗口大小  用户登录系统窗口
{	
	int i=0;
	//打印顶部   
	//光标定位 找规律 ┗  ┛ ┏ ┓ ┃ ━
	//顶部 y不变 x 在变 (x-x+w)
	gotoxy(startX,startY);
	printf("┏");
	for(i=0;i0)//换行结束输入
		   {		   
			   break;		   
		   }
		   switch(inputType)
		   {
		   case 0:
			   if(ch>='0'&&ch<='9'&&i='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
			   {
				   if(ips==0)
				   {
					   putch('*');				   
				   }
				   else{				   
					   putch(ch);
				   }
				   str[i++]=ch;		   
			   }
			   break;
		   case 2:
			   if(i='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
			   {
				   if(ips==0)
				   {
					   putch('*');	   
				   }
				   else{	   
					   putch(ch);
				   }
				   str[i++]=ch; 
			   }
			   break;
		   default:
			   break; 
		   }
	   }	   	   
}


int CTools::getkey()
{
	char key=0;
	key=getch();
	if(key==-32)//方向按键 第一个值都是32
	{
		key=getch();
		switch(key){
		case 72:
			return KEY_UP;
		case 80:
			return KEY_DOWN;
		case 75:
			return KEY_LEFT;
		case 77:
			return KEY_RIGHT;	
		}		
	}
	else if(key==13)
	{
		return KEY_ENTER;
	}
	else if(key==27)
	{
		return KEY_ESC;
	}
	else if(key==8)
	{
		return KEY_BACKSPACE;
	}
	return key;
}

char * CTools::showTime()
{
	time_t temp;
	struct tm *p;
	char buf[20]={0};
	time(&temp);
	p=localtime(&temp);
    sprintf(buf,"%4d年%02d月%02d日",p->tm_year+1900,p->tm_mon+1,p->tm_mday);
	return buf;
}

void CTools::paintRowCol(int startX,int startY,int width,int height,int row,int col)
{
	int i;
	int j;
	 CTools::paintWindow(startX,startY,width,height);
	for(i= 1;i 

37.CTable.h .cpp

#ifndef CTABLE_H
#define CTABLE_H
#include"CtrBase.h"
#include
#include
#include"CtrBase.h"
using namespace std;
#include"CTable.h"

class Table:public CtrBase
{
public:
	Table();
	Table(int x,int y,int width,int height,int row,int col,vector header);
	~Table();
	void show();//第一个画表格,第二部分显示表头
	void showData();//专门显示数据
	void showdoctorData();
	void showdepartmentData();
	void showoutpatientData();
	void showoutpatientuserData();
	void showoutpatientdoctorData();

	void clearTable();//专门清空显示数据的那几行()
//	void keyListen(int key);//左右翻页,上下数据选择
	int getsumPage();
	int getcurPage();  //私有的不可直接访问
	void setCurpage(int cunPage){this->curPage  =cunPage;}
private:
	void *data;
	int row;
	int col;
	int x;
	int y;
	vector header;//表头
	int sumPage;
	int curPage;//当前页码
};

#endif
#include"CTable.h"
#include"iostream"
#include"CTools.h"
#include"conio.h"
#include"CData.h"
#include
using namespace std;

Table::Table(int x,int y,int width,int height,int row,int col,vector header)
:CtrBase(x,y,width,height,content,ctrlType)//x,y,w,h,pcontent,type
{
	//当前页默认为1
	this->curPage=1;
	this->row=row;
	this->col=col;
    this->header=header;
	this->sumPage=1;
}


Table::~Table()
{

}

void Table::show()
{
	CTools::paintRowCol(this->startX,this->startY,this->width,this->height,this->row,this->col);
    //显示表头
    for(int i =0;istartX+2+(this->width*2/this->col)*i,this->startY+2); 
		cout<header[i].c_str()<curPage<<"/"<sumPage<<">";
}

//显示数据
void Table::showData()
{
	int j=1;
    map::iterator it;
	int len = CData::userMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::userMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::userMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<second.getphoneNum().c_str()<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getSfzID().c_str()<3)
		{
			break;
		}
	}	
}

//医生数据
void Table::showdoctorData()
{
	int j=1;
    map::iterator it;
	int len = CData::doctorMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::doctorMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::doctorMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<first<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getName().c_str()<startX+2+(this->width*2/this->col)*2,this->startY+2+(this->height/this->row)*j);
		cout<second.getPosition().c_str()<startX+2+(this->width*2/this->col)*3,this->startY+2+(this->height/this->row)*j);
		cout<second.getDepartment().c_str()<startX+2+(this->width*2/this->col)*4,this->startY+2+(this->height/this->row)*j);
		cout<second.getHospital().c_str()<startX+2+(this->width*2/this->col)*5,this->startY+2+(this->height/this->row)*j);
		cout<second.getJianjie().c_str()<3)
		{
			break;
		}
	}	
}

//科室数据
void Table::showdepartmentData()
{
	int j=1;
	map::iterator it;
	int len = CData::departmentMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::departmentMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::departmentMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<first<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getKsName().c_str()<startX+2+(this->width*2/this->col)*2,this->startY+2+(this->height/this->row)*j);
		cout<second.getKsState().c_str()<3)
		{
			break;
		}
	}	
}

//门诊数据
void Table::showoutpatientData()
{
	int j=1;
	map::iterator it;
	int len = CData::outpatientMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::outpatientMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::outpatientMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<second.getPhoneNum().c_str()<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getNowTime().c_str()<startX+2+(this->width*2/this->col)*2,this->startY+2+(this->height/this->row)*j);
		cout<second.getTime1().c_str()<startX+2+(this->width*2/this->col)*3,this->startY+2+(this->height/this->row)*j);
		cout<second.getHospital().c_str()<startX+2+(this->width*2/this->col)*4,this->startY+2+(this->height/this->row)*j);
		cout<second.getDepartment().c_str()<startX+2+(this->width*2/this->col)*5,this->startY+2+(this->height/this->row)*j);
		cout<second.getDoctor().c_str()<startX+2+(this->width*2/this->col)*6,this->startY+2+(this->height/this->row)*j);
		cout<second.getState().c_str()<3)
		{
			break;
		}
	}	
}

//门诊用户数据
void Table::showoutpatientuserData()
{
	int j=1;
	map::iterator it;
	int len = CData::outpatientMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::outpatientMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::outpatientMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<<"1"<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getTime1().c_str()<startX+2+(this->width*2/this->col)*2,this->startY+2+(this->height/this->row)*j);
		cout<second.getHospital().c_str()<startX+2+(this->width*2/this->col)*3,this->startY+2+(this->height/this->row)*j);
		cout<second.getDepartment().c_str()<startX+2+(this->width*2/this->col)*4,this->startY+2+(this->height/this->row)*j);
		cout<second.getDoctor().c_str()<startX+2+(this->width*2/this->col)*5,this->startY+2+(this->height/this->row)*j);
		cout<second.getState().c_str()<3)
		{
			break;
		}
	}	
}

//门诊医生数据
void Table::showoutpatientdoctorData()
{
	int j=1;
	map::iterator it;
	int len = CData::outpatientMap.size();
	if(len%3==0)
	{
		this->sumPage=len/3;
	}
	else if(len%3!=0)
	{
		this->sumPage=len/3+1;
	}
	it = CData::outpatientMap.begin();
	advance(it,(this->curPage-1)*3);
	for(;it!=CData::outpatientMap.end();it++)
	{	
		CTools::gotoxy(this->startX+2+(this->width/this->col)*0,this->startY+2+(this->height/this->row)*j);
		cout<<"1"<startX+2+(this->width*2/this->col)*1,this->startY+2+(this->height/this->row)*j);
		cout<second.getPhoneNum().c_str()<startX+2+(this->width*2/this->col)*2,this->startY+2+(this->height/this->row)*j);
		cout<second.getState().c_str()<3)
		{
			break;
		}
	}	
}

int Table::getsumPage()
{
	return this->sumPage;
}

int Table::getcurPage()
{
	return this->curPage;
}

void Table::clearTable()
{
	int i,j;
	for(i=0;istartX,this->startY+i);
		for(j=0;j 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号