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

📄 manager.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
📖 第 1 页 / 共 5 页
字号:
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[5];
	BUTTON *b[2];
	INPUT *i[4];
	int result=0,sign=1;
	char *str[5]={"用户信息","用户姓名:","用户密码:","用户类型:","备注:"};
	f[0]=creat_frame(4,19,15,40,3);
	f[1]=creat_frame(6,30,1,20,1);
	f[2]=creat_frame(8,30,1,20,1);
	f[3]=creat_frame(10,30,1,20,1);
	f[4]=creat_frame(12,30,1,20,1);
	b[0]=createButton(14,26,3,8,"确定");
	b[1]=createButton(14,44,3,8,"取消");
	i[0]=create_input(f[1],20,0,2,6);
	i[1]=create_input(f[2],20,1,3,6);
	i[2]=create_input(f[3],1,2,4,6);
	i[3]=create_input(f[4],20,3,5,6);

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

	strcpy(i[0]->str,e->emp_name);
	strcpy(i[1]->str,e->emp_passwd);
	i[2]->str[0]=e->emp_style+48;
	strcpy(i[3]->str,e->remark);
	show_change_user_infor(d);
	mvwprintw((*(d->f+1))->win,0,0,"%s",e->emp_name);
	wrefresh((*(d->f+1))->win);
	mvwprintw((*(d->f+2))->win,0,0,"%s",e->emp_passwd);
	wrefresh((*(d->f+2))->win);
	mvwprintw((*(d->f+3))->win,0,0,"%d",e->emp_style);
	wrefresh((*(d->f+3))->win);
	mvwprintw((*(d->f+4))->win,0,0,"%s",e->remark);
	wrefresh((*(d->f+4))->win);

	result=action_change_user_infor(d);

	if (result)
	{
		/*更新e里面的信息*/
	/*	char emp_id[7];
		char emp_name[16];
		char emp_passwd[17];
		int emp_style;
		int delete_sign;
		char remark[31];*/
		strcpy(e->emp_name,i[0]->str);
		strcpy(e->emp_passwd,i[1]->str);
		e->emp_style=atoi(i[2]->str);
		strcpy(e->remark,i[3]->str);
		update_user_table(e);
		/*更新数据库*/
	}
	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]);
	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]);
	scr_restore("scan8.dat");
}
/////////////////////////////////////////////////////////////输入帐户ID

void show_inut_user_ID(DIALOG *d)
{
	scr_dump("scan7.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_input_user_ID(DIALOG *d,EMP *e,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,1);//输入用户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(isdigital((*(d->i))->str)&&strlen((*(d->i))->str)!=0)//输入的Id不否合法
			{
				count=select_user(e,(*(d->i))->str);
				switch (count)
				{
				case 0:
					sign=1;
					messagebox(stdscr,7,19,44,12,PAUSE,"没有该用户,请重新输入");
					(*(d->i))->del_str(*(d->i));
					break;
				case 1:
					if(biaozi)
					{
						sign=1;
						messagebox(stdscr,7,19,44,12,PAUSE,"该用户已被删除,请重新激活");
						(*(d->i))->del_str(*(d->i));
					}					
					break;
				case 4:
					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_user_ID()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	EMP e;
	memset(&e,0,sizeof(EMP));
	int result=0;
	char *str[2]={"请输入用户ID","用户ID:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,24,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],6,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	show_inut_user_ID(d);
	
	result=action_input_user_ID(d,&e,1);
	
	if(result)
	{
		change_user_infor(&e);
	}
	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("scan7.dat");//屏幕恢复
}
/////////////////////////////////////////////////////////////删除账户
void del_user_ID()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	EMP e;
	memset(&e,0,sizeof(EMP));
	int result=0;
	char *str[2]={"请输入要删除用户ID","用户ID:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,24,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],6,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);
	show_inut_user_ID(d);
	
	result=action_input_user_ID(d,&e,1);
	
	if(result)
	{
		del_user(&e);
		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("scan7.dat");//屏幕恢复
}
/////////////////////////////////////////////////////////////查询用户
void show_show_user_infor(DIALOG *d)
{
	scr_dump("scan9.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,2,"%s",*(d->str+2));
	mvwprintw((*(d->f))->win,6,2,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,8,6,"%s",*(d->str+4));

	(*(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->b))->setColor(*(d->b),3,1,4);
	(*(d->b))->show(*(d->b));
}

void show_user_infor(EMP *e)
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[5];
	BUTTON *b[1];
	INPUT *i[4];
	int result=0,sign=1;
	char *str[5]={"用户信息","用户姓名:","用户密码:","用户类型:","备注:"};
	f[0]=creat_frame(4,19,15,40,3);
	f[1]=creat_frame(6,30,1,20,1);
	f[2]=creat_frame(8,30,1,20,1);
	f[3]=creat_frame(10,30,1,20,1);
	f[4]=creat_frame(12,30,1,20,1);
	b[0]=createButton(14,35,3,8,"确定");
	i[0]=create_input(f[1],20,0,2,6);
	i[1]=create_input(f[2],20,1,3,6);
	i[2]=create_input(f[3],1,2,4,6);
	i[3]=create_input(f[4],20,3,5,6);

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

	strcpy(i[0]->str,e->emp_name);
	strcpy(i[1]->str,e->emp_passwd);
	i[2]->str[0]=e->emp_style+48;
	strcpy(i[3]->str,e->remark);
	show_show_user_infor(d);
	if(e->delete_sign)
	{
		mvwprintw((*(d->f))->win,11,2,"已被删除");
		wrefresh((*(d->f))->win);
	}
	mvwprintw((*(d->f+1))->win,0,0,"%s",e->emp_name);
	wrefresh((*(d->f+1))->win);
	mvwprintw((*(d->f+2))->win,0,0,"%s",e->emp_passwd);
	wrefresh((*(d->f+2))->win);
	mvwprintw((*(d->f+3))->win,0,0,"%d",e->emp_style);
	wrefresh((*(d->f+3))->win);
	mvwprintw((*(d->f+4))->win,0,0,"%s",e->remark);
	wrefresh((*(d->f+4))->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]);
	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]);
	scr_restore("scan9.dat");
}

void demand_user_infor()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[2];
	BUTTON *b[2];
	INPUT *i;
	EMP e;
	memset(&e,0,sizeof(EMP));
	int result=0;
	char *str[2]={"请输入用户ID","用户ID:"};
	f[0]=creat_frame(7,15,11,30,3);
	f[1]=creat_frame(10,24,1,18,1);
	b[0]=createButton(12,18,3,8,"确定");
	b[1]=createButton(12,33,3,8,"取消");
	i=create_input(f[1],6,0,2,2);
	DIALOG *d=create_dialog(f,&i,b,str,NULL);

	show_inut_user_ID(d);
	
	result=action_input_user_ID(d,&e,0);
	
	if(result)
	{
		show_user_infor(&e);
	}
	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("scan7.dat");//屏幕恢复
}
/////////////////////////////////////////////////////////////账户管理

void show_manage_counts(DIALOG *d)
{
	scr_dump("scan5.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,2,20,"%s",*(d->str+2));
	mvwprintw((*(d->f))->win,4,5,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,6,5,"%s",*(d->str+4));
	mvwprintw((*(d->f))->win,8,5,"%s",*(d->str+5));
	mvwprintw((*(d->f))->win,10,5,"%s",*(d->str+6));
	mvwprintw((*(d->f))->win,12,5,"%s",*(d->str+7));
	mvwprintw((*(d->f))->win,14,1,"%s",*(d->str+8));
	(*(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_manage_counts(DIALOG *d)
{
	int result=0,sign=1;
	int node_exist=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);
				if (i <= 0||i >= 6)//输入的数量超过库存
				{
					/*提示超过库存量*/
					messagebox(stdscr,7,19,44,12,PAUSE,"请输入1到5之间的数字");
					sign=1;
					(*(d->i))->del_str(*(d->i));
				}
			}
			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=atoi((*(d->i))->str);
			}
			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 manage_counts(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_account();
			break;
		case 2:
			(*(d->i))->del_str(*(d->i));
			input_user_ID();
			break;
		case 3:
			(*(d->i))->del_str(*(d->i));
			del_user_ID();
			break;
		case 4:
			(*(d->i))->del_str(*(d->i));
			 demand_user_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_add_goods(DIALOG *d)
{
	scr_dump("scan10.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)+1))->setColor(*((d->b)+1),3,1,4);
	(*(d->b))->show(*(d->b));
	(*((d->b)+1))->show(*((d->b)+1));
}
void show_goods_infor(DIALOG *d,GOODS *g)
{
	mvwprintw((*(d->i))->f->win,0,0,"%s",g->commodity_name);
	wrefresh((*(d->i))->f->win);
	mvwprintw((*(d->i+1))->f->win,0,0,"%s",g->unti);
	wrefresh((*(d->i+1))->f->win);
	mvwprintw((*(d->i+2))->f->win,0,0,"%s",g->spec);
	wrefresh((*(d->i+2))->f->win);
	mvwprintw((*(d->i+3))->f->win,0,0,"%f",g->sell_price);
	wrefresh((*(d->i+3))->f->win);
	mvwprintw((*(d->i+4))->f->win,0,0,"%f",g->stock_price);
	wrefresh((*(d->i+4))->f->win);
	mvwprintw((*(d->i+5))->f->win,0,0,"%d",0);
	wrefresh((*(d->i+5))->f->win);
	mvwprintw((*(d->i+6))->f->win,0,0,"%f",g->agio);
	wrefresh((*(d->i+6))->f->win);
	mvwprintw((*(d->i+7))->f->win,0,0,"%s",g->bar_code);
	wrefresh((*(d->i+7))->f->win);
	sprintf((*(d->i))->str,"%s",g->commodity_name);
	sprintf((*(d->i+1))->str,"%s",g->unti);
	sprintf((*(d->i+2))->str,"%s",g->spec);
	sprintf((*(d->i+3))->str,"%f",g->sell_price);
	sprintf((*(d->i+4))->str,"%f",g->stock_price);
	sprintf((*(d->i+5))->str,"%d",0);

⌨️ 快捷键说明

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