越夜越有神 发表于 2013-11-12 23:25:25

ATM交界页面


#include<string.h>
#include<stdio.h>
#include<stdlib.h>

//用户数据
typedef struct bank
{
      char account;
      char psw;
      longmoney;
    char name;
      char id;
}Bank;

//节点
typedef struct node
{
      Bank data;
      struct node *next;
      struct node *prev;
}Node;

//头指针
Node *Head=NULL;

//查找
Bank *SearchLinkList(char *paccount)
{
      Node *p=Head;
      if(p==NULL)
            return 0;
      while(p!=NULL&&strcmp((p->data).account,paccount))
            p=p->next;
      if(!p)
                return 0;
      else
                return &(p->data);
}

//追加
void AppendLinkList(Bank *Data)
{
      Node *pNode = (Node*)malloc(sizeof(Node));
      strcpy(pNode->data.account,Data->account);
      strcpy(pNode->data.psw,Data->psw);
      strcpy(pNode->data.name,Data->name);
      pNode->data.money=Data->money;
      strcpy(pNode->data.id,Data->id);
      pNode->next=NULL;
      Node*p=Head;
      if(p==NULL)
      {      
                Head=pNode;
                pNode->next=NULL;
                pNode->prev=NULL;
    }
      else
      {
                while(p->next)
                         p=p->next;
                p->next=pNode;
                pNode->prev=p;
          }
}
//删除
intDeleteLinkList(char *paccount)
{
      Node *p=Head;
      if(p==NULL)
            return 1;
      while(p!=NULL&&strcmp(p->data.account,paccount))
            p=p->next;
      if(!p)
                return 1;
      else
                free(p);
      return 0;
}

//读取文件里的数据并存入连表
int ReadFile()
{
      FILE* fp = fopen("bank.txt","a+");
      Bank *data =(Bank *) malloc(sizeof(Bank));
      if(!fp)
      {
                printf("打开文件失败 !\n");
                return -1;
      }
      
      else
      {
                while(1)
                {
                int i = fscanf(fp ,"%10s%16s%10ld%10s%18s",data->account,data->psw,&(data->money),data->name,data->id);
               
                        fscanf(fp,"%*[^\n]");
                        if(i==5)
                              AppendLinkList(data);
                        else
                                  break;
                }
      }
      free(data);
      fclose(fp);

}



//将连表里的数据定写入文件
intWriteFile()
{
      FILE* fp = fopen("bank.txt","w+");
      if(!fp)
      {
                printf("打开文件失败!\n");
                return -1;
      }
      else
      {
                Node* p=Head;
                while(p)
                {
                        fprintf(fp,"%10s%16s%10ld %10s %18s\n ",p->data.account,p->data.psw,p->data.money,p->data.name,p->data.id);
                        p=p->next;
                }
      }
      fclose(fp);
      exit(0);
}


//主界面
void welcome1()
{
      printf("\n*********欢迎使用虚拟银行自动取款机**********\n");
      printf("\n*********************************************\n");
      printf("\n||            请选择业务种类               ||\n");
      printf("\n||                1注册                  ||\n");
      printf("\n||                2登陆                  ||\n");
      printf("\n||                0退出                  ||\n");
      printf("\n*********************************************\n");
      
}

//注册用户需知界面
void welcome2()
{
      printf("\n*********************************************\n");
      printf("\n||            新用户注册需知               ||\n");
      printf("\n|| 1请填写真实身份                         ||\n");
      printf("\n|| 2存款金额不得少于100元                  ||\n");
      printf("\n|| 3若出现任资金丢失或信息泄漏本行概不负责 ||\n");
      printf("\n|| 4若取机多吐现金请及时送还否则视为盗窃   ||\n");
      printf("\n||   继续请按1    返回请按2    退出请按0   ||\n");
      printf("\n*********************************************\n");

}

//登陆成功界面
void welcome3()
{
      printf("\n*********欢迎使用虚拟银行自动取款机***********\n");
      printf("\n**********************************************\n");
      printf("\n         登陆成功请选择业务种类             ||\n");
      printf("\n 1取款                         2查询      ||\n");
      printf("\n 3存款                         4注销      ||\n");
      printf("\n 5修改密码                     6返回主页面||\n");
      printf("\n            退出请按0                     ||\n");
      printf("\n**********************************************\n");

}

//查询显示
void welcome4(Bank *Data)
{
      printf("\n**************************************************\n");
      printf("\n||         您的个人信息如下                  ||\n");
      printf("\n|| 姓名:%10s                               ||\n",Data->name);
      printf("\n|| 账号:%10s                                 ||\n",Data->account);
      printf("\n|| 身份证号:%18s                      ||\n",Data->id);
      printf("\n|| 余额:%10lu元                                 ||\n",Data->money);
      printf("\n||    返回上级请按2               退出请按0    ||\n");
      printf("\n**************************************************\n");
}

//注册函数
void reg()
{
      int a=0;
      char account;
      char name;
      char id;
      char psw1;
      char psw;
      long   Money=0;
    Bank newuser;      

      for(;;)
         {
                welcome2();
                printf("请选择:\n");
                scanf("%d",&a);
                scanf("%*[^\n]");
                scanf("%*c");
                if(a==1)
                {
                        printf("请输入您的账号(10个字符以内):\n");
                        scanf("%s",account);
                        scanf("%*[^\n]");
                        scanf("%*c");
                        if(strlen(account)>10)
                        {
                              printf("\n********************************************\n");
                              printf("\n||       输入有误账号不能超过10个字符         ||\n");
                              printf("\n||            重新输入请按1               ||\n");
                              printf("\n||   返回请按2               退出请按0      ||\n");
                              printf("\n********************************************\n");
                              scanf("%d", &a);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(a==1)
                                          continue;
                              else if(a==2)
                                        break;
                              else if(a==0)
                                        WriteFile();
                              else
                              {
                                        printf("输入有误系统自动返回!\n");
                                        continue;               
                              }
                                       
                        }
                        if(SearchLinkList(account)!=NULL)
                        {
                              printf("该账号已存在请重新输入\n");
                              break;
                        }
                        else
                              strcpy(newuser.account,account);
                        while(1)
                        {      
                              printf("请输入您的密码(16个字符以内):\n");
                              scanf("%s",psw);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(strlen(psw)>16)
                              {
                                        printf("\n************************************************\n");
                                        printf("\n||       输入有误密码不能超过16个字符         ||\n");
                                        printf("\n||            重新输入请按1               ||\n");
                                        printf("\n||   返回请按2               退出请按0      ||\n");
                                        printf("\n************************************************\n");
                                        scanf("%d", &a);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(a==0)
                                                WriteFile();
                                        else if(a==1)
                                                continue;
                                        else if(a==2)
                                                break;
                                        else
                                        {
                                                printf("输入有误系统自动返回!\n");
                                                continue;               
                                        }
                              }      
                              else
                              {
                                        printf("请再次输入您的密码:\n");
                                        scanf("%s",psw1);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(!strcmp(psw,psw1))
                                                strcpy(newuser.psw,psw);

                                        else
                                        {
                                                
                                                printf("\n************************************************\n");
                                                printf("\n||         输入有误两次密码输入不一致         ||\n");
                                                printf("\n||            重新输入请按1               ||\n");
                                                printf("\n||   返回请按2               退出请按0      ||\n");
                                                printf("\n************************************************\n");
                                                scanf("%d", &a);
                                                scanf("%*[^\n]");
                                                scanf("%*c");
                                                if(a==0)
                                                      WriteFile();
                                                else if(a==1)
                                                      continue;
                                                else if(a==2)
                                                      break;
                                                else
                                                {
                                                      printf("输入有误系统自动返回!\n");
                                                      continue;               
                                                }
                                        }      
                                       
                              }
                                       
                              break;
                        }
                        if(a==2)
                              break;
                        while(1)
                        {   
                              printf("请输入您的姓名(10个字符以内):\n");
                              scanf("%s",name);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(strlen(name)>10)
                              {
                                        printf("\n************************************************\n");
                                        printf("\n||       输入有误姓名不能超过10个字符         ||\n");
                                        printf("\n||            重新输入请按1               ||\n");
                                        printf("\n||   返回请按2               退出请按0      ||\n");
                                        printf("\n************************************************\n");
                                        scanf("%d", &a);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(a==0)
                                                WriteFile();
                                        else if(a==1)
                                                continue;
                                        else if(a==2)
                                                break;
                                        else
                                        {
                                                printf("输入有误系统自动返回!\n");
                                                continue;               
                                        }
                              }      
                              else
                                        strcpy(newuser.name,name);
                              break;
                        }
                        if(a==2)
                              break;
                        while(1)
                        {
                              printf("请输入您的身份(18个字符):\n");
                              scanf("%s",id);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(strlen(id)!=18)
                              {
                                        printf("\n************************************************\n");
                                        printf("\n||      输入有误身份证号必须为18个字符      ||\n");
                                        printf("\n||            重新输入请按1               ||\n");
                                        printf("\n||   返回请按2               退出请按0      ||\n");
                                        printf("\n************************************************\n");
                                        scanf("%d", &a);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(a==0)
                                                WriteFile();
                                        else if(a==1)
                                                continue;
                                        else if(a==2)
                                                break;
                                        else
                                        {
                                                printf("输入有误系统自动返回!\n");
                                                continue;               
                                        }
                              }      
                              else
                                        strcpy(newuser.id,id);
                              break;
                        }
                        if(a==2)
                              break;
                        while(1)
                        {
                              printf("请输入您的存款金额(不得小于100元)\n");
                              scanf("%lu", &Money);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(Money<100)
                              {
                                        printf("\n************************************************\n");
                                        printf("\n||      输入有误存款金额小于100元         ||\n");
                                        printf("\n||            重新输入请按1               ||\n");
                                        printf("\n||   返回请按2               退出请按0      ||\n");
                                        printf("\n************************************************\n");
                                        scanf("%d", &a);
                                        if(a==0)
                                                WriteFile();
                                        else if(a==1)
                                                continue;
                                        else if(a==2)
                                                break;
                                        else
                                        {
                                                printf("输入有误系统自动返回!\n");
                                                continue;               
                                        }      
                              }      
                              else
                                        newuser.money=Money;
                              break;
                        }
                        AppendLinkList(&(newuser));
                        welcome4(&newuser);
                        scanf("%d",&a);
                        scanf("%*[^\n]");
                        scanf("%*c");
                        if(a==0)
                              WriteFile();
                        else if(a==2)
                              break;
                        else
                        {
                              printf("输入有误系统自动返回!\n");
                              break;
                        }
                }
                        
                else if(a==2)
                        break;
                else if(a==0)
                        WriteFile();      
                else
                        printf("输入有误系统自动返回!");
         }               
}

//登陆函数
void login()
{
      char Account;
      char Passwd;
    longMoney;
      Bank * User;
      printf("请输入您的账号:\n");
      scanf("%s",Account);
      printf("请输入您的密码:\n");
      scanf("%s",Passwd);
      if(SearchLinkList(Account)!=NULL)
      {
                User=SearchLinkList(Account);
                if(!strcmp(User->psw,Passwd))
                {
                        for(;;)
                        {
                              int flg;
                              welcome3();
                              scanf("%d",&flg);
                              scanf("%*[^\n]");
                              scanf("%*c");
                              if(flg==1)
                              {
                                        for(;;)
                                        {
                                                printf("请输入您的取款金额!\n");
                                                scanf("%lu",&Money);
                                                scanf("%*[^\n]");
                                                scanf("%*c");
                                                if(Money<0)
                                                {
                                                      printf("输入有误请重新输入!\n");
                                                      continue;
                                                }
                                                if(User->money<Money)
                                                {
                                                      printf("您的余额不足请重新输入!\n");
                                                      continue;
                                                }
                                                else
                                                {
                                                      User->money=User->money-Money;
                                                      printf("取款成功!\n");
                                                }
                                                break;
                                       }
                                        continue;
                              }
                              else if(flg==2)
                              {
                                        int a;
                                        welcome4(User);
                                        scanf("%d",&a);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(a==0)
                                                WriteFile();
                                        else if(a==2)
                                                continue;
                                        else
                                                printf("输入有误系统自动返回\n");
                                        continue;
                              }
                              
                              else if(flg==3)
                              {
                                        printf("请输入您的存款金额:\n");
                                        scanf("%lu",&Money);
                                        scanf("%*[^\n]");
                                        scanf("%*c");
                                        if(Money>0)
                                        {
                                                User->money+=Money;
                                                printf("存款成功!\n");
                                        }
                                        else
                                                printf("输入有误系统自动返回!\n");
                                        continue;
                              }
                              else if(flg==4)
                                 {
                                        if(!DeleteLinkList(Account))
                                        {
                                                printf("注销成功!\n");
                                                break;
                                        }
                                        else
                                                printf("注销失败系统自动返回!\n");
                                        continue;
                              }
                              else if(flg==5)
                            {      
                                        while(1)
                                        {      int b;
                                                char psw1;
                                                char psw;
                                                printf("请输入您的新密码(15个字符以内):\n");
                                                scanf("%s",psw);
                                                scanf("%*[^\n]");
                                                scanf("%*c");
                                                if(strlen(psw)>16)
                                                {
                                                      printf("\n************************************************\n");
                                                      printf("\n||       输入有误密码不能超过16个字符         ||\n");
                                                      printf("\n||            重新输入请按1               ||\n");
                                                      printf("\n||   返回请按2               退出请按0      ||\n");
                                                      printf("\n************************************************\n");
                                                      scanf("%d", &b);
                                                      scanf("%*[^\n]");
                                                      scanf("%*c");
                                                      if(b==0)
                                                                WriteFile();
                                                      else if(b==1)
                                                                continue;
                                                      else if(b==2)
                                                                break;
                                                      else
                                                      {
                                                                printf("输入有误系统自动返回!\n");
                                                                continue;               
                                                      }
                                                }      
                                                else
                                                {
                                                      printf("请再次输入您的密码:\n");
                                                      scanf("%s",psw1);
                                                      scanf("%*[^\n]");
                                                      scanf("%*c");
                                                      if(!strcmp(psw,psw1))
                                                                strcpy(User->psw,psw);
               
                                                      else
                                                      {
                                                               
                                                                printf("\n************************************************\n");
                                                                printf("\n||         输入有误两次密码输入不一致         ||\n");
                                                                printf("\n||            重新输入请按1               ||\n");
                                                                printf("\n||   返回请按2               退出请按0      ||\n");
                                                                printf("\n************************************************\n");
                                                                scanf("%d", &b);
                                                                scanf("%*[^\n]");
                                                                scanf("%*c");
                                                                if(b==0)
                                                                        WriteFile();
                                                                else if(b==1)
                                                                        continue;
                                                                else if(b==2)
                                                                        break;
                                                                else
                                                                {
                                                                        printf("输入有误系统自动返回!\n");
                                                                        continue;               
                                                                }
                                                      }
                                                      printf("密码修改成功!\n");      
                                                    break;
                                                }
                                        }
                                        continue;
                              }
                        else if(flg==6)
                                        break;
                              else if(flg==0)
                                        WriteFile();
                              else
                                        printf("输入有误系统自动返回!\n");
                                                
                        }
                }
                else
                        printf("输入密码有误请重新登陆!\n");
      }
      else
                printf("输入账号有误请重新登陆!\n");
}

/*void init()
{
    Bank wensheng;
      strcpy(wensheng.name,"wensheng");
      strcpy(wensheng.account,"030840910");
      strcpy(wensheng.psw,"030840910");
      strcpy(wensheng.id,"420983198805122414");
      wensheng.money=20000000;
      Bank xiaoping;
      strcpy(xiaoping.name,"xiaoping");
      strcpy(xiaoping.account,"030840911");
      strcpy(xiaoping.psw,"030840911");
      strcpy(xiaoping.id,"420983198805122415");
      xiaoping.money=30000000;
      AppendLinkList(&wensheng);
      AppendLinkList(&xiaoping);
}      
*/
//主函数
int main(void)
{
      
      intnum;
      Bank *User;
    ReadFile();
//      init();
      for(;;)
      {
                welcome1();
            scanf("%d",&num);
                scanf("%*[^\n]");
                scanf("%*c");
                if(num==1)
                        reg();
                else if(num==2)
                        login();
                else if(num==0)
                        WriteFile();
                else
                        printf("输入有误系统自动返回!(596)\n");
      }

      WriteFile();
      return 0;
}

浩森 发表于 2013-11-12 23:40:47

没看懂,是干吗用的?还是自己写的C控制台模拟ATM?

越夜越有神 发表于 2013-11-12 23:54:43

额,自几c语言写的,不是说提交原创吗》?

越夜越有神 发表于 2013-11-12 23:56:06

浩森 发表于 2013-11-12 23:40 static/image/common/back.gif
没看懂,是干吗用的?还是自己写的C控制台模拟ATM?

额,自己写c语言控制摩羯ATM,不是说提交一篇原创不就可以了吗

Hidzom 发表于 2013-11-13 17:16:51

{:soso_e179:}你牛

越夜越有神 发表于 2013-11-13 17:47:06

Hidzom 发表于 2013-11-13 17:16 static/image/common/back.gif
你牛

彩笔一个,你猜牛
页: [1]
查看完整版本: ATM交界页面