📄 cashier.c
字号:
#include "extern.h"#include "struct.h"/*=========销售函数=========*/void Cashier(){ char buf[20]; int ch,temp; int scroll_no; InitLink(); struct Sell *buffer; scroll_no=1; //获取系统时间 time_t currTime; struct tm *tblock; currTime=time(NULL); tblock=localtime(&currTime); strftime(System_Time, sizeof("[2008-08-08 00:00:00]"), "%Y%m%d%H%M%S", tblock ); sell_main_win = newwin(25,80,0,0); WINDOW * win = sell_main_win; wbkgd(win,COLOR_PAIR(6)); wattron(win,COLOR_PAIR(6)); //打印出主销售窗口 box(win,0,0); mvwprintw(win,0,30,"欢迎光临沃尔玛超市"); mvwprintw(win,1,1,"收银员:"); mvwprintw(win,1,9,"%s",EMP_NAME); mvwprintw(win,1,18,"等级:"); if(3 == EMP_GRADE) { mvwprintw(win,1,24,"中级职员"); } else if(2 == EMP_GRADE) { mvwprintw(win,1,24,"高级职员"); } else { mvwprintw(win,1,24,"低级职员"); } //打印交易号 mvwprintw(win,1,36,"交易号:%s",BUSINESS_NO); //打印系统时间 mvwprintw(win,1,54,"时间:%s",System_Time); mvwhline(win,2,1,0,78); mvwprintw(win,3,1,"序号 条形码 商品名称 规格 单位 单价 数量 金额"); mvwhline(win,4,1,0,78); mvwhline(win,20,1,0,78); mvwprintw(win,21,1,"条形码:"); mvwprintw(win,21,55,"销售状态:"); mvwhline(win,22,1,0,78); mvwprintw(win,23,1,"F2:新增明细 F3:删除明细 F4:收银 F5:挂单 F6:取单 F7:撤单 F8:退货 F9:退出"); wrefresh(win); //打印输入条形码窗口 WINDOW *input_win = subwin(win,1,20,21,9); wbkgd(input_win,COLOR_PAIR(5)); //打印详细销售信息窗口 sellinfo_win = subwin(win,15,78,5,1); wbkgd(sellinfo_win,COLOR_PAIR(6)); wattron(sellinfo_win,COLOR_PAIR(6)); touchwin(win); wrefresh(sellinfo_win); scrollok(sellinfo_win,1); //要求输入条形码 keypad(input_win,TRUE); echo(); temp=0; do { ch = mvwgetch(input_win,0,0+temp); if((isprint(ch)) && (!isspace(ch))) { BAR_CODE[temp] = ch; temp++; if(temp >=19) { temp=19; } } //用户确定后,查询有没有商品存在 if(ch == '\n') { keypad(input_win,FALSE); BAR_CODE[temp] = '\0'; //判断是否有相同的商品,如果有,数量+1,金额=数量*单价 buffer = IsTheSameMer(BAR_CODE); if(buffer != NULL) { buffer->mer_amount = buffer->mer_amount+1; buffer->total_money = buffer->mer_amount * buffer->sell_price; PrintSellInfo(); SELL_STATE = 1; mvwprintw(win,21,65,"正常"); touchwin(win); wrefresh(win); wrefresh(input_win); wrefresh(sellinfo_win); wclrtoeol(input_win);//清除输入的条形码数据 temp=0; memset(BAR_CODE,0,sizeof(BAR_CODE)); keypad(input_win,TRUE); continue; } //如果返回1,打印商品信息 if(SearchBarCode(BAR_CODE,MER_NAME,MER_UNIT,MER_SPEC,&MER_PRICE,&MER_STOCK)) { MER_AMOUNT = 1; TOTAL_MONEY = MER_PRICE * MER_AMOUNT; //如果大于15行,滚屏 if(scroll_no>15) { scroll(sellinfo_win); scroll_no--; } //保存数据到结构体 InputDateToStruct(BAR_CODE,MER_NAME,MER_UNIT,MER_SPEC,MER_PRICE,MER_AMOUNT,TOTAL_MONEY); PrintSellInfo();//调用打印信息函数 SELL_STATE = 1; mvwprintw(win,21,65,"正常"); touchwin(win); wrefresh(win); wrefresh(input_win); wrefresh(sellinfo_win); wclrtoeol(input_win);//清除输入的条形码数据 temp=0; memset(BAR_CODE,0,sizeof(BAR_CODE)); keypad(input_win,TRUE); scroll_no++; continue; } //跳出提示,商品不存在 else { ShowMessage(" 商品不存在,请重新输入"); wclrtoeol(input_win);//清除输入的条形码数据 temp=0; memset(BAR_CODE,0,sizeof(BAR_CODE)); keypad(input_win,TRUE); touchwin(win); wrefresh(win); continue; } } else if(ch == KEY_BACKSPACE) { if(temp > 0) { --temp; wmove(input_win,0,0+temp); wclrtoeol(input_win); } else { wmove(input_win,0,0); wclrtoeol(input_win); } } //输入F2,新增明细,AddDetail() if(ch == KEY_F(2)) { AddDetail(); SELL_STATE = 1; mvwprintw(win,21,65,"正常"); touchwin(win); wrefresh(win); wrefresh(input_win); wrefresh(sellinfo_win); wclrtoeol(input_win);//清除输入的条形码数据 temp=0; memset(BAR_CODE,0,sizeof(BAR_CODE)); keypad(input_win,TRUE); scroll_no++; continue; } //输入F3,删除明细 if(ch == KEY_F(3)) { DelDetail(); } //输入F4,收银 if(ch == KEY_F(4)) { GetMoney(); continue; } //输入F5,挂单 if(ch == KEY_F(5)) { Hang_List();//挂单 } //输入F6,取单 if(ch == KEY_F(6)) { Take_List();//取单 } //输入F7,撤单 if(ch == KEY_F(7)) { CancelOrder(); } //输入F8,退货 if(ch == KEY_F(8)) { Good_Return(); } //输入F9,退出 if(ch == KEY_F(9)) { //判断是否有挂单,如果有的话,不允许退出 if(1 == Hang_List_State) { ShowMessage(" 还有单号没有结账,不允许退出"); touchwin(sell_main_win); wrefresh(sell_main_win); continue; } if(1 == SELL_STATE) { ShowMessage(" 还有单号没有结账,不允许退出"); touchwin(sell_main_win); wrefresh(sell_main_win); continue; } //退出系统 wclear(win); wrefresh(win); ShowMessage(" 正在退出......"); delwin(win); endwin(); exit(0); } else { continue; } }while(1); noecho(); endwin(); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -