📄 bank.cpp
字号:
// bank.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "time.h"
#define NN 30
//客户姓名C16---Name,电话号码N12---TelNo,市话费F7.2---City,长途费F7.2---LongF,信息费F7.2---Message,ADSL费F7.2---ADSL,
//费用合计F8.2---Total,对应年月N6---YearMon,收费状态C---Status(0――未收,1――已收),收费日期D---RecvDate,银行帐号N20---BankNo,收费人编姓名C8---RecvNM
//NN表示总记录数
struct telphone
{char name[17],telNo[13];
float city,longf,message,ADSL,total;
int yearmon;
char status;
char RecvDate[9];
char BankNo[21],RecvNM[9];
}Tel[NN];
struct TelOrd
{char telNo[13];
int RecordNo;
}Ord[NN+1];
struct NameOrd
{char name[17];
int RecordNo;
}Ordn[NN+1],tttn;
//int *change();
int readData(),OrderTel(),InquirName(),MonthStat(),RecvName(),OrderName(),InquirdTel(),DayStat();//函数说明
void report();//DelSpCpy(char *,char *,int);//该函数的功能相当于memcpy
int Records,RecvTel(); //用于保存实际读入的记录个数
char password[7]="123456";
int main(int argc, char* argv[])
{char i;
char s[7];
int n;
int flag=0;
for(n=3;n>0;n--)
{
printf("请你输入密码:\n");
printf("(默认密码为123456)\n");
scanf("%s",s);
if(!strcmp(s,password))//若密码正确
{
printf("恭喜你成功登陆了\n\n\n");
flag=1;
break;
}
else
printf("输入有错误请重新输入:\n");
}
if(n==0)
printf("你的输入次数已到再见\n");
else
{
//char t;
if(readData()) return 0;
if(OrderTel()) return 0; //按电话号码去排序
if(OrderName()) return 0; //按姓名去排序
for(;;)
{printf("\n-------------------银行代收电话费管理系统1.0------------------\n");
printf("\n 1.报表 2.收费与退费 3.查询 0.结束 ");
printf("\n");
printf("\n-----copyright(c) 2005 飞龙Technology.All Rights Reserved-----\n");
scanf("%s",&i);
//----------------------------------报表-----------------------------------------
if (i=='1')
{printf("\n1.按月统计收费 2.备注 0.结束\n");
scanf("%s",&i);
for(;;)
{ if(i=='1') {MonthStat();break;}
else
if(i=='2') {report();break;}
else
if(i=='0') break;
{printf("\n选择错误,请重新输入!\n");scanf("\n%s",&i);}
}
}
//-------------------------------收费与退费-----------------------------------
else
if (i=='2')
{printf("\n1.按姓名 2.按电话号码 0.结束\n");
scanf("%s",&i);
for(;;)
{if(i=='1') {RecvName();break;}
else
if(i=='2') {RecvTel();break;}
else
if(i=='0') break;
{printf("\n选择错误,请重新输入!\n");scanf("\n%s",&i);}
}
}
//-----------------------------------查询-------------------------------------------
else
if (i=='3')
{printf("\n1.按姓名查找 2.按电话号码查找 3.按姓名排序 4.按电话号码排序 0.结束\n");
scanf("%s",&i);
for(;;)
{ if(i=='1')
{
for(;i=InquirName()>-1;)//按姓名查找
{
{printf("\n 姓名:%s\n 电话号码:%s\n",Tel[i].name,Tel[i].telNo);
printf(" 市话费:%7.2f\n",Tel[i].city);
printf(" 长途费:%7.2f\n",Tel[i].longf);
printf(" 信息费:%7.2f\n",Tel[i].message);
printf(" ADSL: %7.2f\n",Tel[i].ADSL);
printf(" 合计:%8.2f\n",Tel[i].total);
printf(" 状态: %c\n",Tel[i].status);
printf(" 年月:%d\n",Tel[i].yearmon);
}
printf("是否要查下一用户(★按任意键继续★按N退出★)?");scanf("%s",&i);
if(i=='n'||i=='N') break;
}
break;
}
else
if(i=='2')
{ for(;((i= InquirdTel())>-1);) //InquirdTel();按电话号码查找
{
{
printf("\n 姓名:%s\n 电话号码:%s\n",Tel[i].name,Tel[i].telNo);
printf(" 市话费:%7.2f\n",Tel[i].city);
printf(" 长途费:%7.2f\n",Tel[i].longf);
printf(" 信息费:%7.2f\n",Tel[i].message);
printf(" ADSL: %7.2f\n",Tel[i].ADSL);
printf(" 合计:%8.2f\n",Tel[i].total);
printf(" 状态: %c\n",Tel[i].status);
printf(" 年月:%d\n",Tel[i].yearmon);
}
printf("是否要查下一用户(★按任意键继续★按N退出★)?");scanf("%s",&i);
if(i=='n'||i=='N') break;
}break;
}
else
if(i=='3')
{printf("\n 排序结果如下:\n");
for (i=1; i <= Records;i++)
printf("%s\n",Ordn[i].name);break;
}
else
if(i=='4')
{printf("\n 排序结果如下:\n");
for (i=1; i <= Records;i++)
printf("%s\n",Ord[i].telNo);break;
}
else
if(i=='0') break;
else
{printf("\n选择错误,请重新输入!\n");scanf("\n%s",&i);}
}
}
//-----------------------------------结束-----------------------------------------
else
if (i=='0') break;
else
printf("\n 选择错误,请重新输入\n");
}
printf("\n程序正常结束!");
return 0;
}
return 0;
}
//--------------------------读取数据--------------------------------------------
int readData()//函数定义
{//若出错,则返回1;否则返回0
FILE *pf; int i=0; char cc[110];
if ((pf=fopen("Bank.txt","r"))==NULL)//打开代收费数据文件
{printf("\n Open DataFile Error!"); return 1;}
//printf("\n 姓名 电话号码 合计 年月 状态 收费日期 收费人");
while(!feof(pf) && (i<NN)) //判断文件是否结束或已读的记录数是否达到所定义的空间
{ fgets(cc,110,pf); //一次读入整行的内容
//以下处理所读入的行,转换成结构数组中的内容
memcpy(Tel[i].name,cc,16); memcpy(Tel[i].telNo,&cc[16],12);
//DelSpCpy(Tel[i].name,cc,16); DelSpCpy(Tel[i].telNo,&cc[16],12);//带有不可见的空格字符(函数功能相当于memcpy)
Tel[i].city=(float) atof(&cc[28]); Tel[i].longf =(float) atof(&cc[35]);
Tel[i].message =(float) atof(&cc[42]); Tel[i].ADSL =(float) atof(&cc[47]);
Tel[i].total =(float) atof(&cc[54]);
Tel[i].status=cc[70]; cc[70]=' '; //需先处理,否则年月会变成7位数字
Tel[i].yearmon =(int)atof(&cc[64]);
memcpy(Tel[i].BankNo,&cc[79],20); cc[79]=' ';
//Tel[i].RecvDate=(long)atof(&cc[71]);
memcpy(Tel[i].RecvDate,&cc[71],8);
memcpy(Tel[i].RecvNM,&cc[99],8);
//printf("\n %s%s %f %d %c %d %s",Tel[i].name,Tel[i].telNo, Tel[i].total ,Tel[i].yearmon,Tel[i].status, Tel[i].RecvDate, Tel[i].RecvNM); //显示读入行的部分内容
i++;
}
Records=i;
fclose(pf);//(char *)Tel[i++],sizeof(struct Telphone )
return 0;
}
//---------------DelSpCpy函数的功能相当于memcpy--------------------
/*void DelSpCpy(char *Pdes, char *PSource,int llen)
{
while (*PSource==' ') //去掉前面的空格
{PSource++; llen--;}
while ((*PSource >' ') && (llen>0))//取非空格字符送Pdes
{ *Pdes++ = *PSource++; llen--; }
*Pdes=0;
}
*/
//------------------------------------------------------------
int MonthStat() //按月统计收费
{ int i,m;//Recv=0,NoRV=0; float Recvjj=0,NoRVjj=0;
char t;
FILE *pf; //char cc[110];
if ((pf=fopen("Bank.txt","r"))==NULL)//打开代收费数据文件
{printf("\n Open DataFile Error!"); return 1;}
for(;(!feof(pf)&&((i= InquirdTel())>-1||(i= InquirName())>-1));)
{printf("请输入要统计的年月(形式如:200506)\n");scanf("%d",&m);
if(m==Tel[i].yearmon)
{Tel[i].total=Tel[i].ADSL+Tel[i].city+Tel[i].longf+Tel[i].message;
printf(" 市话费:%7.2f\n",Tel[i].city);
printf(" 长途费:%7.2f\n",Tel[i].longf);
printf(" 信息费:%7.2f\n",Tel[i].message);
printf(" ADSL: %7.2f\n",Tel[i].ADSL);
printf(" 状态: %c\n",Tel[i].status);
printf(" 合计:%8.2f\n",Tel[i].total);
}
printf("是否要对下一用户统计(★按任意键继续★按N退出★)?");scanf("%s",&t);
if(t=='n'||t=='N')
break;
}
return 0;
}
//---------------------------------------------------------
void report() //备注
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -