赞
踩
目录
根据初始化用户数据,实现登录
如 编号1001 的用户 其用户名为admin 密码为123456 角色为1 [1代表管理员角色]
输入管理员的账号密码,登录成功后,即可进入到管理员角色界面
管理员角色【可以进行人员管理】,包括有:新增用户,查询用户,修改用户
本次点菜系统-人员管理
分两篇文章,源码分享,欢迎学习!
另外一篇如下:
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<windows.h>//Sleep
- #include"user.h"
- #include"loginWin.h"//登录界面使用
- #include"Admin.h"//管理员界面使用
- #include"Manager.h"//经理界面使用
- #include"Waiter.h"//服务员界面使用
- #include"guanRen.h"//人员管理窗口使用
- #include"xinZeng.h"//新增用户窗口使用
- #include"daYin.h"//打印查询窗口使用
- #include"xiuGai.h"//修改密码窗口使用
-
- int count =3; //初始化两个用户 全局变量
- //初始化用户结构体数组 做全局变量 其他.c中extern外部引用
- USER_T userArr[10]={
- {1001,"admin","123456",1},//0 ADMIN
- {1002,"manager","123456",2},//1 MANAGER
- {1003,"waiter","123456",3}//2 WAITER
- };
-
- void proRun()
- {
- int(*win_funs[30])()={loginInit,adminInit,managerInit,waiterInit,guanrenInit,xinZengInit
- ,daYinInit,xiuGaiInit};
- int winIndex = 0; //0-loginInit 1-adminInit 2-managerInit 3-waiterInit
- while(1)
- {
- Sleep(1500);
- system("cls");
- winIndex=win_funs[winIndex]();
- }
- }
-
- int main()
- {
- proRun();
- }
- #ifndef CTOOL_H
- #define CTOOL_H
- #define KEY_UP 72
- #define KEY_DOWN 80
- #define KEY_LEFT 75
- #define KEY_RIGHT 77
- #define KEY_ESC 27
- #define KEY_ENTER 13
-
- void paintWindow(int startX,int startY,int width,int height);//打印窗口
-
- void gotoxy(int x,int y);//形参 光标定位
-
- /*
- 函数功能:字符串输入控制
- 函数参数:
- int maxLen 允许输入最大长度
- int inputType 允许输入的字符类型 0:数字 1:字母 2:字母+数字
- int ips 数据显示格式 0:密文 1:明文
- char str[] 存储输入字符
- 函数返回值:无
- char str[] char str[20] char*str
- */
- void glb_string(int maxLen,int inputType,int ips,char str[]);
-
- /*
- 函数名:int getkey()
- 函数功能:获取用户输入的任意键盘值
- 函数参数:无
- 函数返回:ascii
- */
- int getkey();
-
- //打印用户信息表格
- void daYinBiao(int x,int y,int lie,int hang);
-
- #endif
-
- #include "Ctool.h"
- #include <windows.h>//gotoxy
- #include<stdio.h>
- #include<conio.h>
-
- void gotoxy(int x,int y)//形参
- {
- HANDLE hOut;
- COORD pos= {x,y};
- // 光标的起始位(第1列,第3行) 0是第1列 2是第3行
- hOut = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleCursorPosition(hOut, pos);
- //printf("定位光标位置搜索(%d,%d)\n",pos.X,pos.Y);
- }
-
- void paintWindow(int startX,int startY,int width,int height)
- {
- int i=0;
- //打印顶部
- //光标定位 找规律 ┗ ┛ ┏ ┓ ┃ ━
- //顶部 y不变 x 在变 (x-x+w)
- gotoxy(startX,startY);
- printf("┏");
- for(i=0;i<width-2;i++) //控制循环次数width-2次
- {
- printf("━ ");
- }
- printf("┓");
-
- //左边 x不变 y在变 (y到y+height)
- for(i=1;i<=height-1;i++)
- {
- gotoxy(startX,startY+i);
- printf("┃");
- }
- //右边 x不变 =startx+width-1 y在变 y 到 y+height
- for(i=1;i<=height-1;i++)
- {
- gotoxy(startX+width*2-3,startY+i);
- printf("┃");
- }
-
- //底部 x在变化 y不变 (x到x+width) ━
- gotoxy(startX,startY+height-1);
- printf("┗");
- for(i=0;i<width-2;i++)
- {
- printf("━ ");
- }
- printf("┛");
-
- gotoxy(startX,startX+height);
- }
-
- void glb_string(int maxLen,int inputType,int ips,char str[])
- {
- char ch=0;
- int i=0;
- while(1)
- {
- ch=getch();
- if(ch=='\r'&&i>0)//换行结束输入
- {
- break;
- }
- switch(inputType)
- {
- case 0:
- if(ch>='0'&&ch<='9'&&i<maxLen)
- {
- if(ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- str[i++]=ch;
- }
- break;
- case 1:
- if(i<maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
- {
- if(ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- str[i++]=ch;
- }
- break;
- case 2:
- if(i<maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
- {
- if(ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- str[i++]=ch;
- }
- break;
- default:
- break;
- }
- }
- }
-
- /*
- 函数名:int getkey()
- 函数功能:获取用户输入的任意键盘值
- 函数参数:无
- 函数返回:ascii
- */
- int getkey()
- {
- char key=0;
- key=getch();
- if(key==-32)//方向按键 第一个值都是32
- {
- key=getch();
- switch(key){
- case 72:
- return KEY_UP;
- case 80:
- return KEY_DOWN;
- case 75:
- return KEY_LEFT;
- case 77:
- return KEY_RIGHT;
- }
- }
- else if(key==13)
- {
- return KEY_ENTER;
- }
- else if(key==27)
- {
- return KEY_ESC;
- }
- return key;
- }
-
-
- void daYinBiao(int x,int y,int lie,int hang)
- {
- //lie --表格列数-- 3--7
- int i,j,m,z=0;
- int count=0;
- gotoxy(x,y);
- for(i=0;i<2*hang+1;i++)
- {
- if(i==0)//第一行
- {
- printf("┌ "); //第一列
- for(j=0;j<lie-1;j++)//2 - n-1列---┬
- {
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┬ ");//每个单元格之间的分割
- }
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┐");
- }
- if(i>0&&i<2*hang)//1-6行
- {
- if(i%2==1) //数据行
- {
- gotoxy(x,i+y);
- printf("┃");
- for(j=0;j<lie;j++) //0-3
- {
- for(m=0;m<7;m++)
- {
- printf(" ");
- }
- printf(" ┃");
- }
- }
- else //单元格边界
- {
- gotoxy(x,i+y);
- printf("├ ");
- for(j=0;j<lie-1;j++)
- {
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┼ ");
- }
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┤");
- }
- }
- //最后一行 // ┌ ━ ┬ ┐┃ ┼ ├ ┤ └ ┘ ┴
- if(i==2*hang)
- {
- gotoxy(x,y+2*hang);
- printf("└ ");
- for(j=0;j<lie-1;j++)//2 - n-1列---┴
- {
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┴ ");//每个单元格之间的分割
- }
- for(m=0;m<7;m++)
- {
- printf("━ ");
- }
- printf("┘");
- }
- }
- }
- #ifndef CWINDOW_H
- #define CWINDOW_H
- //描述窗口相关的
- #define LABEL 1 //控件使用宏定义 标签文本
- #define EDIT 2 // 编辑框
- #define BUTTON 3// 按钮
-
- //标签结构体的声明
- typedef struct label_t
- {
- int startx; //标签文本所放位置
- int starty;
- int width;//标签文本自身宽高
- int height;
- char content[20];//标签文本中输入对应的内容 字符数组
- };
-
- //编辑框结构体的声明
- typedef struct edit_t
- {
- int startx;//编辑框所放位置
- int starty;
- int width;//编辑框自身宽高
- int height;
- char content[20];//编辑框中输入的内容 字符数组的使用
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int maxLen; //最大长度
- };
-
- //按钮结构体的声明
- typedef struct button_t
- {
- int startx;//按钮所放位置
- int starty;
- int width;//按钮自身宽高
- int height;
- char content[20];//按钮中输入的内容
- };
-
- //以编辑框为标准统一管控(编辑框要求最多)
- //控件结构体的声明--编辑框 标签 按钮
- typedef struct control_t
- {
- int startx;//控件所放位置
- int starty;
- int width;//控件自身宽高
- int height;
- int maxLen;//最大长度
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int ctrlType; //控件类型 1-label 2-edit 3-button 区分控件的使用
- char content[20];//控件中输入的内容
- }CONTROL_T;//typedef重命名
-
- //窗口结构体的声明 控件是要放入窗口当中的
- typedef struct win_t
- {
- int startx;//窗口所放位置
- int starty;
- int width;//窗口对应宽高
- int height;
- CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
- int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中
- int foucsIndex; //winRun在按钮回车时记录当前控件的下标
- }WIN_T;
-
- //添加控件 void addControl(参数1:控件结构体 参数2:控件结构体数组 参数3:控件个数);
- //把控件放进控件结构体数组中 ctrlCount控件个数 预留出下一个控件结构体下标
- //int addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int ctrlCount);//添加控件到对应窗口中
- void addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int *ctrlCount);
-
- //窗口显示函数可以绘制整个窗口以及每一个控件 而paintWindow只能画大框 不能显示里面的内容
- void showWindow(WIN_T win);
-
- /*
- 函数名称:void winRun(WIN_T *win);
- 函数作用:窗口运行函数 光标定位 找到edit(输入) button控件(回车,做对应操作)
- 函数参数:参数 WIN_T *win 窗口结构体指针
- 函数返回:无
- */
- void winRun(WIN_T *win);
-
- /*
- 函数名称:void editKeyListen()
- 函数作用:编辑框输入控制函数
- 函数参数:参数1:CONTROL_T ctrl 监听的控件
- 参数2:char ch 输入的字符
- 参数3:char content[] 存储的字符串
- 函数返回:无
- */
- void editKeyListen(CONTROL_T ctrl,char ch,char content[]);
-
- #endif
- #include "Cwindow.h"
- #include "Ctool.h"
- #include<conio.h>// getch()
- #include<string.h>//strlen
-
- //添加控件 void addControl(参数1:控件结构体 参数2:控件结构体数组 参数3:控件个数);
- //把控件放进控件结构体数组中 ctrlCount控件个数 预留出下一个控件结构体下标
- void addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int *ctrlCount)
- {
- ctrlArr[(*ctrlCount)++]=ctrl;//按地址传递
- }
-
- //窗口显示函数 绘制整个窗口以及每一个控件
- void showWindow(WIN_T win)
- {
- int i=0;
- //首先显示大框
- paintWindow(win.startx,win.starty,win.width,win.height);//结构体变量名.属性
- //显示每一个控件
- for(i=0;i<win.ctrlCount;i++)//遍历ctrlArr[]数组 长度ctrlCount一个一个获取 控件在窗口里
- {
- //类型 label edit button
- //如果是label 直接显示内容即可
- //如果是edit 画框(paintWindow) 显示内容
- //如果是button 画框 显示内容
- if(win.ctrlArr[i].ctrlType==LABEL)
- {
- gotoxy(win.ctrlArr[i].startx,win.ctrlArr[i].starty);//光标定位放入内容
- puts(win.ctrlArr[i].content);
- }
- else
- {
- //画编辑框 按钮框(小框) 避免小框和放入的内容镶嵌
- paintWindow(win.ctrlArr[i].startx-2,win.ctrlArr[i].starty-1,win.ctrlArr[i].width,win.ctrlArr[i].height);
- gotoxy(win.ctrlArr[i].startx,win.ctrlArr[i].starty);//光标定位放入内容
- puts(win.ctrlArr[i].content);
- }
- }
- gotoxy(0,29);//优化显示
- }
-
- /*
- 函数名称:void winRun(WIN_T *win);
- 函数作用:窗口运行函数 光标定位 找到edit(输入) button控件(回车,做对应操作)
- 函数参数:参数 WIN_T *win 窗口结构体指针
- 函数返回:无
- */
- void winRun(WIN_T *win)
- {
- int i=0,key=0;
- for(i=0;i<win->ctrlCount;i++)
- {
- if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)
- {
- gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);
- break;
- }
- }
- while(1)
- {
- key=getkey();
- switch(key){
- case KEY_DOWN://向下按键 查找下一个编辑框 按钮
- i++;//按键数组下标越界
- if(i==win->ctrlCount)
- {
- i=0;//为了避免下标越界 从头开始对控件结构体数组找编辑框 按钮
- }
- for(;i<win->ctrlCount;i++)
- {
- if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)//如果找到编辑框 按钮
- {
- gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);//光标目标定位
- break;//停止
- }
- }
- break;
- case KEY_UP:
- i--;
- if(i==-1) //从后往前找 数组起始0 i--为-1 数组下标由大到小 (控件数组下标0位置)
- {
- i=win->ctrlCount-1; //控件个数(控件结构体数组下标最大)-1 (控件数组下标ctrlCount位置)
- }
- for(;i>0;i--)
- {
- if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)//如果找到编辑框 按钮
- {
- gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);//光标目标定位
- break;//停止
- }
- if(i==0) //第一个 若第一个不是编辑框 按钮
- {
- i=win->ctrlCount; //就从最后一个往前查找 for循环中有i--,不用再-1
- }
- }
- break;
- case KEY_ENTER:
- if(win->ctrlArr[i].ctrlType==BUTTON)
- {
- win->foucsIndex=i;
- return ;//获取winRun中输入的编辑框的值
- }
- break;
- default: //其他字符(不是按键)并且当前控件是编辑框
- if(win->ctrlArr[i].ctrlType==EDIT)
- {
- editKeyListen(win->ctrlArr[i],key,win->ctrlArr[i].content);
- }
- break;
- }
- }
- }
-
- /*
- 函数名称:void editKeyListen()
- 函数作用:编辑框输入控制函数
- 函数参数:参数1:CONTROL_T ctrl 监听的控件
- 参数2:char ch 输入的字符
- 参数3:char content[] 存储的字符串
- 函数返回:无
- */
- void editKeyListen(CONTROL_T ctrl,char ch,char content[])
- {
- int i=strlen(content);//从字符串原来的长度开始存储
- switch(ctrl.inputType)
- {
- case 0: //数字
- if(ch>='0'&&ch<='9'&&i<ctrl.maxLen)
- {
- if(ctrl.ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- content[i++]=ch;
- }
- break;
- case 1:
- if(i<ctrl.maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
- {
- if(ctrl.ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- content[i++]=ch;
- }
- break;
- case 2:
- if(i<ctrl.maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
- {
- if(ctrl.ips==0)
- {
- putch('*');
- }
- else{
- putch(ch);
- }
- content[i++]=ch;
- }
- break;
- default:
- break;
- }
- }
- #ifndef USER_H
- #define USER_H
- #define ADMIN 1
- #define MANAGER 2
- #define WAITER 3
-
- //用户结构体声明
- typedef struct user_t
- {
- int ID;
- char name[20];
- char pwd[20];
- int role; //数字表示角色 1是admin 2是 manager 3 是waiter
- }USER_T;
-
- //打印用户信息 三种写法 userArr[10] userArr[ ] userArr*
- void printUserInfo(USER_T userArr[10]);
-
- //用户添加 用户结构体添加到用户结构体数组
- void addUser(USER_T newuser , USER_T userArr[10]);//把新用户添加到userArr[10]数组当中
-
- /*
- 函数作用:查看用户名是否存在
- 函数参数:用户名 用户结构体数组
- 函数返回 返回下标 不存在返回-1
- */
- int userCheck(char name[],USER_T userArr[10]);
-
- #endif
- #include"user.h"
- #include<stdio.h>
- #include<string.h>//memcpy
-
- extern count; //外部引用 引入main.c中的count(全局变量)
-
- //打印用户信息
- void printUserInfo(USER_T userArr[10])
- {
- int i=0;
- printf("%d\n",count);
- for(i=0;i<count;i++)
- {
- printf("%d\t%s\t%s\t",userArr[i].ID,userArr[i].name,userArr[i].pwd);
- switch(userArr[i].role)
- {
- case ADMIN:
- printf("管理员\n");
- break;
- case MANAGER:
- printf("经理\n");
- break;
- case WAITER:
- printf("服务员\n");
- break;
- default :
- break;
- }
- }
- }
-
- //用户添加 用户结构体添加到用户结构体数组
- void addUser(USER_T newuser , USER_T userArr[10])
- {
- //userArr[count++]=newuser;
- memcpy(&userArr[count++],&newuser,sizeof(USER_T));//地址内存拷贝赋值 取地址 数组 变量名 长度
- }
-
- /*
- 函数作用:查看用户名是否存在
- 函数参数:用户名 用户结构体数组
- 函数返回:返回下标 不存在返回-1
- */
- int userCheck(char name[],USER_T userArr[10])
- {
- int i=0;
- for(i=0;i<count;i++)
- {
- if(strcmp(userArr[i].name,name)==0)
- {
- return i;
- }
- }
- return -1;
- }
- #ifndef LOGINWIN_H
- #define LOGINWIN_H
- #include"user.h"
-
- //登录的初始化--登录窗口的展示
- int loginInit();
-
- /*
- 函数名:doLogin()
- 函数作用:执行登录操作
- 函数参数:参数1:char name[]用户名
- 参数2:char pwd[7]密码
- 函数返回:角色 1是admin 2是 manager 3 是waiter -1表示没登录成功
- */
- int doLogin(char name[],char pwd[]);//登录输入用户名密码 函数返回:角色role是int
-
- /*
- 函数名:Jude( )
- 函数作用:执行登录操作
- 函数参数:参数1:char name[]用户名
- 参数2:char pwd[7]密码
- 参数3:USER_T userArr[] 用户结构体数组
- 函数返回:角色 1是admin 2是 manager 3 是waiter -1表示没登录成功
- */
- int Jude(char *name,char *pwd,USER_T userArr[]);
-
- #endif
- #include"loginWin.h"
- #include"Cwindow.h"
- #include "Ctool.h"
- #include"user.h"//userArr[10] 1是admin 2是 manager 3 是waiter
- #include<stdio.h>//printf
- #include<string.h>//strcmp
- #include<windows.h>
- #include<stdlib.h>
-
- extern USER_T userArr[10];//引入外部变量 结构体数组定义时做全局变量
- extern count;//count在main.c中是全局变量
-
- int loginInit()
- {
- char name[9]={0};//定义用户名
- char pwd[7]={0};//定义密码
- int role= -2;//初始化登录返回的结果 不能0 1 2 -1(有含义)
-
- /* int startx;//窗口所放位置
- int starty;
- int width;//窗口对应宽高
- int height;
- CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
- int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
- WIN_T loginWin={5,5,24,16};//有两个没填 部分初始化 控件结构体数组{0} ctrlCount=0
-
- /* int maxLen;//最大长度
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int ctrlType; //控件类型 1-label 2-edit 3-button 区分控件的使用
- char content[20];//控件中输入的内容 共填9个参数*/
- //标签文本控件
- CONTROL_T title={19,7,10,2,0,0,0,LABEL,"点菜系统"};
- CONTROL_T labName={10,9,10,3,0,0,0,LABEL,"请输入账号:"};
- CONTROL_T labPwd={10,12,10,3,0,0,0,LABEL,"请输入密码:"};
- //编辑器控件
- CONTROL_T editName={25,9,10,3,10,2,1,EDIT,""};
- CONTROL_T editPwd={25,12,10,3,8,0,0,EDIT,""};
- //按钮控件
- CONTROL_T btnok={10,15,8,3,0,0,0,BUTTON,"登录"};
- CONTROL_T btncancle={26,15,8,3,0,0,0,BUTTON,"返回"};
-
- //添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
- //通过下标将控件ctrl放到控件数组ctrlArr[20]当中 在登录窗口界面中添加控件
- //数组作为实参时直接写数组名ctrlArr即可,数组名(起始地址)
- addControl(title,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(labName,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(labPwd,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(editName,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(editPwd,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(btnok,loginWin.ctrlArr,&loginWin.ctrlCount);
- addControl(btncancle,loginWin.ctrlArr,&loginWin.ctrlCount);
-
- printf("控件个数,%d\n",loginWin.ctrlCount);//ctrlCount控件个数
-
- //展示窗口和每一个控件
- showWindow(loginWin);
-
- //窗口执行函数 告知当前回车的按钮的下标是多少
- winRun(&loginWin);
-
- switch(loginWin.foucsIndex){
- case 5:
- role = Jude(loginWin.ctrlArr[3].content,loginWin.ctrlArr[4].content,userArr);
- gotoxy(27,17);
- if(role==-1)//失败
- {
- printf("登录失败\n");
- // return 0;//0 -- 登录界面 有bug登录失败第二次的才正常
- Sleep(2000);
- system("cls");
- loginInit();
- }
- else{
- printf("登录成功\n");
- Sleep(1000);
- system("cls");
-
- switch(role){
- case ADMIN:
- adminInit();
- return 1;//ADMIN
- case MANAGER:
- managerInit();
- return 2;//MANAGER
- case WAITER:
- waiterInit();
- return 3;//WAITER
- }
- }
- break;
- case 6:
- printf("返回\n");
- return -1;
- default:
- break;
- }
- }
-
- /*
- 函数名:Jude( )
- 函数作用:执行登录操作
- 函数参数:参数1:char name[]用户名
- 参数2:char pwd[7]密码
- 参数3:USER_T userArr[] 用户结构体数组
- 函数返回:角色 1是admin 2是 manager 3 是waiter -1表示没登录成功
- */
- int Jude(char *name,char *pwd,USER_T userArr[])
- {
- int i=0;
- for(;i<count;i++)
- {
- //对比用户名和密码都要相等
- if(strcmp(name,userArr[i].name)==0&&strcmp(pwd,userArr[i].pwd)==0)
- {
- // 用户名密码相等表示登录成功 登录成功返回角色
- return userArr[i].role;
- }
- }
- //登录失败
- return -1;
- }
- #ifndef ADMIN_H
- #define ADMIN_H
-
- //管理员窗口的初始化
- int adminInit();
-
- #endif
- #include"Admin.h"
- #include"Cwindow.h"
- #include "Ctool.h"
- #include<stdio.h>
- #include<stdlib.h>
-
- int adminInit()
- {
- /* int startx;//窗口所放位置
- int starty;
- int width;//窗口对应宽高
- int height;
- CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
- int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
- WIN_T Admin={3,3,25,23};
-
- /* int maxLen;//最大长度
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int ctrlType; //控件类型 1-label 2-edit 3-button 区分控件的使用
- char content[20];//控件中输入的内容 共填9个参数 */
- CONTROL_T titleguan={19,5,10,2,0,0,0,LABEL,"管理员界面"};
-
- CONTROL_T btntaizhuo={19,9,8,3,0,0,0,BUTTON,"台桌管理"};
- CONTROL_T btncaipu={19,12,8,3,0,0,0,BUTTON,"菜谱管理"};
- CONTROL_T btnrenyuan={19,15,8,3,0,0,0,BUTTON,"人员管理"};
- CONTROL_T btnzhuxiao={19,18,8,3,0,0,0,BUTTON,"注销"};
- CONTROL_T btntuichu={19,21,8,3,0,0,0,BUTTON,"退出"};
-
- //添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
- addControl(titleguan,Admin.ctrlArr,&Admin.ctrlCount);
- addControl(btntaizhuo,Admin.ctrlArr,&Admin.ctrlCount);
- addControl(btncaipu,Admin.ctrlArr,&Admin.ctrlCount);
- addControl(btnrenyuan,Admin.ctrlArr,&Admin.ctrlCount);
- addControl(btnzhuxiao,Admin.ctrlArr,&Admin.ctrlCount);
- addControl(btntuichu,Admin.ctrlArr,&Admin.ctrlCount);
-
- printf("控件个数,%d\n",Admin.ctrlCount);
- showWindow(Admin);
-
- winRun(&Admin);
-
- switch(Admin.foucsIndex){
- case 3:
- system("cls");
- guanrenInit();
- //return 4; bug 刷新第二次才可以
- break;
- case 5:
- system("cls");
- loginInit();
- break;
- default:
- break;
- }
- }
- #ifndef MANAGER_H
- #define MANAGER_H
-
- //经理窗口的初始化
- int managerInit();
-
- #endif
- #include"Manager.h"
- #include"Cwindow.h"
- #include "Ctool.h"
- #include<stdio.h>
- #include<stdlib.h>
-
- int managerInit()
- {
- /* int startx;//窗口所放位置
- int starty;
- int width;//窗口对应宽高
- int height;
- CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
- int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
- WIN_T Manager={3,3,25,23};//部分初始化 控件结构体数组{0} ctrlCount=0
-
- /* int maxLen;//最大长度
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int ctrlType; //控件类型 1-label 2-edit 3-button 区分控件的使用
- char content[20];//控件中输入的内容 共填9个参数*/
- CONTROL_T titlejingli={19,5,10,2,0,0,0,LABEL,"经理功能界面"};
-
- CONTROL_T btnyingshou={19,9,8,3,0,0,0,BUTTON,"营收汇总"};
- CONTROL_T btnzhuxiao={19,12,8,3,0,0,0,BUTTON,"注销"};
- CONTROL_T btntuichu={19,15,8,3,0,0,0,BUTTON,"退出"};
-
- //添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
- addControl(titlejingli,Manager.ctrlArr,&Manager.ctrlCount);
- addControl(btnyingshou,Manager.ctrlArr,&Manager.ctrlCount);
- addControl(btnzhuxiao,Manager.ctrlArr,&Manager.ctrlCount);
- addControl(btntuichu,Manager.ctrlArr,&Manager.ctrlCount);
-
- printf("控件个数,%d\n",Manager.ctrlCount);
-
- showWindow(Manager);
-
- winRun(&Manager);
-
- switch(Manager.foucsIndex){
- case 3:
- system("cls");
- loginInit();
- break;
- default:
- break;
- }
- }
- #ifndef WAITER_H
- #define WAITER_H
-
- //服务员窗口的初始化
- int waiterInit();
-
- #endif
- #include"Waiter.h"
- #include"Cwindow.h"
- #include "Ctool.h"
- #include<stdio.h>
-
- int waiterInit()
- {
- /* int startx;//窗口所放位置
- int starty;
- int width;//窗口对应宽高
- int height;
- CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
- int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
- WIN_T Waiter={3,3,25,25};//部分初始化 控件结构体数组{0} ctrlCount=0
-
- /* int maxLen;//最大长度
- int inputType;//输入类型 0-数字 1-字母 2-数字+字母
- int ips;//显示类型 0-密文 1-明文
- int ctrlType; //控件类型 1-label 2-edit 3-button 区分控件的使用
- char content[20];//控件中输入的内容 共填9个参数*/
- CONTROL_T titlefuwu={19,5,10,2,0,0,0,LABEL,"服务员功能界面"};
-
- CONTROL_T btnkaizhuo={19,9,10,3,0,0,0,BUTTON,"开桌"};
- CONTROL_T btndiancai={19,12,10,3,0,0,0,BUTTON,"点菜"};
- CONTROL_T btnyingyee={19,15,10,3,0,0,0,BUTTON,"营业额查询"};
- CONTROL_T btnyi={19,18,10,3,0,0,0,BUTTON,"已买/未买单查询"};
- CONTROL_T btnzhuxiao={19,21,10,3,0,0,0,BUTTON,"注销"};
- CONTROL_T btntuichu={19,24,10,3,0,0,0,BUTTON,"退出"};
-
- //添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
- addControl(titlefuwu,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btnkaizhuo,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btndiancai,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btnyingyee,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btnyi,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btnzhuxiao,Waiter.ctrlArr,&Waiter.ctrlCount);
- addControl(btntuichu,Waiter.ctrlArr,&Waiter.ctrlCount);
-
- printf("控件个数,%d\n",Waiter.ctrlCount);
- showWindow(Waiter);
-
- winRun(&Waiter);
-
- switch(Waiter.foucsIndex){
- case 6:
- system("cls");
- loginInit();
- break;
- default:
- break;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。