#include "SetView.h"
extern char UserID[13];//记录当前账户
extern struct UserAccount userpsw;//账号结构体
extern struct SavingRecord Record;//存、取、转结构体
extern void MenuView();//主界面
//查看余额
void SetScore(char name[13])
{
FILE *fp;
struct UserAccount userpsw;
if((fp=fopen("UserAccount.dat","rb"))==NULL)
{
printf("不能连接文件");
}
while(!feof(fp))
{
fread(&userpsw,sizeof(struct UserAccount),1,fp);
if(strcmp(userpsw.number,name)==0 && !feof(fp))
{
printf("%d\n",userpsw.saving);
}
}
fclose(fp);
}
//得到记录的条数
int GetRecordCount(char name[13],int type)
{
FILE *fp;
struct SavingRecord Record;
char filename[20];
strcpy(filename,name);
filename[12]='.';
filename[13]='d';
filename[14]='a';
filename[15]='t';
filename[16]='\0';
int RecordCount=0;
RecordCount=0;
//防止文件丢失。。。出错!!!---创建新文件
if ((fp=fopen(filename,"rb"))==NULL) //文件不存在
{
fp=fopen(filename,"wb"); //创建新文件
fp=fopen(filename,"rb");
}
while(!feof(fp))
{
fread(&Record,sizeof(struct SavingRecord),1,fp);
if (Record.type==type && !feof(fp)) //符合条件,记录增加
{RecordCount++;}
if (type==3 && Record.type==4 && !feof(fp))
{RecordCount++;}
}
fclose(fp);
return RecordCount;
}
//打印记录
void printRecord(char name[13],int PageSize,int NPage,int RecordCount,int type)
{
if (RecordCount>0)
{
char filename[20];
FILE *fp;
struct SavingRecord Record;
strcpy(filename,name);
filename[12]='.';
filename[13]='d';
filename[14]='a';
filename[15]='t';
filename[16]='\0';
int x=6,y=6; //当前打印坐标
int ForRecord=0; //循环数
int StarPrintRecord=PageSize*(NPage-1)+1; //开始打印记录序号
int EndPrintRecord=PageSize*NPage; //结束打印记录序号
int NowRecord=0; //当前记录序号
if (RecordCount<=PageSize*NPage)
{ForRecord=RecordCount;}
else
{ForRecord=PageSize*NPage;}
//防止文件丢失。。。出错!!!---创建新文件
if ((fp=fopen(filename,"rb"))==NULL) //文件不存在
{
fp=fopen(filename,"wb"); //创建新文件
fp=fopen(filename,"rb");
}
SetTextColor(15,4);
while(NowRecord<=ForRecord && !feof(fp))
{
fread(&Record,sizeof(Record),1,fp);
if (type==1 || type==2) //存取款
{
if (Record.type==type && !feof(fp))
{
NowRecord++;
if (NowRecord >=StarPrintRecord && NowRecord<=EndPrintRecord)
{
MoveCursorTo(x,y);y++;
if(Record.type==1)
{printf("%d %4d 取款 %s ",NowRecord,Record.balance,Record.date);}
else if(Record.type==2)
{printf("%d %4d 存款 %s ",NowRecord,Record.balance,Record.date);}
}
}
}
else
{
if (Record.type==3 || Record.type==4)
{
NowRecord++;
if (NowRecord >=StarPrintRecord && NowRecord<=EndPrintRecord)
{
if (Record.type==3 && !feof(fp)) //转账(转出)
{
MoveCursorTo(x,y);
printf("%d %4d 转至%s %s",NowRecord,Record.balance,Record.number,Record.date);
y++;
}
else if (Record.type==4 && !feof(fp)) //转账(转入)
{
MoveCursorTo(x,y);
printf("%d %4d %s转入 %s",NowRecord,Record.balance,Record.number,Record.date);
y++;
}
}
}
}
}
fclose(fp);
}
else //纵坐标未改变,无记录
{MoveCursorTo(16,7);printf(" 暂无记录 ");}
}
//清除原先打印的记录
void CleanRecord(int StarY,int PageSize)
{
int y=StarY;
SetTextColor(15,4);
while(y<StarY+PageSize)
{
MoveCursorTo(6,y);
printf(" ");
y++;
}
}
//打印页数记录信息
void PrintPageInfo(int PageSize,int RecordCount,int NPage,int PageCount)
{
MoveCursorTo(6,16);
SetTextColor(15,4);
printf("共 %2d 条记录",RecordCount);
MoveCursorTo(55,16);
printf("第 %2d 页 共 %2d 页 ",NPage,PageCount);
}
//返回当前页面记录数
int getNRecordNum(int NowPage,int PageCount,int RecordNum,int PageSize)
{
if (NowPage==PageCount)
{return RecordNum%PageSize;}
else
{return PageSize;}
}
//*******************************
int TocountNum(int a,int b,int c)
{
if(c==1)
{return b;}
else
{return a*10+b;}
}
//*******************************
int charToInt(int num)
{
if(num>47 && num <58)
{return num-48;}
else
{return 0;}
}
//查询记录控制
void SelectRecordControl(char Nfilename[],int type)
{
int PageSize=5; //当前页面显示记录条数
int NowPage=1; //当前页数
int PageCount=0; //总页数
int RecordNum=0; //总记录数
RecordNum=GetRecordCount(Nfilename,type); //得到记录条数
PageCount=RecordNum/PageSize; //得到总页数
if(RecordNum%PageSize!=0)
{PageCount++;}
//打印信息记录
printRecord(Nfilename,PageSize,NowPage,RecordNum,type);
PrintPageInfo(getNRecordNum(NowPage,PageCount,RecordNum,PageSize),RecordNum,NowPage,PageCount);
int x=3,y=22; //当前坐标
int InPage=0; //输入的页数
OpenCursor(12);
MoveCursorTo(x,y);
SetTextColor(0,15);
while(1)
{
if (_kbhit())
{
int gNum =_getch();
if (isdigit(gNum))
{
if (x<6)
{printf("%c",gNum);x++;InPage=TocountNum(InPage,charToInt(gNum),x-3);}
}
else
{
if (gNum==27) //按Esc键。。返回
{
MenuView();//回主界面
}
else if (gNum==75) //上一页
{
if (NowPage>1)
{NowPage--;CleanRecord(7,PageSize);printRecord(Nfilename,PageSize,NowPage,RecordNum,type);}
}
else if (gNum==77) //下一页
{
if (NowPage<PageCount)
{NowPage++;CleanRecord(7,PageSize);printRecord(Nfilename,PageSize,NowPage,RecordNum,type);}
}
else if (gNum==8) //退格
{
if (x>3)
{printf("\b ");MoveCursorTo(--x,y);InPage=InPage/10;MoveCursorTo(30,20);SetTextColor(11,1);printf(" ");}
}
// else if (gNum==13) //回车。。。跳页
// {
// if (InPage>0 && InPage<=PageCount)
// {NowPage=InPage;CleanRecord(7,PageSize);printRecord(Nfilename,PageSize,NowPage,RecordNum,type);}
// else
// {MoveCursorTo(30,20);SetTextColor(11,1);printf("不存在此页!");}
// }
PrintPageInfo(getNRecordNum(NowPage,PageCount,RecordNum,PageSize),RecordNum,NowPage,PageCount);
}
}
MoveCursorTo(x,y);
SetTextColor(0,15);
}
}
//判断输入的操作符
void Pd_CaoZuo()
{
int num;
while(1)
{
if(kbhit()) //判断是否输入
{
_flushall();
num= getch();
if(num ==13)
{
MenuView();//回主界面
}
}
}
}
//查询余额界面
void balanceView(int num)
{
system("cls");
CreateSmWindow(3,0,70,16,15,0,10,4,"ATM-取款机",false);
SetTextColor(15, 4);
OpenCursor(10);//光标
MoveCursorTo(30, 3);
printf("A T M - 取 款 机");
switch(num)
{
case 0:
CreateSmWindow(3,18,70,3,15,0,10,4,"操作选项",false);
SetTextColor(15, 4);
MoveCursorTo(35, 20);
printf("返回(Esc)");
MoveCursorTo(25, 10);
printf("当前账号余额(元):¥");
SetScore(UserID);
Pd_CaoZuo();
break;
case 1://存
CreateSmWindow(3,18,70,3,15,0,10,4,"操作选项",false);
SetTextColor(15, 4);
MoveCursorTo(10, 20);
printf("上一页(←)");
MoveCursorTo(35, 20);
printf("返回(Esc)");
MoveCursorTo(55, 20);
printf("下一页(→)");
MoveCursorTo(6, 5);
printf("项数 金额(元) 类型 日期");
printRecord(UserID,5,1,GetRecordCount(UserID,2),2);
SelectRecordControl(UserID,2);
break;
case 2://取
CreateSmWindow(3,18,70,3,15,0,10,4,"操作选项",false);
SetTextColor(15, 4);
MoveCursorTo(10, 20);
printf("上一页(←)");
MoveCursorTo(35, 20);
printf("返回(Esc)");
MoveCursorTo(55, 20);
printf("下一页(→)");
MoveCursorTo(6, 5);
printf("项数 金额(元) 类型 日期");
printRecor
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ATM机项目.zip (60个子文件)
ATM机项目
Debug
Item.dsw 554B
Item.ncb 145KB
fetchquery
main.cpp 54B
MoveScore.cpp 8KB
main.h 65B
111111111111.dat 748B
UserAccount.dat 48B
ConsoleOut.lib 24KB
Adduser.h 170B
MoveScore.h 302B
fetchquery.dsp 5KB
Reuserpsw.cpp 6KB
SetView.cpp 8KB
ConsoleOut.h 3KB
OutScore.h 394B
fetchquery.plg 2KB
Debug
View.sbr 0B
UserOPE.obj 19KB
OutScore.obj 22KB
SetView.obj 28KB
111111111111.dat 132B
UserAccount.dat 24B
fetchquery.ilk 660KB
vc60.pdb 76KB
UserOPE.sbr 0B
fetchquery.pdb 665KB
MoveScore.obj 26KB
View.obj 19KB
AddScore.sbr 0B
vc60.idb 177KB
Adduser.sbr 0B
Adduser.obj 21KB
MoveScore.sbr 0B
main.obj 10KB
fetchquery.obj 10KB
Reuserpsw.sbr 0B
AddScore.obj 17KB
SetView.sbr 0B
fetchquery.exe 220KB
main.sbr 0B
OutScore.sbr 0B
fetchquery.opt 43KB
fetchquery.pch 4.28MB
fetchquery.bsc 3.17MB
Reuserpsw.obj 23KB
View.cpp 4KB
Reuserpsw.h 192B
AddScore.cpp 3KB
UserOPE.cpp 5KB
AddScore.h 100B
111111111111 0B
OutScore.cpp 5KB
Adduser.cpp 5KB
222222222222.dat 264B
SetView.h 151B
UserOPE.h 79B
fetchquery.cpp 31B
fetchquery.h 1KB
View.h 152B
Item.opt 55KB
共 60 条
- 1
资源评论
阿文的博客
- 粉丝: 4
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功