如何为使用getch函数的C语言用户名密码校验程序绘制流程图
C语言用户名密码校验程序流程图绘制方案
首先明确流程图标准符号对应规则:
- 椭圆形:起止框,标记程序开始/结束
- 平行四边形:输入输出框,对应
printf/scanf/getch等输入输出操作 - 矩形:处理框,对应变量声明初始化、数值运算、字符串赋值等处理逻辑
- 菱形:判断框,对应循环条件、分支判断条件
- 箭头:标记流程执行走向
逐步骤流程绘制对应逻辑
1. 程序起始与初始化
- 起始椭圆形框:标记「开始」
- 矩形处理框:声明字符数组
username[15]、password[12],初始化整型变量i=0 - 平行四边形输出框:输出提示文本
Username: - 平行四边形输入框:读取用户输入的用户名存入
username变量
2. 密码输入模块(整合do-while循环与getch()逻辑)
do-while循环的特点是先执行一次循环体再判断终止条件,绘制时不要在进入循环前加判断节点:
- 平行四边形输出框:输出提示文本
Password: - 平行四边形输入框:调用
getch()读取单个无回显字符,赋值给password[i] - 平行四边形输出框:输出掩码字符
* - 矩形处理框:执行
i = i + 1 - 菱形判断框:判断条件
password[i-1] == '\r'(用户是否按下回车键)- 判断结果为「否」:箭头指回第2步的
getch()读取节点,继续循环输入 - 判断结果为「是」:退出循环,进入下一节点
- 判断结果为「否」:箭头指回第2步的
- 矩形处理框:将
password[i-1]赋值为\0,替换回车符为字符串结束标记
3. 账号校验模块(整合if-else判断逻辑)
- 菱形判断框:判断条件
strcmp(username,"usernamesample") == 0 且 strcmp(password,"password1234") == 0- 判断结果为「是」:平行四边形输出框,输出验证成功提示
VALID! - 判断结果为「否」:平行四边形输出框,输出验证失败提示
INVALID!
- 判断结果为「是」:平行四边形输出框,输出验证成功提示
4. 程序结束
两个分支的最终节点都指向椭圆形结束框,标记「结束」即可。
配套程序完整代码
注:原代码使用了字符串比较函数strcmp,需补充引入<string.h>头文件,否则会出现编译错误。
#include <stdio.h> #include <conio.h> #include <string.h> int main() { char username[15]; char password[12]; int i=0; printf("\nUsername: "); scanf("%s",username); printf("\nPassword: "); do { password[i]=getch(); printf("*"); i++; } while(password[i-1]!='\r'); password[i-1]='\0'; if( strcmp ( username,"usernamesample" ) == 0 && strcmp ( password,"password1234" ) == 0 ) { printf("\nVALID!"); } else { puts("\nINVALID!"); return 0; } };
内容的提问来源于stack exchange,提问作者Jernst Jackson
相关产品推荐
相关产品推荐

