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

📄 银行账户管理系统.cpp

📁 课程设计:银行帐号管理系统
💻 CPP
字号:
/**头文件**/ 
#include<stdio.h >
#include<string.h>
#include<stdlib.h>
#define N 1000000

/*******************************账户数据结构******************************/

struct user{
	char name[10];
	char num[20]; 
	char pass[7];
	char znum[20];
	struct{
		short year;
		short month;
		short day;
	}date;
	long money;
	char mod[10];
}m[N];
FILE *fp;
int count=0;
/***********************************打开文件******************************/
int open(char *p)
{
		if(fp!=NULL)fclose(fp);
		if((fp=fopen("e:\\user.dat",p))==NULL)return -1;
		return 1;
}

/*************************************返回函数****************************/

void back(){
	printf("\n\t\t\t按回车键返回");
	getchar();
	getchar();
}
void yemei(){
		printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
		printf("\t                    ☆☆☆  文件管理系统  ☆☆☆                  \n\n");
		printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
		printf("\t\t\t1→新开户\n");
		printf("\t\t\t2→修改密码\n");
		printf("\t\t\t3→删除账户纪录\n");
		printf("\t\t\t4→查找账户\n");
		printf("\t\t\t5→统计\n");
		printf("\t\t\t6→排序(钱数)\n");
		printf("\t\t\t7→显示所有账户信息\n");
		printf("\t\t\t8→数据备份\n");
		printf("\t\t\t9→退出\n");
}
/*******************************新开户***********************************/

void nems()
{
		struct user k;
		system("cls");
		printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
		printf("\t                    ☆☆☆     新开账户   ☆☆☆                  \n\n");
		printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
		printf("\t\t请输入新用户的信息:\n");
		printf("\t\t\t户名:");scanf("%s",k.name);
		printf("\t\t\t账号:");scanf("%s",k.num);
		printf("\t\t\t密码:");scanf("%s",k.pass);
		printf("\t\t\t证件号码:");scanf("%s",k.znum);
		printf("\t\t\t开户日期:");scanf("%hd.%hd.%hd",&k.date.year,&k.date.month,&k.date.day);
		printf("\t\t\t存款:");scanf("%ld",&k.money);
		printf("\t\t\t存款类型:");scanf("%s",k.mod);
		if(open("ab+")==-1)
		{
					printf("\t\t\t打开主件出错!\n");
					return ;
		}
		fwrite(&k,sizeof(struct user),1,fp);
		printf("\n\t\t账户建立成功\n");
		back();
		fclose(fp);
}
/***********************************修改密码****************************************/

void xugai()
{
	int i=0,j=0,count;
	char old[20],newPass[7];
	system("cls");
	printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
	printf("\t                    ☆☆☆     修改密码   ☆☆☆                  \n\n");
	printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
	if(open("rb")==-1)
	{
		printf("\t\t\t打开主件出错!\n");
		return ;
	}
	do{
		fread(&m[i],sizeof(struct user),1,fp);
		i++;
	}while(!feof(fp));
	count=i-1;
	printf("\t\t请输入账号:");
	getchar();
	scanf("%s",old);
	for(i=0;i<count;i++)if(strcmp(old,m[i].num)==0)break;
	if(i==count){
		printf("\t\t没有找到该账户信息!\n");
		return;
	}
	while(j<2)
	{
		j++;
		printf("\t\t请输入原密码:");
		getchar();
		scanf("%s",old);
		if(strcmp(old,m[i].pass)==0)break;
		else printf("\t\t密码错误!\n");
		if(j==2)return ;
	}
	do{
		printf("\t\t请输入新密码:");
		getchar();
		scanf("%s",old);
		printf("\t\t请再次输入新密码:");
		getchar();
		scanf("%s",newPass);
		if(strcmp(old,newPass)!=0)printf("\t\t您两次输入的密码不一样!\n");
	}while(strcmp(old,newPass)!=0);
	for(j=0;j<6;j++)*(m[i].pass+j)=newPass[i];
	if(open("wb")==-1)
	{
		printf("\t\t由于特殊原因,本次修改失败!\n");
		return;
	}
	strcpy(m[i].pass,newPass);
	for(i=0;i<count;i++)fwrite(&m[i],sizeof(struct user),1,fp);
	printf("\t\t修改成功!\n");
	back();
	fclose(fp);
}

/****************************************删除*********************************************/

void shanChu()
{
	int i=0;
	     char password[7],wo[20];
		 system("cls");
		 printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
		 printf("\t                    ☆☆☆     删除账户   ☆☆☆                  \n\n");
		 printf("\t                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆                  \n\n");
	     if((fp=fopen("e:\\user.dat","rb"))==NULL){
	       printf("\t\t\t打开主件出错!\n");
		   return;
		 }
		 while(!feof(fp)){
		   fread(&m[i],sizeof(struct user),1,fp);
		   i++;
		};
		   count=i-1;
		   printf("\t\t请输入账号:");
		   scanf("%s",wo);
		   printf("\t\t请输入密码:");
		   scanf("%s",password);
		   for(i=0;i<count;i++)if((strcmp(m[i].num,wo)==0&&strcmp(m[i].pass,password)==0))break;
           if(i==count){ 
				printf("\t\t密码错误!");
				return;
		   }
		   for(i=i+1;i<count;i++)m[i-1]=m[i];
		   count--;
		   if((fp=fopen("e:\\user.dat","wb+"))==NULL){
				printf("保存文件出错!");
				return;
			}
		   for(i=0;i<count;i++)fwrite(&m[i],sizeof(struct user),1,fp);
		   printf("你账号已删除:");
		   fclose(fp);
           back();
}

/****************************************查找*******************************************/

void  chaZhao()
{
	char old[10];
	int i=0,count;
	if ((open("rb"))==-1)
	{
			printf("\t\t\t打开主件出错!\n");
			return;
		}
		for(count=0;!feof(fp);count++)
			fread(&m[count],sizeof(struct user),1,fp);
		printf("请输入账号:");	
		scanf("%s",old);
		while(i<count)
		{
			if(strcmp(m[i].num,old)==0)break;
			i++;	
		}
		if(i==count)
		{
			printf("此账号不存在!");
			printf("请返回上一项!\n");
			return;
		}
		printf("您的账号已经找到!\n");
		printf("---------------------------------------------------------------------------\n");
		printf("  用户名     账号     开户时间      所存钱数      存储类型\n");
		printf("---------------------------------------------------------------------------\n");
		printf ("%8s %10s %d.%d.%d\t%d\t%s\n",m[i].name,m[i].num,m[i].date.year,m[i].date.month,m[i].date.day,m[i].money,m[i].mod);
		back();
	}

/*****************************************按条件统计********************************/

void tongJi()
{
	int count,i;
	struct user s;
	if((open ("rb")==-1))
		{
	            printf("\t\t\t打开主件出错!\n");
		        return;
		}
	
	for(count=0;!feof(fp);count++)
		fread(&m[count],sizeof(struct user),1,fp);
	s.money=0;
	for(i=0;i<count;i++)		
	s.money+=m[i].money;
	printf("当前所有存款人数:");
    printf("%d",count-1);
	printf("\n");
	printf("当前存款的总前数");
	printf("%d",s.money);
	getchar();
	getchar();
	fclose(fp);
}

/******************************************排序****************************************/

void paiXu()  
{ 
	       system("cls");
		  int j,i=0;
		   struct user us;
		   count=0;
              if((fp=fopen("e:\\user.dat","rb+"))==NULL)
			{
	            printf("\t\t\t打开主件出错!\n");
				return;
			}
			  do{
				  fread(&m[count],sizeof(struct user),1,fp);
				  count++;
			  }while(!feof(fp));
			 printf("\x20\x20户名\x20\x20\x20账号\t证件号码\t开户日期\t存款\t类别\n");
		  count--;
		 for(i=0;i<count-1;i++){
			 for(j=count-1;j>i;j--){
				 if(m[j].money<m[j-1].money){
					us=m[j];
					m[j]=m[j-1];
					m[j-1]=us;
				 }
			 }
		 }
		 printf("%d",count);
           for(i=0;i<count;i++){
	     printf("%s\x20\x20%s\t%s\t%hd.%hd.%hd\x20%ld\x20\x20\x20%s\n",
			 m[i].name,m[i].num,m[i].znum,m[i].date.year,m[i].date.month,m[i].date.day,m[i].money,m[i].mod);
   }
       fclose(fp);
	   back();
}

/****************************************显示所有账户信息*****************************/

void allnum()
{
	struct user k;
	system("cls");
	if(open("rb")==-1){
		printf("\t\t\t打开主件出错!\n");
		return;
	}
	printf("---------------------------------------------------------------------------\n");
	printf("\x20\x20户名\x20\x20\x20账号\t证件号码\t开户日期\t存款\t类别\n");
	printf("---------------------------------------------------------------------------\n");
	do{
		fread(&k,sizeof(struct user),1,fp);
		if(!feof(fp))printf("%s\x20\x20%s\t%s\t%s\t%hd.%hd.%hd\x20%ld\x20\x20\x20%s\n",k.name,k.num,k.pass,k.znum,k.date.year,k.date.month,k.date.day,k.money,k.mod);
	}while(!feof(fp));
	back();
	fclose(fp);
}
/**************************************数据备份****************************************/

void dataCopy(){
	system("cls");
	int i=0;
	FILE *q;
	if((fp=fopen("e:\\user.dat","rb"))==NULL){
		printf("\t\t\t打开主件出错!\n");
		back();
		return;
	}	
	if((q=fopen("e:copy.dat","wb"))==NULL){
		printf("不能打开文件.\n");
		back();
		return;
	}
  	while(!feof(fp)){	
		fread(&m[i],sizeof(struct user),1,fp);  
		fwrite(&m[i],sizeof(struct user),1,q);
		i++;
	}
	fclose(fp);
	fclose(q);
	printf("\n\t\t\t!备份成功!\n");
	back();
	return;
}

/****************************************退出系统******************************/

void ex()
{
	char c;
	printf("\n\t\t您确定(Y/N)?");
	getchar();
	scanf("%c",&c);
	if(c=='y'||c=='Y')exit(0);
}

/***************************************主函数部分*****************************/

void main(){
	int a;
	while(1){
		system("cls");
		yemei();
		printf("\t\t请选择:");
		scanf("%d",&a);
		switch(a){
			case 1: nems();
			        break;
			case 2: xugai();
					break;
			case 3:	shanChu();
					break;
			case 4: chaZhao();
					break;
			case 5: tongJi();
				    break;
			case 6: paiXu();
					break;
			case 7: allnum();
			        break;
			case 8: dataCopy();
					break;
			case 9: ex();
		}
	}
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -