最近的一个课程设计要求的一个用户登录的程序,通常软件网页等的用户登录注册都是涉及到数据库。但像课程设计这种小程序要求的安全度不高就可以用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. C#常规开发Windows服务

    .Net平台下开发Windows服务的支持库很多,除了通过标准的Windows服务项目,还有一些优秀的开源架构比如:TopSelf:本文以常规项目为例 一.开发 1.新建[Windows服务] 项目: ...

  2. JUC-12.4-execute和sumbit的区别

    在Executor接口中只定义了execute方法,而submit方法则是在ExecutorService接口中定义的. execute没有返回值,而submit有返回值. 转自: https://w ...

  3. Find a multiple POJ - 2356 【鸽巢原理应用】

    Problem DescriptionThe input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). E ...

  4. MySQL 中Redo与Binlog顺序一致性问题

    首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的.而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的.现在我们来讨论一下My ...

  5. vmware 安装 VMwareTools

    mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom cp VMwareTools-x.x.x-yyyy.tar.gz ~/ cd ~ ...

  6. 【转载】Maven安装配置+ GIt&SVN + Jenkins详细配置 软件项目管理 持续集成实验

    原文地址: https://www.cnblogs.com/clownice/p/5395933.html 以下是学习笔记: Jenkins是一款开源持续集成的软件,实现集成的自动化 自动构建工具:M ...

  7. tomcat+myeclipse+mysql环境搭建

    毕业设计要做的题目,搭环境我就搭了两天...网上的教程都好碎啊.. 我的需求是这样,我有一个Android app需要与电脑上的数据库交换信息,实现增删查改,这样不管用什么方法,电脑上都要有一个服务器 ...

  8. Redis监控之redis-stat安装与详解

    一.安装环境 安装编译环境.ruby运行环境.git代码 yum install gcc-c++ yum -y install ruby-devel yum install ruby yum inst ...

  9. python 中对象is和==是怎么比较的

    Python中的对象包含三要素:id.type.value.其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的.==判断的 ...

  10. 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈 绝对值?相对值

    小结: 1. 常数时间内检索到最小元素 2.存储 存储绝对值?相对值 存储差异 3. java-ide-debug 最小栈 - 力扣(LeetCode)https://leetcode-cn.com/ ...