C语言编写的银行管理系统关键代码

在一个银行系统中,最重要的是客户的开户问题,我在这一部分,花费了一天才搞明白,都怪之前学的数据结构没学好,哎,以后还要温故而知新啊。
以下是用C语言编写的开户,

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include "head1.h"
#include "head2.h"

void kaihu(User *head)
{
    system("cls");
    char flag = 'y';
    count1 = 1;

    User *p1;

    FILE *fp2 = NULL;         //定义文件指针
    user = (User *)malloc( sizeof(struct User));   //开辟user结点
    head->next = user;       //把user和head连接起来
    if((fp2 = fopen("user.txt","a+")) == NULL)
    {
        printf("The file open error!!!");
        getchar();
        exit(0);
    }
    printf("\n\n\t\t请按照下列提示输入新用户信息\n");

    while(flag == 'y' || flag == 'Y')
    {
        int m=rand();

        printf("\n\n\t\t请输入您的用户名:");
        scanf("%s",user->username);        //输入用户名
        encrypt(user->userpswd);
        /*printf("\n\t\t请输入您的密码:");
        scanf("%s",user->userpswd);        //输入密码*/
        srand(time(0));                               //使每次产生的随机数不同

        user->userID = m%10000+1000000000;    //产生的随机数赋给userID
        printf("\n\t\t请输入您的开户金额(不少于20元):");
        scanf("%f",&user->usermoney);     //输入开户金额
        printf("\n\t\t请输入您的开户时间:");
        scanf("%s",user->user_firsttime); //输入开户时间
        user->next = NULL;       //一个用户信息填写完毕后,user下一个结点为空
        fprintf(fp2,"%d %s %f %s %s\n",user->userID,user->username,user->usermoney,user->userpswd,user->user_firsttime);  //把用户信息写入文件user.txt
        printf("是否继续添加新的用户,是输入y,否输入n: ");
        scanf(" %c",&flag);
        //判断输入的flag,是否继续添加用户信息
        if(flag == 'n' || flag == 'N')   //当不添加新用户信息了
        {
            printf("\n\t\t 开户成功,请牢记您的账户信息:\n ");
            user = head->next;        //头指针指向下一个赋给user,user移到头部
            while(user)     //当user不为空的时候
            {
                printf("\n\t\t\t  姓名:%s  卡号:%d  余额:%.2f\n",user->username,user->userID,user->usermoney);  //输出之前添加过用户的用户名、账号、开户金额
                user = user->next;   //指针指向下一个
           }
           fclose(fp2);

           getch();

           front1(head);
        }
        else if(flag == 'y' || flag == 'Y')   //当继续添加新用户时
        {
            count1 ++;    //计数新客户的数量
            p1 = (User *)malloc( sizeof(struct User));  //开辟一个新节点p1
            p1->next = NULL;    //p1指向空
            user->next = p1;   //user指向p1,这样user和p1就连接起来了
            user = p1;      //p1赋给user,即user移到p1的位置,往后移了一下

        }
        else    //当flag不为y或n,直接退出
        {
            if(flag!='Y' && flag!='y'){
                printf("\n\t\t***输入错误***\n");
                exit(0);
              }
         }

     }

}

另外,附上后序完整版部分功能代码:

#include <stdio.h> 
#include <conio.h>

#include <windows.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
struct bank{
 char name[20];
 int num;
 char pswd[100];
 int money;
};

struct bank person[1000];
int i,j,jine,num,k=0;


//--------------------设置密码----------------------
void setpswd(char pswd[])
{                           
 int x=0;
 printf("\t\t\t  请输入您的密码:");
 while(1){
    pswd[x]=getch();
  if(pswd[x]!='\r'){
   printf("*");
      ++x;
  }
  else break;
 }
 pswd[x]='\0';
    printf("\n");
}


//------------------输入卡号------------------------
int putnum(){
    int resultnum=-1;
// char pswd[100];
 while(resultnum<0){
    printf("\t\t\t  请输入您的卡号:");
    scanf("%d",&num);
    for(i=0;i<1000;i++){
           if(person[i].num==num){
        return resultnum=1;
   // break;  执行到return语句处,整个程序便结束,不会执行下边的break语句
     }
      else if(person[i].num==0){
    printf("\t\t\t  您输入的卡号不存在,请重新输入\n");  //system("cls");
    Sleep(1000);
    fflush(stdin);
    system("cls");
    printf("\n\n\n\n\n\n\n");
    break;
    // return resultnum=-1; 
   }
  }
 }
}


//------------------输入密码----------------------
void putpswd(){
 int z=0;
 char pswd[100];
 fflush(stdin);
    while(1){
  setpswd(pswd);
     if(strcmp(person[i].pswd,pswd)==0)  
     break;
  else{
   z++;
   if(z==3){
    printf("\t\t\t  您已连续三次输入密码错误,系统将在三秒后自动退出!\n\n\n");
    for(int i=0;i<3;i++)
    { 
     Sleep(1000);
     printf("\t\t\t\t\t  %d\r",3-i);
    }
       exit(0);
   }
   printf("\t\t\t  您输入的密码有误,请重新输入!\n");

  }   
 }
}



//----------------------开户----------------------
void kaihu(){ 
 system("cls");
 printf("\n\n\n\n\n\n\n");
    printf("\t\t\t  请输入用户姓名:");
 scanf("%s",person[k].name);
    setpswd(person[k].pswd);
 while(1){
  printf("\t\t\t  请输入初始金额(不少于一元!):");
        scanf("%d",&jine);
  fflush(stdin);
     if(jine>=1)break;
  else printf("\t\t\t  金额不足,请重新输入!\n");
 }
 person[k].money+=jine;
    // printf("\t\t\t  %s\n",person[k].pswd);
    // scanf("%d",&person[k].pswd);
    srand(time(0));                               //使每次产生的随机数不同
 int m=rand();
 person[k].num=m%10000+1000000000;
 printf("\t\t\t  您的账号为:%d\n",person[k].num);     // 随机产生账号
 printf("\t\t\t  开户成功,请牢记您的账户信息:\n ");
 printf("\t\t\t  姓名%s  卡号%d  余额%d\n",person[k].name,person[k].num,person[k].money);
 printf("\t\t\t  请按任意键返回!"); 
 k++;
 getch();
    system("cls");
}


//------------------------存款-----------------
void cunkuan(){
 system("cls");
 printf("\n\n\n\n\n\n\n");
 int y=putnum(); fflush(stdin);
 putpswd();
 printf("\t\t\t  请输入存款金额:");
    scanf("%d",&jine);
 person[i].money+=jine;
 printf("\t\t\t  您的余额为:");
 printf("%d\n",person[i].money);
 printf("\t\t\t  存款成功按任意键返回!"); 
 getch();
 system("cls");

}



//------------------------查询-----------------
void chaxun(){
 system("cls");
 printf("\n\n\n\n\n\n\n");
    int y=putnum();
 putpswd();
 printf("\t\t\t  您的余额为:");
 printf("%d\n",person[i].money);
 printf("\t\t\t  查询成功按任意键返回!"); 
 getch();
 system("cls");
}



//------------------------取款-----------------
void qukuan(){
    system("cls");
 printf("\n\n\n\n\n\n\n");
    int y=putnum();
 while(1){
      printf("\t\t\t  请输入您的取款金额");
      scanf("%d",&jine);
      if(jine>person[i].money)
             printf("\t\t\t  您的余额不足,请重新输入!\n");
      else break;
  }
  person[i].money-=jine;
  printf("\t\t\t  您的余额为:");
  printf("%d\n",person[i].money);
   printf("\t\t\t  取款成功按任意键返回!"); 
 getch();
 system("cls");
}



//------------------------转账-----------------
int zhuanzhang(){  
 system("cls");
 printf("\n\n\n\n\n\n\n");
 int num1,c;
 putnum();
 putpswd();
 printf("\t\t\t  请输入对方卡号:");
    scanf("%d",&num1);
    for(j=0;j<1000;j++){
        if(person[j].num==num1)
        break;
  if(person[j].num==0){
   j=0;
       printf("\t\t\t  您输入的卡号不存在,请重新输入!\n");
            printf("\t\t\t  请输入对方卡号:");
            scanf("%d",&num1);
  }
 }
 if(num!=num1){
  while(1){
         printf("\t\t\t  请输入您的转账金额");
         scanf("%d",&jine);
         if(jine>person[i].money)
                printf("\t\t\t  您的余额不足,请重新输入!\n");
         else break;
  }
 }
 else {
  printf("\t\t\t  不能给自己转账,请按任意键返回!");
  getch();
  system("cls");
  return 0;
 }
 printf("\t\t\t  请确认您的转入用户及转账金额:\n");
 printf("\t\t\t  姓名%s  卡号%d  金额%d",person[j].name,person[j].num,jine);
 printf("\n\t\t\t  确认转账请按Y/y,返回请按N/n");
 while(1){
        c=getch();
  if(c=='N'||c=='n'){
   system("cls");
   break;
  }
     if(c=='Y'||c=='y'){
         person[i].money-=jine;
         person[j].money+=jine;
         printf("\n\t\t\t  转账成功,是否显示您的余额(按Y/y显示余额,按任意键返回)");
      c=getch();
      if(c=='Y'||c=='y'){
    printf("\t\t\t  您的余额为:%d",person[i].money);
    printf("\n\t\t\t  交易完成 按任意键返回!"); 
    getch();
    system("cls");break;
   }
   else system("cls");break;
  }
   else printf("\n\t\t\t  输入有误,请重新输入:");
 }
}



//---------------------------主界面-------------------------------
void zhujiemian()
{
    int i;
 while(1)
 {
  printf("\t\t************************************************\n");
     printf("\t\t*                                              *\n");
     printf("\t\t*                欢迎进入中国银行              *\n");
     printf("\t\t*                                              *\n");
     printf("\t\t************************************************\n");
     printf("\t\t                     1.开户\n\n");
     printf("\t\t                     2.存款\n\n");
     printf("\t\t                     3.查询\n\n");
     printf("\t\t                     4.取款\n\n");
     printf("\t\t                     5.转账\n\n");
     printf("\t\t                     6.退出\n\n");

     printf("\t\t          请输入您要办理的业务的编号:");
        scanf("%d",&i);
  if(1<=i&&i<=6){
            switch(i)
   {
                case 1:kaihu();break;
                case 2:cunkuan();break;         
                case 3:chaxun();break;
                case 4:qukuan();break;
             case 5:zhuanzhang();break;
           case 6:exit(0);break;
   }break;
  }
      else{
       printf("\t\t\t  您输入的编号有误,请重新输入!\n");
       Sleep(1000);
    fflush(stdin);
    system("cls");
   }
} 
 zhujiemian();
}



//-----------------------main函数---------------------------------
int main(void)
{ 
 int j;
    system("color 1E");
 printf("\n\n\n\n\n\n\n\n\n\n");
 printf("\t\t\t    %c ",1);
 printf("欢迎登录中国银行!\n\n\n\n\n\n\n\n\n\n\n\n\n");
 printf("正在进入,请等候...\n");
 printf("===============================================================================\r");
 for(j=0;j<80;j++){
     Sleep(100);
     printf(">");
 }
  system("cls");   
 zhujiemian();
 return 0;
}

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ssy03092919

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值