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

📄 posbackground.c

📁 本人做的一个基于LINUX平台的小程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	keypad(id,true);
	keypad(name,true);
	keypad(pwd,true);
	keypad(type,true);
	keypad(remark,true);
	while(1)
	{
		switch(flag)
		{
			case 1:
				edit_control(id,temp->id,p,2,6);
				break;
			case 2:
				edit_control(name,temp->name,p,5,15);
				break;
			case 3:
				edit_control(pwd,temp->passwd,p,0,16);
				break;
			case 4:
				edit_control(type,temp_type,p,2,1);
				break;
			case 5:
				edit_control(remark,temp->remark,p,5,30);
				break;
			default:
				result = yes_or_no(20,21,1,30);
				if (result == -1)
					*p = 1;
				else if(result == 1)
				{
					if(strlen(temp->id)&&strlen(temp_type)&&strlen(temp->passwd))
					{
						result = is_staff_id(temp->id);
						if (result != -1)
						{
							message("此账户已存在,请重新选择其他的ID!",10,30);
							break;
						}
						else
						{
							temp->type = atoi(temp_type);
							if (temp->type > 2)
							{
								message("身份标识只有0,1或2!",10,30);
								break;
							}
							else
							{
								insert_new_staff(temp);
								delwin(id);
								delwin(name);
								delwin(pwd);
								delwin(type);
								delwin(remark);
								free(temp);
								return 1;
							}
						}
					}
					else
					{
						message("信息未完整!密码,身份为必填!   都不能为空",10,30);
						break;
					}
				}
				else
				{
					delwin(id);
					delwin(name);
					delwin(pwd);
					delwin(type);
					delwin(remark);
					free(temp);
					return 0;
				}
				break;
		}
	}
	return 1;
}

int alter_user()
{
	char temp_type[2] = {0};
	WINDOW *name = NULL,*pwd = NULL,*type = NULL,*remark = NULL;
	int ch = 0,flag = 1;
	int *p = &flag;
	int result = 0;
	char str[7] = {0};
	result = get_user_id(str,1);
	if (result == 0)
		return 0;
	staff_info *temp;
	temp = (staff_info *)malloc(sizeof(staff_info));
	memset(temp,0,sizeof(staff_info));
	user_confirm(str,temp);
	show_user_info(temp,2);
	
	name = create_no_border_color_window(1,50,6,28,1);
	mvwprintw(name,0,0,temp->name);
	wrefresh(name);
	pwd = create_no_border_color_window(1,50,8,28,1);
	mvwprintw(pwd,0,0,temp->passwd);
	wrefresh(pwd);
	type = create_no_border_color_window(1,50,10,28,1);
	mvwprintw(type,0,0,"%d",temp->type);
	wrefresh(type);
	remark = create_no_border_color_window(1,50,12,28,1);
	mvwprintw(remark,0,0,temp->remark);
	wrefresh(remark);
	yes_or_no(20,21,0,30);
	keypad(name,true);
	keypad(pwd,true);
	keypad(type,true);
	keypad(remark,true);
	sprintf(temp_type,"%d",temp->type);
	while(1)
	{
		switch(flag)
		{
			case 1:
				edit_control(name,temp->name,p,5,15);
				break;
			case 2:
				edit_control(pwd,temp->passwd,p,0,16);
				break;
			case 3:
				edit_control(type,temp_type,p,2,1);
				break;
			case 4:
				edit_control(remark,temp->remark,p,5,30);
				break;
			default:
				result = yes_or_no(20,21,1,30);
				if (result == -1)
					*p = 1;
				else if(result == 1)
				{
					if(strlen(temp_type)&&strlen(temp->passwd))
					{
						temp->type = atoi(temp_type);
						if (temp->type > 2)
						{
							message("身份标识只有0,1或2!",10,30);
							break;
						}
						else
						{
							update_staff(temp);
							delwin(name);
							delwin(pwd);
							delwin(type);
							delwin(remark);
							free(temp);
							return 1;
						}
					}
					else
					{
						message("信息未完整!密码,身份为必填!   都不能为空",10,30);
						break;
					}
				}
				else
				{
					delwin(name);
					delwin(pwd);
					delwin(type);
					delwin(remark);
					free(temp);
					return 0;
				}
				break;
		}
	}
	return 1;
}


int delete_user()
{
	int result = 0;
	char str[7] = {0};
	result = get_user_id(str,0);
	if (result == 0)
		return 0;
	staff_info *temp;
	temp = (staff_info *)malloc(sizeof(staff_info));
	memset(temp,0,sizeof(temp));
	user_confirm(str,temp);
	show_user_info(temp,3);
	result = yes_or_no(20,21,1,30);
	if (result == 1)
		del_staff(str);
	free(temp);
	return 1;
}

int show_user_info(staff_info *temp,int stytle)
{
	WINDOW *info = NULL;
	
	info = create_default_color_window(25,80,0,0,6);
	mvwprintw(info,0,33,"欢迎光临xxx超市");
	if (stytle == 1)
		mvwprintw(info,2,37,"添加用户");
	else if (stytle == 2)
		mvwprintw(info,2,37,"修改用户");
	else
		mvwprintw(info,2,37,"删除用户");
	
	mvwprintw(info,4,20,"帐户ID:");
	mvwprintw(info,6,20,"用户名:");
	mvwprintw(info,8,22,"密码:");
	mvwprintw(info,10,22,"身份:");
	mvwprintw(info,12,22,"备注:");
	wattron(info,A_REVERSE);
	mvwhline(info,4,28,' ',50);
	mvwhline(info,6,28,' ',50);
	mvwhline(info,8,28,' ',50);
	mvwhline(info,10,28,' ',50);
	mvwhline(info,12,28,' ',50);
	mvwprintw(info,4,28,temp->id);
	mvwprintw(info,6,28,temp->name);
	mvwprintw(info,8,28,temp->passwd);
	mvwprintw(info,10,28,"%d",temp->type);
	mvwprintw(info,12,28,temp->remark);
	wrefresh(info);
	delwin(info);	
}


int get_product_code(char *bar_code,product_info *temp,int style)
{
	int flag = 1,ch = 0,result = 0,i = 0;
	int *p = &flag;
	WINDOW *bgb = NULL,*code = NULL;

	bgb = create_default_color_window(25,80,0,0,6);
	mvwprintw(bgb,0,33,"欢迎光临xxx超市");
	mvwprintw(bgb,5,20,"条形码:");
	if(style == 1)
		mvwprintw(bgb,3,35,"修改商品");
	if (style == 0)
		mvwprintw(bgb,3,35,"删除商品");
	wrefresh(bgb);
	delwin(bgb);

	code = create_no_border_color_window(1,30,5,27,1);
	strcpy(bar_code,"CN");
	mvwprintw(code,0,0,bar_code);
	wrefresh(code);
	yes_or_no(20,21,0,30);
	keypad(code,true);
	while(1)
	{
		switch(flag)
		{
			case 1 :
				i = strlen(bar_code);
				wmove(code,0,i);
				ch = wgetch(code);
				if (ch == KEY_DOWN || ch == 10)
					*p = 2;
				else
					get_info(code,bar_code,ch,1,8);
				break;
			case 2 :
				result = yes_or_no(20,21,1,30);
				if (result == -1)
					*p = 1;
				else if(result == 1)
				{
					if(get_product(bar_code,temp))
					{
						delwin(code);
						return 1;
					}
					else
					{
						message("商品号不存在!",10,30);
						memset(bar_code,0,9*sizeof(char));
						mvwprintw(code,0,0,"         ");
						strcpy(bar_code,"CN");
						mvwprintw(code,0,0,bar_code);
						wrefresh(code);
						*p = 1;
					}
				}
				else
				{
					delwin(code);
					return 0;
				}
				break;
		}
	}
	return 1;
}

int get_user_id(char *str,int style)
{
	int flag = 1,ch = 0,result = 0,i = 0;
	int *p = &flag;
	WINDOW *bgb = NULL,*code = NULL;

	bgb = create_default_color_window(25,80,0,0,6);
	mvwprintw(bgb,0,33,"欢迎光临xxx超市");
	mvwprintw(bgb,5,20,"用户ID:");
	if(style == 1)
		mvwprintw(bgb,3,35,"修改用户");
	if (style == 0)
		mvwprintw(bgb,3,35,"删除用户");
	if (style == 2)
		mvwprintw(bgb,3,30,"按员工ID查询消费记录");
	wrefresh(bgb);
	delwin(bgb);

	code = create_no_border_color_window(1,30,5,27,1);
	wrefresh(code);
	yes_or_no(20,21,0,30);
	keypad(code,true);
	while(1)
	{
		switch(flag)
		{
			case 1 :
				i = strlen(str);
				wmove(code,0,i);
				ch = wgetch(code);
				if (ch == KEY_DOWN || ch == 10)
					*p = 2;
				else
					get_info(code,str,ch,2,6);
				break;
			case 2 :
				result = yes_or_no(20,21,1,30);
				if (result == -1)
					*p = 1;
				else if(result == 1)
				{
					i= is_staff_id(str);
					if(i == -1)
					{
						message("不存在此用户!",10,30);
						memset(str,0,7*sizeof(char));
						mvwprintw(code,0,0,"         ");
						wrefresh(code);
						*p = 1;
					}
					else if (style == 2 && i == 1)
					{
						message("此帐户为管理员帐户!",10,30);
						memset(str,0,7*sizeof(char));
						mvwprintw(code,0,0,"         ");
						wrefresh(code);
						*p = 1;
					}
					else if (style == 2 && i == 0)
					{
						message("此帐户为退货帐户!",10,30);
						memset(str,0,7*sizeof(char));
						mvwprintw(code,0,0,"         ");
						wrefresh(code);
						*p = 1;
					}
					else
					{
						delwin(code);
						return 1;
					}
				}
				else
				{
					delwin(code);
					return 0;
				}
				break;
		}
	}
	return 1;
}


int get_detail_date(char *first_date,char *last_date)
{
	int flag = 1,ch = 0,result = 0;
	int y = 0,m = 0,d = 0;
	int *p = &flag;
	char fy[5] = {0},fm[3] = {0},fd[3] = {0},ly[5] = {0},lm[3] = {0},ld[3] = {0};
	WINDOW *bgb = NULL;
	WINDOW *firsty = NULL,*firstm = NULL,*firstd = NULL,*lasty = NULL,*lastm = NULL,*lastd = NULL;
	
	bgb = create_default_color_window(25,80,0,0,6);
	mvwprintw(bgb,0,33,"欢迎光临xxx超市");
	mvwprintw(bgb,5,18,"开始日期:");
	mvwprintw(bgb,7,18,"结束日期:");
	mvwprintw(bgb,5,35,"年");
	mvwprintw(bgb,5,44,"月");
	mvwprintw(bgb,5,53,"日");
	mvwprintw(bgb,7,35,"年");
	mvwprintw(bgb,7,44,"月");
	mvwprintw(bgb,7,53,"日");
	wrefresh(bgb);
	delwin(bgb);
	
	firsty = create_no_border_color_window(1,5,5,29,1);
	wrefresh(firsty);
	firstm = create_no_border_color_window(1,5,5,38,1);
	wrefresh(firstm);
	firstd = create_no_border_color_window(1,3,5,48,1);
	wrefresh(firstd);
	lasty = create_no_border_color_window(1,5,7,29,1);
	wrefresh(lasty);
	lastm = create_no_border_color_window(1,5,7,38,1);
	wrefresh(lastm);
	lastd = create_no_border_color_window(1,3,7,48,1);
	wrefresh(lastd);
	yes_or_no(20,21,0,30);
	keypad(firsty,true);
	keypad(firstm,true);
	keypad(firstd,true);
	keypad(lasty,true);
	keypad(lastm,true);
	keypad(lastd,true);
	while(1)
	{
		switch(flag)
		{
			case 1:
				date_input(firsty,fy,p,1);
				break;
			case 2:
				date_input(firstm,fm,p,2);
				break;
			case 3:
				date_input(firstd,fd,p,3);
				break;
			case 4:
				date_input(lasty,ly,p,1);
				break;
			case 5:
				date_input(lastm,lm,p,2);
				break;
			case 6:
				date_input(lastd,ld,p,3);
				break;
			default:
				result = yes_or_no(20,21,1,30);
				if (result == -1)
					*p = 1;
				else if(result == 1)
				{
					y = atoi(fy),m = atoi(fm); d = atoi(fd);
					if(m == 0 || d == 0 || y == 0)
					{
						message("开始日期不完整!",10,30);
						*p = 1;
					}
					else
					{
						sprintf(first_date,"%04d%02d%02d",y,m,d);
						y = atoi(ly),m = atoi(lm); d = atoi(ld);
						if(m == 0 || d == 0 || y == 0)
						{
							message("结束日期不完整!",10,30);
							*p = 1;
						}
						else
						{
							sprintf(last_date,"%04d%02d%02d",y,m,d);
							if(strcmp(first_date,last_date) > 0)
							{
								message("开始日期应小于或等于结束日期",10,30);
								*p = 1;
							}
							else
							{
								delwin(firsty);
								delwin(firstm);
								delwin(firstd);
								delwin(lasty);
								delwin(lastm);
								delwin(lastd);
								return 1;
							}
						}
					}
				}
				else
				{
					delwin(firsty);
					delwin(firstm);
					delwin(firstd);
					delwin(lasty);
					delwin(lastm);
					delwin(lastd);
					return 0;
				}
				break;
		}
	}
	return 1;
}


int edit_control(WINDOW *win,char *str,int *p,int style,int limit)
{
	int i = 0,ch = 0;
	i = strlen(str);
	wmove(win,0,i);
	i = *p;
	while(1)
	{
		ch = wgetch(win);
		if (ch == KEY_DOWN || ch == 10)
		{
			(*p)++;
			return 1;
		}
		else if (ch == KEY_UP&& i > 1)
		{
			(*p)--;
			return 1;
		}
		else
		{
			switch(style)
			{
				case 0:
						get_info(win,str,ch,0,limit);
					break;
				case 1:
						get_info(win,str,ch,1,limit);
					break;
				case 2:
					get_info(win,str,ch,2,limit);
				break;
				case 3:
						get_info(win,str,ch,3,limit);
					break;
				case 4:
						get_info(win,str,ch,4,limit);
					break;
				case 5:
					if (ch == KEY_UP)
						break;
					get_info(win,str,ch,5,limit);
				break;
			}
		}
	}

	return 1;
}


int date_input(WINDOW *win,char *str,int *p,int style)
{
	int i = 0,ch = 0,j = 0;
	i = strlen(str);
	wmove(win,0,i);
	j = *p;
	while(1)
	{
		ch = wgetch(win);
		if (ch == KEY_UP && j>3)
		{
				(*p) = (*p)-3;
				return 1;
		}
		switch(style)
		{
			case 1:
				if (ch == KEY_RIGHT||ch == 10)
				{
					(*p)++;
					return 1;
				}
				else if (ch == KEY_DOWN)
				{
					(*p) = (*p)+3;
					return 1;
				}
				else
					get_info(win,str,ch,2,4);
				break;
			case 2:
					if (ch == KEY_RIGHT ||ch == 10)
					{
						(*p)++;
						return 1;
					}
					else if (ch == KEY_LEFT)
					{
						(*p)--;
						return 1;
					}
					else if (ch == KEY_DOWN)
					{	
						(*p) = (*p)+3;
						return 1;
					}
					else
						get_info(win,str,ch,2,2);
				break;
			case 3:
					if (ch == KEY_LEFT)
					{
						(*p)--;
						return 1;
					}
					else if (ch == KEY_DOWN || ch == 10)
					{
						(*p)++;
						return 1;
					}
					else
						get_info(win,str,ch,2,2);
				break;
		}
	}
	return 1;
}


⌨️ 快捷键说明

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