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

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.com");
			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环境下):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别打落了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值