C++离线存储登录系统

直接上代码,

#include<iostream>
#include<fstream>
#include <string>
#include <windows.h>
#include<conio.h>
using namespace std;
void denglu() {
	while(1) {
		system("cls");
		int sr;
		cout << "登录"<<endl;
		cout << "尚未注册(1)"<<endl;
		cout << "已注册,登录(2)"<<endl;
		sr=getch();
		if(sr=='1') {
			break;     //跳出该循环
		}
		system("cls");
		string zh,mm,u1,u2;
		cout << "账号:";
		cin >> zh;
		cout << "密码:";
		cin >> mm;
		ifstream ifs;
		ifs.open("yhzl.txt", ios::in);
		while (ifs >> u1 && ifs >> u2) {
			if (u1 == zh && u2 == mm) {
				cout << u1 << " 你好" << endl;
				cout<<endl;
				cout<<"修改密码(1)"<<endl;
				cout<<"注销账号(2)"<<endl;
				cout<<"退出登录(3)"<<endl;
				sr=getch();
				if(sr=='1') {
					system("cls");
					string x,y;
					cout << "原密码:";
					cin >> x;
					if(x==u2) {
						ofstream oof;
						oof.open("temp.txt", ios::binary | ios::out);     //temp.txt用于交换
						cout << "新密码:";
						cin >> y;
						oof << u1 << "\t" << y << endl;
						oof.close();
						ofstream ofs;
						ifstream iof;
						ofs.open("yhzl.txt", ios::binary | ios::out);
						iof.open("temp.txt", ios::binary | ios::out | ios::in);
						while (iof >> u1 >> y ) {
							ofs << u1 << "\t" << y << endl;
						}
						cout << "修改成功,请重新登录"<<endl;
						system("pause");
						ofs.close();
						iof.close();
						continue;
					} else if(x!=u2) {
						cout << "原密码错误,请重新登录"<<endl;
						system("pause");
						continue;
					}
				}
				if(sr=='2') {
					cout << "确认注销"<<endl;
					cout << "确认(1)"<<endl;
					cout << "取消(2)"<<endl;
					sr=getch();
					if(sr=='1') {
						ifstream ifs;
						ofstream oof;
						ifs.open("yhzl.txt", ios::binary | ios::out | ios::in);
						oof.open("temp.txt", ios::binary | ios::out);
						while (ifs >> u1 && ifs >> u2 ) {
							if (u1 == zh ) {
								continue;
							}
							oof << u1 << "\t" << u2 <<endl;
						}
						ifs.close();
						oof.close();
						ofstream ofs;
						ifstream iof;
						ofs.open("yhzl.txt",ios::binary | ios::out);
						iof.open("temp.txt", ios::binary | ios::out | ios::in);
						while (iof >> u1 >> u2 ) {
							ofs << u1 << "\t" << u2 << endl;
						}
						ofs.close();
						iof.close();
					}
					if(sr=='2') {
						continue;
					}
				}
				if(sr=='3') {
					system("cls");
					cout<<"已退出登录"<<endl;
					system("pause");
					break;
				}
			} else if(u1 != zh || u2 != mm) {
				cout<<"账号或密码错误"<<endl;
				system("pause");
				break;
			}
		}
		ifs.close();
	}
}
void zhuce() {
	int sr,x=0;
	while(1) {
		x=0;
		string zh,mm,zhe;
		system("cls");
		cout << "账号:";
		cin >> zh;
		ifstream ifs;
		ifs.open("zh.txt", ios::in);
		while (ifs >> zhe ) {
			if (zh == zhe) {
				cout << "已有账号,是否登录?" << endl;
				cout<<endl;
				cout<<"是(1)"<<endl;
				cout<<"否(2)"<<endl;
				sr=getch();
				if(sr=='1') {
					x=1;
					break;

				}
				if(sr=='2') {
					x=2;
					break;
				}
				if(sr != '1' || sr != '2') {
					x=1;
					break;
				}
			} else {
				break;
			}
		}
		if(x==1) {
			break;
		}
		if(x==2) {
			system("cls");
			continue;      //跳出本次循环
		}
		ifs.close();
		cout << "密码:";
		cin>>mm;
		ofstream ofs;
		ofs.open("yhzl.txt", ios::out|ios::app);                       //若是电脑读取不了中文的,只能用首字母或数字代替。
		ofs << zh << "\t" << mm << endl;        //这里的“\t”表示空格,电脑会自动为我们把数据对齐
		ofs.close();
		ofs.open("zh.txt", ios::out|ios::app);                       //应该是我技术问题,若是会单项查找,可以自己尝试
		ofs << zh << endl;
		ofs.close();
		cout << "注册成功" <<endl;
		system("pause");
		break;
	}
}
int main() {
	system("chcp 65001");
	ofstream ofs;
	ofs.open("yhzl.txt", ios::out|ios::app);   //创建txt文件
	ofs.close();
	ofs.open("zh.txt", ios::out|ios::app);     //zh.txt用于存储账号,yhzl.txt则用于存储用户信息
	ofs.close();
	while(1) {
		denglu();
		zhuce();
	}
	return 0;
}

这系统的是用txt文件存储的,

先了解一下文件流,

ofs.open("yhzl.txt", ios::binary | ios::out);

 ofs.open是打开,并以某种方式打开,

某种方式取决与ios::后面的代码,向上面的binary,out,还有in, app,ate等

ios是关联 ifstream的,

可以这样引用ifstream

#include<fstream>

#include<iostream> 

<fstream> 就是ofs的头文件,而<iostream> 是常见输出输入的头文件,如cout,cin

ios::后面的代码意思就像下面这表格

代码用途
in读取txt
out写入txt
app输入标全部跳到最后面
ate打开输入标跳到最后面
binary用二进制打开
trunc把之前写的扔掉

 

ofs.open("yhzl.txt", ios::binary | ios::out);

 这个就是,啊

先不说,

你猜

答案在这     答案

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

你猜

答案

以二进制写的方式打开yhzl.txt

我爱bug,快说说bug吧

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Ubuntu上离线安装gcc-c,您可以按照以下步骤进行操作: 1. 在另一台具有互联网连接的计算机上下载适用于您的Ubuntu版本的gcc-c编译器的.deb包,同时也下载相应的依赖文件(如libgcc1和libc6等)。 2. 将下载的.deb包和依赖文件复制到离线安装的目标计算机上的某个目录中,例如/home/username/debs。 3. 在目标计算机上打开终端,使用cd命令导航到包含.deb文件的目录。 4. 运行以下命令安装gcc-c。假设.deb文件名为gcc-c.deb: sudo dpkg -i gcc-c.deb 5. 安装过程中可能会提示缺少依赖项。使用以下命令来解决缺少依赖项的问题: sudo apt-get -f install 6. 系统将下载并安装缺少的依赖文件。 7. 安装完成后,您就可以在终端中使用gcc-c编译器进行编译。 请注意,离线安装可能无法自动解决依赖关系,因此您可能需要手动下载和安装所有缺少的依赖项。同时,随着时间的推移,请确保安装的gcc-c版本与您的Ubuntu版本兼容。 祝您成功完成离线安装gcc-c! ### 回答2: 在Ubuntu系统离线安装gcc-c有以下步骤: 1. 在另一台联网的电脑上下载gcc-c的离线安装包,该安装包通常是以.tar.gz或者.tar.bz2文件格式提供。 2. 将下载好的安装包拷贝到目标Ubuntu系统中,可以使用U盘、移动硬盘等存储设备进行传输。 3. 在Ubuntu系统中打开终端,通过cd命令切换到安装包所在的目录。 4. 使用tar命令解压缩安装包,例如: ``` tar -zxvf 包名.tar.gz ``` 或者 ``` tar -jxvf 包名.tar.bz2 ``` 这将解压缩安装包到当前目录。 5. 进入解压后的目录,通常会看到一个名为configure的文件,运行以下命令进行配置: ``` ./configure ``` 这将检查系统环境,并生成编译所需的Makefile文件。 6. 运行make命令进行编译,例如: ``` make ``` 这将根据生成的Makefile文件编译安装包。 7. 最后,使用sudo命令以管理员权限运行make install命令进行安装,例如: ``` sudo make install ``` 这将将安装包中的文件复制到系统目录中,完成离线安装过程。 通过以上步骤,你可以在不联网的情况下成功安装gcc-c。请确保已经安装了必要的编译工具和依赖库,以避免编译过程中的错误。 ### 回答3: 要在Ubuntu上离线安装gcc-c,你需要按照以下步骤进行操作: 1. 在有互联网连接的电脑上,下载gcc-c的软件包以及其依赖的其他软件包。可以在Ubuntu官方软件仓库或其他可信的软件镜像站点上下载。 2. 将下载好的软件包复制到离线的Ubuntu机器上。可以使用USB闪存驱动器或其他可移动存储设备来传输文件。 3. 在Ubuntu机器上打开终端,使用cd命令导航到存储软件包的目录。 4. 运行以下命令来安装gcc-c以及其依赖的软件包: sudo dpkg -i package_name.deb 请将"package_name.deb"替换为你所下载的gcc-c软件包的文件名。 5. 运行以下命令来解决可能遇到的依赖问题: sudo apt-get -f install 6. 完成安装后,你就可以在Ubuntu上使用gcc-c编译C程序了。 需要注意的是,由于离线安装无法自动解决依赖问题,你可能需要手动下载并安装gcc-c所需的其他软件包。在安装过程中,如果出现任何错误或依赖问题,请查阅错误信息,并尝试解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值