xiaomayi2012 发表于 2019-8-26 13:35

偶然翻出的自己用C写的模拟银行柜台机的程序

本帖最后由 xiaomayi2012 于 2019-8-26 13:42 编辑

今天翻看以前写的代码,偶然发现自己用c写的一个模拟银行柜台机的程序,程序写的一般,现在分享出来作为一个记录。
大家看看就可以了。。:lol

#include <stdio.h>

//定义全局变量
int n;
struct userinfo *head;
/*===========================
作者:sst
日期:2008-12-03
函数:struct userinfo
作用:结构体实现用户信息传输
============================*/
struct userinfo
{
intid;
char name;
char sex;
int age;
char address;
int money;
struct userinfo* next;
};
/*===========================
作者:sst
日期:2008-12-03
函数:main()
作用:程序的入口点
============================*/
int main(int argc,char **argv)
{   
    read1();
    login();
   
   
    //system("cls");
   
}
/*===========================
作者:sst
日期:2008-12-03
函数:show()
作用:实现业务的选择
============================*/
void show()
{
   
      system("cls");
   while(1)
   {      
             content();
             int i;
             printf("                请选择您所需要的业务代号:");
             scanf("%d",&i);
             printf("/n");
             switch(i)
             {
                      case 1:
                           system("cls");
                           openAccount();//开户实现
                           break;
                      case 2:
                           system("cls");
                           getmoney();break;//存款的实现
                      case 3:
                           system("cls");
                           outmoney();break;//取款实现
                      case 4:
                           system("cls");
                           Transfer();break;//转账实现
                      case 5:
                           system("cls");
                           search();break;//查询实现
                      case 6:
                           printf("             欢迎下次光临!");
                           system("cls");
                           printf("/n/n/n/n");
                           printf("            ╭══╦═╗╔════╗/n");
                           sleep(200);
                           printf("            ╔══╠═╗║ ╔  ║/n");
                           sleep(200);
                           printf("            ║  ║ ║║ ║  ║/n");
                           sleep(200);
                           printf("            ╠══╠═╣║ ║  ║/n");
                           sleep(200);
                           printf("            ╠══╩═╠╚ ║║ ╗/n");
                           sleep(200);
                           printf("            ╚   ╚╯╚═╯╚═╯/n");
                           sleep(2000);
                           updata();
                           system("cls");
                           exit(0);
                           
                      default:
                              printf("您输入的有误,请从重新输入!");
                              break;
             }
             sleep(2000);
             system("cls");
      }      
}


/*===========================
作者:sst
日期:2008-12-03
函数:content()
作用:通过I/O读入显示界面目录
============================*/
content()
{
char buffer1;

FILE *file=fopen("MainUI.txt","r");//定义一个文件指针
while(1)
{
fgets(buffer1,100,file);
if(strlen(buffer1)==0)
   break;
fputs(buffer1,stdout);
memset(buffer1,'/0',sizeof(buffer1));
   fflush(stdout);
}

}


/*===============
作者:sst
日期:2008-12-03
函数:login()
作用:用户登录实现
===============*/
login()
{
       char n;
       char pwd;
       start:
       printf("/n");
       printf("            ===============================/n/n");
       printf("                欢迎光临银行管理系统v1.0!/n/n");
       printf("            ===============================/n/n");
       printf("            用户名:");
       scanf("%s",n);
       printf("/n");
       sleep(200);//在屏幕上暂停一段时间(200毫秒
       printf("            密码:");
       scanf("%s",pwd);
       if(strcmp(n,"abc")==0 && strcmp(pwd,"123")==0)
       {      system("cls");
                printf("/n/n/n");
                printf("         登录中请稍候.../n/n");
                printf("         ");
                bar();//进度条函数
                system("cls");
                sleep(500);
                show();
      }
      else
      printf("您输入的有误!请重新输入!");
      sleep(1000);
      system("cls");
      goto start;
}

/*===============
作者:sst
日期:2008-12-03
函数:bar()
作用:进度条实现
===============*/
bar()
{   
    int i=0;
    for(;i<50;i++)
    {
/*=====================================================================
当i<79时打印一个>
如果i == 79 那么使用/r使光标回到这行的开始处使用/t来把前一次打印的>擦除
接着使用/r再回到这行开始处准备下次的动画,同时把记数器i改为0
=======================================================================*/
      if(i < 79)
      {
            printf(">");
      }
      else
      {
            printf("/r");
            printf("/t/t/t/t/t/t/t/t/t ");
            printf("/r");
            i = 0;
      }
       sleep(200);//让当前线程休眠200毫秒再打印下一个>
       i=i+2;
      }
}
/*===================
作者:sst
日期:2008-12-03
函数:openAccount()
作用:实现开户
=====================*/
openAccount()
{
      FILE *fp;
      struct userinfo *p;
      p=(struct userinfo*)malloc(sizeof(struct userinfo));
      p->id=1001;
      p->money=0;
      p->age=1;
             printf("            =============================/n/n");
             printf("                  欢迎进入开户界面/n");
             printf("            =============================/n/n");
             printf("            请输入您的开户个人信息:/n");
             printf("/n");
             printf("            请输入账号:");
             scanf("%d",&(p->id));
             printf("/n");
             printf("            请输入用户名:");
             scanf("%s",p->name);
             printf("/n");
             printf("            请输入性别:");
             scanf("%s",p->sex);
             printf("/n");
             printf("            请输入年龄:");
             scanf("%d",&(p->age));
             printf("/n");
             printf("            请输入家庭住址:");
             scanf("%S",p->address);
             printf("/n");
             printf("            请输入存款金额:");
             scanf("%d",&(p->money));
             insert(p);
             p=head;
             printf("/n");
             printf("            ================================/n");
             printf("               您的银行帐户已开户成功!/n/n");
             printf("            ================================/n");
             printf("   ┌────┬────┬───┬───┬─────┬─────┐/n");
             printf("   │ 帐户:│姓名:   │性别: │年龄: │家庭住址: │存款金额: │/n");
             printf("   ├────┼────┼───┼───┼─────┼─────┤/n");
             printf("   │%8d│%8s│%6s│%6d│%10s│%10d│/n",p->id,p->name,p->sex,p->age,p->address,p->money);
             printf("   └────┴────┴───┴───┴─────┴─────┘");
    sleep(4000);
   
}



/*==================================
作者:sst
日期:2008-12-03
函数:insert(struct userinfo *user)
作用:链表实现往文本中插入数据
===================================*/
insert(struct userinfo *user)
{      
       struct userinfo *p0,*p1,*p2;
      p1=head;
      p0=user;
    if(head==NULL)
    {
      head=p0;
      p0->next=NULL;
    }
    else
    {
      while((p0->id > p1->id) && (p1->next!=NULL))
      {
            p2=p1;
            p1=p1->next;
      }
      if(p0->id <= p1->id)
      {
            if(head==p1) head=p0;
            else p2->next=p0;
            p0->next=p1;
      }
      else
      {
            p1->next=p0;
            p0->next=NULL;
      }
    }
    n=n+1;
       }
   

/*===============
作者:sst
日期:2008-12-03
函数:getmoney()
作用:存款实现
===============*/
getmoney()
{      
   struct userinfo *s;
   int id;
   int money;
   start:
   printf("            =============================/n/n");
   printf("                  欢迎进入存款界面/n/n");
   printf("            =============================/n/n");      
   printf("            请输入您的账号:");
   scanf("%d",&id);
   s=head;
while(s->id!=id&&s->next!=NULL)
         s=s->next;
   if(s->id!=id)
   {
          printf("对不起您输入的账号不存在/n");
          goto start;
}
          printf("/n");
          printf("      请输入存款金额:");
          scanf("%d",&money);
          printf("/n/n");
          s->money=(s->money)+money;
          printf("      >>>>>>>>>>>存款成功!<<<<<<<<<<</n");
          printf("      您的余额为: %d",s->money);
          sleep(2500);
          system("cls");
   }

/*===============
作者:sst
日期:2008-12-03
函数:outmoney()
作用:取款的实现
===============*/
outmoney()
{
   FILE *fp;
   struct userinfo *s;
   int id;
   int money;
   start:
   printf("            =============================/n/n");
   printf("                  欢迎进入取款界面/n/n");
   printf("            =============================/n/n");
   printf("            请输入您的账号:");
   scanf("%d",&id);
   s=head;
   while(s->id!=id&&s->next!=NULL)
      s=s->next;
   if(s->id!=id)
   {
          printf("         对不起您输入的账号不存在");
          goto start;
   }
          printf("/n");
          printf("       请输入取款金额:");
          scanf("%d",&money);
          if(money>s->money)
                  printf("对不起您的余额不足!");
         
          printf("/n");
          s->money=(s->money)-money;
          printf("       >>>>>>>>>>>取款成功!<<<<<<<<<<</n/n");
          sleep(2000);
         
          printf("       您的余额为:%d",s->money);
          sleep(2000);
          system("cls");
      
   }
/*===============
作者:sst
日期:2008-12-03
函数:Transfer()
作用:转账实现
===============*/
Transfer()
{
   struct userinfo *s1;
   struct userinfo *s2;
   int id;
   int money;
   start:
   printf("            =============================/n/n");
   printf("                  欢迎进入转账界面/n/n");
   printf("            =============================/n/n");
   printf("            请输入您的账号:");
   scanf("%d",&id);
   s1=head;
   while(s1->id!=id&&s1->next!=NULL)
   s1=s1->next;
   if(s1->id!=id)
   {
          printf("      对不起您输入的账号不存在");
          goto start;
   }
          printf("/n");
          printf("          请输入您要转户账号:");
          scanf("%d",&id);
          s2=head;
          while(s2->id!=id&&s2->next!=NULL)
         
             s2=s2->next;
             if(s2->id!=id)
             {
               printf("/n");
               printf("转户账号不存在!");
               goto start;
             }
          printf("/n");
          printf("          请输入转账金额;");;
          scanf("%d",&money);
          if(money>s1->money)
          {
                  printf("对不起您的余额不足!不能转户!");
                  printf("/n/n");
          }
          else
          {
                  s1->money=(s1->money)-money;
                  s2->money=(s2->money)+money;
                  printf(">>>>>>>>>>>转帐成功!<<<<<<<<<<</n/n");
          }
          sleep(2000);
         
          printf("      您的余额为:%d",s1->money);
          sleep(2000);
          system("cls");
}

/*========================
作者:sst
日期:2008-12-03
函数:updata()
作用:更新到文本文件中
=========================*/
updata()
{       FILE *fp;
      struct userinfo *s;
          fp=fopen("account.txt","r+");
          s=head;
   while(s!=NULL)
   {   
          fprintf(fp,"%d %s %s %d %s %d/n",s->id,s->name,s->sex,s->age,s->address,s->money);
          s=s->next;
            
   }   
   fclose(fp);
}

/*=====================
作者:sst
日期:2008-12-03
函数:search()
作用:查询的实现
=======================*/
search()
{   
    int id;
    struct userinfo * s;
    s=head;
    printf("            =============================/n/n");
    printf("                  欢迎进入查询界面/n/n");
    printf("            =============================/n/n");
    printf("            请输入您要查询的帐号:");
    scanf("%d",&id);
    while(s->id!=id&&s->next!=NULL)
      s=s->next;
      if(s->id==id)
      {
      //printf("/n帐号:%d 用户名:%s 性别:%s 年龄:%d 地址:%s金额:%d/n",s->id,s->name,s->sex,s->age,s->address,s->money);
             printf("/n");
             printf("   查询结果:/n");
             printf("   ┌────┬────┬───┬───┬─────┬─────┐/n");
             printf("   │ 帐户:│姓名:   │性别: │年龄: │家庭住址: │存款金额: │/n");
             printf("   ├────┼────┼───┼───┼─────┼─────┤/n");
             printf("   │%8d│%8s│%6s│%6d│%10s│%10d│/n",s->id,s->name,s->sex,s->age,s->address,s->money);
             printf("   └────┴────┴───┴───┴─────┴─────┘");
      sleep(2000);
      s=s->next;
      }
    sleep(3000);
    //free(s);
}
/*=========================
作者:sst
日期:2008-12-03
函数:read()
作用:将用户资料读入链表
==========================*/
read1()//让该函数随着程序的启动而加载
{
    FILE * fp;
    struct userinfo *s1,*s2;
    n=0;
    fp=fopen("account.txt","r");
    s1=s2=(struct userinfo*)malloc(sizeof(struct userinfo));
    fscanf(fp,"%d %s %s %d %s %d",&s1->id,s1->name,s1->sex,&s1->age,s1->address,&s1->money);
    head=NULL;
    while(!feof(fp))
    {
      n=n+1;
      if(n==1)head=s1;
      else s2->next=s1;
      s2=s1;
      s1=(struct userinfo* )malloc(sizeof(struct userinfo));
      fscanf(fp,"%d %s %s %d %s %d",&s1->id,s1->name,s1->sex,&s1->age,s1->address,&s1->money);
         
    }
    s2->next=NULL;
   
}

某天大魔王 发表于 2019-8-26 20:41

xiaomayi2012 发表于 2019-8-26 13:41
不好意思 只是以前初学c的实话写的一个小程序。。

夸你呢!兄弟。这东西对我像是天书。。。。。。

xiaomayi2012 发表于 2019-8-29 08:32

破竹而入 发表于 2019-8-28 23:08
大佬你这应该要学了近半年,结构体才能玩得这么6吧。。。

没有,就学了俩个星期。。

某天大魔王 发表于 2019-8-26 13:40

不明觉厉

xiaomayi2012 发表于 2019-8-26 13:41

某天大魔王 发表于 2019-8-26 13:40
不明觉厉

不好意思 只是以前初学c的实话写的一个小程序。。{:1_893:}

coradong1985 发表于 2019-8-26 13:43

yywapj 发表于 2019-8-26 14:01

这是准备对美金融系统下脚了吗

云梦墨溪 发表于 2019-8-26 14:06

挺好的,学习了

免票的破船 发表于 2019-8-26 14:11

很有纪念意义{:1_918:}

mmic 发表于 2019-8-26 14:12


挺好的,支持一下

glk1010282338 发表于 2019-8-26 14:20

支持一下!

duduhao 发表于 2019-8-26 14:31

我只是打酱油路过而已
页: [1] 2 3
查看完整版本: 偶然翻出的自己用C写的模拟银行柜台机的程序