📄 accountmanager.c
字号:
//////////////////////////////////////////////////////////////////////////
// 帐户管理
//////////////////////////////////////////////////////////////////////////
#include <ncurses.h>
#include <stdlib.h>
#include "PosSystem.h"
#include "OracleDB.h"
//帐户管理窗品
//返回0为返回后台管理界面
//返回1为进入查询帐户
//返回2为进入添加帐户
//返回3为进入修改帐户
//返回4为进入删除帐户
int AccountManagerWin()
{
int ch,choose=0;
//后台管理界面的背景窗口
WINDOW * AccountManagerWin=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(AccountManagerWin,5,"帐户管理");
char menu1[]="1.查询帐户";
char menu2[]="2.添加帐户";
char menu3[]="3.修改帐户";
char menu4[]="4.删除帐户";
char menu5[]="0.返回后台管理界面";
mvwprintw(AccountManagerWin,9,35,menu1);
mvwprintw(AccountManagerWin,11,35,menu2);
mvwprintw(AccountManagerWin,13,35,menu3);
mvwprintw(AccountManagerWin,15,35,menu4);
mvwprintw(AccountManagerWin,17,35,menu5);
wrefresh(AccountManagerWin);
curs_set(0);//参数0为不显示光标 如参数为1时为显示
while(1)
{
SearchCommodity://查询商品
while(1)
{
StringRevers(AccountManagerWin,9,35,menu1);
ch=GetChar(AccountManagerWin,9,35);
switch(ch)
{
case KEY_DOWN:
mvwprintw(AccountManagerWin,9,35,menu1);
goto AddCommodity;
break;
case '\n':
choose=1;
goto exit;
}
}
AddCommodity://添加商品
while(1)
{
StringRevers(AccountManagerWin,11,35,menu2);
ch=GetChar(AccountManagerWin,11,35);
switch(ch)
{
case KEY_UP:
mvwprintw(AccountManagerWin,11,35,menu2);
goto SearchCommodity;
break;
case KEY_DOWN:
mvwprintw(AccountManagerWin,11,35,menu2);
goto ModifyCommodity;
break;
case '\n':
choose=2;
goto exit;
}
}
ModifyCommodity://修改商品
while(1)
{
StringRevers(AccountManagerWin,13,35,menu3);
ch=GetChar(AccountManagerWin,13,35);
switch(ch)
{
case KEY_UP:
mvwprintw(AccountManagerWin,13,35,menu3);
goto AddCommodity;
break;
case KEY_DOWN:
mvwprintw(AccountManagerWin,13,35,menu3);
goto DelCommodity;
break;
case '\n':
choose=3;
goto exit;
}
}
DelCommodity://删除商品
while(1)
{
StringRevers(AccountManagerWin,15,35,menu4);
ch=GetChar(AccountManagerWin,15,35);
switch(ch)
{
case KEY_UP:
mvwprintw(AccountManagerWin,15,35,menu4);
goto ModifyCommodity;
break;
case KEY_DOWN:
mvwprintw(AccountManagerWin,15,35,menu4);
goto ReturnToBackManager;
break;
case '\n':
choose=4;
goto exit;
}
}
ReturnToBackManager:// 退出进入后台界面
while(1)
{
StringRevers(AccountManagerWin,17,35,menu5);
ch=GetChar(AccountManagerWin,17,35);
switch(ch)
{
case KEY_UP:
mvwprintw(AccountManagerWin,17,35,menu5);
goto DelCommodity;
break;
case '\n':
choose=0;
goto exit;
}
}
}
exit:
DestroyWindow(AccountManagerWin);
curs_set(1);//参数0为不显示光标 如参数为1时为显示
return choose;
}
//添加帐户窗口
int AddAccountWin()
{
int ch,result=0;
//帐户管理界面的背景窗口
WINDOW * AddAccountWindow=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(AddAccountWindow,0,"欢迎光临XXX超市");
StringCenterPrint(AddAccountWindow,3,"添加帐户");
char IDStr[10]={'\0'};//存放帐户ID
char nameStr[20]={'\0'};//存放帐户名称
char passwordStr[20]={'\0'};//存放密码
char typeStr[30]={'\0'};//存放身份
char remarkStr[40]={'\0'};//存放备注
mvwprintw(AddAccountWindow,6,12,"帐户ID:");
mvwprintw(AddAccountWindow,8,12,"用户名:");
mvwprintw(AddAccountWindow,10,14,"密码:");
mvwprintw(AddAccountWindow,12,14,"身份:");
mvwprintw(AddAccountWindow,14,14,"备注:");
wrefresh(AddAccountWindow);
//输入框
WINDOW * ID=CreateWindow(1,45,6,21,No,WHITE_BLACK);//帐户ID窗口
WINDOW * name=CreateWindow(1,45,8,21,No,WHITE_BLACK);//帐户名称窗口
WINDOW * password=CreateWindow(1,45,10,21,No,WHITE_BLACK);//密码窗口
WINDOW * type=CreateWindow(1,45,12,21,No,WHITE_BLACK);//身份窗口
WINDOW * remark=CreateWindow(1,45,14,21,No,WHITE_BLACK);//备注窗口
//刷新输入框
wrefresh(ID);
wrefresh(name);
wrefresh(password);
wrefresh(type);
wrefresh(remark);
WINDOW * ok_button=CreateWindow(3,8,20,25,Yes,RED_WHITE);
mvwprintw(ok_button,1,2,"确定");
wrefresh(ok_button);
WINDOW * exit_button=CreateWindow(3,8,20,45,Yes,RED_WHITE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
//wgetch(AddCommodityWin);
curs_set(1);//参数0为不显示光标 如参数为1时为显示
while(1)
{
ID://帐户ID
while(1)
{
ch=GetNumber(ID,0,0,IDStr,6);
switch(ch)
{
case KEY_DOWN:
case '\n':
goto name;
break;
}
}
name://帐户名
while(1)
{
ch=GetString(name,0,0,nameStr,15);
switch(ch)
{
case KEY_UP:
goto ID;
break;
case KEY_DOWN:
case '\n':
goto password;
break;
}
}
password://密码
while(1)
{
ch=GetString(password,0,0,passwordStr,16);
switch(ch)
{
case KEY_UP:
goto name;
break;
case KEY_DOWN:
case '\n':
goto type;
break;
}
}
type://身份
while(1)
{
ch=GetNumber(type,0,0,typeStr,1);
switch(ch)
{
case KEY_UP:
goto password;
break;
case KEY_DOWN:
case '\n':
goto remark;
break;
}
}
remark://备注
while(1)
{
ch=GetNumber(remark,0,0,remarkStr,29);
switch(ch)
{
case KEY_UP:
goto type;
break;
case KEY_DOWN:
case '\n':
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
}
}
ok_button:// 确定按钮
while(1)
{
ch=GetChar(ok_button,1,6);
//ch=GetChar(ok_button,0,0);
switch(ch)
{
//case KEY_LEFT:
case KEY_UP://转上面
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto remark;
break;
case KEY_RIGHT:
case KEY_DOWN:
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
//开启退出按钮的回显
wmove(exit_button,1,2);
wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
goto exit_button;
break;
case '\n':
{
int isExist;
if(isNull(IDStr))
{
Message_Box(10,30,10,10,RED_BLACK,"提示","员工ID不能为空");
goto ID;
}
isExist=search_staff_id_exist(IDStr);
if(isExist==0)//为0代表员工号存在
{
Message_Box(10,30,10,10,RED_BLACK,"提示","该员工号以存在请重新输入");
goto ID;
break;
}
if(isNull(nameStr))
{
Message_Box(10,30,10,10,RED_BLACK,"提示","用户名称不能为空");
goto name;
}
if(isNull(passwordStr))
{
Message_Box(10,30,10,10,RED_BLACK,"提示","用户密码不能为空");
goto password;
}
if(strlen(passwordStr)<6 || strlen(passwordStr)>12)
{
Message_Box(10,36,10,10,RED_BLACK,"提示","用户密码只能是6-12个字符");
goto password;
}
if(isNull(typeStr))
{
Message_Box(10,30,10,10,RED_BLACK,"提示","身份类型不能为空");
goto type;
}
if(atoi(typeStr)<0 || atoi(typeStr)>2)
{
Message_Box(10,30,10,10,RED_BLACK,"提示","身份类型只能是0,1,2");
goto type;
}
if(isNull(remarkStr))
{
sprintf(remarkStr," ");
}
Insert_Into_Staff(IDStr,nameStr,passwordStr,atoi(typeStr),remarkStr);
}
result=0;
goto exit;
}
}
exit_button://退出按钮
while(1)
{
ch=GetChar(exit_button,1,6);
switch(ch)
{
case KEY_UP:
case KEY_LEFT://转上面
//关掉'退出'回显
wattroff(exit_button,A_REVERSE);
wmove(exit_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
case '\n':
result=1;//返回1为退出
goto exit;
}
}
}
exit:
DestroyWindow(AddAccountWindow);
DestroyWindow(ID);
DestroyWindow(name);
DestroyWindow(password);
DestroyWindow(type);
DestroyWindow(remark);
DestroyWindow(ok_button);
DestroyWindow(exit_button);
wclear(stdscr);
return result;
}
//帐户ID输入窗口
int AccountIDInputWin(char * title,char * staff_id,staff * pStaff)
{
int ch,result=0;
//帐户管理界面的背景窗口
WINDOW * AccountIDInputWin=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(AccountIDInputWin,0,"欢迎光临XXX超市");
StringCenterPrint(AccountIDInputWin,3,title);
//char IDStr[10]={'0'};//存放帐户ID
mvwprintw(AccountIDInputWin,10,12,"帐户ID:");
wrefresh(AccountIDInputWin);
//输入框
WINDOW * ID=CreateWindow(1,45,10,21,No,WHITE_BLACK);//帐户ID窗口
//刷新输入框
wrefresh(ID);
WINDOW * ok_button=CreateWindow(3,8,20,25,Yes,RED_WHITE);
mvwprintw(ok_button,1,2,"确定");
wrefresh(ok_button);
WINDOW * exit_button=CreateWindow(3,8,20,45,Yes,RED_WHITE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
//wgetch(AddCommodityWin);
curs_set(1);//参数0为不显示光标 如参数为1时为显示
while(1)
{
ID://帐户ID
while(1)
{
ch=GetNumber(ID,0,0,staff_id,6);
switch(ch)
{
case KEY_DOWN:
case '\n':
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
}
}
ok_button:// 确定按钮
while(1)
{
ch=GetChar(ok_button,1,6);
//ch=GetChar(ok_button,0,0);
switch(ch)
{
//case KEY_LEFT:
case KEY_UP://转上面
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ID;
break;
case KEY_RIGHT:
case KEY_DOWN:
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
//开启退出按钮的回显
wmove(exit_button,1,2);
wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
goto exit_button;
break;
case '\n':
{
int isExist;
isExist=Get_Staff_By_ID(staff_id,pStaff);
//mvwprintw(AccountIDInputWin,0,0,staff_id);
//wrefresh(AccountIDInputWin);
if(isExist!=0)
{
Message_Box(10,30,10,10,RED_BLACK,"提示","输入的员工ID不存在");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
wclear(AccountIDInputWin);
wrefresh(AccountIDInputWin);
goto ID;
break;
}
}
result=0;
goto exit;
}
}
exit_button://退出按钮
while(1)
{
ch=GetChar(exit_button,1,6);
switch(ch)
{
case KEY_UP:
case KEY_LEFT://转上面
//关掉'退出'回显
wattroff(exit_button,A_REVERSE);
wmove(exit_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
case '\n':
result=1;//返回1为退出
goto exit;
}
}
}
exit:
DestroyWindow(AccountIDInputWin);
DestroyWindow(ID);
DestroyWindow(ok_button);
DestroyWindow(exit_button);
wclear(stdscr);
return result;
}
//修改帐户窗口
int ModifyAccountWin(staff * staff_info)
{
int ch,result=0;
//帐户管理界面的背景窗口
WINDOW * ModifyAccountWin=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(ModifyAccountWin,0,"欢迎光临XXX超市");
StringCenterPrint(ModifyAccountWin,3,"修改帐户");
char IDStr[10]={'\0'};//存放帐户ID
char nameStr[20]={'\0'};//存放帐户名称
char passwordStr[20]={'\0'};//存放密码
char typeStr[30]={'\0'};//存放身份
char remarkStr[40]={'\0'};//存放备注
Trim(staff_info->id);
Trim(staff_info->name);
Trim(staff_info->pwd);
Trim(staff_info->remark);
strcpy(IDStr,staff_info->id);
strcpy(nameStr,staff_info->name);
strcpy(passwordStr,staff_info->pwd);
sprintf(typeStr,"%d",staff_info->type);
strcpy(remarkStr,staff_info->remark);
mvwprintw(ModifyAccountWin,6,12,"帐户ID:");
mvwprintw(ModifyAccountWin,8,12,"用户名:");
mvwprintw(ModifyAccountWin,10,14,"密码:");
mvwprintw(ModifyAccountWin,12,14,"身份:");
mvwprintw(ModifyAccountWin,14,14,"备注:");
wrefresh(ModifyAccountWin);
//输入框
WINDOW * ID=CreateWindow(1,45,6,21,No,WHITE_BLACK);//帐户ID窗口
WINDOW * name=CreateWindow(1,45,8,21,No,WHITE_BLACK);//帐户名称窗口
WINDOW * password=CreateWindow(1,45,10,21,No,WHITE_BLACK);//密码窗口
WINDOW * type=CreateWindow(1,45,12,21,No,WHITE_BLACK);//身份窗口
WINDOW * remark=CreateWindow(1,45,14,21,No,WHITE_BLACK);//备注窗口
Trim(IDStr);
Trim(nameStr);
Trim(passwordStr);
Trim(typeStr);
Trim(remarkStr);
mvwprintw(ID,0,0,IDStr);
mvwprintw(name,0,0,nameStr);
mvwprintw(password,0,0,passwordStr);
mvwprintw(type,0,0,typeStr);
mvwprintw(remark,0,0,remarkStr);
//刷新输入框
wrefresh(ID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -