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

📄 c语言原码.txt

📁 C语言编写的个人理财系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  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 + -