📄 manager.c
字号:
#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 + -