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

📄 manager.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "control_db.h"
#include "cash_manage.h"

#include "roll_bar.h"

#include <stdlib.h>

////////////////////////////////////////////////////////辅助函数
int Get_Input_String(ROLL_BAR *r)
{
	int sign=0;
	sign=(*(r->input))->input_char(*(r->input),1,1,1);
	return sign;
}

int (*fp10)(ROLL_BAR *r)=Get_Input_String;
/*
typedef struct sell_list
{
	int sell_ID;
    char employee_ID[7];
    char list_num[19];
    char sell_date[15];
    float payment_money;
    float must_pay_money;
    float fact_money;
    float give_change;
	int sell_fettle;
}SELL_LIST;*/
void print_one_node(ROLL_BAR *r,int choise)
{
	NODE *temp=NULL;
	temp=(*(r->link))->get_node_by_index((*(r->link)),r->current_suffix);
	if(choise)
	{
		(*(r->frame+1))->color=*(r->colors+1);
	}
	else
	{
		(*(r->frame+1))->color=*(r->colors);
	}
	mvwprintw((*(r->frame+1))->win,0,0,"%-10d%-8s%-6s%-9s%  -9.2f%-9.2f%-9.2f%-9.2f%-9d",
		((SELL_LIST *)(temp->data))->sell_ID,((SELL_LIST *)(temp->data))->employee_ID,((SELL_LIST *)(temp->data))->list_num
		,((SELL_LIST *)(temp->data))->sell_date,((SELL_LIST *)(temp->data))->payment_money,((SELL_LIST *)(temp->data))->must_pay_money
		,((SELL_LIST *)(temp->data))->fact_money,((SELL_LIST *)(temp->data))->give_change,((SELL_LIST *)(temp->data))->sell_fettle);
/*	mvwprintw(r->f->win,0,0,"%-7d%-12s%-28s%-6s%-6s%-8.2f%-6d%-8.2f",((UNS*)(temp->data))->num,
		((UNS*)(temp->data))->bar_code,((UNS*)(temp->data))->commodity_name,((UNS*)(temp->data))->spec,
		((UNS*)(temp->data))->unti,((UNS*)(temp->data))->sell_price,((UNS*)(temp->data))->total_count,
		((UNS*)(temp->data))->total_pay);*/
	(*(r->frame+1))->draw(*(r->frame+1));
}
void print_a_page(ROLL_BAR *r)
{
	int i=0;
	if((*(r->link))->count < r->height_and_length[0])
	{
		r->current_suffix++;
		for (i=1;i<(*(r->link))->count;i++)
		{
			mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
			print_one_node(r,0);
			r->current_suffix++;
		}
	}
	else
	{
		r->current_suffix++;
		for (i=1;i< r->height_and_length[0];i++)
		{
			mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
			print_one_node(r,0);
			r->current_suffix++;
		}
	}
	r->current_suffix=1;
	mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
	print_one_node(r,1);

}
void action_roll(ROLL_BAR *r)
{
	int result=0;
	int sign=1;
	int i=0;
	do
	{
		result=r->get_input_string(r,fp10);
		switch (result)
		{
		case 1:
			if(0 == (*(r->link))->count)
			{
				continue;
			}
			if (r->current_place>1)
			{
				mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
				print_one_node(r,0);
				r->current_place--;
				r->current_suffix--;
				mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
				print_one_node(r,1);
			} 
			else
			{
				if (r->current_suffix>1)
				{
					r->current_suffix--;
					mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
					print_one_node(r,1);
					for (i=1;i<r->height_and_length[0];i++)
					{
						r->current_suffix++;
						mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place+i-1,r->startXY[1]);
						print_one_node(r,0);
					}
					r->current_suffix-=r->height_and_length[0]-1;
					
				} 
				else
				{
					continue;
				}
			}
			break;
		case 2:
			if(0 == (*(r->link))->count)
			{
				continue;
			}
			if(r->current_suffix<(*(r->link))->count)
			{
				if (r->current_place<r->height_and_length[0])
				{
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,0);
					r->current_place++;
					r->current_suffix++;
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,1);
				} 
				else
				{
					r->current_suffix++;
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,1);
					for (i=1;i<r->height_and_length[0];i++)
					{
						r->current_suffix--;
						mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1-i,r->startXY[1]);
						print_one_node(r,0);
					}
					r->current_suffix+=r->height_and_length[0]-1;
				}
			}
			else
			{
				continue;
			}
			break;
		case 10:
			sign=0;
			break;
		}

	}
	while (sign);
}



//////////////////////////////////////////////////////添加账户


void show_add_account(DIALOG *d)
{
	scr_dump("scan6.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,4,"%s",*(d->str+2));
	mvwprintw((*(d->f))->win,6,2,"%s",*(d->str+3));
	mvwprintw((*(d->f))->win,8,2,"%s",*(d->str+4));
	mvwprintw((*(d->f))->win,10,6,"%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->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_accounts(DIALOG *d)
{
	int result=0,sign=1;
	int node_exist=0;
	int id=0;
	int  i=0;
	NODE *temp=NULL;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,0);//输入个数
			/*数目有没有超过*/
			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 >= 3)//输入的数量超过库存
				{
					/*提示超过库存量*/
					messagebox(stdscr,7,19,44,12,PAUSE,"请输入1或2之间的数字");
					sign=1;
					(*(d->i))->del_str(*(d->i));
					continue;
				}
			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入数字");
				(*(d->i))->del_str(*(d->i));
				continue;
				/*提示有非数字字符*/
			}
			i=atoi((*(d->i))->str);
			switch (i)
			{
			case 1:
				id=get_tuihuo_id();
				sprintf((*((d->i)+4))->str,"%d",id);
				mvwprintw((*(d->f))->win,4,13,"%s",(*((d->i)+4))->str);				wrefresh((*(d->f))->win);
				break;
			case 2:
				id=get_putong_id();
				sprintf((*((d->i)+4))->str,"%06d",id);
				mvwprintw((*(d->f))->win,4,13,"%d",id);
				wrefresh((*(d->f))->win);
				break;
			}
			break;
		case 2:
			sign=(*((d->i)+1))->input_char(*((d->i)+1),1,0,0);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=2;
				}
			}
			if(strlen((*((d->i)+1))->str)==0)
			{
				sign=2;
				messagebox(stdscr,7,19,44,12,PAUSE,"用户名不可为空");
			}
			break;
		case 3:
			sign=(*((d->i)+2))->input_char(*((d->i)+2),0,0,0);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=3;
				}
			}
			if(strlen((*((d->i)+2))->str)==0)
			{
				sign=3;
				messagebox(stdscr,7,19,44,12,PAUSE,"密码不可为空");
			}
			break;
		case 4:
			sign=(*((d->i)+3))->input_char(*((d->i)+3),1,0,0);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=4;
				}
			}
			break;
		case 5:
			(*(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 6:
			(*((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 add_account()
{
	wbkgd(stdscr,COLOR_PAIR(2));
	refresh();
	FRAME *f[5];
	BUTTON *b[2];
	INPUT *i[5];
	EMP e={"\0","\0","\0",0,0,"\0"};
	int result=0,sign=1;
	char *str[6]={"添加账户","账户类型:","账户ID:","账户姓名:","帐户密码:","备注:"};
	f[0]=creat_frame(4,19,20,40,3);
	f[1]=creat_frame(6,30,1,4,1);
	f[2]=creat_frame(10,30,1,20,1);
	f[3]=creat_frame(12,30,1,20,1);
	f[4]=creat_frame(14,30,1,20,1);
	b[0]=createButton(16,26,3,8,"确定");
	b[1]=createButton(16,44,3,8,"取消");
	i[0]=create_input(f[1],1,0,2,6);
	i[1]=create_input(f[2],20,1,3,6);
	i[2]=create_input(f[3],12,2,4,6);
	i[3]=create_input(f[4],20,3,5,6);
	i[4]=create_input(NULL,6,0,0,0);
	memset(i[4]->str,'a',6);
	DIALOG *d=create_dialog(f,i,b,str,NULL);
	show_add_account(d);
	result=action_manage_accounts(d);
	
	if (result)
	{
		strcpy(e.emp_id,(*((d->i)+4))->str);
		strcpy(e.emp_name,(*((d->i)+1))->str);
		strcpy(e.emp_passwd,(*((d->i)+2))->str);
		strcpy(e.remark,(*((d->i)+3))->str);
		e.emp_style=atoi((*((d->i)))->str);
		e.delete_sign=0;
		insert_db(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]);
	i[4]->free(&i[4]);
	scr_restore("scan6.dat");
}
/////////////////////////////////////////////////////////////弹出修改界面
void show_change_user_infor(DIALOG *d)
{
	scr_dump("scan8.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)+1))->setColor(*((d->b)+1),3,1,4);
	(*(d->b))->show(*(d->b));
	(*((d->b)+1))->show(*((d->b)+1));
}

int action_change_user_infor(DIALOG *d)
{
	int result=0,sign=1;
	int node_exist=0;
	int id=0;
	int  i=0;
	NODE *temp=NULL;
	do
	{
		switch (sign)
		{
		case 1:
			sign=(*((d->i)))->input_char(*((d->i)),1,0,0);//输入修改用户名
			/*数目有没有超过*/
			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)//输入的数目不否合法
			{
				break;
			}
			else
			{
				sign=1;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入用户名");
				(*(d->i))->del_str(*(d->i));
				continue;
			}
			break;
		case 2:
			sign=(*((d->i)+1))->input_char(*((d->i)+1),0,0,0);
			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(isdigital((*(d->i+1))->str)&&strlen((*(d->i+1))->str)!=0)//输入的数目不否合法
			{
				break;
			}
			else
			{
				sign=2;
				messagebox(stdscr,7,19,44,12,PAUSE,"请输入数字");
				(*(d->i+1))->del_str(*(d->i+1));
				continue;
				/*提示有非数字字符*/
			}
			break;
		case 3:
			sign=(*((d->i)+2))->input_char(*((d->i)+2),1,0,0);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=3;
				}
			}
			del_blank((*(d->i+2))->str);
			if(isdigital((*(d->i+2))->str)&&strlen((*(d->i+2))->str)!=0)//输入的数目不否合法
			{
				i=atoi((*(d->i+2))->str);
				if (i <= 0||i >= 3)//输入的数量超过库存
				{
					/*提示超过库存量*/
					messagebox(stdscr,7,19,44,12,PAUSE,"请输入1或2之间的数字");
					sign=3;
					(*(d->i+2))->del_str(*(d->i+2));
					continue;
				}
			}
			else
			{
				sign=3;
				messagebox(stdscr,7,19,44,12,PAUSE,"请正确输入数字");
				(*(d->i+2))->del_str(*(d->i+2));
				continue;
				/*提示有非数字字符*/
			}
			break;
		case 4:
			sign=(*((d->i+3)))->input_char(*((d->i+3)),1,0,0);
			if(sign==27)
			{
				sign=messagebox(stdscr,7,19,44,12,YORN,"确认要退出");
				if(sign)
				{
					sign=0;
					break;
				}
				else
				{
					sign=4;
				}
			}
			break;
		case 5:
			(*(d->b))->pitch_on(*(d->b));
			sign=(*(d->b))->attack(*(d->b),1,3,3);
			if(sign == 0)
			{
				result=1;
			}
			break;
		case 6:
			(*((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 change_user_infor(EMP *e)

⌨️ 快捷键说明

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