⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.cpp

📁 一个简单的复数计算器程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			for(i=0,user.dlAve=0;i<3;i++)       //计算最新3次的平均值
				user.dlAve+=user.dlScore[i];
			user.dlAve=user.dlAve/3;
		}
		cout<<"按任意键继续\n";
		cout.flush();
		cin.get();
		cin.get();
	}

	void Add()                       //实现复数的加法
	{
		user.nAdd ++;
		CComplex num1,num2,sum,Zero(0,0);
		cout<<"加法计算\n"<<"最少输入两个复数,并且以零结束\n";
		cout<<"第1个复数,";
		cin>>num1;                   //输入第1个复数
		cout<<"第2个复数,";
		cin>>num2;                   //输入第2个复数
		sum=num1+num2;
		cout<<"第3个复数;";
		cin>>num1;                   //输入第3个复数
		int i=4;
		while (!(num1==Zero)) {
			sum=sum+num1;            //实现复数相加
			cout<<"第"<<i<<"个复数:";
			cin>>num1;               //输入第i个复数
			i++;
		}
		cout<<"结果是:"<<sum<<endl;
		cout<<"按任意键继续\n";
		cout.flush();
		cin.get();
		cin.get();
	}

	void Sub()                       //实现减法函数
	{
		user.nSub ++;
		CComplex num1,num2,sub,Zero(0,0);
		cout<<"最少输入两个复数,并且以0结束\n";
		cout<<"第1个复数:";
		cin>>num1;                   //输入第1个复数
		cout<<"第2个复数:";
		cin>>num2;                   //输入第2个复数
		sub=num1-num2;
		cout<<"第3个复数:";
		cin>>num1;                   //输入第3个复数
		int i=4;
		while (!(num1==Zero)) {
			sub=sub-num1;            //实现复数减法
			cout<<"第"<<i<<"个复数:";
			i++;
			cin>>num1;               //输入第i个复数
		}
		cout<<"减法运算的结果是:"<<sub<<endl;
		cout<<"按任意键继续\n";
		cin.get();
		cin.get();
	}

	void Mul()                       //实现乘法的函数
	{
		user.nMul++;
		CComplex num1,num2,mul,Zero(0,0);
		cout<<"最少输入两个复数,并且以0结束\n";
		cout<<"第1个复数:";
		cin>>num1;
		cout<<"第2个复数:";
		cin>>num2;
		mul=num1*num2;               //实现复数的乘法
		cout<<"第3个复数:";
		cin>>num1;
		int i=4;
		while (!(num1==Zero)) {
			mul*=num1;
			cout<<"第"<<i<<"个数:";
			i++;
			cin>>num1;
		}
		cout<<"乘法运算的结果是:"<<mul<<endl;
		cout<<"按任意键继续\n";
		cin.get();
		cin.get();
	}

	void Add1()                       //实现复数的自加,实部和虚部均自加1
	{
		user.nAdd ++;                 //用户加法记录数加1
		CComplex num1;
		cin>>num1;
		num1++;                       //实部与虚部分别加1
		cout<<"自加结果为"<<num1<<endl;
		cout<<"按任意键继续\n";
		cout.flush();
		cin.get();
		cin.get();
	}

	void Sub1()                       //实现复数自减
	{
		user.nSub ++;                 //用户减法记录数加1
		CComplex num1;
		cin>>num1;
		num1--;
		cout<<"自减结果为"<<num1<<endl;
		cout<<"按任意键继续\n";
		cout.flush();
		cin.get();
		cin.get();
	}

	void Compare()                    //比较两个复数的大小
	{
		CComplex num1,num2;
		cout<<"输入两个复数\n";
		cout<<"第1个复数:";
		cin>>num1;
		cout<<"第2个复数:";
		cin>>num2;
		if(num1==num2)
			cout<<"这两个复数相等\n";
		else if(num1>num2)
			cout<<num1<<"的模大于"<<num2<<"的模\n";
		else if(num1<num2)
			cout<<num2<<"的模大于"<<num2<<"的模\n";
		else
			cout<<"这两个复数的模相等\n";
			cout<<"按任意键继续\n";
		cin.get();
		cin.get();
	}

	void userprint()                   //输出本次用户使用计算器的情况记录
	{
		cout<<user.szName<<"使用的次数为:"<<user.nTime<<endl;
		cout<<"其中:\t加法次数:"<<user.nAdd<<"\t减法次数:"<<user.nSub<<
			"\t乘法次数:"<<user.nMul<<endl;
		cout<<"\t测试次数:"<<user.nTest<<"\t平均成绩:"<<user.dlAve<<endl;
	}
	
	void Login()                      //用户登录,开始启动计算器
	{
		char szName[20];
		cout<<"请输入您的姓名:";
		cin.getline(szName,20);
		ifstream infile;
		User userl;
		infile.open("user.dat",ios::binary|ios::in);    //打开用户资料
		if (! infile)                                   //没有用户资料
		{
			cout<<"没有原始记录文件,您是第一位用户!\n";
			strcpy(user.szName,szName);                 //为全局变量user中szname成员赋值
			user.nTime ++;                              //用户使用次数加1
			return;                                     //函数返回
		}
		infile.read((char *)&userl,sizeof(User));       //循环读取用户资料文件
		while (! infile.eof())
		{
			if (strcmp(userl.szName,szName)==0)
			//将用户资料文件中的用户名与读取的用户名进行比较
			{
				user=userl;	
				//如果该用户以前使用过计算器,将原资料复制给全局变量user
				user.nTime++;                           //用户使用次数加1
				cout<<"欢迎您再次使用复数计算器!";
				userprint();                            //输出用户资料中的信息
				cin.get();
				infile.close();
				return;
			}
			infile.read((char *)&userl,sizeof(User));
		}
		cout<<"欢迎您使用复数计算器!"; 
		//如果用户资料文件中没有当前用户,表明该用户是第一次使用计算器
		strcpy(user.szName,szName);                    //为全局变量user中szname成员赋值
		user.nTime ++;
		infile.close();
		return;
	}

	void SaveFile()              //当用户使用完计算器,保存或更新用户资料
	{
		userprint();             //输出当前用户使用计算器的相信信息
		fstream file;
		User userl;
		file.open("user.dat",ios::binary|ios::out);    //打开用户资料文件
		if (! file)
		{
			cout<<"文件打开错误,不能将记录更新\n";
			return;
		}
		file.seekp(0,ios::beg);  //文件指针指向文件头
		while (! file.eof())
		{
			file.read((char *)&userl,sizeof(User));
			//顺序读却用户资料文件中的用户信息
			//将用户资料文件中的用户名依次与当前用户名进行比较
			if (strcmp(userl.szName,user.szName)==0)  //若在用户资料文件中找到用户
			{
				file.seekp(-(sizeof(User)),ios::cur);
				//文件指针退回到该用户资料信息的首位置
				file.write((char *)&user,sizeof(User));
				//将全局变量user的内容写到用户资料文件中,即更新该用户的资料
				file.close();
				return;
			}
		}
		file.close();
		fstream outfile;
		//若在用户资料文件汇总找不到当前用户的资料,表明当前用户是第一次使用计算器
		outfile.open("user.dat",ios::binary|ios::app);
		//以添加的方式打开用户资料文件
		outfile.write((char *)&user,sizeof(User));
		//将当前用户的资料添加在用户资料文件中
		outfile.close();
		return;
	}
	}
	using namespace NameCComplex;        //使用标准命名空间nameccomplex

	int main(void)                       //进入程序后显示菜单
	{
		srand(time(NULL));               //初始化随机数种子
		Login();                         //打开文件,登记用户
		char strChoice[20];
		do 
		{
			system("cls");               //执行系统命令:cls清屏
			cout<<"\t这是一个简单的复数计算器程序,可以实现以下功能,请安对应的键(1~7)进入\n\n\n";
			cout<<"\t========================================================================\n";
			cout<<"\t1:多复数加法,以0结束\n";
			cout<<"\t2:多复数减法,以0结束\n";
			cout<<"\t3:测试100以内的复数加减乘法运算,1次测试10道题\n";
			cout<<"\t4:多复数乘法,以0结束\n";
			cout<<"\t5:复数自加\n";
			cout<<"\t6:复数自减\n";
			cout<<"\t7:复数比较\n";
			cout<<"\t0:退出计算器程序\n\n";
			cout<<"\t请输入您的选择:";
			cin>>strChoice;
			//下面用if-else语句实现多项选择,当然也可以用switch-case语句实现多项选择
			if (strcmp(strChoice,"1")==0)
				Add();
			else if (strcmp(strChoice,"2")==0)
				Sub();
			else if (strcmp(strChoice,"3")==0)
				Test();
			else if (strcmp(strChoice,"4")==0)
				Mul();
			else if (strcmp(strChoice,"5")==0)
				Add1();
			else if (strcmp(strChoice,"6")==0)
				Sub1();
			else if (strcmp(strChoice,"7")==0)
				Compare();
			else if (strcmp(strChoice,"0")==0)
			{
				cout<<"\n\n\t欢迎下次继续使用复数计算器!\n\n";
				break;
			}
			else
			{
				cout<<"\n\t输入错误,请安任意键后重新输入!\n";
				cin.get();
				cin.get();
			}
		} while(strcmp(strChoice,"0"));
		SaveFile();                             //退出程序前,保存或更新当前用户的使用情况
		return 0;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -