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

📄 manager.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
📖 第 1 页 / 共 5 页
字号:
				}
			}
			del_blank((*(d->i+8))->str);
			if(isdigital((*(d->i+8))->str))
			{
				if(strlen((*((d->i)+8))->str)==0)
				{
					sign=8;
					messagebox(stdscr,7,19,44,12,PAUSE,"删除标志不可为空");
				}
				else
				{
					i=atoi((*((d->i)+8))->str);
					if(i==1||i==0)
					{
						break;
					}
					else
					{
						sign=8;
						messagebox(stdscr,7,19,44,12,PAUSE,"删除标志为0或者1");
					}
				}
			}
			else
			{
				sign=8;
				messagebox(stdscr,7,19,44,12,PAUSE,"请输入数字");
			}
			break;
		case 9:
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),8,10,10);
			if(sign == 0)
			{
				result=1;
			}
			break;
		case 10:
			(*((d->b)+1))->pitch_on(*((d->b)+1));
			sign=(*((d->b)+1))->attack(*((d->b)+1),9,1,1);
			if(sign == 0)
			{
				result=0;
			}
			break;
		}
	}
	while (sign);
	return result;
}


void change_goods_infor(GOODS *g)
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[10];
	BUTTON *b[2];
	INPUT *i[9];
	int result=0,sign=1;
	char *str[10]={"商品信息","商品名称:","单位:","规格:","销售价格:","进货价格:","库存数量:","商品折扣:","条形码:","删除标志:"};
	f[0]=creat_frame(0,19,26,40,3);
	f[1]=creat_frame(2,30,1,22,1);
	f[2]=creat_frame(4,30,1,22,1);
	f[3]=creat_frame(6,30,1,22,1);
	f[4]=creat_frame(8,30,1,22,1);
	f[5]=creat_frame(10,30,1,22,1);
	f[6]=creat_frame(12,30,1,22,1);
	f[7]=creat_frame(14,30,1,22,1);
	f[8]=creat_frame(16,30,1,22,1);
	f[9]=creat_frame(18,30,1,22,1);
	b[0]=createButton(20,26,3,8,"确定");
	b[1]=createButton(20,44,3,8,"取消");
	i[0]=create_input(f[1],20,0,2,9);
	i[1]=create_input(f[2],20,1,3,9);
	i[2]=create_input(f[3],20,2,4,9);
	i[3]=create_input(f[4],20,3,5,9);
	i[4]=create_input(f[5],20,4,6,9);
	i[5]=create_input(f[6],20,5,7,9);
	i[6]=create_input(f[7],20,6,8,9);
	i[7]=create_input(f[8],20,0,0,0);
	i[8]=create_input(f[9],1,7,9,9);
	DIALOG *d=create_dialog(f,i,b,str,NULL);
	show_add_goods(d);
	show_goods_infor(d,g);
	mvwprintw((*(d->i+5))->f->win,0,0,"%d",g->stock_number);
	wrefresh((*(d->i+5))->f->win);
	sprintf((*(d->i+5))->str,"%d",g->stock_number);
	(*((d->f)+9))->draw(*((d->f)+9));
	mvwprintw((*(d->f))->win,18,2,"%s",*(d->str+9));
	wrefresh((*(d->f))->win);
	mvwprintw((*(d->i+8))->f->win,0,0,"%d",g->delete_sign);
	wrefresh((*(d->i+8))->f->win);
	sprintf((*(d->i+8))->str,"%d",g->delete_sign);
	result= action_change_goods(d,g);

/*	char commodity_name[31];
	char unti[17];
	char spec[17];
	float sell_price;
	float stock_price;
	int stock_number;
	float agio;

*/
	if (result)
	{
		strcpy(g->commodity_name,(*((d->i)))->str);
		strcpy(g->unti,(*((d->i)+1))->str);
		strcpy(g->spec,(*((d->i)+2))->str);
		g->sell_price=atof((*((d->i)+3))->str);
		g->stock_price=atof((*((d->i)+4))->str);
		g->stock_number=atoi((*((d->i)+5))->str);
		g->agio=atof((*((d->i)+6))->str);
		g->delete_sign=atoi((*((d->i)+8))->str);
		update_goods_table(g);
		
	}
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	f[2]->free(&f[2]);
	f[3]->free(&f[3]);
	f[4]->free(&f[4]);
	f[5]->free(&f[5]);
	f[6]->free(&f[6]);
	f[7]->free(&f[7]);
	f[8]->free(&f[8]);
	f[9]->free(&f[9]);
	b[0]->free(&b[0]);
	b[1]->free(&b[1]);
	i[0]->free(&i[0]);
	i[1]->free(&i[1]);
	i[2]->free(&i[2]);
	i[3]->free(&i[3]);
	i[4]->free(&i[4]);
	i[5]->free(&i[5]);
	i[6]->free(&i[6]);
	i[7]->free(&i[7]);
	i[8]->free(&i[8]);
	scr_restore("scan12.dat");//屏幕恢复
}
///////////////////////////////输入商品名称//////////////////////////////////////////

void show__goods_name(DIALOG *d)
{
	scr_dump("scan11.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,8,"%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_goods_name(DIALOG *d,GOODS *g,int biaozi)
{
	int result=0,sign=1;
	int node_exist=0;
	int count=0,i=0;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,0);//输入用户ID
			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(strlen((*(d->i))->str)!=0)//输入的Id不否合法
			{
				count=select_exist_goods((*(d->i))->str,g);
				switch (count)
				{
				case 0:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"没有该货物,请重新输入");
					(*(d->i))->del_str(*(d->i));
					break;
				case 2:
					if(biaozi)
					{
						sign=1;
						messagebox(stdscr,7,19,44,12,PAUSE,"该货物已被删除,请重新激活");
						(*(d->i))->del_str(*(d->i));
					}					
					break;
				default:
					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 input_goods_name()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	GOODS g;
	memset(&g,0,sizeof(GOODS));
	int result=0;
	char *str[2]={"请输入商品名称","商品名称:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,26,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],16,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	show__goods_name(d);
	
	result=action_goods_name(d,&g,1);
	
	if(result)
	{
		change_goods_infor(&g);
	}
	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("scan11.dat");//屏幕恢复
}
/////////////////////////////////////////////////////////////删除商品
void del_goods_by_name()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	GOODS g;
	memset(&g,0,sizeof(GOODS));
	int result=0;
	char *str[2]={"请输入商品名称","商品名称:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,26,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],16,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	show__goods_name(d);
	
	result=action_goods_name(d,&g,1);
	
	if(result)
	{
		g.delete_sign=1;
		update_goods_table(&g);
		messagebox(stdscr,7,19,44,12,PAUSE,"商品删除成功");
	}
	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("scan11.dat");//屏幕恢复
}
///////////////////////////////////////////////////////////////////////////////////查询商品
void show_demand_goods(DIALOG *d)
{
	scr_dump("scan13.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,15,"%s",*(d->str));
	mvwprintw((*(d->f))->win,2,2,"%s",*(d->str+1));
	mvwprintw((*(d->f))->win,4,6,"%s",*(d->str+2));
	mvwprintw((*(d->f))->win,6,6,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,8,2,"%s",*(d->str+4));
	mvwprintw((*(d->f))->win,10,2,"%s",*(d->str+5));
	mvwprintw((*(d->f))->win,12,2,"%s",*(d->str+6));
	mvwprintw((*(d->f))->win,14,2,"%s",*(d->str+7));
	mvwprintw((*(d->f))->win,16,4,"%s",*(d->str+8));

	(*(d->f))->draw(*(d->f));
	(*((d->f)+1))->draw(*((d->f)+1));
	(*((d->f)+2))->draw(*((d->f)+2));
	(*((d->f)+3))->draw(*((d->f)+3));
	(*((d->f)+4))->draw(*((d->f)+4));
	(*((d->f)+5))->draw(*((d->f)+5));
	(*((d->f)+6))->draw(*((d->f)+6));
	(*((d->f)+7))->draw(*((d->f)+7));
	(*((d->f)+8))->draw(*((d->f)+8));
	(*(d->b))->setColor(*(d->b),3,1,4);
	(*(d->b))->show(*(d->b));

}

void show_demand_goods_infor(GOODS *g)
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[10];
	BUTTON *b[1];
	INPUT *i[9];
	int result=0,sign=1;
	char *str[10]={"商品信息","商品名称:","单位:","规格:","销售价格:","进货价格:","库存数量:","商品折扣:","条形码:","删除标志:"};
	f[0]=creat_frame(0,19,26,40,3);
	f[1]=creat_frame(2,30,1,22,1);
	f[2]=creat_frame(4,30,1,22,1);
	f[3]=creat_frame(6,30,1,22,1);
	f[4]=creat_frame(8,30,1,22,1);
	f[5]=creat_frame(10,30,1,22,1);
	f[6]=creat_frame(12,30,1,22,1);
	f[7]=creat_frame(14,30,1,22,1);
	f[8]=creat_frame(16,30,1,22,1);
	f[9]=creat_frame(18,30,1,22,1);
	b[0]=createButton(20,44,3,8,"确定");
	i[0]=create_input(f[1],20,0,2,9);
	i[1]=create_input(f[2],20,1,3,9);
	i[2]=create_input(f[3],20,2,4,9);
	i[3]=create_input(f[4],20,3,5,9);
	i[4]=create_input(f[5],20,4,6,9);
	i[5]=create_input(f[6],20,5,7,9);
	i[6]=create_input(f[7],20,6,8,9);
	i[7]=create_input(f[8],20,0,0,0);
	i[8]=create_input(f[9],1,7,9,9);
	DIALOG *d=create_dialog(f,i,b,str,NULL);

	show_demand_goods(d);

	show_goods_infor(d,g);
	mvwprintw((*(d->i+5))->f->win,0,0,"%d",g->stock_number);
	wrefresh((*(d->i+5))->f->win);
	sprintf((*(d->i+5))->str,"%d",g->stock_number);
	(*((d->f)+9))->draw(*((d->f)+9));
	mvwprintw((*(d->f))->win,18,2,"%s",*(d->str+9));
	wrefresh((*(d->f))->win);
	mvwprintw((*(d->i+8))->f->win,0,0,"%d",g->delete_sign);
	wrefresh((*(d->i+8))->f->win);
	sprintf((*(d->i+8))->str,"%d",g->delete_sign);
	if(g->delete_sign == 1)
	{
		mvwprintw((*(d->f))->win,21,2,"商品已删除");
		wrefresh((*(d->f))->win);
	}
	(*((d->b)))->pitch_on(*((d->b)));
	(*((d->b)))->attack(*((d->b)),0,0,0);
	
	free(d);
	f[0]->free(&f[0]);
	f[1]->free(&f[1]);
	f[2]->free(&f[2]);
	f[3]->free(&f[3]);
	f[4]->free(&f[4]);
	f[5]->free(&f[5]);
	f[6]->free(&f[6]);
	f[7]->free(&f[7]);
	f[8]->free(&f[8]);
	f[9]->free(&f[9]);
	b[0]->free(&b[0]);
	i[0]->free(&i[0]);
	i[1]->free(&i[1]);
	i[2]->free(&i[2]);
	i[3]->free(&i[3]);
	i[4]->free(&i[4]);
	i[5]->free(&i[5]);
	i[6]->free(&i[6]);
	i[7]->free(&i[7]);
	i[8]->free(&i[8]);
	scr_restore("scan13.dat");//屏幕恢复
}

void demand_goods_infor()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	GOODS g;
	memset(&g,0,sizeof(GOODS));
	int result=0;
	char *str[2]={"请输入商品名称","商品名称:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,26,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],16,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	show__goods_name(d);
	
	result=action_goods_name(d,&g,1);
	
	if(result)
	{
		show_demand_goods_infor(&g);
	}
	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("scan11.dat");//屏幕恢复
}
//////////////////////////////商品管理主函数///////////////////////////////////////////
void goods_manage(EMP *e)
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	int result=0,sign=1;
	char *str[9]={"商品管理","管理员:","等级:数据库管理员","1.添 加 商 品","2.修 改 商 品","3.删 除 商 品","4.查 询 商 品","5.退 出","选择:"};
	f[0]=creat_frame(2,19,22,40,3);
	f[1]=creat_frame(16,26,1,4,1);
	b[0]=createButton(18,26,3,8,"确定");
	b[1]=createButton(18,44,3,8,"取消");
	i=create_input(f[1],1,0,2,3);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	do
	{
		mvwprintw((*(d->f))->win,2,8,"%s",e->emp_name);
		show_manage_counts(d);
		result=action_manage_counts(d);
		switch (result)
		{
		case 1:
			(*(d->i))->del_str(*(d->i));
			add_goods();
			break;
		case 2:
			(*(d->i))->del_str(*(d->i));
			input_goods_name();
			break;
		case 3:
			(*(d->i))->del_str(*(d->i));
			del_goods_by_name();
			break;
		case 4:
			(*(d->i))->del_str(*(d->i));
			demand_goods_infor();
			break;
		case 5:
			sign=messagebox(stdscr,7,19,44,12,YORN,"您确定要退出吗?");
			if(sign == 0)
			{
				continue;
			}
			else
			{
				sign = 0;
			}
			break;
		}
	}
	while (sign);
	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("scan5.dat");//屏幕恢复
}
/********************************************************
///////////////////销售记录查询/////////////////////////
********************************************************/
///////////////////////////////////////////////////////////按销售时间查询

void show_demand_note_by_time(DIALOG *d)
{
	scr_dump("scan15.dat");//屏幕保存
	box((*(d->f))->win,0,0);
	mvwprintw((*(d->f))->win,0,15,"%s",*(d->str));
	mvwprintw((*(d->f))->win,2,1,"%s",*(d->str+1));
	mvwprintw((*(d->f))->win,6,1,"%s",*(d->str+2));
	mvwprintw((*(d->f))->win,4,16,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,4,20,"%s",*(d->str+4));
	mvwprintw((*(d->f))->win,4,24,"%s",*(d->str+5));
	mvwprintw((*(d->f))->win,8,16,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,8,20,"%s",*(d->str+4));
	mvwprintw((*(d->f))->win,8,24,"%s",*(d->str+5));

	(*(d->f))->draw(*(d->f));
	(*((d->f)+1))->draw(*((d->f)+1));
	(*(d->f+2))->draw(*(d->f+2));
	(*((d->f)+3))->draw(*((d->f)+3));
	(*((d->f)+4))->draw(*((d->f)+4));
	(*(d->f+5))->draw(*(d->f+5));
	(*((d->f)+6))->draw(*((d->f)+6));

	(*(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 leap(char *str)
{
	int year=0;
	year=atoi(str);
	if(year%400==0||(year%4==0&&year%100!=0))
		return 1;
	else
		return 0;

}
int if_right_date(char *year,char *month,char *day)
{
	int m=0,d=0,lp=0;
	m=atoi(month);
	d=atoi(day);
	lp=leap(year);
	
	switch (m)
	{
	case 1:
		if(d>31||d<1)
			return 1;
		break;
	case 2:
		if(lp)

⌨️ 快捷键说明

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