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

📄 cash_manage.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
📖 第 1 页 / 共 2 页
字号:
				if (i < count)//输入的数量超过库存
				{
					/*提示超过库存量*/
					messagebox(stdscr,7,19,44,12,PAUSE,"金额不足");
					sign=1;
				}
			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入数字");
				/*提示有非数字字符*/
			}
			break;
		case 2:
			mvwprintw((*(d->f))->win,10,10,"%.1f",i - count);
			wrefresh(d->f[0]->win);
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),1,3,3);
			if(sign == 0)
			{
				result=1;
			}
			break;
		case 3:
			(*((d->b)+1))->pitch_on(*((d->b)+1));
			sign=(*((d->b)+1))->attack(*((d->b)+1),2,1,1);
			if(sign == 0)
			{
				result=0;
			}
			break;
		}
	}
	while (sign);
	return result;
}

SELL_LIST *settle_accounts(ROLL *r,char *date,char *number,EMP *e)
{
	if(r->link->count == 0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"没有货物");
		return NULL;
	}
	float count=0;
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	int result=0;
	SELL_LIST *list=(SELL_LIST *)malloc(sizeof(SELL_LIST));
	memset(list,0,sizeof(SELL_LIST));
	char *str[6]={"收银","单号:","付款金额:","应收金额:","实收金额:","找零:"};
	f[0]=creat_frame(3,19,17,34,3);
	f[1]=creat_frame(11,29,1,18,1);
	b[0]=createButton(15,25,3,8,"确定");
	b[1]=createButton(15,39,3,8,"取消");
	i=create_input(f[1],8,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,r->link);
	count=accounts(r->link);
	mvwprintw((*(d->f))->win,2,10,"%s",number);
	mvwprintw((*(d->f))->win,4,10,"%f",count);
	mvwprintw((*(d->f))->win,6,10,"%.1f",count);
	show_settle_accounts(d);
	result=action_settle_accounts(d,r);
	if(result)
	{
		list->sell_ID=get_sell_id();
		strcpy(list->employee_ID,e->emp_id);
		strcpy(list->list_num,number);
		strcpy(list->sell_date,date);
		list->payment_money=count;
		list->must_pay_money=count;
		list->fact_money=atof(i->str);
		list->give_change=list->fact_money-count;
		list->sell_fettle=1;
	}
	else
	{
		free(list);
		list=NULL;
	}
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	b[0]->free(&b[0]);
	b[1]->free(&b[1]);
	i->free(&i);
	scr_restore("scan3.dat");//屏幕恢复
	return list;
}
///////////////////////////////////////////////////挂单
int hang_up(ROLL *r)
{
	if(r->link->count == 0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"没有单可以挂");
		return 0;
	}
	int result=0;
	result=messagebox(stdscr,7,19,44,12,YORN,"您确定要将此单挂起到后台");
	return result;

}

////////////////////////////////////////////////////取单
void show_get_list(DIALOG *d,LINK *link)
{
	int i=0;
	NODE *temp=link->rearptr->prior;
	scr_dump("scan4.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,15,"%s",*(d->str));
	mvwprintw((*(d->f))->win,2,5,"%s",*(d->str+1));
	mvwprintw((*(d->f))->win,10,1,"%s",*(d->str+2));
	for(i=0;i<link->count;i++)
	{
		mvwprintw((*(d->f))->win,3+i,10,"<%d>%s",i+1,((HMSG *)(temp->data))->number);
		temp=temp->prior;
	}
	(*(d->f))->draw(*(d->f));
	(*((d->f)+1))->draw(*((d->f)+1));
	(*(d->b))->setColor(*(d->b),3,1,4);
	(*((d->b)+1))->setColor(*((d->b)+1),3,1,4);
	(*(d->b))->show(*(d->b));
	(*((d->b)+1))->show(*((d->b)+1));
}


int action_get_list(DIALOG *d,ROLL *r,LINK *link)
{
	int result=0,sign=1;
	int node_exist=0;
	int count=0;
	float i=0;
	NODE *temp=NULL;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,1);//输入个数
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=1;
				}
			}
			/*数目有没有超过*/
			del_blank((*(d->i))->str);
			if(isdigital((*(d->i))->str)&&strlen((*(d->i))->str)!=0)//输入的数目不否合法
			{
				i=atoi((*(d->i))->str);
				count=link->count;
				if (i > count||i<= 0)//输入的数量超过库存
				{
					/*提示超过库存量*/
					messagebox(stdscr,7,19,44,12,PAUSE,"输入的数字不在范围内");
					sign=1;
				}

			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入数字");
				/*提示有非数字字符*/
			}
			break;
		case 2:
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),1,3,3);
			if(sign == 0)
			{
				result=1;
			}
			break;
		case 3:
			(*((d->b)+1))->pitch_on(*((d->b)+1));
			sign=(*((d->b)+1))->attack(*((d->b)+1),2,1,1);
			if(sign == 0)
			{
				result=0;
			}
			break;
		}
	}
	while (sign);
	return result;
}

int get_list(ROLL *r,LINK *link)
{
	if(link->count == 0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"没有单可以取");
		return 0;
	}
	if(r->link->count!=0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"收银中,禁止取单");
		return 0;
	}
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	int result=0;
	char *str[3]={"取单","单号:","单号编号:"};
	f[0]=creat_frame(3,19,17,34,3);
	f[1]=creat_frame(13,29,1,18,1);
	b[0]=createButton(15,25,3,8,"确定");
	b[1]=createButton(15,39,3,8,"取消");
	i=create_input(f[1],8,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,link);
	show_get_list(d,link);
	result=action_get_list(d,r,link);
	if(result)
	{
		result=atoi((*(d->i))->str);
	}
	else
	{
		result=0;
	}
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	b[0]->free(&b[0]);
	b[1]->free(&b[1]);
	i->free(&i);
	scr_restore("scan4.dat");//屏幕恢复
	return result;

}
///////////////////////////////////////////////////撤单
int remove_list(ROLL *r)
{
	if(r->link->count == 0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"没有单可以撤");
		return 0;
	}
	int result=0;
	result=messagebox(stdscr,7,19,44,12,YORN,"您确定要撤销此次交易?");
	return result;
}

//////////////////////////////////////注销用户
int logout(ROLL *r,LINK *link)
{
	if(r->link->count != 0 || link->count !=0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"还在销售状态中,禁止注销");
		return 0;
	}
	int result=0;
	result=messagebox(stdscr,7,19,44,12,YORN,"您确定要注销此用户吗?");
	return result;
}
//////////////////////////////////////////////////退货用户

void show_login(DIALOG *d)
{
	scr_dump("scan16.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,13,"%s",*(d->str));
	mvwprintw((*(d->f))->win,2,11,"%s",*(d->str+1));
	mvwprintw((*(d->f))->win,4,11,"%s",*(d->str+2));

	(*(d->f))->draw(*(d->f));
	(*((d->f)+1))->draw(*((d->f)+1));
	(*((d->f)+2))->draw(*((d->f)+2));
	(*(d->b))->setColor(*(d->b),3,1,4);
	(*((d->b)+1))->setColor(*((d->b)+1),3,1,4);
	(*(d->b))->show(*(d->b));
	(*((d->b)+1))->show(*((d->b)+1));
}
int action_tuihuo_login(EMP *e,DIALOG *d)
{
	int result=0,sign=1;
	int node_exist=0;
	int count=0;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,1);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=1;
				}
			}
			del_blank((*(d->i))->str);
			if(isdigital((*((d->i)))->str)&&strlen((*((d->i)))->str)!=0)
			{
				break;
			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入正确的用户ID");
				/*提示有非数字字符*/
			}
			break;
		case 2:
			sign=(*((d->i+1)))->input_char(*((d->i+1)),0,0,1);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=2;
				}
			}
			del_blank((*(d->i+1))->str);
			if(strlen((*((d->i+1)))->str)!=0)//输入的数目不否合法
			{
				break;
			}
			else
			{
				sign=2;
				messagebox(stdscr,7,19,44,12,PAUSE,"密码不能为空格");
				/*提示有非数字字符*/
			}
			break;
		case 3:
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),1,3,3);
			if(sign == 0)
			{
				result=login((*((d->i)))->str,(*(d->i+1))->str,e);
				switch (result)
				{
				case 0:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"该用户不存在,请重新输入或离开!");
					(*(d->i+1))->del_str((*(d->i+1)));
					(*((d->i)))->del_str((*((d->i))));
					break;
				case 1:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"该用户已被禁用,请重新输入或离开!");
					(*(d->i+1))->del_str((*(d->i+1)));
					(*(d->i))->del_str((*(d->i)));
					break;
				case 2:
					messagebox(stdscr,7,19,44,12,PAUSE,"密码错误!");
					(*(d->i+1))->del_str((*(d->i+1)));
					sign=2;
					break;
				case 3:
					result=1;
					break;
				case 4:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"该用户不是退货员");
					(*(d->i+1))->del_str((*(d->i+1)));
					(*(d->i))->del_str((*(d->i)));
					break;
				case 5:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"该用户不是退货员");
					(*(d->i+1))->del_str((*(d->i+1)));
					(*(d->i))->del_str((*(d->i)));
					break;
				}
			}
			break;
		case 4:
			(*((d->b)+1))->pitch_on(*((d->b)+1));
			sign=(*((d->b)+1))->attack(*((d->b)+1),2,1,1);
			if(sign==0)
			{
				result=0;
			}
			break;
		}
	}
	while (sign);

}
int tuihuo_login(EMP *e)
{
	FRAME *f[3];
	BUTTON *b[2];
	INPUT *i[2];
	int result=0;
	char *str[3]={"退货用户登陆","帐号:","密码:"};
	f[0]=creat_frame(6,19,12,40,3);
	f[1]=creat_frame(8,35,1,16,1);
	f[2]=creat_frame(10,35,1,16,1);
	b[0]=createButton(12,25,3,8,"确定");
	b[1]=createButton(12,44,3,8,"退出");
	i[0]=create_input(f[1],6,1,2,4);
	i[1]=create_input(f[2],12,1,3,4);

	DIALOG *d=create_dialog(f,i,b,str,NULL);

	show_login(d);
	result=action_tuihuo_login(e,d);
	
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	f[2]->free(&f[2]);
	b[0]->free(&b[0]);
	b[1]->free(&b[1]);
	i[0]->free(&i[0]);
	i[1]->free(&i[1]);
	scr_restore("scan16.dat");//屏幕恢复
	return result;
	
}
void show_tuihuo(DIALOG *d)
{
	scr_dump("scan17.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,9,"%s",*(d->str));
	mvwprintw((*(d->f))->win,3,1,"%s",*(d->str+1));
	(*(d->f))->draw(*(d->f));
	(*((d->f)+1))->draw(*((d->f)+1));
	(*(d->b))->setColor(*(d->b),3,1,4);
	(*((d->b)+1))->setColor(*((d->b)+1),3,1,4);
	(*(d->b))->show(*(d->b));
	(*((d->b)+1))->show(*((d->b)+1));
}
int action_tuihuo(DIALOG *d,SELL_GOODS_LIST *s,LINK *note)
{
	int result=0,sign=1;
	int exist=0;
	int count=0,i=0;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,1);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=1;
				}
			}
			del_blank((*(d->i))->str);
			if(isdigital((*(d->i))->str)&&strlen((*(d->i))->str)!=0)
			{
				exist=select_sell_list_by_ID(s,(*(d->i))->str,note);//看看存在不
				switch (exist)
				{
				case 0:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"没有此次交易");
					(*(d->i))->del_str(*(d->i));
					break;
				case 1:
					break;
				}
			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请输入数字");
				(*(d->i))->del_str(*(d->i));
				/*提示有非数字字符*/
			}
			break;
		case 2:
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),1,3,3);
			if(sign == 0)
			{
				result=1;
			}
			break;
		case 3:
			(*((d->b)+1))->pitch_on(*((d->b)+1));
			sign=(*((d->b)+1))->attack(*((d->b)+1),2,1,1);
			if(sign == 0)
			{
				result=0;
			}
			break;
		}
	}
	while (sign);
	return result;
}

void tuihuo()
{
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;

	SELL_GOODS_LIST sl;
	memset(&sl,0,sizeof(SELL_GOODS_LIST));
	SELL_GOODS_LIST *s=&sl;
	LINK *note=new_link();

	int result=0;
	char *str[2]={"请输入销售单号","单号:"};
	char *str1[5]={"明细ID","条形码","销售ID","数量","单价"};
	f[0]=creat_frame(1,24,11,30,3);
	f[1]=creat_frame(4,33,1,18,1);
	b[0]=createButton(6,27,3,8,"确定");
	b[1]=createButton(6,42,3,8,"取消");
	i=create_input(f[1],6,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);

	FRAME *frame[2];

	INPUT *input[1];
	int color[2]={3,6};
	frame[0]=creat_frame(13,15,14,48,3);
	frame[1]=creat_frame(16,17,1,44,6);

	input[0]=create_input(frame[1],0,1,2,9);

	ROLL_BAR *r=create_roll_bar(&note,frame,input,16,17,5,44,color);

	show_tuihuo(d);

	result=action_tuihuo(d,s,note);
	if(result)
	{
		box(frame[0]->win,0,0);
		wattron(frame[0]->win,COLOR_PAIR(3));
		wbkgd(frame[0]->win,COLOR_PAIR(3));

		mvwhline(frame[0]->win,2,1,0,46);
		mvwaddch(frame[0]->win,2,0,ACS_LTEE);
		mvwaddch(frame[0]->win,2,47,ACS_RTEE);
		mvwhline(frame[0]->win,8,1,0,46);
		mvwaddch(frame[0]->win,8,0,ACS_LTEE);
		mvwaddch(frame[0]->win,8,47,ACS_RTEE);

		wrefresh(frame[0]->win);
		mvwprintw(frame[0]->win,1,4,"%-8s%-10s%-8s%-8s%-8s",str1[0],str1[1]
				,str1[2],str1[3],str1[4]);
		mvwprintw(frame[0]->win,10,33,"用Tab键切换");
		wrefresh(frame[0]->win);
		print_aa_page(r);
		action_roll_bar(r,note);
		erase();
		wbkgd(stdscr,COLOR_PAIR(2));
		refresh();
	}
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	b[0]->free(&b[0]);
	b[1]->free(&b[1]);
	i->free(&i);

	frame[0]->free(&frame[0]);
	frame[0]->free(&frame[1]);
	input[0]->free(&input[0]);
	note->del_all(&note);
	r->free(&r);

	scr_restore("scan17.dat");//屏幕恢复
}

void tuihuo_user(ROLL *r,LINK *link)
{
	if(r->link->count != 0 || link->count !=0)
	{
		messagebox(stdscr,7,19,44,12,PAUSE,"还在销售状态中,禁止退货");
		return ;
	}
	int result=0;
	EMP emp;
	memset(&emp,0,sizeof(EMP));
	EMP *e=&emp;
	result=tuihuo_login(e);
	if(result)
	{
		tuihuo();
	}
}

/*

int main()
{
	initscr();
	refresh();
	if(has_colors==FALSE)
	{
		endwin();
		exit(0);
	}
	start_color();
	init_pair(1,COLOR_BLACK,COLOR_WHITE);
	init_pair(2,COLOR_WHITE,COLOR_BLACK);
	init_pair(3,COLOR_BLACK,COLOR_RED);
	init_pair(4,COLOR_BLACK,COLOR_YELLOW);
//////////////////////////////////////////////////
	add_list();
//////////////////////////////////////////////////
	attroff(COLOR_PAIR(1));
	attroff(COLOR_PAIR(2));
	attroff(COLOR_PAIR(3));
	endwin();
	return 0;
}
*/

⌨️ 快捷键说明

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