//UIMainMenu.h
//****************************************************************************************
// 主-结构体
//****************************************************************************************
//----------------------------------------------------------------------------------------
//数据存储类型
enum { RMB, USD, GBD, HKD, JPY};
//----------------------------------------------------------------------------------------
//货币存储
struct Currency{
double value; //金额
double forex_Rate; //汇率, RMB = 1.0 单位:第1元外币兑换人民币的值
double interest_rate; //帐号
int type; //币种
};
//----------------------------------------------------------------------------------------
//帐户存储
struct Account{
char user_id[20]; //帐号
char password[20]; //用户口令
struct Currency* sub[5]; //最多存储10种货币
};
//----------------------------------------------------------------------------------------
bool UILogin(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UIIn(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UIOut(struct Account* SetUserInfo,struct Currency* SetSub[]);
void UIMainHead(char UserID[]);
bool UISearchOperate(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UISetInterestRate(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UISetForexRate(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UICancelOperate(struct Account* SetUserInfo,struct Currency* SetSub[]);
bool UICreateAccount(struct Account* SetUserInfo,struct Currency* SetSub[]);
//UIMainMenu.cpp
//****************************************************************************************
// 主菜单函数
//函数介绍:
//main:主程序
//ArCharProcess:字符处理,按ESC返回,按Backspace减一个字符
//ArStartProcess:星号处理,按Backspace减一个字符
//ArCharToDouble:字符串转换为双精度
//ArGetCurrentTime:获得当前时间
//ArWait:等待2秒
//ArSaveAccount:存储帐户信息
//UICreateAccount:建立一个新的帐户
//UICancelOperate:取消操作
//UIMainHead:界面头实现
//UILogin:登录界面实现
//UIIn:存款,存指定金额和币种的货币
//UIOut:取指定金额和币种的货币
//UISearchOperate:查询操作
//UISetForexRate:设定汇率
//UISetInterestRate:设定利率
//****************************************************************************************
//----------------------------------------------------------------------------------------
//C文件头
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "direct.h"
//----------------------------------------------------------------------------------------
//自定义文件头
#include "UIMainMenu.h"
#include "Arithmetic.h"
//----------------------------------------------------------------------------------------
void main()
{
char cInitInfo[21]={"个人理财帐户管理系统"};
char MenuList[7][20]={"1. 存 款","2. 取 款","3. 查 询",
"4. 设定利率","5. 设定汇率","6. 取消修改","7. 退 出"};
char cSelect; //功能号(1-7)字符
int iNumber; //功能号(1-7)数字
char cExternBak[5]={".bak"};//文件扩展名
char cExternDat[5]={".dat"};//文件扩展名
bool bQuit=true; //判断是否是回主界面
int i=0;
//--------------------------------------------------
//结构体空间开辟
Account *SetUserInfo;
Currency *SetSub[5];
SetUserInfo=(Account*)malloc(sizeof(Account));
for(i=0;i<5;i++)
{
SetSub[i]=(struct Currency*)malloc(sizeof(struct Currency));
memset(SetSub[i],0,sizeof(Currency));
}
memset(SetUserInfo,0,sizeof(Account));
//--------------------------------------------------
do
{
UILogin(SetUserInfo,SetSub); //登录
ArSaveAccount(SetUserInfo,SetSub,cExternBak); //存储
do
{
//声明显示
system("cls");
printf("%50s/n/n/n/n",cInitInfo);
printf("当前日期:");
ArGetCurrentTime(); //获得当前日期
printf("/n/n");
//输入选择菜单
for(i=0;i<7;i++)
printf("%42s/n/n",MenuList[i]);
printf("/r请输入功能号(1-7) ");
printf("/r请输入功能号(1-7):");
//获得输入字符,为ESC时退出到登录界面
cSelect=getch();
iNumber=cSelect-'0'; //功能号(1-7)数字
if(cSelect==27) //是否为ESC
{
iNumber=7;
bQuit=false;
}
if(cSelect>='1' && cSelect<='7') //范围判定
putchar(cSelect);
else
continue;
switch(iNumber)
{
case 1:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:取款");
if(UIIn(SetUserInfo,SetSub)) //存指定金额和币种的货币
bQuit=true;
break;
case 2:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:存 款");
if(UIOut(SetUserInfo,SetSub)) //取指定金额和币种的货币
bQuit=true;
break;
case 3:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:查 询");
if(UISearchOperate(SetUserInfo,SetSub)) //查 询
bQuit=true;
break;
case 4:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:设定利率");
if(UISetInterestRate(SetUserInfo,SetSub)) //设定利率
bQuit=true;
break;
case 5:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:设定汇率");
if(UISetForexRate(SetUserInfo,SetSub)) //设定汇率
bQuit=true;
break;
case 6:
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:取消操作");
if(UICancelOperate(SetUserInfo,SetSub)) //取消操作
bQuit=true;
break;
case 7:
ArSaveAccount(SetUserInfo,SetSub,cExternDat); //存储
printf("/n-------------------------------------------------------------------------------");
printf("/n信息提示:操作成功! [延时2秒]");
ArWait();
break;
default:
break;
}
}while(iNumber!=7); //选择7返回登录界面
} while(bQuit);
for(i=0;i<5;i++)
free(SetUserInfo->sub[i]);
free(SetUserInfo);
SetUserInfo=NULL;
}
//----------------------------------------------------------------------------------------
bool UILogin(struct Account* SetUserInfo,struct Currency* SetSub[])
{
//-----------------------------------------------------------
//定义与声明
FILE* fp;
char cInitInfo[21]={"个人理财帐户管理系统"}; //显示信息
char cInitUser[10]={"客 户 号:"}; //显示信息
char cInitPsw[10]={"客户密码:"}; //显示信息
char cLoginUser[30]; //打开文件时用
char cUserId[30]; //登录用户名
char cLoginPsw[20]; //登录用户密码
int i=0;
// int iVari=0;
// int iVarSear=0;
//------------------------------------------------------------
//显示登录信息
while(1)
{
system("cls"); //清屏
printf("%50s/n/n/n/n",cInitInfo); //个人理财帐户管理系统
printf("/r%39s",cInitUser); //客 户 号:
//用户输入
if(!ArNameProc(cLoginUser))//用户名处理
continue;
strcpy(cUserId,cLoginUser); //作为ID备份
sprintf(cLoginUser,"%s.dat",cLoginUser);
chdir("save"); //进入文件路径
//打开文件,测试文件名
fp=fopen(cLoginUser,"rb");
if(fp==NULL)
{
//文件打开失败,建立用户
strcpy(SetUserInfo->user_id,cUserId); //刚刚输入的用户名,作为帐户名称
if(UICreateAccount(SetUserInfo,SetSub))
{
return 1;
}
continue;
}
else
{
//文件打开成功,用户存在
printf("/n/n/n/n%39s",cInitPsw); //客户密码:
//输入密码
while(1)
{
ArStartProcess(cLoginPsw); //获得密码
//获得文件中密码
fread(SetUserInfo,sizeof(Account),1,fp); //Bug存在处
if((strcmp(SetUserInfo->password,cLoginPsw)!=0))
{
break; //文件打开失败,密码错误
}
else
{
// strcpy(cUserId,SetUserInfo->user_id); //Bug存在处
for(i=0;i<5;i++)
{
fread(SetSub[i],sizeof(Currency),1,fp);
}
fclose(fp);
return 1; //操作成功
}
}
}
}
fclose(fp);
return 1;
}
//----------------------------------------------------------------------------------------
bool UIIn(struct Account* SetUserInfo,struct Currency* SetSub[])
{
//-----------------------------------------------------------
char cGetValue[20]; //输入的钱存到这里,存款金额
char cTypeCur; //币种类型
char cYN; //选择Y或N
char InID[30];
//-----------------------------------------------------------
double dGetVal; //存到结构体中用存款金额,传给结构体用
int iCur; //币种类型,作为结构体下标用
//-----------------------------------------------------------
strcpy(InID,SetUserInfo->user_id);
while(1)
{
UIMainHead(InID);
printf("/n/n/n/n请输入存款金额(元):");
if(!ArCharProcess(cGetValue))//输入金额,字符类型
{
return 0; //处理失败,返回
}
ArCharToDouble(cGetValue,&dGetVal);//金额转换为double类型
if(dGetVal<0)
continue;
//-----------------------------------------------------------
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是否确认(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]->value+=dGetVal;
printf("/n/n/n/n操作成功! [延时2秒]");
ArWait();
return 1;//成功返回
}
else
{
// printf("/b /b");
continue; //从新输入
}
}
}
}
return 1;
}
//----------------------------------------------------------------------------------------
bool UIOut(struct Account* SetUserInfo,struct Currency* SetSub[])
{
//-----------------------------------------------------------
char cGetValue[20]; //输入的钱存到这里,存款金额
char cTypeCur; //币种类型
char cYN; //选择Y或N
char InID[30];
//-----------------------------------------------------------
double dGetVal; //存到结构体中用存款金额,传给结构体用
int iCur; //币种类型,传给结构体用
//-----------------------------------------------------------
strcpy(InID,SetUserInfo->user_id);
while(1)
{
UIMainHead(InID);
printf("/n/n/n/n请输入存款金额(元):");
if(!ArCharProcess(cGetValue))//输入金额,字符类型
{
return 0; //处理失败,返回
}
ArCharToDouble(cGetValue,&dGetVal);//金额转换为double类型
if(dGetVal<0)
continue;
//-----------------------------------------------------------
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是否确认(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]->value-=dGetVal;
printf("/n/n/n/n操作成功! [延时2秒]");
ArWait();
return 1;//成功返回
}
else
{
// printf("/b /b");
continue; //从新输入
}
}
}
}
return 1;
}
//----------------------------------------------------------------------------------------
void UIMainHead(char UserID[])
{
char cInitInfo[21]={"个人理财帐户管理系统"};
char cZhanhao[10]={"帐号:"};
system("cls");
printf("%50s/n/n/n/n",cInitInfo);
printf("当前日期:");
ArGetCurrentTime();
printf("/t/t/t%s %s",cZhanhao,UserID);
}
//----------------------------------------------------------------------------------------
bool UISearchOperate(struct Account* SetUserInfo,struct Currency* SetSub[])
{
char UserID[30];
enum eCoin;
double ldSum=0;
strcpy(UserID,SetUserInfo->user_id);
UIMainHead(UserID);
printf("/n/n/n/n币 种 利 率 汇 率 余 额 价值(RMB)");
for(int i=0;i<5;i++)
{
switch(i)
{
case RMB:
printf("/n/n/nRMB");
break;
case USD:
printf("/nUSD");
break;
case GBD:
printf("/nGBD");
break;
case HKD:
printf("/nHKD");
break;
case JPY:
printf("/nJPY");
default:
continue;
}
printf("/t/t%.4f%%/t/t%.2f/t/t%.2f/t/t%.2f",SetSub[i]->interest_rate,
SetSub[i]->forex_Rate,SetSub[i]->value,SetSub[i]->forex_Rate*SetSub[i]->value);
ldSum+=SetSub[i]->forex_Rate*SetSub[i]->value;
}
printf("/n/n/n理财帐户总价值(RMB):%.2f",ldSum);
printf("/n/n/n/n请按[回车键]返回上层菜单… …");
while(getch()!=13);
return 1;
}
//----------------------------------------------------------------------------------------
bool UISetInterestRate(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请输入利率(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; //成功返回
}
//----------------------------------------------------------------------------------------
//有什么改进的地方请大家联系我