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

📄 background.c

📁 福建博洋教育C/C++软件项目实战:POS收银系统
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "background.h"
#include "ncurlib.h"
#include <ncurses.h>
#include <stdlib.h>
#include "public.h"
#include "link.h"
#include "oradb.h"
/*=======================================================
function:后台管理主窗口
=========================================================*/
void manage_main_win()
{
	init_ncurses();
	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[4][40]={
		"1.商品管理",
		"2.账户管理",
		"3.销售记录管理",
		"0.返回登录界面"
	};
	int i=0;
	int tag=0;
	while (1)
	{
		for (i=0; i<4; i++ )
		{
			if (i==tag)
			{
				wattron(manage,A_REVERSE);
			}
			mvwprintw(manage,9+2*i,34, menu[i]);
			if (i==tag)
			{
				wattroff(manage,A_REVERSE);
			}
		}
		touchwin(manage);
		wrefresh(manage);
		
		int i=0;
		int ch;
		ch=wgetch(manage);
		switch (ch)
		{
		case '1':
			manage_commodity_main_win();	
			tag=0;
			break;
		case '2':
			manage_account_main_win();
			tag=1;
			break;				
		case '3':
			manage_sale_main_win();
			tag=2;
			break;
		case '0':	
			return;
		case KEY_UP:
			if (tag>0)
			{
				tag--;
			}
			break;
		case KEY_DOWN:
			if (tag<3)
			{
				tag++;
			}
			break;	
		case '\n':
			switch (tag)
			{
			case 0:
				manage_commodity_main_win();						
				break;
			case 1:
				manage_account_main_win();
				break;				
			case 2:
				manage_sale_main_win();
				break;
			case 3:
				log_in_win();
				return;
				break;
			}
			break;
		}
	}
}
/*====================================================
function:商品管理主窗口
====================================================*/
void manage_commodity_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;
	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);	
		int i=0;
		int ch;
		ch=wgetch(manage);
		switch (ch)
		{
			case '1':
				query_commodity_win();			
				tag=0;
				break;
			case '2':		
				add_commodity_win();			
				tag=1;
				break;
			case '3':
				modify_commodity_win();				
				tag=2;
				break;
			case '4':
				delete_commodity_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_commodity_win();				
				break;
			case 1:		
				add_commodity_win();			
				break;
			case 2:
				modify_commodity_win();			
				break;
			case 3:
				delete_commodity_win();						
				break;		
			case 4:
				return;			
			}
			break;
		}
	}
}
/*=========================================================
function:查询商品窗口
=========================================================*/
void query_commodity_win()
{
	int ch;
	WINDOW *win;
	win=newwin(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,"%-5s%-9s%-20s%-6s%-6s%-10s%-10s%-6s%-6s","序号","条形码","商品名","单位","规格","销售价格","进货价格","数量","折扣");
	mvwprintw(win,21,4,"第一页(HOME)     上一页(PAGEUP)      下一页(PAGEDOWN)      最后页(END)");	
	mvwprintw(win,22,9,"当前第[     ]页          跳转第[     ]页      退出[F1]");	
	wrefresh(win);	
	salelist.clear_link(&salelist);
	int res=get_all_product();
	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_product_info(print_window,cur);
	wrefresh(print_window);
	char pageNumber[4]={'\0'};
	int cnt=0;
	int row=43;
	int col=22;
	while (1)
	{
		wmove(win,col,row);
		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_product_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_product_info(print_window,++cur);			
				wrefresh(print_window);
			}
			break;
		case KEY_HOME:
			cur=1;
			mvwprintw(win,22,16,"%3d",cur);
			wrefresh(win);
			print_product_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_product_info(print_window,cur);
			wrefresh(print_window);
			break;		
		case KEY_F(1):			
			return;	
		case '\n':
			mvwaddch(win,22,43,' ');
			mvwaddch(win,22,44,' ');
			mvwaddch(win,22,45,' ');
			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_product_info(print_window,cur);
				wrefresh(print_window);
			}			
			else
			{
				mvwprintw(win,22,16,"%3d",cur);
				wrefresh(win);
				print_product_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_product_info(WINDOW *print_window,int cur)
{
	wclear(print_window);
	if (salelist.count==0)
	{
		return;
	}
	NODE* n=NULL;
	PRODUCT *pro_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));			
		pro_info=(PRODUCT *)n->data;					
		if (pro_info!=NULL)
		{		
			mvwprintw(print_window,i-1,0,"%-5d%-9s%-20s%-6s%-6s%-10.2f%-10.2f%-6d%-6.2f",
			i+13*(cur-1),pro_info->bar_code, pro_info->product_name, pro_info->unit, pro_info->spec,  
			pro_info->sale_price, pro_info->purchase_price, pro_info->count, pro_info->discount);		
		}	
		if (i==13*cur)
		{
			break;
		}
	}
	wrefresh(print_window);
}
/*======================================================
function:添加商品窗口
======================================================*/
void add_commodity_win()
{
	WINDOW *dialog[3]={NULL};
	print_dialog_box(24,80,"欢迎光临XXX超市",5,dialog);
	keypad(dialog[1],TRUE);
	keypad(dialog[2],TRUE);
	mvwprintw(dialog[0],2,36,"添加商品");
	mvwprintw(dialog[0],4,11,"条形码:");
	mvwprintw(dialog[0],6,13,"名称:");
	mvwprintw(dialog[0],8,13,"单位:");
	mvwprintw(dialog[0],10,13,"规格:");
	mvwprintw(dialog[0],12,13,"售价:");
	mvwprintw(dialog[0],14,9,"进货价格:");
	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'};
	int cnt[8]={0};
	int col[8]={0};
	int row[8]={0};	
	int i=0;
	int ch=0;
	int res=0;
	cnt[0]=2;
	row[0]=2;	
	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]);
	}
	//商品条形码窗口
	scr_dump("addcommodity.scr");
	FIRST:		
		wmove(txtbox[0],0,0);
		wprintw(txtbox[0],code);	
		wrefresh(txtbox[0]);
		while(1)
		{
			ch=wgetch(txtbox[0]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[0]>2)
				{
					getyx(txtbox[0],col[0],row[0]);
					mvwaddch(txtbox[0],col[0],--row[0],' ');			
					code[--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]<8)
				{
					row[0]++;
					waddch(txtbox[0],ch);
					code[cnt[0]]=ch;
					code[++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]<30 )
				{
					row[1]++;
					waddch(txtbox[1],ch);
					name[cnt[1]]=ch;
					name[++cnt[1]]='\0';					
					wrefresh(txtbox[1]);				
					break;
				}	
			}
		}
		//商品单位窗口
	THIRD:
		wmove(txtbox[2],0,0);
		wprintw(txtbox[2],unit);	
		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],' ');			
					unit[--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]<16 )
				{
					row[2]++;
					waddch(txtbox[2],ch);
					unit[cnt[2]]=ch;
					unit[++cnt[2]]='\0';					
					wrefresh(txtbox[2]);				
					break;
				}	
			}
		}
		//商品规格窗口
	FOUR:
		wmove(txtbox[3],0,0);
		wprintw(txtbox[3],spec);	
		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],' ');			
					spec[--cnt[3]]='\0';
					wmove(txtbox[3],0,row[3]);
					wrefresh(txtbox[3]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto THIRD;
				break;
			case KEY_DOWN:
			case '\n':
				goto FIVE;
			default:
				if ( cnt[3]<16 )
				{
					row[3]++;
					waddch(txtbox[3],ch);
					spec[cnt[3]]=ch;
					spec[++cnt[3]]='\0';					
					wrefresh(txtbox[3]);				
					break;
				}	
			}
		}
		//商品售价窗口
	FIVE:
		wmove(txtbox[4],0,0);
		wprintw(txtbox[4],price);	
		wrefresh(txtbox[4]);
		int radixPoint=0;
		while(1)
		{
			ch=wgetch(txtbox[4]);			
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[4]>0)
				{
					if (code[cnt[4]-1]=='.')
					{

⌨️ 快捷键说明

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