📄 calculator.cpp
字号:
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 + -