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

📄 bank.cpp

📁 银行代收电话费管理系统功能叙述 1、使用文件管理整个收费信息
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -