数组及其字符数组的基本知识点,以及一个编写一个系统登录界面,输入用户名(chen)和密码(1234),用户名只能输入字符8位,密码只能输入数字12位,使用光标定位函数
例:编写一个系统登录界面,输入用户名(chen)和密码(1234),用户名只能输入字符8位,密码只能输入数字12位,使用光标定位函数
#include<stdio.h>
#include <windows.h>//gotoxy()函数头文件
#include<conio.h>//getch()函数头文件
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;
int j=0;
//起始位置
gotoxy(startX,startY);
printf("╔");
for(i=0;i<width-2;i++)
{
printf("═");
}
printf("╗");
for(j=0;j<height-2;j++)
{
gotoxy(startX,startY+1+j);
printf("║");
for(i=0;i<width-2;i++)
{
printf(" ");
}
printf("║");
}
gotoxy(startX,startY + height-1);
printf("╚");
for(i=0;i<width-2;i++)
{
printf("═");
}
printf("╝");
gotoxy(20,7);
printf("OrderDish点菜系统");
}
int main()
{
int i=0;
char ch;
int count=0;
char userName[20]={0};
char passwd[20]={0};
paintWindow(5,5,50,20);
gotoxy(15,10);
printf("用户名:");
gotoxy(15,12);
printf("密码:");
gotoxy(22,10);
while(1)
{
while(1)
{
ch=getch();
if(count>=8)//只能输入8位
{
break;
}
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
userName[i]=ch;
putch(ch);
i++;
count++;
}
else if(ch==13) break;//13为回车的ascll码值
else if(ch=='\b')//删除的转义字符
{
if(count>0)
{
printf("\b \b");
count--;
userName[i]='\0';
}
}
}
gotoxy(22,12);
count=0;
i=0;
while(1)
{
ch=getch();
if(count>=12)//只能输入12位
{
break;
}
if(ch>='0'&&ch<='9')
{
passwd[i]=ch;
putch('*');
i++;
count++;
}
else if(ch==13) break;
else if(ch=='\b')//删除的转义字符
{
if(count>0)
{
printf("\b \b");
count--;
passwd[i]='\0';
}
}
}
gotoxy(22,18);
if(strcmp(userName,"chen")==0&&strcmp(passwd,"1234")==0)
{
printf("登录成功!\n");
break;
}
else
{
printf("用户名或密码错误!请重新输入!");
i=0;
count=0;
memset(userName,0,sizeof(userName));//将数组里的值初始化
memset(passwd,0,sizeof(passwd));
system("cls");//刷新屏幕
paintWindow(5,5,50,20);
gotoxy(15,10);
printf("用户名:");
gotoxy(15,12);
printf("密码:");
gotoxy(24,10);
}
}
return 0;
}