📄 c语言原码.txt
字号:
if(cTypeCur==27)
{
return 0; //选择ESC,返回主程序
}
if(cTypeCur>='0' && cTypeCur<='4')
{
putchar(cTypeCur);
break;
}
}
iCur=cTypeCur-'0'; //作为结构体下标用
//-----------------------------------------------------------
printf("\n\n\n\n请输入利率(XX.XXXX%,直接输入百分号前的数字):");
scanf("%lf",&dRate);
//-----------------------------------------------------------
printf("\n\n\n\n是否确认(Y/N)? [如果选择N,从新输入利率] ");
while(1)
{
cYN=getch();
if(cYN==27)
{
return 0; //选择ESC,返回主程序
}
else
{
if(cYN=='n' || cYN=='N')
{
putchar('N');
break; //从新初始化
}
else if(cYN=='Y' || cYN=='y')
{
putchar('Y');
SetSub[iCur]->interest_rate=dRate;
printf("\n\n\n\n操作成功! [延时2秒]");
ArWait();
return 1;//成功返回
}
else
{
// printf("\b \b");
continue; //从新输入
}
}
}
return 1;
}
//----------------------------------------------------------------------------------------
bool UISetForexRate(struct Account* SetUserInfo,struct Currency* SetSub[])
{
//-----------------------------------------------------------
char InID[30];
char cTypeCur; //币种类型
char cYN; //选择Y或N
//-----------------------------------------------------------
int iCur; //币种类型,作为结构体下标用
double dRate; //汇率,作为结构传入用
//-----------------------------------------------------------
strcpy(InID,SetUserInfo->user_id);
UIMainHead(InID);
//-----------------------------------------------------------
printf("\n\n\n\n请输入币种(RMB 0, USD 1, GBD 2, HKD 3, JPY 4):");
while(1)
{
cTypeCur=getch();
if(cTypeCur==27)
{
return 0; //选择ESC,返回主程序
}
if(cTypeCur>='0' && cTypeCur<='4')
{
putchar(cTypeCur);
break;
}
}
iCur=cTypeCur-'0'; //作为结构体下标用
//-----------------------------------------------------------
printf("\n\n\n\n请输入汇率:");
scanf("%lf",&dRate);
//-----------------------------------------------------------
printf("\n\n\n\n是否确认(Y/N)? [如果选择N,从新输入汇率] ");
while(1)
{
cYN=getch();
if(cYN==27)
{
return 0; //选择ESC,返回主程序
}
else
{
if(cYN=='n' || cYN=='N')
{
putchar('N');
break; //从新初始化
}
else if(cYN=='Y' || cYN=='y')
{
putchar('Y');
SetSub[iCur]->forex_Rate=dRate;
printf("\n\n\n\n操作成功! [延时2秒]");
ArWait();
return 1;//成功返回
}
else
{
// printf("\b \b");
continue; //从新输入
}
}
}
return 1;
}
//----------------------------------------------------------------------------------------
bool UICancelOperate(struct Account* SetUserInfo,struct Currency* SetSub[])
{
FILE* fp;
char UserID[30];
strcpy(UserID,SetUserInfo->user_id);
sprintf(UserID,"%s.bak",UserID);
if(!(fp=fopen(UserID,"rb")))
{
printf("\n\n\n\n文件打开失败!");
ArWait();
return 0;
}
fread(SetUserInfo,sizeof(Account),1,fp);
for(int i=0;i<5;i++)
{
fread(SetSub[i],sizeof(Currency),1,fp);
}
printf("\n-------------------------------------------------------------------------------");
printf("\n信息提示:取消修改成功.");
ArWait();
return 1;
}
//----------------------------------------------------------------------------------------
bool UICreateAccount(Account* SetUserInfo,struct Currency* SetSub[])
{
//--------------------------------------------------------------
//
FILE* fp;
int i;
//--------------------------------------------------------------
//存到结构体中用到的变量定义
char CreateUserID[30]; //建立帐户的名称
char CreateUserPassword[20]; //建立帐户的密码
//--------------------------------------------------------------
//程序中用到,不传到结构体中
char ConfirmPassword[20]; //确认密码正确
char cYN; //确定是否为建立帐户
//--------------------------------------------------------------
strcpy(CreateUserID,SetUserInfo->user_id);
UIMainHead(CreateUserID);
printf("\n\n\n\n帐户不存,是否建立帐户(Y/N)? ");
cYN=getch();
if(cYN==27)
return 0; //为ESC键,返回登录界面
if(cYN=='Y' || cYN=='y')
{
//建立帐户
putchar('Y');
printf(" ");
printf("\n\n建立帐户:");
//----------------------------------------------------------
//密码输入
while(1)
{
printf("\n\n\n请输入密码(小于6位):");
if(!ArStartProcess(CreateUserPassword))
continue;// 0; //按ESC了,返回登录界面
printf("\n\n\n确认密码:");
if(!ArStartProcess(ConfirmPassword))
continue; //按ESC了,返回登录界面
if(!strcmp(CreateUserPassword,ConfirmPassword))
{
strcpy(SetUserInfo->password,CreateUserPassword);//密码写入结构体中
sprintf(CreateUserID,"%s.dat",CreateUserID);
if(!(fp=fopen(CreateUserID,"wb")))
{
printf("\n\n文件建立失败! [延时2秒]");
ArWait();
return 0;
}
for(i=0;i<5;i++)
{
SetSub[i]->type=i; //下标作为结构体的分类
}
fwrite(SetUserInfo,sizeof(Account),1,fp);
for(i=0;i<5;i++)
{
fwrite(SetSub[i],sizeof(Currency),1,fp);
}
fclose(fp);
printf("\n\n文件建立成功! [延时2秒]");
ArWait();
return 1;
}
else
{
printf("\n\n两次输入的密码不一致,请从新输入!");
continue;
}
}
}
else if(cYN=='N' || cYN=='n')
{
//不建立帐户
putchar('N');
return 0;
}
else
{
printf("\n\n\n选择错误! [延时2秒]");
ArWait();
return 0;
}
return 0;
}
//----------------------------------------------------------------------------------------
//Arithmetic.h
bool ArNameProc(char cGetValue[]);
bool ArSaveAccount(struct Account* SetUserInfo,struct Currency* SetSub[],char* cExtern);
void ArWait();
void ArGetCurrentTime();
bool ArCharProcess(char cGetValue[]);
void ArCharToDouble(char* cCashChar,double* dCtoD);
bool ArStartProcess(char cGetValue[]);
//Arithmetic.cpp
//****************************************************************************************
// 算法及实现
//****************************************************************************************
#include "conio.h"
#include "stdio.h"
#include "string.h"
#include "time.h"
#include "Arithmetic.h"
#include "UIMainMenu.h"
//----------------------------------------------------------------------------------------
bool ArNameProc(char cGetValue[])
{
char GetChr='\0'; //获得一个字符,作为中间变量
int i=0;
bool bFT=false;
do
{
i=0;
while(i!=19/*GetChr!='\r'*/) //判断是否是回车符
{
GetChr=getch();
// if(GetChr<'0' || GetChr>'9')
// continue;
if(i==18/*GetChr=='\r'*/) //判断是否是回车符
{
cGetValue[i]='\0';
return 1; //字符串处理成功
}
if(GetChr==27) //判断是否是ESC键
return 0; //处理失败返加
if(GetChr==8) //判断是否是BackSpace键
{
if(i>0)
{
--i;
printf("\b \b"); //算法,减一个字符
}
else
{
break;
}
}
else
{
if(GetChr>='0' && GetChr<='9')
{
putchar(GetChr);
cGetValue[i++]=GetChr;
}
}
}
cGetValue[i]='\0'; //作为结束标记
}while(1);
return 1; //字符串处理成功
}
//----------------------------------------------------------------------------------------
bool ArSaveAccount(struct Account* SetUserInfo,struct Currency* SetSub[],char* cExtern)
{
FILE* fp;
char SaveUserID[30];
int i;
strcpy(SaveUserID,SetUserInfo->user_id);
sprintf(SaveUserID,"%s%s",SaveUserID,cExtern);
if(!(fp=fopen(SaveUserID,"wb")))
{
printf("\n\n文件存储失败!");
ArWait();
fclose(fp);
return 0; //失败返回
}
fwrite(SetUserInfo,sizeof(Account),1,fp);
for(i=0;i<5;i++)
{
fwrite(SetSub[i],sizeof(Currency),1,fp);
}
fclose(fp);
return 1;
}
//----------------------------------------------------------------------------------------
void ArWait()
{
clock_t start; //等待2秒开始
clock_t end; //等待2秒结束
start=clock();
while(1)
{
end=clock();
if((end-start)/1000>1)
break;
}
}
//----------------------------------------------------------------------------------------
void ArGetCurrentTime()
{
char dbuffer [9];
_strdate( dbuffer );
printf( "%s", dbuffer );
}
//----------------------------------------------------------------------------------------
bool ArCharProcess(char cGetValue[])
{
char GetChr='\0'; //获得一个字符,作为中间变量
int i=0;
bool bFT=false;
do
{
i=0;
while(GetChr!='\r') //判断是否是回车符
{
GetChr=getch();
// if(GetChr<'0' || GetChr>'9')
// continue;
if(GetChr=='\r') //判断是否是回车符
{
cGetValue[i]='\0';
return 1; //字符串处理成功
}
if(GetChr==27) //判断是否是ESC键
return 0; //处理失败返加
if(GetChr==8) //判断是否是BackSpace键
{
if(i>0)
{
--i;
printf("\b \b"); //算法,减一个字符
}
else
{
break;
}
}
else
{
if(GetChr>='0' && GetChr<='9')
{
putchar(GetChr);
cGetValue[i++]=GetChr;
}
}
}
cGetValue[i]='\0'; //作为结束标记
}while(1);
return 1; //字符串处理成功
}
//----------------------------------------------------------------------------------------
void ArCharToDouble(char* cCashChar,double* dCtoD)
{
int i=0,j=1;
double bak=0.0;
double dVar=0.0;
bool bTF=false;
while(cCashChar[i]!='\0' && cCashChar[i]!='\r')
{
if(bTF)
{
bak=(cCashChar[i]-'0');
dVar=dVar+bak/(j*10);
j=j*10;
i++;
continue;
}
if(cCashChar[i]!='.')
{
dVar=dVar*10;
bak=cCashChar[i]-'0';
dVar=dVar+bak;
}
else
{
bTF=true;
i++;
continue;
}
i++;
}
*dCtoD=dVar;
}
//----------------------------------------------------------------------------------------
bool ArStartProcess(char cGetValue[])
{
char GetChr='\0'; //获得一个字符,作为中间变量
int i=0;
while(1)
{
i=0;
while(GetChr!='\r' && i<=6) //判断是否是回车符
{
GetChr=getch();
if(GetChr=='\r' && i<=6) //判断是否是回车符
{
if(i==6)
{
cGetValue[i]='\0';
return 1; //字符串处理成功
}
else
return 0;
}
if(GetChr==27) //判断是否是ESC键
return 0; //处理失败返加
if(GetChr==8) //判断是否是BackSpace键
{
if(i>0)
{
--i;
printf("\b \b"); //算法,减一个字符
}
else
{
break;
}
}
else
{
putchar('*');
cGetValue[i++]=GetChr;
}
}
cGetValue[i]='\0'; //作为结束标记
return 1; //成功返回
}
return 1; //成功返回
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -