C语言项目实战 人员管理系统(功能实现)

目录

效果展示

源码分享

16.xinZeng.h  [新增人员窗及功能实现 头文件]

17.xinZeng.c  [新增人员窗及功能实现 源文件]

18.daYin.h  [打印查询窗及功能实现 头文件]

19.daYin.c  [打印查询窗及功能实现 源文件]

20.xiuGai.h  [修改密码窗及功能实现 头文件]

21.xiuGai.c  [修改密码窗及功能实现 源文件]

22.guanRen.h  [人员管理窗 头文件]

23.guanRen.c  [人员管理窗 源文件]


效果展示

管理人员对用户的操作,包括有新增用户功能

 管理人员对用户的操作,包括有查看所有的用户信息 功能

 管理人员对用户的操作,包括有查看单个用户信息 功能 

管理人员对用户的操作,包括有修改用户密码 功能  

如下管理员可以将用户的密码修改为:666666

用修改后的新密码进行登录,若是登录成功,则代表密码修改成功 

不放心密码是否修改成功?那么可以去查询界面看一看

在查询结果中查看:密码确实成功修改为:666666 

本次的C语言点菜系统  人员管理  分两篇 源码分享

其他源码获取方式如下

C语言做一个点菜系统(人员管理1)

源码分享

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;	
	}	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值