admin管理员组

文章数量:1531441

c语言入门小程序(1) 实现登陆页面

学习c语言最好的路径就是多写小程序,提升自己对代码的理解,熟练使用各类语句的逻辑组合来达到自己的想要的某个界面或者功能,这里就以c语言来实现登录页面。

功能描述:

1.能够实现用户的登录。
2.能够实现用户的注册。
3.预留管理员账号,便于测试。

实现过程:

1.导入string.h头文件,便于以下语句对字符数组的操作。
2.利用strcmp(str1,str2)函数来对比输入的账号密码是否存在,strcmp(str1,str2)有3个返回值,当str1<str2时返回值为-1,当str1>str2时返回值为1,当str1=str2时返回值为0,str1=str2是我们的重点 ,用于判断用户密码账号是否正确。
3.逻辑功能的实现,函数的封装。
4.代码安排:

#include <stdio.h>
#include <string.h>

//函数声明
//子窗口正确显示
int menuSubclassSucces();
//子窗口错误显示
int menuSubclassFail();
//界面显示
void menuShow();
//用户选择
void userChoseFunction(int chose);
//注册页面成功提示
int userRegisterMenu();


int chose;
//用户账号密码校验
char userCheck[50];
char pwdCheck[16];

//匹配用户名与密码 
int isUserName;
int isUserPwd;

//定义超级用户登录用户名 以及密码 
char userNameR[50] = { "root" };
char userPwdR[16] = { "abc" };

//定义普通用户登录用户名 以及密码 
char userName[50];
char userPwd[16];

//定义普通用户登入表示符号
int userCdFlag = 0;

//界面显示
void menuShow()
{
	printf("/*************************************/\n\n");
	printf("\t欢迎登录机械臂操作系统\n\n");
	printf("/*************************************/\n\n");

	printf("请进行如下选择:\n\n\t1.用户登录\n\n\t2.用户注册\n\n\t3.查看更多\n\n\t4.退出系统\n\n");
	printf("请选择:");
}

//用户登录选择
void userLoginChose()
{
	printf("用户登陆选择:\n1.普通用户\n2.管理员用户\n");
	scanf("%d", &userCdFlag);
	getchar();
	
}

//用户选择
void userChoseFunction(int chose)
{
	switch (chose)
	{
		case 1:
			//普通用户
			userLoginChose();
			if (userCdFlag == 1)
			{
				userCdFlag = 0;
				printf("请输入用户名:");
				gets(userCheck);
				//user check
				isUserName = strcmp(userName, userCheck);
				printf("\n");

				printf("请输入密码:");
				gets(pwdCheck);
				printf("\n");
				//pwd check
				isUserPwd = strcmp(userPwd, pwdCheck);

				if ((isUserName == 0) && (isUserPwd == 0))
				{
					//用于判断返回层次
					if (menuSubclassSucces() == 0)
					{
						break;
					}
					else
					{
						menuSubclassSucces();
					}
				}
				//失败页面
				else
				{
					if (menuSubclassFail() == 0)
					{
						break;
					}
					else
					{
						getchar();
						userChoseFunction(1);
					}
				}
				printf("\n");
				getchar();
			
			}
			//超级用户
			else
			{
				printf("请输入用户名:");
				gets(userCheck);
				//user check
				isUserName = strcmp(userNameR, userCheck);
				printf("\n");

				printf("请输入密码:");
				gets(pwdCheck);
				printf("\n");
				//pwd check
				isUserPwd = strcmp(userPwdR, pwdCheck);

				if ((isUserName == 0) && (isUserPwd == 0))
				{
					//用于判断返回层次
					if (menuSubclassSucces() == 0)
					{
						break;
					}
					else
					{
						menuSubclassSucces();
					}
				}
				//失败页面
				else
				{
					if (menuSubclassFail() == 0)
					{
						break;
					}
					else
					{
						getchar();
						userChoseFunction(1);
					}
				}
				printf("\n");
				getchar();
			}
		
			break;
		case 2:
			printf("请添加用户名:");
			gets(userName);
			printf("\n");
			printf("请输入密码:");
			gets(userPwd);
			if ((userName != NULL) && (userPwd != NULL))
			{
				userRegisterMenu();

			}
			printf("\n");
			userCdFlag = 2;
			break;
		case 3:
			printf("欢迎使用该服务程序,如有疑问,请联系管理员\nQQ:485695xxx@qq");
			getchar();
			break;

		default:
			break;
	}
}

//子窗口正确显示
int menuSubclassSucces()
{
	char succes;
	printf("/***********登录成功***********/\n\n");
	printf("输入'y'返回上一层目录\n");
	scanf("%c", &succes);
	if (succes == 'y') return 0;
}

//子窗口错误显示
int menuSubclassFail()
{
	char fail;
	printf("/***********登录失败***********/\n\n");
	printf("'y'重新输入输入\t'n'返回上一层目录\n");
	scanf("%c", &fail);
	if (fail == 'n') return 0;
	else
	{
		return 1;
	}
}

//注册页面成功提示
int userRegisterMenu()
{
	char succes;
	printf("用户注册成功\n输入‘y’返回登录页面\n\n");
	scanf("%c", &succes);
	if (succes == 'y') return 0;
}



int main()
{
	while (1)
	{
		menuShow();
		scanf("%d", &chose);
		//捕捉回车键 否则会出现抓值错误 屏幕一闪而过等现象
		getchar();
		userChoseFunction(chose);
		if (chose == 4) return 0;
	}
	return 0;
}


5.实验效果(在liunx gcc环境下):


本文标签: 入门语言页面程序