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

📄 roll_frame.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
📖 第 1 页 / 共 2 页
字号:
	time_t s;
	struct tm *t;
	time(&s);
	t=gmtime(&s);
	get_business_number(number);
	mvprintw(1,45,"%s",number);
	mvprintw(1,58,"时间:%d%02d%02d%02d%02d%02d",1900+t->tm_year,t->tm_mon,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
	sprintf(date,"%d%02d%02d%02d%02d%02d",1900+t->tm_year,t->tm_mon,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
}
/*0:ESC键;1:向上键;2:向下键; 10:Enter键;*/
void PrintStuInfo(ROLL *r,EMP *e)/*多个函数可以封装*/
{
	int i=0,j=0;
	int cur_x=0,cur_y=0;
	int returnValues=-2;
	int node_index=0;
	int maxSize=(r->link)->len(r->link);
	int if_hang_up=0,get_list_re=0,remove=0,log_out=0;
	int sign=1;
	char number[5]={"\0"};
	char date[15]={"\0"};
	NODE *temp=NULL;
	GMSG *msg=NULL;
	SELL_LIST *list=NULL;
	LINK *sell_list_link=new_link();
	FRAME *hang_up_frame=NULL;
	getbegyx(r->f->win,cur_x,cur_y);
	do 
	{
		returnValues=GetInputString(r);
		maxSize=(r->link)->len(r->link);
		switch (returnValues)
		{
		case 266:/*F2键*/
			msg=add_list(r);
			if(msg == NULL)
			{
				continue;
			}
			else
			{
				if(/*sell_list_link->count == 0&&*/r->link->count == 0)
				{
					create_business_number_and_date(date,number);
				}
				insert_to_roll(r,msg);
				free(msg);
				msg=NULL;
			}
			break;
		case 267:/*F3键*/
			msg=del_list(r);
			if (msg == NULL)
			{
				continue;
			}
			else
			{
				del_from_roll(r,msg);
				free(msg);
				msg=NULL;
			}
			break;
		case 268:/*F4键*/
			list=settle_accounts(r,date,number,e);
			if(list == NULL)
			{	
				continue;
			}
			else
			{
				del_link(r,list);
			}
			break;
		case 269:/*F5键*/
			if_hang_up=hang_up(r);
			if(if_hang_up)
			{
				hang_up_frame=hang_and_change_link(r,sell_list_link,date,number);
				sign=1;
			}
			else
			{
				continue;
			}
			break;
		case 270:/*F6键*/
			get_list_re=get_list(r,sell_list_link);
			if(get_list_re)
			{
				get_list_and_change_link(r,sell_list_link,hang_up_frame,get_list_re,date,number);
			}
			else
			{
				continue;
			}
			break;
		case 271:/*F7*/
			remove=remove_list(r);
			if(remove)
			{
				clear_roll(r);
				r->link->del_all_data(r->link);
			}
			else
			{
				continue;
			}
			break;
		case 272:/*F8*/
			tuihuo_user(r,sell_list_link);
			break;
		case 273:/*F9键*/
			log_out=logout(r,sell_list_link);
			if(log_out)
			{
				sign=0;
			}
			else
			{
				continue;
			}
			break;
		case 1:/*向上键*/
			if(r->current_suffix==0)
			{
				continue;
			}
			if (r->current_place>1)
			{
				mvwin(r->f->win,cur_x+r->current_place-1,cur_y);////////
				print_node_frame(r,r->current_suffix,2);
				r->current_place--;
				r->current_suffix--;
				mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
				print_node_frame(r,r->current_suffix,1);
			} 
			else
			{
				if (r->current_suffix>1)
				{
					r->current_suffix--;
					for (i=0;i<r->height_and_length[0]-2;i++)
					{
						mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
						print_node_frame(r,r->current_suffix+i+1,2);
					}
					mvwin(r->f->win,cur_x,cur_y);
					print_node_frame(r,r->current_suffix,1);
				} 
				else
				{
					continue;
				}
			}
			break;
		case 2:/*向下键*/
			if(r->current_suffix==0)
			{
				continue;
			}
			if(r->current_suffix<maxSize)
			{
				if (r->current_place<r->height_and_length[0]-1)
				{
					mvwin(r->f->win,cur_x+r->current_place-1,cur_y);////////
					print_node_frame(r,r->current_suffix,2);
					r->current_place++;
					r->current_suffix++;
					mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
					print_node_frame(r,r->current_suffix,1);
				} 
				else
				{
					r->current_suffix++;
					for (i=0;i<r->height_and_length[0]-2;i++)
					{
						mvwin(r->f->win,cur_x+i,cur_y);
						print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
					}
					mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
					print_node_frame(r,r->current_suffix,1);
				}
			}
			else
			{
				continue;
			}
			break;
		case 10:
			if(isdigital(r->i->str)&&strlen(r->i->str)!=0)
			{
				if(/*sell_list_link->count == 0&&*/r->link->count == 0)
				{
					create_business_number_and_date(date,number);
				}
				temp=subm_bar(r->link,r->i->str,1);
				maxSize=r->link->len(r->link);
				if((int)temp == -1)
				{
					messagebox(stdscr,7,19,44,12,PAUSE,"仓库中没这东西");
					r->i->del_str(r->i);
					continue;
				}
				if(temp == NULL)
				{
					if(maxSize > 1)
					{
						if(maxSize<r->height_and_length[0])
						{
							print_node_frame(r,r->current_suffix,2);
							r->current_suffix=maxSize;
							r->current_place=maxSize;
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
						else
						{
							r->current_suffix=maxSize;
							r->current_place=r->height_and_length[0] - 1;
							for (i=0;i<r->height_and_length[0]-1;i++)
							{
								mvwin(r->f->win,cur_x+i,cur_y);
								print_node_frame(r,r->current_suffix - r->height_and_length[0] + 2 + i,2);
							}
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
					}
					else
					{
						if(maxSize == 1)
						{
							r->current_suffix=1;
							r->current_place=1;
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
						else
						{
							r->i->del_str(r->i);
						}
					}	

				}
				else
				{
					node_index=(r->link)->get_index_by_key(r->link,((UNS *)(temp->data))->bar_code,(int (*)(void *,void*))fp1);
					if(abs(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index )<r->height_and_length[0]-1)
					{
						if(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index>=0)
						{
							print_node_frame(r,r->current_suffix,2);
							r->current_place+=(node_index-r->current_suffix);
							r->current_suffix=node_index;
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
						else
						{
							r->current_suffix=node_index;
							r->current_place=r->height_and_length[0]-1;
							for (i=0;i<r->height_and_length[0]-2;i++)
							{
								mvwin(r->f->win,cur_x+i,cur_y);
								print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
							}
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
					}
					else
					{
						if(node_index - r->current_suffix >0)
						{
							r->current_suffix=node_index;
							r->current_place=r->height_and_length[0]-1;
							for (i=0;i<r->height_and_length[0]-2;i++)
							{
								mvwin(r->f->win,cur_x+i,cur_y);
								print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
							}
							mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
						else
						{
							r->current_suffix=node_index;
							r->current_place=1;
							for (i=0;i<r->height_and_length[0]-2;i++)
							{
								mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
								print_node_frame(r,r->current_suffix+i+1,2);
							}
							mvwin(r->f->win,cur_x,cur_y);
							print_node_frame(r,r->current_suffix,1);
							r->i->del_str(r->i);
						}
					}
				}
			}
			else
			{
				r->i->del_str(r->i);
			}
			break;
		}
	} while (sign);		
	sell_list_link->del_all(&sell_list_link);
}

void free_roll(ROLL **r)
{
	delwin((*r)->win);
	(*r)->f->free(&((*r)->f));
	free((*r));
	(*r)=NULL;
}


ROLL *create_roll(LINK *l,INPUT *ip,int x,int y,int h,int len,int color)
{
	ROLL *r=(ROLL *)malloc(sizeof(ROLL));
	r->win=newwin(x,y,h,len);
	r->f=creat_frame(x,y,1,len-y,color);
	r->link=l;
	r->i=ip;
	r->startXY[0]=x;
	r->startXY[1]=y;
	r->height_and_length[0]=h;
	r->height_and_length[1]=len;
	r->current_place=0;
	r->current_suffix=0;
	r->get_input_string=GetInputString;
	r->print_info=PrintStuInfo;
	r->free=free_roll;
	return r;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -