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

📄 background.c

📁 福建博洋教育C/C++软件项目实战:POS收银系统
💻 C
📖 第 1 页 / 共 5 页
字号:
	mvwprintw(dialog[0],16,13,"折扣:");
	mvwprintw(dialog[0],18,13,"数量:");
	wrefresh(dialog[0]);
	WINDOW *txtbox[8] = {NULL};
	char code[9] = "CN";
	char name[31] = {'\0'};
	char unit[17] = {'\0'};
	char spec[17] = {'\0'};
	char price[12] = {'\0'};
	char purchasePrice[12] = {'\0'};
	char discount[5] = {'\0'};
	char count[6] = {'\0'};
	Trim(pro_info->bar_code);
	Trim(pro_info->product_name);
	Trim(pro_info->unit);
	Trim(pro_info->spec);
	strcpy(code, pro_info->bar_code);
	strcpy(name, pro_info->product_name);
	strcpy(unit, pro_info->unit);
	strcpy(spec, pro_info->spec);
	sprintf(price, "%.2f", pro_info->sale_price);
	sprintf(purchasePrice, "%.2f", pro_info->purchase_price);
	sprintf(discount, "%.2f", pro_info->discount);
	sprintf(count, "%d", pro_info->count);
	int cnt[8]={0};
	int col[8]={0};
	int row[8]={0};	
	cnt[0]=row[0]=strlen(code);
	cnt[1]=row[1]=strlen(name);
	cnt[2]=row[2]=strlen(unit);
	cnt[3]=row[3]=strlen(spec);
	cnt[4]=row[4]=strlen(price);
	cnt[5]=row[5]=strlen(purchasePrice);
	cnt[6]=row[6]=strlen(discount);
	cnt[7]=row[7]=strlen(count);	
	int i=0;
	int ch=0;
	int res=0;
	for (i=0; i<8; i++)
	{
		txtbox[i]=create_win(1,42,4+2*i,20);
		keypad(txtbox[i],TRUE);
		wbkgd(txtbox[i],COLOR_PAIR(1));
		wrefresh(txtbox[i]);		
	}
	wprintw(txtbox[0],code);
	wprintw(txtbox[1],name);
	wprintw(txtbox[2],unit);
	wprintw(txtbox[3],spec);
	wprintw(txtbox[4],price);
	wprintw(txtbox[5],purchasePrice);
	wprintw(txtbox[6],discount);
	wprintw(txtbox[7],count);
	for (i=0; i<8; i++)
	{		
		wrefresh(txtbox[i]);
	}
	ENSURE:	
		wattron(dialog[1],A_REVERSE);
		mvwprintw(dialog[1],1,2, "确定");		
		wrefresh(dialog[1]);
		  
		while (1)
		{
			ch=wgetch(dialog[1]);
			switch (ch)
			{		
			case KEY_F(1):
				return;				
			case KEY_RIGHT:
				wattroff(dialog[1],A_REVERSE);
				mvwprintw(dialog[1],1,2, "确定");
				wrefresh(dialog[1]);			
				goto CANCEL;
			case '\n':	
				//删除商品表中的商品数据	
				delete_product(pro_info);
				return 1;						
			}			
		}
	CANCEL:	
		wattron(dialog[2],A_REVERSE);
		mvwprintw(dialog[2],1,2, "取消");		
		wrefresh(dialog[2]);
		  
		while (1)
		{
			ch=wgetch(dialog[2]);
			switch (ch)
			{
			case KEY_F(1):
				return 0;	
			case KEY_LEFT:		
				wattroff(dialog[2],A_REVERSE);
				mvwprintw(dialog[2],1,2, "取消");
				wrefresh(dialog[2]);
				goto ENSURE;		
			case '\n':
				return 0;						
			}
		}	
}
/*=============================================================
function:帐户管理主窗口
==============================================================*/
void manage_account_main_win()
{
	WINDOW *manage;
	manage=create_win(24,80,0,0);
	wbkgd(manage,COLOR_PAIR(5));
	keypad(manage,TRUE);
	wrefresh(manage);
	char title[40]="帐户管理";
	mvwprintw(manage,5,36, title);
	char menu[5][40]={
		"1.查询帐户",
		"2.添加帐户",
		"3.修改帐户",
		"4.删除帐户",
		"0.返回后台管理界面"
	};
	int i=0;
	int tag=0;
	int ch;
	while (1)
	{
		for (i=0; i<5; i++ )
		{
			if (i==tag)
			{
				wattron(manage,A_REVERSE);
			}
			mvwprintw(manage,9+2*i,33, menu[i]);
			if (i==tag)
			{
				wattroff(manage,A_REVERSE);
			}
		}
		touchwin(manage);
		wrefresh(manage);		
		ch=wgetch(manage);
		switch (ch)
		{
		case '1':
			query_account_win();
			tag=0;
			break;
		case '2':		
			add_account_win();
			tag=1;
			break;
		case '3':
			modify_account_win();
			tag=2;
			break;
		case '4':
			delete_account_win();
			tag=3;			
			break;		
		case '0':
			return;	
		case KEY_UP:
			if (tag>0)
			{
				tag--;
			}
			break;
		case KEY_DOWN:
			if (tag<4)
			{
				tag++;
			}
			break;	
		case '\n':
			switch (tag)
			{
			case 0:
				query_account_win();			
				break;
			case 1:		
				add_account_win();			
				break;
			case 2:
				modify_account_win();			
				break;
			case 3:
				delete_account_win();					
				break;		
			case 4:
				return;			
			}
			break;
		}
	}
}
/*===================================================
function:查询帐户窗口
===================================================*/
void query_account_win()
{
	int ch;
	WINDOW *win;
	win=create_win(24,80,0,0);
	keypad(win,TRUE);
	wbkgd(win,COLOR_PAIR(5));
	box(win,0,0);
	print_line(win,4);
	print_line(win,6);
	print_line(win,20);
	mvwprintw(win,0,32,"欢迎光临XXX超市");		
	mvwprintw(win,2,36,"查询帐户");
	mvwprintw(win,5,1,"%-6s%-7s%-15s%-13s%-9s%-28s","序列","帐户ID","帐户名","帐户密码","帐户类型","备注");	
	mvwprintw(win,21,4,"第一页(HOME)     上一页(PAGEUP)      下一页(PAGEDOWN)      最后页(END)");	
	mvwprintw(win,22,9,"当前第[     ]页          跳转第[      ]页      退出[F1]");	
	wrefresh(win);	
	char pageNumber[4]={'\0'};
	int cnt=0;
	int row=43;
	int col=22;
	//获得所有帐户信息
	salelist.clear_link(&salelist);
	int res=get_all_staff();
	if (res==-1)
	{
		Message("数据库出错",10,40);
		endwin();
		exit(1);
	}
	if (salelist.count==0)
	{
		Message("员工表无数据",10,40);
		endwin();
		exit(1);
	}
	WINDOW *print_window=NULL;
	print_window=create_win(13,78,7,1);
	keypad(print_window,TRUE);
	wbkgd(print_window,COLOR_PAIR(5));
	int cur=1;
	mvwprintw(win,22,16,"%3d",cur);
	wrefresh(win);
	//打印员工链表
	print_staff_info(print_window,cur);
	wrefresh(print_window);
	while (1)
	{
		wmove(win,22,43);
		ch=wgetch(win);	
		switch (ch)
		{
		case KEY_BACKSPACE:  //按退格键盘
			if (cnt>0)
			{
				getyx(win,col,row);
				mvwaddch(win,col,--row,' ');							
				pageNumber[--cnt]='\0';				
				wmove(win,col,row);
				wrefresh(win);	
			}							
			break;
		case KEY_PPAGE:
			if (cur>1)
			{
				mvwprintw(win,22,16,"%3d",cur-1);
				wrefresh(win);
				print_staff_info(print_window,--cur);			
				wrefresh(print_window);
			}
			break;
		case KEY_NPAGE:
			if ( cur<(salelist.count+12)/13 )
			{
				mvwprintw(win,22,16,"%3d",cur+1);
				wrefresh(win);
				print_staff_info(print_window,++cur);			
				wrefresh(print_window);
			}
			break;
		case KEY_HOME:
			cur=1;
			mvwprintw(win,22,16,"%3d",cur);
			wrefresh(win);
			print_staff_info(print_window,cur);	
			wrefresh(print_window);
			break;
		case KEY_END:
			cur=(salelist.count+12)/13;
			mvwprintw(win,22,16,"%3d",cur);
			wrefresh(win);
			print_staff_info(print_window,cur);
			wrefresh(print_window);
			break;		
		case KEY_F(1):				
			return;	
		case '\n':		
			mvwprintw(win,22,43,"    ");			
			wrefresh(win);
			cur = atoi(pageNumber);
			pageNumber[0] = '\0';
			row=43;		
			cnt=0;
			if ( cur==0 )
			{
				break;
			}
			if ( cur>(salelist.count+12)/13 )
			{	
				cur=(salelist.count+12)/13;
				mvwprintw(win,22,16,"%3d",cur);
				wrefresh(win);
				print_staff_info(print_window,cur);
				wrefresh(print_window);
			}			
			else
			{
				mvwprintw(win,22,16,"%3d",cur);
				wrefresh(win);
				print_staff_info(print_window,cur);
				wrefresh(print_window);
			}
			break;
		default:
			if ( (ch>='1'&&ch<='9')||(ch=='0'&&cnt!=0) )
			{	
				if (cnt>=3)
				{
					break;
				}
				mvwaddch(win,col,row++,ch);
				pageNumber[cnt]=ch;
				pageNumber[++cnt]='\0';			
				wrefresh(win);				
				break;
			}
		}	
		wrefresh(win);
	}	
}

/*=====================================================
function:打印数据库帐户信息
=====================================================*/
void print_staff_info(WINDOW *print_window,int cur)
{
	wclear(print_window);
	if (salelist.count==0)
	{
		return;
	}
	NODE *n=NULL;
	STAFF *staff_info=NULL;
	int i=1;
	for ( i+13*(cur-1); i<=13*cur; i++)
	{		
		if (i+13*(cur-1)==salelist.count+1)
		{
			break;
		}
		n=salelist.get_node_by_index(&salelist,i+13*(cur-1));	
		staff_info=(STAFF *)n->data;				
		if (staff_info!=NULL)
		{		
			mvwprintw(print_window,i-1,0,"%-6d%-7s%-15s%-13s%-9d%-28s",
			i+13*(cur-1),staff_info->staff_id, staff_info->staff_name, staff_info->staff_pwd, staff_info->staff_type, 
			staff_info->remark);			
		}	
		if (i==13*cur)
		{
			break;
		}
	}
	wrefresh(print_window);
}

/*====================================================
function:添加帐户窗口
====================================================*/
void add_account_win()
{	
	WINDOW *dialog[3]={NULL};
	print_dialog_box(24,80,"欢迎光临XXX超市",5,dialog);
	keypad(dialog[1],TRUE);
	keypad(dialog[2],TRUE);
	mvwprintw(dialog[0],3,36,"添加帐户");
	mvwprintw(dialog[0],6,11,"帐户ID:");
	mvwprintw(dialog[0],8,11,"用户名:");
	mvwprintw(dialog[0],10,13,"密码:");
	mvwprintw(dialog[0],12,13,"身份:");
	mvwprintw(dialog[0],14,13,"备注:");
	wrefresh(dialog[0]);
	WINDOW *txtbox[5] = {NULL};
	char account[7] = {'\0'};
	char name[16] = {'\0'};
	char password[17] = {'\0'};
	char type[5] = {'\0'};
	char remark[31] = {'\0'};
	int cnt[5]={0};
	int col[5]={0};
	int row[5]={0};	
	int i=0;
	int ch=0;
	int res=0;	
	for (i=0; i<5; i++)
	{
		txtbox[i]=create_win(1,42,6+2*i,20);
		keypad(txtbox[i],TRUE);
		wbkgd(txtbox[i],COLOR_PAIR(1));
		wrefresh(txtbox[i]);
	}
	scr_dump("addaccount.scr");
	//帐户ID窗口
	FIRST:		
		wmove(txtbox[0],0,0);
		wprintw(txtbox[0],"        ");
		wmove(txtbox[0],0,0);
		wprintw(txtbox[0],account);	
		wrefresh(txtbox[0]);
		while(1)
		{
			ch=wgetch(txtbox[0]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[0]>0)
				{
					getyx(txtbox[0],col[0],row[0]);
					mvwaddch(txtbox[0],col[0],--row[0],' ');			
					account[--cnt[0]]='\0';
					wmove(txtbox[0],0,row[0]);
					wrefresh(txtbox[0]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_DOWN:
			case '\n':
				goto SECOND;
			default:
				if (ch>='0'&&ch<='9' && cnt[0]<6)
				{
					row[0]++;
					waddch(txtbox[0],ch);
					account[cnt[0]]=ch;
					account[++cnt[0]]='\0';					
					wrefresh(txtbox[0]);				
					break;
				}	
			}
		}	
		//帐户姓名窗口
	SECOND:
		wmove(txtbox[1],0,0);
		wprintw(txtbox[1],name);	
		wrefresh(txtbox[1]);
		while(1)
		{
			ch=wgetch(txtbox[1]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[1]>0)
				{
					getyx(txtbox[1],col[1],row[1]);
					mvwaddch(txtbox[1],col[1],--row[1],' ');			
					name[--cnt[1]]='\0';
					wmove(txtbox[1],0,row[1]);
					wrefresh(txtbox[1]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto FIRST;			
			case KEY_DOWN:
			case '\n':
				goto THIRD;
			default:
				if ( cnt[1]<15 )
				{
					row[1]++;
					waddch(txtbox[1],ch);
					name[cnt[1]]=ch;
					name[++cnt[1]]='\0';					
					wrefresh(txtbox[1]);				
					break;
				}	
			}
		}
		//帐户密码窗口,根据需求允许输入12位
	THIRD:
		wmove(txtbox[2],0,0);
		wprintw(txtbox[2],password);	
		wrefresh(txtbox[2]);
		while(1)
		{
			ch=wgetch(txtbox[2]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[2]>0)
				{
					getyx(txtbox[2],col[2],row[2]);
					mvwaddch(txtbox[2],col[2],--row[2],' ');			
					password[--cnt[2]]='\0';
					wmove(txtbox[2],0,row[2]);
					wrefresh(txtbox[2]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto SECOND;
				break;
			case KEY_DOWN:
			case '\n':
				goto FOUR;
			default:
				if ( cnt[2]<12 && (ch>='0'&&ch<='9') || (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') )
				{
					row[2]++;
					waddch(txtbox[2],ch);
					password[cnt[2]]=ch;
					password[++cnt[2]]='\0';					
					wrefresh(txtbox[2]);				
					break;
				}	
			}
		}
		//帐户类型窗口,允许输入0,1,2,根据这些来判断帐户类型
	FOUR:
		wmove(txtbox[3],0,0);
		wprintw(txtbox[3],type);	
		wrefresh(txtbox[3]);
		while(1)
		{
			ch=wgetch(txtbox[3]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[3]>0)
				{
					getyx(txtbox[3],col[3],row[3]);
					mvwaddch(txtbox[3],col[3],--row[3],' ');			
					type[--cnt[3]]='\0';
					wmove(txtbox[3],0,row[3]);
					wrefresh(txtbox[3]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto THIRD;			
			case KEY_DOWN:
			case '\n':
				goto FIVE;
			default:
				if ( (ch>='0'&&ch<='2') && cnt[3]<1 )
				{
					row[3]++;
					waddch(txtbox[3],ch);
					type[cnt[3]]=ch;
					type[++cnt[3]]='\0';					
					wrefresh(txtbox[3]);				
					break;
				}	
			}
		}
		//帐户备注窗口
	FIVE:
		wmove(txtbox[4],0,0);
		wprintw(txtbox[4],remark);	
		wrefresh(txtbox[4]);	
		while(1)
		{
			ch=wgetch(txtbox[4]);			
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[4]>0)
				{
					
					getyx(txtbox[4],col[4],row[4]);
					mvwaddch(txtbox[4],col[4],--row[4],' ');			

⌨️ 快捷键说明

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