c语言编写注册与登录的程序.txt
根据提供的文件信息,我们可以总结出该C语言程序的主要功能是实现用户注册与登录的基本操作。以下将对该程序涉及的关键知识点进行详细的分析与解释。 ### 一、程序结构概述 此程序主要通过定义一个用户结构体`struct user`来存储用户信息,并通过一系列函数对用户的用户名与密码进行验证。此外,还包括了用户注册的功能。 ### 二、关键知识点详解 #### 1. 用户结构体定义 ```c struct user { int user_id; char user_name[19]; // 用户名最大长度为18个字符 char password[13]; // 密码最大长度为12个字符 char like[255]; // 用户兴趣爱好 char sign[255]; // 用户个性签名 }; ``` - `user_id`: 用户ID,用于唯一标识每个用户。 - `user_name`: 存储用户名,长度限制在1到18个字符之间。 - `password`: 存储密码,长度限制在6到12个字符之间。 - `like`: 存储用户的兴趣爱好,最长可以达到255个字符。 - `sign`: 存储用户的个性签名,同样最长可以达到255个字符。 #### 2. 用户名验证 - **长度验证**: ```c int length_user_name(char *p) { int l = strlen(p); if (l > 18 || l < 1) { return 0; } else { return l; } } ``` - 功能:确保用户名的长度在1到18个字符之间。 - **格式验证**: ```c int valid_user_name(char *p) { int i = 0; int len = strlen(p); if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) { for (i = 0; i < len; i++) { if (!(p[i] == '_' || (p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <= 'Z') || (p[i] >= '0' && p[i] <= '9'))) { return 0; } } return 1; } else { return 0; } } ``` - 功能:确保用户名只能包含字母(大小写均可)、数字以及下划线,并且第一个字符必须是字母。 #### 3. 密码验证 - **长度验证**: ```c int length_password(char *p) { int len = strlen(p); if (len < 6 || len > 12) { return 0; } else { return len; } } ``` - 功能:确保密码的长度在6到12个字符之间。 - **格式验证**: ```c int is_password_valid(char *p) { int i = 0; for (; *p != '\0'; p++) { if (!((p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <= 'Z') || (p[i] >= '0' && p[i] <= '9'))) { return 0; } } return 1; } ``` - 功能:确保密码只包含字母(大小写均可)和数字。 #### 4. 用户注册功能 ```c int user_register(struct user *ptr_user, int size) { char password[13]; char repassword[13]; if (size == N) { puts("注册失败!"); return 0; } printf("输入用户名:"); fflush(stdin); gets(ptr_user[size].user_name); if (!(length_user_name(ptr_user[size].user_name) && valid_user_name(ptr_user[size].user_name))) { printf("验证失败,用户名长度应在1-18个字符之间,首字符为字母,不能包含特殊字符!!!"); return 0; } printf("输入密码:"); fflush(stdin); gets(password); printf("确认密码:"); fflush(stdin); gets(repassword); if (!two_password_valid(password, repassword)) { printf("\n两次输入的密码不一致!"); return 0; } else { strcpy(ptr_user[size].password, password); } if (!(length_password(ptr_user[size].password) && is_password_valid(ptr_user[size].password))) { printf("验证失败,密码长度应在6-12个字符之间,只能包含字母和数字!!!"); return 0; } printf("输入兴趣爱好:"); fflush(stdin); gets(ptr_user[size].like); printf("输入个性签名:"); fflush(stdin); gets(ptr_user[size].sign); printf("注册成功,您的用户ID为:%d,请牢记您的信息.", ptr_user[size].user_id = 10000 + size); return 1; } ``` - 功能:完成用户的注册过程,包括输入用户名、密码及确认密码等步骤,并进行相应的验证。 以上是对该程序关键知识点的详细解析,它为我们提供了一个基础的用户注册与登录系统的框架。通过对这些知识点的理解,可以帮助开发者更好地掌握C语言中如何处理字符串以及如何实现基本的数据验证等功能。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define N 100
struct user
{
int user_id;
char user_name[19];//最大18位
char password[13];//最大13位
char like[255];
char sign[255];
};
/*
* 验证用户名长度是否合法
*/
int length_user_name(char *p)
{
int l;
l=strlen(p);
if(l>18||l<1)
{
return 0;
}
else
return l;
}
/*
* 判断用户名是否有效
*/
int valid_user_name(char *p)
{
int i=0;
int len = strlen(p);
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <='Z')) //判断首字符是不是字母
{
for(i = 0; i < len; i++)
{
if(!(p[i] == '_' || (p[i] >= 'a' && p[i] <= 'z') || (p[i] >= 'A' && p[i] <='Z')
||(p[i] >='0' && p[i] <= '9'))) //判断后面字符是否有效
return 0;
}
return 1;
}
else
return 0;
}
/*
* 判断用户名是否有效
*/
int is_username_valid(char *p)
{
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <='Z'))
剩余9页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 00-【管理制度】08-公司新员工入职培训管理制度.doc
- 01-【培训计划】13-新入职员工培训方案计划书(修改版).doc
- 02-【培训方案】04-新员工入职培训方案 .doc
- 02-【培训方案】03-新员工入职培训方案.doc
- 01-【培训计划】18-公司新员工入职培训计划.doc
- 02-【培训方案】07-新员工入职培训课程体系.doc
- 04-【培训通知】06-新员工入职培训通知.doc
- 06-【培训手册】06-新员工入职培训手册.doc
- 05-【培训签到】06-员工培训签到表(模板).doc
- 06-【培训手册】09-超市新员工培训内容.doc
- 06-【培训手册】08-新入职员工培训手册.doc
- 08-【考核管理】06-新员工入职试用考核评价表.doc
- 09-【确认书】04-入职培训确认书.doc
- 09-【确认书】03-新员工入职培训确认书.doc
- 11-【其他】06-新员工入职培训登记表.doc
- 11-【其他】10-新进职员教育.doc
- 1
- 2
前往页