最近的一个课程设计要求的一个用户登录的程序,通常软件网页等的用户登录注册都是涉及到数据库。但像课程设计这种小程序要求的安全度不高就可以用c/c++实现。

首先,我们要清楚用户登录的流程。应该大家对这些并不陌生。

首先说说注册流程

1、要求输入用户名(如果该用户名已被注册则重新输入)

2、要求输入密码。

3、要求再次输入密码(如果两次密码输入相同则注册成功,否则重新注册)。】

其次是登陆流程

1、输入用户名(如果该用户名不存在则重新输入)

2、输入密码(如果正确则进入程序,否则重新登录)

那么下面就用代码来实现:

有两种方式实现,一、使用 fstream 文件读写流。二、使用结构体链表(该方法以后补充)

一、使用 fstream 文件读写流

 void regist()
{ //注册
char *password = new char[];//分配20个字节,然后返回首地址给password,即password可以看做一个20字节的字符数组,即字符串
string name;
/*struct user
{
string password;
string name;
};定义的用户结构体*/
user c;
ifstream fin;//声明 ifstream 对象
fin.open("user.txr",ios::in);//关联文件
cout << "请输入用户名:";
cin>>name;
while(fin >> c.name >> c.password)//读取成功返回1
{
if(c.name==name)
{cout << "该用户名已被注册" <<endl;regist();}
}
char test ;int i=;
cout << "输入密码:";
while((test=getch())!='\r')
{
if(test==)//ASC2码8为退格
{
if(i>)
{
cout << test << " " << test;
password[i--]='\0';
}
}
else
{
if(i<)
{
cout << "*" ;
password[i]=test;
i++;
}
}
}
password[i] = '\0';
cout << "再次输入密码" ;
char *password2 = new char[];
i=;
while((test=getch())!='\r')
{
if(test==)
{
if(i>)
{
cout << test << " " << test ;
password2[i--]='\0';
}
}
else
{
if(i<)
{
cout << "*";
password2[i]=test;
i++;
}
}
password2[i]='\0';
}
if(strcmp(password,password2)!=)
{ cout << "密码两次输入不正确";
regist();
}
else
{
cout << "注册成功";
}
ofstream fout;
fout.open("user.txr",ios_base::out|ios_base::app);
fout << name << " " << password << endl;
fout.close();//关闭文件连接,但不会删除流
cout << "三秒后返回登陆界面";
nterface();//界面
}
 void logo()
{//登录
char *password = new char [];
string name;
cout << "用户名:"<<endl;
cin>>name;
cout <<" 密码:"<<endl;
char test;int i=;
while((test=getch())!='\r')
{
if(test==)//ASC2码8为退格
{
if(i>)
{
cout << test << " " << test;
password[i--]='\0';
}
}
else
{
if(i<)
cout << "*";
password[i]=test;
i++;
}
}
password[i]='\0';
ifstream fin;
fin.open("user.txr",ios_base::in);
if(fin.fail())
{
cout << "文件打开失败";
}
user c;int f1;
while(fin>>c.name>>c.password)
{
if(c.name==name&&c.password==password)
{
cout << "登陆成功";
f1=;//登录成功标志
nterface();
}
}
if(f1==)//f1==0登录失败
{
cout << "用户名或密码错误";
logo();
}
}

课程设计之C/C++实现用户登录注册的更多相关文章

  1. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  2. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  3. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  4. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  5. javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  6. JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  7. swing 实现用户登录注册界面(不使用数据库)

    swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...

  8. 纯JSP实现用户登录注册,记事本

    没有美化,没有格式,没有样式 1.JSP登陆注册 将用户注册的信息保存在application对象中,用于登录时的验证. 首页如下: 如果未登录,在  session 中找不到 currentUser ...

  9. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

随机推荐

  1. 内存管理3- @property 参数详解

    @property ----------------- Create two classes: Book & Student ------------------- book.m #impor ...

  2. jquer属性 offset、position、scrollTop

    尺寸操作 1.获取宽高      a) jq对象.height/width () :只有获取高度/宽度         尺寸,不包括padding和margin 和 border 2.设置宽度     ...

  3. 两大主流开源分布式存储的对比:GlusterFS vs. Ceph

    两大主流开源分布式存储的对比:GlusterFS vs. Ceph 存储世界最近发生了很大变化.十年前,光纤通道SAN管理器是企业存储的绝对标准,但现在的存储必须足够敏捷,才能适应在新的基础架构即服务 ...

  4. 解析NaN

    此文为自译文,且第一次翻译,有不足之处. 原英文地址:https://en.wikipedia.org/wiki/NaN 我的理解 32位下二进制的 NaN 存储格式为s111 1111 1111 1 ...

  5. Linux设备驱动程序 之 vmalloc

    vmalloc()函数的工作方式类似于kmalloc(),只不过在前者分配的内存虚拟地址是连续的,而物理地址则无须连续:这也是用户空间分配函数的工作方式:由malloc()返回的页在进程的虚拟地址空间 ...

  6. 黑马vue---56-58、vue组件创建的三种方式

    黑马vue---56-58.vue组件创建的三种方式 一.总结 一句话总结: 不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素 1.使用 Vu ...

  7. 模糊C均值聚类的公式推导

    j=1...n,N个样本 i=1...c,C聚类 一.优化函数 FCM算法的数学模型其实是一个条件极值问题: 把上面的条件极值问题转化为无条件的极值问题,这个在数学分析上经常用到的一种方法就是拉格朗日 ...

  8. 一、mysql下载与安装

    1.下载 官网:https://www.mysql.com/ 注意,其实我看了好的博文,下载截图五花八门,官网内容是变动的,布局也不一样,所以不要指望标准参照那个博文去找到安装包下载: 不过,你可以不 ...

  9. LevelListDrawable

    用来管理一组Drawable的,我们可以为里面的drawable设置不同的level, 当他们绘制的时候,会根据level属性值获取对应的drawable绘制到画布上,根节点 为:<level- ...

  10. android Vitamio Live 实时视频 记录

    Vitamio 下载地址: https://github.com/yixia/VitamioBundle/releases https://github.com/yixia/VitamioBundle ...