求C语言某银行信用卡管理系统急

求C语言某银行信用卡管理系统急
黄瞩信 来自: 移动端 2021-04-05 11:09

声明:本网站依照法律规定提供财经资讯,未授权或允许任何组织与个人发布交易广告。对任何广告信息请谨慎交易,谨防诈骗。举报邮箱:xxxxxxxxx@qq.com

2021-04-05 11:18最佳答案

#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char cFile[] = "date.txt";
struct bank
{
char id[10+1];
char psw[6+1];
double money;
};
welcome1()
{
printf("\n\n\t\t欢迎使用虚拟银行自动取款机服务!\t\t\n\n");
printf("请选择功能:\n");
printf("\n=================================================\n");
printf(" || 请输入序号 ||\n");
printf(" || 1.新用户开户。 ||\n");
printf(" || 2.老用户登陆。 ||\n");
printf(" || 3.退出系统。 ||\n");
printf("=================================================\n");
}
welcome2()
{
printf("\n\n\t\t注册须知\n\n");
printf("**************************************************\n");
printf("* 1.请填写您的真实资料! *\n");
printf("* 2.开户首期必须存入100元以上 *\n");
printf("**************************************************\n");
}
welcome3()
{
printf("\n\n\t\t\3 欢迎进入虚拟银行系统 \3\n\n");
printf("\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
printf("\1\1\t 请选择功能:1.取款(最多透资2000); \1\1\n");
printf("\1\1\t 2.存款; \1\1\n");
printf("\1\1\t 3.查询余额; \1\1\n");
printf("\1\1\t 4.修改密码; \1\1\n");
printf("\1\1\t 5.返回主页面; \1\1\n");
printf("\1\1\t 任意键退出. \1\1\n");
printf("\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
}
int search(char* user, char* pwd, char* real_pwd)/*判断帐号是否相同,不相同返回1*/
{
FILE* file;
char user_buff[256], pwd_buff[256];
file = fopen(cFile, "r");
if (!file) return 0;
while (!feof(file))
{
if (fscanf(file, "%s%s\n", user_buff, pwd_buff) == EOF) return 0;
if (!strcmp(user_buff, user))
{
if (real_pwd) strcpy(real_pwd, pwd_buff);
return 1;
}
}
fclose(file);
return 0;
}
int add(char* user, char* pwd, double coin_n)
{
FILE* file;
file = fopen(cFile, "a");
if (!file) return 0;
fprintf(file, "%s %s %.2lf\n", user, pwd, coin_n);
fclose(file);
return 0;
}
int wenjian(char* user, char* pwd,double coin)
{
if (search(user, pwd, NULL)) return 0;
else add(user, pwd, coin);
return 1;
}
zhuce()/*注册*/
{
struct bank *p;
int i=0,k=0,judge1,judge2;
char name[30];
char sex,ch;
char sh[18];
int n;
p=(struct bank*)malloc(sizeof(struct bank));/*给p分配内存*/
welcome2();
printf("请输入您的名字(纯英文):");
gets(name);
printf("请输入您的性别(男:1 女2):");
fflush(stdin);
scanf("%c",&sex);
fflush(stdin);
printf("请输入您的身份证号码:");
gets(sh);
for(n=0;n<strlen(name);n++)/*判断输入信息是否正确*/
{
if(name[n]>='0'&&name[n]<='9')
{
printf("您输入的名字有误!\n");
printf("\n请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
}
if(sex!='1'&&sex!='2')/*判断输入信息是否正确*/
{
printf("您输入的性别不对!\n");
printf("\n请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
if(strlen(sh)!=18)/*判断输入信息是否正确*/
{
printf("您输入的身份证号码不全!\n");
printf("\n请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
for(n=0;n<strlen(sh)-1;n++)/*判断输入信息是否正确*/
{
if(sh[n]<48||sh[n]>57)
{
printf("您输入的身份证号码非法!\n");
printf("\n请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
else
{
if(sh[18]!='x'&&sh[18]<48&&sh[18]>57)
{
printf("您输入的身份证号码非法!\n");
printf("\n请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
}
}
printf("请输入您的帐号(10位纯数字):\n");
fflush(stdin);
scanf("%s",p->id);
fflush(stdin);
while(i <strlen(p->id))
{
if((p->id[i] < 48) || (p->id[i] > 57))
{
judge1=0;
}
i++;
}
while(strlen(p->id)!=10 ||judge1==0)/*判断帐号的正确性*/
{
printf("您输入的帐号不正确,必须为10位纯数字!");
printf("请重新输入(10位纯数字):");
fflush(stdin);
scanf("%s",p->id);
fflush(stdin);
}
printf("请输入您的密码(6位纯数字):\n");
fflush(stdin);
scanf("%s",p->psw);
fflush(stdin);
while(k <strlen(p->psw))
{
if((p->psw[k] < 48) || (p->psw[k] > 57))
{
judge2=0;
}
k++;
}
while(strlen(p->psw)!=6 ||judge2==0)/*判断密码形式的正确性*/
{
printf("您输入不正确!密码必须为6位纯数字!\n");
printf("请重新输入密码(6位纯数字):");
fflush(stdin);
scanf("%s",p->psw);
fflush(stdin);
}
printf("请输入您的首期存款:");
fflush(stdin);
scanf("%lf",&p->money);
fflush(stdin);
while((p->money)<100)
{
printf("您必须存入100元以上,请重新输入:");
fflush(stdin);
scanf("%lf",&p->money);
fflush(stdin);
}
if (wenjian(p->id,p->psw,p->money))/*存入文件并输出基本信息*/
{
system("cls");
printf("注册成功!");
printf("您的注册信息如下,请牢记:\n");
printf("名字:");
puts(name);
printf("性别代码:%c\n",sex);
printf("身份证号码:");
puts(sh);
printf("帐号:");
puts(p->id);
printf("密码:");
puts(p->psw);
printf("您帐户里的余额为:%.2lf\n",p->money);
printf("请选择:按1返回主页面. 按任意键退出:");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
else exit(0);
}
else/*如有相同帐号,注册失败*/
{
system("cls");
printf("您输入的帐号已经存在!注册失败!\n");
printf("请选择:按1返回主页面. 按任意键退出:");
scanf("%c",&ch);
if(ch=='1'){system("cls");main();}
else exit(0);
}
}
gongneng(char Account[10+1],char Password[6+1],double Money)/*登陆成功后的功能界面*/
{
FILE *ps;
struct bank xin[1000];
int k=0,b=0;
char mima[6+1],Chiose,x;
char count[10+1],word[6+1];
double inmoney,outmoney,addmoney;
welcome3();
fflush(stdin);
scanf("%c",&Chiose);
fflush(stdin);
ps=fopen(cFile,"r");
if (!ps)
{
printf("不能打开文件!按任意键退出!");
fflush(stdin);
scanf("%c",&x);
fflush(stdin);
exit(0);
}
if(Chiose=='1')
{
printf("输入您的取款金额:");
fflush(stdin);
scanf("%lf",&outmoney);
fflush(stdin);
while(!feof(ps))
{
fscanf(ps, "%s %s %lf",&xin[k].id,&xin[k].psw,&xin[k].money);
k++;
}
fclose(ps);
ps=fopen(cFile,"wb");
if (!ps)
{
printf("不能打开文件!按任意键退出!");
fflush(stdin);
scanf("%c",&x);
fflush(stdin);
exit(0);
}

while(!feof(ps))
{
//printf("%s %s %.2lf\n",xin[b].id,xin[b].psw,xin[b].money);
if ((strcmp(Account, xin[b].id)==0)&&(strcmp(Password, xin[b].psw)==0))
{
xin[b].money=xin[b].money-outmoney;
}
printf("%.2lf\n",xin[b].money);
fprintf(ps, "%s %s %.2lf\n", xin[b].id, xin[b].psw, xin[b].money);
b++;
}
}
}
denglu()/*登陆*/
{
FILE *fp;
char account[10+ 1],password[6 + 1],h;
int m=0;
char real_account[10+ 1]; /* 帐号缓存 */
char real_password[6 + 1]; /* 密码缓存*/
double real_money_o=0.0; /*存款缓存*/
printf("请输入您的帐号(10位纯数字):");
gets(account);
printf("请输入您的密码(6位纯数字):");
gets(password);
fp = fopen(cFile, "r");
if (!fp)
{
printf("不能打开文件!按任意键退出!");
fflush(stdin);
scanf("%c",&h);
fflush(stdin);
exit(0);
}
while (m<=2) /*判断是否输入错3次了*/
{
while(fscanf(fp, "%s %s %lf", &real_account, &real_password,&real_money_o) != EOF) /*循环判断帐号密码*/
{
if ((strcmp(real_account, account)==0)&&(strcmp(real_password, password)==0))
{
system("cls");
printf("登陆成功!");
gongneng(real_account,real_password,real_money_o);
fclose(fp);
return 0;
}
}

rewind(fp); /*重新打开文件,进行新一轮的密码验证*/
printf("您输入的帐号不存在或密码不正确!\n请重新输入:\n");
m++;
printf("请输入您的帐号(10位纯数字):");
fflush(stdin);
gets(account);
fflush(stdin);
printf("请输入您的密码(6位纯数字):");
fflush(stdin);
gets(password);
fflush(stdin);
}
fclose(fp);
printf("您输入帐号密码不正确已经3次,您被强制退出系统(按任意键退出)!");
fflush(stdin);
scanf("%c",&h);
fflush(stdin);
exit(0);
}
int main()
{
char chiose;
welcome1();
scanf("%c",&chiose);
getchar();
if(chiose <='0' ||chiose>='4')
{
while(chiose <='0' || chiose>='4')
{
printf("您的输入有误,请重新输入:");
scanf("%c",&chiose);
getchar();
}
}
if(chiose=='1')
{
system("cls");
zhuce();/*注册*/
}
if(chiose=='2')
{
system("cls");
denglu();/*登陆*/
}
if(chiose=='3')
{
printf("谢谢您的使用!");
exit(0);
}
}

其他回答(共5条)

  • 2021-04-05 11:27 米国连 客户经理

    我可以实现,不过如果我要实现肯定会使用MFC,纯粹C和windowsdk设计也行,不过会很烦琐,然后就是这个如果不需要数据库支持,还需要定义自己的信息存储结构,而且现在网上到处都是这些玩意的源代码。
    如果确实有需要,我可以制作
  • 2021-04-05 11:24 齐晓彦 客户经理

    简单的管理系统代码(按照你的要求:输入输出加查找)

    优化如下:

    #include<stdio.h>
    #include<string.h>
    struct bank{
     char name[20];
     char num[20];
     double money;
    };
    int input(struct bank gusts[],int n);
    void output(struct bank gusts[],int n);
    void find(struct bank gusts[],int n);
    int main()
    { 
     struct bank gusts[100];
     int n,choose;
     printf("请输入要录入数据条数:");
     scanf("%d",&n);
     input(gusts,n);
     printf("按照提示选择相应的操作!\n");
     while(1)
     {
      printf("1:查找 2输出 0结束\n");
      scanf("%d",&choose);
      if(choose==0)
       break;
      switch(choose){
      case 1:find(gusts,n);break;
      case 2:output(gusts,n);break;
      default:printf("无此操作!\n");break;
      }
     }
     return 0;
    }
    int input(struct bank gusts[],int n)
    {
     int i;
     if(n>100)
     {
      printf("数据过多!\n");
      return 0;
     }
     printf("按以下格式输入%d条数据!\n",n);//加了一条提示
     printf("姓名  账号  金额 \n");
     for(i=0;i<n;i++)
     {
      scanf("%s %s %lf",gusts[i].name,gusts[i].num,&gusts[i].money);//账号不要带空格
     }
     printf("成功录入%d条账户数据!\n",n);
     return 0;
    }
    void output(struct bank gusts[],int n)
    {
     int i;
     printf("姓名  账号  金额 \n");
     for(i=0;i<n;i++)
     {
      printf("%d:%s %s %0.3lf\n",i+1,gusts[i].name,gusts[i].num,gusts[i].money);
     }
     printf("成功输出所有账户数据!\n");
    }
    void find(struct bank gusts[],int n)
    {
     int i,choose;
     int count;
     char name[20],num[20];
     printf("请输入查找类型对应的数字编号[1-3]:1姓名查找 2账户查找 3编号查找  4结束查找:\n");
     while(1){  
      scanf("%d",&choose);
      if(choose==4)
       break;
      else if(choose<1||choose>3)
      {
       printf("无此种查找!请重新选择!\n");
       continue;
      }
      count=0;
      switch(choose){
      case 1:
       printf("请输入查找的客户姓名:");
       scanf("%s",name);
       printf("查询结果如下:\n姓名 账户 编号\n");
       for(i=0;i<n;i++)
       {
        if(strcmp(gusts[i].name,name)==0)
        {
         printf("%d:%s %s %0.3lf\n",i+1,gusts[i].name,gusts[i].num,gusts[i].money);
         count++;
        }
       }
       printf("共查询到%d条结果!\n",count);//加入结果统计
       break;
      case 2:
       printf("请输入查找的客户账户:");
       scanf("%s",num);
       printf("查询结果如下:\n姓名 账户 编号\n");
       for(i=0;i<n;i++)
       {
        if(strcmp(gusts[i].num,num)==0)
        {
         count++;
         printf("%d:%s %s %0.3lf\n",i+1,gusts[i].name,gusts[i].num,gusts[i].money);
        }
       }
       printf("共查询到%d条结果!\n",count);//加入结果统计
       break;
      case 3:
       printf("请输入查找的客户编号:");
       scanf("%d",&i);
       printf("查询结果如下:\n姓名 账户 编号\n");
       printf("%d:%s %s %0.3lf\n",i+1,gusts[i].name,gusts[i].num,gusts[i].money);
       break;
      }
     }
    }

    运行截图:

  • 2021-04-05 11:21 赵香汝 客户经理

    考试是吧!!你咋学的c++
  • 2021-04-05 11:15 米增强 客户经理

    C语言期末测试题(开卷) 设计一个银行账户管理程序 , 账户的信息有账户唯-)、 姓名、余额、身份证号码、单位、电话号码、 地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询。基本要求: 程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户送支,根据姓名或账号可以进行用户的信息查询,所有的账号信息可存放一个数组中或者链表中,可以随时访问和更新,测试数据 程序应输入不少于5人的账户信息, 应考虑到人员同名的情况。实现提示: 可以定义一个数组或者链表来存候账户的信息。实现开户、销户、存款、职款、转账、查询等函数
  • 2021-04-05 11:12 齐昆明 客户经理

    感觉这样的问题不适合在这里求助。因为,你要的是一个小系统,而不是一个简单的解答。
    你这种需求的一般都是应付C语言课程设计,你可以去相关的C源码网站找,最好去C语言课程设计网站找,我见过很多C语言编写的管理信息系统(MIS),只要稍加修改便可实现你需要的功能。

相关百科精选

  • 长江财产保... 长江财产保险股份有限公司经中...

  • 保证保险 保证保险实际上是一种担保业务。从广义上说,就是保险人为被保证人向权利人提供担保的保险。它包括两类保险:一类是狭义的保证保险,另一类是信用保险。它们的保险标的都是被保证人的信用风险,当被保证人的作为或不