得分:25

#include

#include

#include

#include

#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'))

{

p++;

while(*p)

{

if(!(isalpha(*p) || *p == '_' || isdigit(*p)))

return 0;

p++;

}

return 1;

}

else

{

return 0;

}

}

/*

* 密码长度有效性验证

*/

int length_password(char *p)

{

int len;

len = strlen(p);

if(len<6||len>12)

{

return 0;

}

else

return len;

}

/*

* 密码的有效性验证

*/

int is_password_valid(char *p)

{

int i=0;

for(;*p != '\0'; p++)

{

if(!( (*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <='Z')

||(*p >='0' && *p <= '9'))) //判断字符是否有效

return 0;

}

return 1;

}

int two_password_valid(char *p1,char*p2)

{

if(strcmp(p1,p2)==0)

return 1;

else

return 0;

}

/*

* 完成注册功能

*/

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("您的编号为:%d,这将是您的登陆帐号.",ptr_user[size].user_id=10000+size);

return 1;

}

/*

* 如果登陆成功则返回第i+1个用户的信息,否则返回0

*/

int is_my_user(struct user *p,int size)

{

int i;

int zhanghu;

char mima[15];

printf("请输入您的帐号: ");

scanf("%d",&zhanghu);

fflush(stdin);

printf("请输入您的密码: ");

gets(mima);

for(i=0;i

{

if((zhanghu == p[i].user_id)&&(strcmp(mima,p[i].password)==0))

{

return i + 1;

}

}

return 0;

}

void display_user(struct user u)

{

printf("\n你的帐号是:%d",u.user_id);

printf("\n你注册姓名是:%s",u.user_name);

printf("\n你的爱好:%s",u.like);

printf("\n你的个性签名:%s",u.sign);

}

void update_password(struct user *ptr_user,int size)

{

char mima1[13],mima2[13];

int i = is_my_user(ptr_user,size);

if(i)

{

i--;

}

else

{

printf("\n帐号密码不存在!");

return;

}

printf("请输入新密码: ");

scanf("%s",mima1);

printf("请再次输入新密码: ");

scanf("%s",mima2);

if(two_password_valid(mima1,mima2) && length_password(mima1) && is_password_valid(mima1))

{

strcpy(ptr_user[i].password,mima1);//完成新旧密码的调换

printf("\n您的的密码修改成功!");

}

else

printf("\您的密码修改失败!");

}

//显示菜单

int show_menu()

{

int choice;

printf("\n1.注册");

printf("\n2.登陆");

printf("\n3.修改密码");

printf("\n4.退出");

printf("\n请选择1-4\n");

scanf("%d",&choice);

return choice;

}

int main()

{

struct user our_users[N];

int count = 0;

int current_user;

while(1)

{

switch(show_menu())

{

case 1:

if(user_register(our_users,count))

{

count++;

printf("\n注册成功!");

}

break;

//注册

case 2:

if((current_user = is_my_user(our_users,count)))

{

printf("\n登陆成功!");

display_user(our_users[current_user - 1]);

}

else

printf("\n登陆失败!");

break;

//登陆

case 3:

update_password(our_users,count);

break;

//修改密码

case 4:

exit(1);

break;

//退出

default:

printf("请正确输入");

}

}

return 0;

}

c语言编写用户注册程序,如何用c实现登录和注册的程序?相关推荐

  1. 如何用微信公众号快速注册小程序

    https://jingyan.baidu.com/article/ceb9fb109fab828cad2ba0ca.html 1 2 3 4 5 6 7 分步阅读 为方便公众号快捷接入小程序,并在各 ...

  2. 小程序学习历程(二):注册小程序测试号

     该文适合还没有微信小程序开发者账号,以及有了开发者账号同时还想注册一个测试账号的读者. 开发者测试账号推出的用意,主要是:方便我们在决定正式注册小程序账号之前,或者仅仅只是想体验一下小程序(或小游戏 ...

  3. C语言 编写一个统计空格,制表符与换行符个数的程序

    思路 1怎么输入字符串. 2怎么计算字符个数. 3怎么表达空格 ,制表符,换行符. #include<stdio.h> int main() {int c;int blank=0,tab= ...

  4. 怎么用python制作简单的程序-如何用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...

  5. 微信小程序云开发用户身份登录_微信小程序+云开发实现欢迎登录注册

    前段时间和同学一起做了一个小程序,用来参加学校的比赛,完成后把项目内容分割一下,贴到博客上面,算是学习记录和总结吧. 因为是学生党,而且并没有很大的需要,所以选择了微信小程序为开发者提供的" ...

  6. 微信小程序云开发用户身份登录_微信小程序开发用户授权登录(下)

    如果开发者拥有多个移动应用.网站应用.和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用.网站应用和公众帐号(包括小程序),用户的 Un ...

  7. python 英雄联盟商城登录,注册界面程序

    while True:print("\t\t\t英雄商城登录界面\n")print("~*"*38)print("\t\t\t1.用户登录\n&quo ...

  8. Python语言基于Socket实现聊天室(包含登录、注册功能)

    一.聊天室的整体架构 1.twisted:实现服务端,以及事件驱动 Twisted是用Python实现的基于事件驱动的网络引擎框架. 2.socket:实现客户端,以及事件驱动 3.tkinter:实 ...

  9. 微信小程序云开发用户身份登录_微信小程序云开发实现授信注册登录?

    页面样式想实现点此登录然后弹出授权用户确定后显示用户头像和昵称. 后台实现,用户点击授权后,获取用户信息和openid,去云数据库里找,如果没有就获取用户信息保存.然后再使用openid去查找用户信息 ...

  10. c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.

    C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...

最新文章

  1. 如何浏览文本字段(下一个/完成按钮)
  2. 计算机入门的一些常用小技巧总结
  3. idea创建springboot项目,一直在reading pom.xml
  4. 晓庄学院计算机科学分数,南京晓庄学院计算机单招分数
  5. jpa-spring -basic
  6. sql注入攻击_让你彻底明白sql注入攻击
  7. JQuery 函数 操作
  8. 【英语学习】【医学】Unit 06 Urine Formation
  9. 元素周期表排列的规律_元素周期表的秘密【机密文件】
  10. 吴恩达机器学习logistic回归作业(python实现)
  11. 怎样才可以关掉Mac电脑开机启动项?
  12. 甘氨胆酸(Cholylglycine)小麦麦清白蛋白纳米粒|叶酸偶联牛血清白蛋白负载卡铂和紫杉醇靶向纳米粒
  13. 网站建设以后如何处理死链接页面
  14. [项目管理] 项目管理之配置管理
  15. 手机投屏到电脑显示屏
  16. 海底捞月战法实战讲解
  17. 计算机风景画作品,电脑风景画图片
  18. 下载和安装Tcl/Tk:
  19. JspWriter与PrintWriter(转)
  20. Maven系列之使用阿里云仓库

热门文章

  1. QQ空间蜘蛛爬虫数据报告
  2. arm-linux-gcc踩坑1
  3. 人脸识别“抓”错了人,他在监狱待了10天
  4. linux V4L2子系统——v4l2架构(1)之整体架构
  5. 计算机信息计量单位kgm,工程单位换算表.pdf
  6. js--京东快递单号查询案例
  7. php 微信统一下单接口,微信公众号支付(二)实现统一下单接口
  8. Java直接运行JavaScript代码或js文件
  9. 前端vue生成二维码
  10. 想做数据分析,都需要学些什么?