目录
效果展示
管理人员对用户的操作,包括有新增用户功能
管理人员对用户的操作,包括有查看所有的用户信息 功能
管理人员对用户的操作,包括有查看单个用户信息 功能
管理人员对用户的操作,包括有修改用户密码 功能
如下管理员可以将用户的密码修改为:666666
用修改后的新密码进行登录,若是登录成功,则代表密码修改成功
不放心密码是否修改成功?那么可以去查询界面看一看
在查询结果中查看:密码确实成功修改为:666666
本次的C语言点菜系统 人员管理 分两篇 源码分享
其他源码获取方式如下
源码分享
16.xinZeng.h [新增人员窗及功能实现 头文件]
#ifndef XINZENG_H
#define XINZENG_H
//人员管理窗口的初始化
int xinZengInit();
//函数功能 注册检验
int doReg(char *name,char *pwd1,char *pwd2,int role);
#endif
17.xinZeng.c [新增人员窗及功能实现 源文件]
#include"xinZeng.h"
#include"Cwindow.h"
#include "Ctool.h"
#include"user.h"
#include<stdio.h>
#include<windows.h>
extern USER_T userArr[10];
extern count;
int xinZengInit()
{
/* int startx;//窗口所放位置
int starty;
int width;//窗口对应宽高
int height;
CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
WIN_T xinZeng={3,3,25,23};//部分初始化 控件结构体数组{0} ctrlCount=0
USER_T newuser={0};
int panduan=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,5,10,2,0,0,0,LABEL,"新增用户界面"};
CONTROL_T labName={10,10,10,3,0,0,0,LABEL,"用户名:"};
CONTROL_T labPwd={10,13,10,3,0,0,0,LABEL,"用户密码:"};
CONTROL_T labSure={10,16,10,3,0,0,0,LABEL,"确认密码:"};
CONTROL_T labRole={10,19,10,3,0,0,0,LABEL,"角色:"};
//编辑器控件
CONTROL_T editName={25,10,10,3,8,2,1,EDIT,""};
CONTROL_T editPwd={25,13,10,3,10,2,0,EDIT,""};
CONTROL_T editSure={25,16,10,3,8,0,0,EDIT,""};
CONTROL_T editRole={25,19,10,3,10,2,1,EDIT,""};
//按钮控件
CONTROL_T btnok={10,23,8,3,0,0,0,BUTTON,"确定"};
CONTROL_T btncancle={25,23,8,3,0,0,0,BUTTON,"返回"};
//添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
addControl(title,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(labName,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(labPwd,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(labSure,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(labRole,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(editName,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(editPwd,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(editSure,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(editRole,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(btnok,xinZeng.ctrlArr,&xinZeng.ctrlCount);
addControl(btncancle,xinZeng.ctrlArr,&xinZeng.ctrlCount);
userArr[count].ID=userArr[count-1].ID+1;
printf("%d\n",userArr[count].ID);
// printf("控件个数,%d\n",xinZeng.ctrlCount);
showWindow(xinZeng);
winRun(&xinZeng);
switch(xinZeng.foucsIndex)
{
case 9:
gotoxy(20,30);
//上一个id
//获取到数据 name pwd1 pwd2 角色
panduan = doReg(xinZeng.ctrlArr[5].content,xinZeng.ctrlArr[6].content,
xinZeng.ctrlArr[7].content,atoi(xinZeng.ctrlArr[8].content));
if(panduan==-2)
{
printf("密码不一致\n");
}
else if(panduan==-3)
{
printf("这个角色不存在\n");
}
else if(panduan==-1)
{
//可注册
newuser.ID=userArr[count].ID;
strcpy(newuser.name,xinZeng.ctrlArr[5].content);
strcpy(newuser.pwd,xinZeng.ctrlArr[6].content);
newuser.role=atoi(xinZeng.ctrlArr[8].content);
addUser(newuser,userArr);
printf("添加成功\n");
}
printUserInfo(userArr);
Sleep(3000);
system("cls");
xinZengInit();
break;
case 10:
Sleep(500);
system("cls");
guanrenInit();
break;
default :
break;
}
}
//函数功能 注册检验
int doReg(char *name,char *pwd1,char *pwd2,int role)
{
int res=0;
//1.密码是否相等
if(strcmp(pwd1,pwd2)!=0)
{
return -2;
}
//2.role 角色是否存在
if(role != ADMIN && role != MANAGER && role != WAITER)
{
return -3;
}
//3.用户名是否存在
res = userCheck(name,userArr);
return res;
}
18.daYin.h [打印查询窗及功能实现 头文件]
#ifndef DAYIN_H
#define DAYIN_H
#include"user.h"
//打印查询窗口的初始化
int daYinInit();
#endif
19.daYin.c [打印查询窗及功能实现 源文件]
#include"daYin.h"
#include"Cwindow.h"
#include "Ctool.h"
#include"user.h"
#include<stdio.h>
#include<windows.h>
extern USER_T userArr[10];
extern count;
int daYinInit()
{
int i=0;
int pd=0;
char name[9]={0};
/* int startx;//窗口所放位置
int starty;
int width;//窗口对应宽高
int height;
CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
WIN_T daYin={3,3,38,32};//部分初始化 控件结构体数组{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 titlecx={19,5,10,2,0,0,0,LABEL,"用户信息查询界面"};//0
CONTROL_T titleshuID={5,9,10,2,0,0,0,LABEL,"请输入您的用户名:"};//1
//编辑框控件
CONTROL_T editshuID={25,9,7,3,10,2,1,EDIT,""};//2
//按钮控件
CONTROL_T btnok={37,9,5,3,0,0,0,BUTTON,"确定"};//3
CONTROL_T btncancle={45,9,5,3,0,0,0,BUTTON,"返回"};//4
CONTROL_T btnchaxun={55,9,12,3,0,0,0,BUTTON,"查询所有用户信息"};//5
//添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
//通过下标将控件ctrl放到控件数组ctrlArr[20]当中 在登录窗口界面中添加控件
//数组作为实参时直接写数组名ctrlArr即可,数组名(起始地址)
addControl(titlecx,daYin.ctrlArr,&daYin.ctrlCount);
addControl(titleshuID,daYin.ctrlArr,&daYin.ctrlCount);
addControl(editshuID,daYin.ctrlArr,&daYin.ctrlCount);
addControl(btnok,daYin.ctrlArr,&daYin.ctrlCount);
addControl(btncancle,daYin.ctrlArr,&daYin.ctrlCount);
addControl(btnchaxun,daYin.ctrlArr,&daYin.ctrlCount);
showWindow(daYin);
winRun(&daYin);
switch(daYin.foucsIndex){
case 3:
for(;i<count;i++)
{
//输入用户名存在
if(strcmp(daYin.ctrlArr[2].content,userArr[i].name)==0)
{
gotoxy(21,12);
printf("用户名存在,请查看您的信息,5秒后将会自动刷新界面\n");
daYinBiao(4,13,4,10);
gotoxy(5+1,14);
printf("用户名ID\t");
gotoxy(5+1+16,14);
printf("用户名\t");
gotoxy(5+1+16*2,14);
printf("密码\t");
gotoxy(5+1+16*3,14);
printf("角色\t");
gotoxy(5+1,16);
printf("%d\n",userArr[i].ID);
gotoxy(5+1+16,16);
printf("%s\n",userArr[i].name);
gotoxy(5+1+16*2,16);
printf("%s\n",userArr[i].pwd);
gotoxy(5+1+16*3,16);
switch(userArr[i].role)
{
case ADMIN:
printf("管理员");
break;
case MANAGER:
printf("经理");
break;
case WAITER:
printf("服务员");
break;
}
}
/* if(strcmp(daYin.ctrlArr[2].content,userArr[i].name)!=0)
{
//gotoxy(21,11);
//printf("用户名不存在\n");
Sleep(5000);
system("cls");
daYinInit();
}*/
}
Sleep(5000);
system("cls");
daYinInit();
break;
case 4:
system("cls");
guanrenInit();
break;
case 5:
daYinBiao(4,13,4,10);
gotoxy(5+1,13+1+i*2);
printf("用户名ID\t");
gotoxy(5+1+16,13+1+i*2);
printf("用户名\t");
gotoxy(5+1+16*2,13+1+i*2);
printf("密码\t");
gotoxy(5+1+16*3,13+1+i*2);
printf("角色\t");
for(i=0;i<count;i++)
{
gotoxy(5+1,13+1+i*2+2);
printf("%d\n",userArr[i].ID);
gotoxy(5+1+16,13+1+i*2+2);
printf("%s\n",userArr[i].name);
gotoxy(5+1+16*2,13+1+i*2+2);
printf("%s\n",userArr[i].pwd);
gotoxy(5+1+16*3,13+1+i*2+2);
switch(userArr[i].role)
{
case ADMIN:
printf("管理员");
break;
case MANAGER:
printf("经理");
break;
case WAITER:
printf("服务员");
break;
}
}
Sleep(5000);
system("cls");
daYinInit();
break;
default:
break;
}
}
20.xiuGai.h [修改密码窗及功能实现 头文件]
#ifndef XIUGAI_H
#define XIUGAI_H
//修改密码窗口的初始化
int xiuGaiInit();
#endif
21.xiuGai.c [修改密码窗及功能实现 源文件]
#include"xiuGai.h"
#include"Cwindow.h"
#include "Ctool.h"
#include"user.h"
#include<stdio.h>
#include<windows.h>
extern USER_T userArr[10];
extern count;
int xiuGaiInit()
{
/* int startx;//窗口所放位置
int starty;
int width;//窗口对应宽高
int height;
CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
WIN_T xiuGai={3,3,25,23};//部分初始化 控件结构体数组{0} ctrlCount=0
USER_T newuser={0};
int i =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,5,10,2,0,0,0,LABEL,"修改密码界面"};//0
CONTROL_T labName={10,10,10,3,0,0,0,LABEL,"用户名:"};//1
CONTROL_T labPwd1={10,13,10,3,0,0,0,LABEL,"原密码:"};//2
CONTROL_T labPwd2={10,16,10,3,0,0,0,LABEL,"新密码:"}; //3
CONTROL_T labPwd3={10,19,10,3,0,0,0,LABEL,"确认密码:"};//4
//编辑器控件
CONTROL_T editName={25,10,10,3,8,2,1,EDIT,""};//5
CONTROL_T editPwd1={25,13,10,3,10,2,0,EDIT,""};//6
CONTROL_T editPwd2={25,16,10,3,8,0,0,EDIT,""};//7
CONTROL_T editPwd3={25,19,10,3,10,2,0,EDIT,""};//8
//按钮控件
CONTROL_T btnok={10,23,8,3,0,0,0,BUTTON,"确定"};//9
CONTROL_T btncancle={25,23,8,3,0,0,0,BUTTON,"返回"};//10
//添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
addControl(title,xiuGai.ctrlArr,&xiuGai.ctrlCount);//0
addControl(labName,xiuGai.ctrlArr,&xiuGai.ctrlCount);//1
addControl(labPwd1,xiuGai.ctrlArr,&xiuGai.ctrlCount);//2
addControl(labPwd2,xiuGai.ctrlArr,&xiuGai.ctrlCount);//3
addControl(labPwd3,xiuGai.ctrlArr,&xiuGai.ctrlCount);//4
addControl(editName,xiuGai.ctrlArr,&xiuGai.ctrlCount);//5
addControl(editPwd1,xiuGai.ctrlArr,&xiuGai.ctrlCount);//6
addControl(editPwd2,xiuGai.ctrlArr,&xiuGai.ctrlCount);//7
addControl(editPwd3,xiuGai.ctrlArr,&xiuGai.ctrlCount);//8
addControl(btnok,xiuGai.ctrlArr,&xiuGai.ctrlCount);//9
addControl(btncancle,xiuGai.ctrlArr,&xiuGai.ctrlCount);//10
// printf("控件个数,%d\n",xinZeng.ctrlCount);
showWindow(xiuGai);
winRun(&xiuGai);
switch(xiuGai.foucsIndex)
{
case 10://返回
system("cls");
guanrenInit();
break;
case 9://确定
for(;i<count;i++)
{
/* if(strcmp(xiuGai.ctrlArr[5].content,userArr[i].name)!=0)//用户名不存在
{
gotoxy(21,8);
printf("该用户名不存在,请重新输入\n");
Sleep(3000);
system("cls");
xiuGaiInit();
}
if(strcmp(xiuGai.ctrlArr[6].content,userArr[i].pwd)!=0)//原密码错误
{
gotoxy(21,8);
printf("原密码错误,请重新输入\n");
Sleep(3000);
system("cls");
xiuGaiInit();
}
if(strcmp(xiuGai.ctrlArr[7].content,xiuGai.ctrlArr[8].content)!=0)//输入两次新密码不一致
{
gotoxy(21,8);
printf("输入两次新密码不等,请重新输入\n");
Sleep(3000);
system("cls");
xiuGaiInit();
}*/
if(strcmp(xiuGai.ctrlArr[5].content,userArr[i].name)==0)//用户名存在
{
strcpy(userArr[i].pwd,xiuGai.ctrlArr[7].content);
gotoxy(21,8);
printf("修改密码成功\n");
Sleep(3000);
system("cls");
loginInit();
}
}
break;
default :
break;
}
}
22.guanRen.h [人员管理窗 头文件]
#ifndef GUANREN_H
#define GUANREN_H
//人员管理窗口的初始化
int guanrenInit();
#endif
23.guanRen.c [人员管理窗 源文件]
#include"guanRen.h"
#include"Cwindow.h"
#include "Ctool.h"
#include<stdio.h>
int guanrenInit()
{
/* int startx;//窗口所放位置
int starty;
int width;//窗口对应宽高
int height;
CONTROL_T ctrlArr[20];//存放控件结构体数组 窗口中有多个控件
int ctrlCount; //记录控件总个数 初始化为0 用于添加控件函数中 */
WIN_T guanRen={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 titleguan={19,5,10,2,0,0,0,LABEL,"人员管理"};//0
CONTROL_T btnxinzeng={19,9,10,3,0,0,0,BUTTON,"新增用户"};//1
CONTROL_T btnchaxun={19,12,10,3,0,0,0,BUTTON,"查询用户信息"};//2
CONTROL_T btnxiugai={19,15,10,3,0,0,0,BUTTON,"修改用户信息"};//3
CONTROL_T btnfanhui={19,18,10,3,0,0,0,BUTTON,"返回"};//4
//添加控件 void addControl(参数1:控件结构体(控件) 参数2:控件数组 参数3:控件个数);
addControl(titleguan,guanRen.ctrlArr,&guanRen.ctrlCount);//0
addControl(btnxinzeng,guanRen.ctrlArr,&guanRen.ctrlCount);//1
addControl(btnchaxun,guanRen.ctrlArr,&guanRen.ctrlCount);//2
addControl(btnxiugai,guanRen.ctrlArr,&guanRen.ctrlCount);//3
addControl(btnfanhui,guanRen.ctrlArr,&guanRen.ctrlCount);//4
printf("控件个数,%d\n",guanRen.ctrlCount);
showWindow(guanRen);
winRun(&guanRen);
switch(guanRen.foucsIndex){
case 1:
system("cls");
xinZengInit();
break;
case 2:
system("cls");
daYinInit();
break;
case 3:
system("cls");
xiuGaiInit();
break;
case 4:
system("cls");
adminInit();
break;
default:
break;
}
}