查看: 13074|回复: 5

ATM交界页面

[复制链接]
发表于 2013-11-12 23:25:25 | 显示全部楼层 |阅读模式

  1. #include<string.h>
  2. #include<stdio.h>
  3. #include<stdlib.h>

  4. //用户数据
  5. typedef struct bank
  6. {
  7.         char account[10+1];
  8.         char psw[16+1];
  9.         long  money;
  10.     char name[10+1];
  11.         char id[18+1];
  12. }Bank;

  13. //节点
  14. typedef struct node
  15. {
  16.         Bank data;
  17.         struct node *next;
  18.         struct node *prev;
  19. }Node;

  20. //头指针
  21. Node *Head=NULL;

  22. //查找
  23. Bank *SearchLinkList(char *paccount)
  24. {
  25.         Node *p=Head;
  26.         if(p==NULL)
  27.             return 0;
  28.         while(p!=NULL&&strcmp((p->data).account,paccount))
  29.             p=p->next;
  30.         if(!p)
  31.                 return 0;
  32.         else
  33.                 return &(p->data);
  34. }

  35. //追加
  36. void AppendLinkList(Bank *Data)
  37. {
  38.         Node *pNode = (Node*)malloc(sizeof(Node));
  39.         strcpy(pNode->data.account,Data->account);
  40.         strcpy(pNode->data.psw,Data->psw);
  41.         strcpy(pNode->data.name,Data->name);
  42.         pNode->data.money=Data->money;
  43.         strcpy(pNode->data.id,Data->id);
  44.         pNode->next=NULL;
  45.         Node  *p=Head;
  46.         if(p==NULL)
  47.         {        
  48.                 Head=pNode;
  49.                 pNode->next=NULL;
  50.                 pNode->prev=NULL;
  51.     }
  52.         else
  53.         {
  54.                 while(p->next)
  55.                          p=p->next;
  56.                 p->next=pNode;
  57.                 pNode->prev=p;
  58.           }
  59. }
  60. //删除
  61. int  DeleteLinkList(char *paccount)
  62. {
  63.         Node *p=Head;
  64.         if(p==NULL)
  65.             return 1;
  66.         while(p!=NULL&&strcmp(p->data.account,paccount))
  67.             p=p->next;
  68.         if(!p)
  69.                 return 1;
  70.         else
  71.                 free(p);
  72.         return 0;
  73. }

  74. //读取文件里的数据并存入连表
  75. int ReadFile()
  76. {
  77.         FILE* fp = fopen("bank.txt","a+");
  78.         Bank *data =(Bank *) malloc(sizeof(Bank));
  79.         if(!fp)
  80.         {
  81.                 printf("打开文件失败 !\n");
  82.                 return -1;
  83.         }
  84.         
  85.         else
  86.         {
  87.                 while(1)
  88.                 {
  89.                 int i = fscanf(fp ,"%10s  %16s  %10ld  %10s  %18s",data->account,data->psw,&(data->money),data->name,data->id);
  90.                
  91.                         fscanf(fp,"%*[^\n]");
  92.                         if(i==5)
  93.                                 AppendLinkList(data);
  94.                         else
  95.                                   break;
  96.                 }
  97.         }
  98.         free(data);
  99.         fclose(fp);

  100. }



  101. //将连表里的数据定写入文件
  102. int  WriteFile()
  103. {
  104.         FILE* fp = fopen("bank.txt","w+");
  105.         if(!fp)
  106.         {
  107.                 printf("打开文件失败!\n");
  108.                 return -1;
  109.         }
  110.         else
  111.         {
  112.                 Node* p=Head;
  113.                 while(p)
  114.                 {
  115.                         fprintf(fp,"%10s  %16s  %10ld %10s %18s\n ",p->data.account,p->data.psw,p->data.money,p->data.name,p->data.id);
  116.                         p=p->next;
  117.                 }
  118.         }
  119.         fclose(fp);
  120.         exit(0);
  121. }


  122. //主界面
  123. void welcome1()
  124. {
  125.         printf("\n*********欢迎使用虚拟银行自动取款机**********\n");
  126.         printf("\n*********************************************\n");
  127.         printf("\n||            请选择业务种类               ||\n");
  128.         printf("\n||                1注册                    ||\n");
  129.         printf("\n||                2登陆                    ||\n");
  130.         printf("\n||                0退出                    ||\n");
  131.         printf("\n*********************************************\n");
  132.         
  133. }

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

  145. }

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

  157. }

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

  170. //注册函数
  171. void reg()
  172. {
  173.         int a=0;
  174.         char account[10+1];
  175.         char name[10+1];
  176.         char id[18+1];
  177.         char psw1[16+1];
  178.         char psw[16+1];
  179.         long   Money=0;
  180.     Bank newuser;        

  181.         for(;;)
  182.          {
  183.                 welcome2();
  184.                 printf("请选择:\n");
  185.                 scanf("%d",&a);
  186.                 scanf("%*[^\n]");
  187.                 scanf("%*c");
  188.                 if(a==1)
  189.                 {
  190.                         printf("请输入您的账号(10个字符以内):\n");
  191.                         scanf("%s",account);
  192.                         scanf("%*[^\n]");
  193.                         scanf("%*c");
  194.                         if(strlen(account)>10)
  195.                         {
  196.                                 printf("\n********************************************\n");
  197.                                 printf("\n||       输入有误账号不能超过10个字符         ||\n");
  198.                                 printf("\n||              重新输入请按1                 ||\n");
  199.                                 printf("\n||   返回请按2               退出请按0        ||\n");
  200.                                 printf("\n********************************************\n");
  201.                                 scanf("%d", &a);
  202.                                 scanf("%*[^\n]");
  203.                                 scanf("%*c");
  204.                                 if(a==1)
  205.                                           continue;
  206.                                 else if(a==2)
  207.                                         break;
  208.                                 else if(a==0)
  209.                                         WriteFile();
  210.                                 else
  211.                                 {
  212.                                         printf("输入有误系统自动返回!\n");
  213.                                         continue;               
  214.                                 }
  215.                                        
  216.                         }
  217.                         if(SearchLinkList(account)!=NULL)
  218.                         {
  219.                                 printf("该账号已存在请重新输入\n");
  220.                                 break;
  221.                         }
  222.                         else
  223.                                 strcpy(newuser.account,account);
  224.                         while(1)
  225.                         {        
  226.                                 printf("请输入您的密码(16个字符以内):\n");
  227.                                 scanf("%s",psw);
  228.                                 scanf("%*[^\n]");
  229.                                 scanf("%*c");
  230.                                 if(strlen(psw)>16)
  231.                                 {
  232.                                         printf("\n************************************************\n");
  233.                                         printf("\n||       输入有误密码不能超过16个字符         ||\n");
  234.                                         printf("\n||              重新输入请按1                 ||\n");
  235.                                         printf("\n||   返回请按2               退出请按0        ||\n");
  236.                                         printf("\n************************************************\n");
  237.                                         scanf("%d", &a);
  238.                                         scanf("%*[^\n]");
  239.                                         scanf("%*c");
  240.                                         if(a==0)
  241.                                                 WriteFile();
  242.                                         else if(a==1)
  243.                                                 continue;
  244.                                         else if(a==2)
  245.                                                 break;
  246.                                         else
  247.                                         {
  248.                                                 printf("输入有误系统自动返回!\n");
  249.                                                 continue;               
  250.                                         }
  251.                                 }        
  252.                                 else
  253.                                 {
  254.                                         printf("请再次输入您的密码:\n");
  255.                                         scanf("%s",psw1);
  256.                                         scanf("%*[^\n]");
  257.                                         scanf("%*c");
  258.                                         if(!strcmp(psw,psw1))
  259.                                                 strcpy(newuser.psw,psw);

  260.                                         else
  261.                                         {
  262.                                                 
  263.                                                 printf("\n************************************************\n");
  264.                                                 printf("\n||         输入有误两次密码输入不一致         ||\n");
  265.                                                 printf("\n||              重新输入请按1                 ||\n");
  266.                                                 printf("\n||   返回请按2               退出请按0        ||\n");
  267.                                                 printf("\n************************************************\n");
  268.                                                 scanf("%d", &a);
  269.                                                 scanf("%*[^\n]");
  270.                                                 scanf("%*c");
  271.                                                 if(a==0)
  272.                                                         WriteFile();
  273.                                                 else if(a==1)
  274.                                                         continue;
  275.                                                 else if(a==2)
  276.                                                         break;
  277.                                                 else
  278.                                                 {
  279.                                                         printf("输入有误系统自动返回!\n");
  280.                                                         continue;               
  281.                                                 }
  282.                                         }        
  283.                                        
  284.                                 }
  285.                                        
  286.                                 break;
  287.                         }
  288.                         if(a==2)
  289.                                 break;
  290.                         while(1)
  291.                         {   
  292.                                 printf("请输入您的姓名(10个字符以内):\n");
  293.                                 scanf("%s",name);
  294.                                 scanf("%*[^\n]");
  295.                                 scanf("%*c");
  296.                                 if(strlen(name)>10)
  297.                                 {
  298.                                         printf("\n************************************************\n");
  299.                                         printf("\n||       输入有误姓名不能超过10个字符         ||\n");
  300.                                         printf("\n||              重新输入请按1                 ||\n");
  301.                                         printf("\n||   返回请按2               退出请按0        ||\n");
  302.                                         printf("\n************************************************\n");
  303.                                         scanf("%d", &a);
  304.                                         scanf("%*[^\n]");
  305.                                         scanf("%*c");
  306.                                         if(a==0)
  307.                                                 WriteFile();
  308.                                         else if(a==1)
  309.                                                 continue;
  310.                                         else if(a==2)
  311.                                                 break;
  312.                                         else
  313.                                         {
  314.                                                 printf("输入有误系统自动返回!\n");
  315.                                                 continue;               
  316.                                         }
  317.                                 }        
  318.                                 else
  319.                                         strcpy(newuser.name,name);
  320.                                 break;
  321.                         }
  322.                         if(a==2)
  323.                                 break;
  324.                         while(1)
  325.                         {
  326.                                 printf("请输入您的身份(18个字符):\n");
  327.                                 scanf("%s",id);
  328.                                 scanf("%*[^\n]");
  329.                                 scanf("%*c");
  330.                                 if(strlen(id)!=18)
  331.                                 {
  332.                                         printf("\n************************************************\n");
  333.                                         printf("\n||      输入有误身份证号必须为18个字符        ||\n");
  334.                                         printf("\n||              重新输入请按1                 ||\n");
  335.                                         printf("\n||   返回请按2               退出请按0        ||\n");
  336.                                         printf("\n************************************************\n");
  337.                                         scanf("%d", &a);
  338.                                         scanf("%*[^\n]");
  339.                                         scanf("%*c");
  340.                                         if(a==0)
  341.                                                 WriteFile();
  342.                                         else if(a==1)
  343.                                                 continue;
  344.                                         else if(a==2)
  345.                                                 break;
  346.                                         else
  347.                                         {
  348.                                                 printf("输入有误系统自动返回!\n");
  349.                                                 continue;               
  350.                                         }
  351.                                 }        
  352.                                 else
  353.                                         strcpy(newuser.id,id);
  354.                                 break;
  355.                         }
  356.                         if(a==2)
  357.                                 break;
  358.                         while(1)
  359.                         {
  360.                                 printf("请输入您的存款金额(不得小于100元)\n");
  361.                                 scanf("%lu", &Money);
  362.                                 scanf("%*[^\n]");
  363.                                 scanf("%*c");
  364.                                 if(Money<100)
  365.                                 {
  366.                                         printf("\n************************************************\n");
  367.                                         printf("\n||        输入有误存款金额小于100元           ||\n");
  368.                                         printf("\n||              重新输入请按1                 ||\n");
  369.                                         printf("\n||   返回请按2               退出请按0        ||\n");
  370.                                         printf("\n************************************************\n");
  371.                                         scanf("%d", &a);
  372.                                         if(a==0)
  373.                                                 WriteFile();
  374.                                         else if(a==1)
  375.                                                 continue;
  376.                                         else if(a==2)
  377.                                                 break;
  378.                                         else
  379.                                         {
  380.                                                 printf("输入有误系统自动返回!\n");
  381.                                                 continue;               
  382.                                         }        
  383.                                 }        
  384.                                 else
  385.                                         newuser.money=Money;
  386.                                 break;
  387.                         }
  388.                         AppendLinkList(&(newuser));
  389.                         welcome4(&newuser);
  390.                         scanf("%d",&a);
  391.                         scanf("%*[^\n]");
  392.                         scanf("%*c");
  393.                         if(a==0)
  394.                                 WriteFile();
  395.                         else if(a==2)
  396.                                 break;
  397.                         else
  398.                         {
  399.                                 printf("输入有误系统自动返回!\n");
  400.                                 break;
  401.                         }
  402.                 }
  403.                         
  404.                 else if(a==2)
  405.                         break;
  406.                 else if(a==0)
  407.                           WriteFile();        
  408.                 else
  409.                         printf("输入有误系统自动返回!");
  410.            }               
  411. }

  412. //登陆函数
  413. void login()
  414. {
  415.         char Account[10+1];
  416.         char Passwd[16+1];
  417.     long  Money;
  418.         Bank * User;
  419.         printf("请输入您的账号:\n");
  420.         scanf("%s",Account);
  421.         printf("请输入您的密码:\n");
  422.         scanf("%s",Passwd);
  423.         if(SearchLinkList(Account)!=NULL)
  424.         {
  425.                 User=SearchLinkList(Account);
  426.                 if(!strcmp(User->psw,Passwd))
  427.                 {
  428.                         for(;;)
  429.                         {
  430.                                 int flg;
  431.                                 welcome3();
  432.                                 scanf("%d",&flg);
  433.                                 scanf("%*[^\n]");
  434.                                 scanf("%*c");
  435.                                 if(flg==1)
  436.                                 {
  437.                                         for(;;)
  438.                                         {
  439.                                                 printf("请输入您的取款金额!\n");
  440.                                                 scanf("%lu",&Money);
  441.                                                 scanf("%*[^\n]");
  442.                                                 scanf("%*c");
  443.                                                 if(Money<0)
  444.                                                 {
  445.                                                         printf("输入有误请重新输入!\n");
  446.                                                         continue;
  447.                                                 }
  448.                                                 if(User->money<Money)
  449.                                                 {
  450.                                                         printf("您的余额不足请重新输入!\n");
  451.                                                         continue;
  452.                                                 }
  453.                                                 else
  454.                                                 {
  455.                                                         User->money=User->money-Money;
  456.                                                         printf("取款成功!\n");
  457.                                                 }
  458.                                                 break;
  459.                                          }
  460.                                         continue;
  461.                                 }
  462.                                 else if(flg==2)
  463.                                 {
  464.                                         int a;
  465.                                         welcome4(User);
  466.                                         scanf("%d",&a);
  467.                                         scanf("%*[^\n]");
  468.                                         scanf("%*c");
  469.                                         if(a==0)
  470.                                                 WriteFile();
  471.                                         else if(a==2)
  472.                                                 continue;
  473.                                         else
  474.                                                 printf("输入有误系统自动返回\n");
  475.                                         continue;
  476.                                 }
  477.                                 
  478.                                 else if(flg==3)
  479.                                 {
  480.                                         printf("请输入您的存款金额:\n");
  481.                                         scanf("%lu",&Money);
  482.                                         scanf("%*[^\n]");
  483.                                         scanf("%*c");
  484.                                         if(Money>0)
  485.                                         {
  486.                                                 User->money+=Money;
  487.                                                 printf("存款成功!\n");
  488.                                         }
  489.                                         else
  490.                                                 printf("输入有误系统自动返回!\n");
  491.                                         continue;
  492.                                 }
  493.                                 else if(flg==4)
  494.                                  {
  495.                                         if(!DeleteLinkList(Account))
  496.                                         {
  497.                                                 printf("注销成功!\n");
  498.                                                 break;
  499.                                         }
  500.                                         else
  501.                                                 printf("注销失败系统自动返回!\n");
  502.                                         continue;
  503.                                 }
  504.                                 else if(flg==5)
  505.                             {        
  506.                                         while(1)
  507.                                         {        int b;
  508.                                                 char psw1[16];
  509.                                                 char psw[16];
  510.                                                 printf("请输入您的新密码(15个字符以内):\n");
  511.                                                 scanf("%s",psw);
  512.                                                 scanf("%*[^\n]");
  513.                                                 scanf("%*c");
  514.                                                 if(strlen(psw)>16)
  515.                                                 {
  516.                                                         printf("\n************************************************\n");
  517.                                                         printf("\n||       输入有误密码不能超过16个字符         ||\n");
  518.                                                         printf("\n||              重新输入请按1                 ||\n");
  519.                                                         printf("\n||   返回请按2               退出请按0        ||\n");
  520.                                                         printf("\n************************************************\n");
  521.                                                         scanf("%d", &b);
  522.                                                         scanf("%*[^\n]");
  523.                                                         scanf("%*c");
  524.                                                         if(b==0)
  525.                                                                 WriteFile();
  526.                                                         else if(b==1)
  527.                                                                 continue;
  528.                                                         else if(b==2)
  529.                                                                 break;
  530.                                                         else
  531.                                                         {
  532.                                                                 printf("输入有误系统自动返回!\n");
  533.                                                                 continue;               
  534.                                                         }
  535.                                                 }        
  536.                                                 else
  537.                                                 {
  538.                                                         printf("请再次输入您的密码:\n");
  539.                                                         scanf("%s",psw1);
  540.                                                         scanf("%*[^\n]");
  541.                                                         scanf("%*c");
  542.                                                         if(!strcmp(psw,psw1))
  543.                                                                 strcpy(User->psw,psw);
  544.                
  545.                                                         else
  546.                                                         {
  547.                                                                
  548.                                                                 printf("\n************************************************\n");
  549.                                                                 printf("\n||         输入有误两次密码输入不一致         ||\n");
  550.                                                                 printf("\n||              重新输入请按1                 ||\n");
  551.                                                                 printf("\n||   返回请按2               退出请按0        ||\n");
  552.                                                                 printf("\n************************************************\n");
  553.                                                                 scanf("%d", &b);
  554.                                                                 scanf("%*[^\n]");
  555.                                                                 scanf("%*c");
  556.                                                                 if(b==0)
  557.                                                                         WriteFile();
  558.                                                                 else if(b==1)
  559.                                                                         continue;
  560.                                                                 else if(b==2)
  561.                                                                         break;
  562.                                                                 else
  563.                                                                 {
  564.                                                                         printf("输入有误系统自动返回!\n");
  565.                                                                         continue;               
  566.                                                                 }
  567.                                                         }
  568.                                                         printf("密码修改成功!\n");        
  569.                                                     break;
  570.                                                 }
  571.                                         }
  572.                                         continue;
  573.                                 }
  574.                         else if(flg==6)
  575.                                         break;
  576.                                 else if(flg==0)
  577.                                         WriteFile();
  578.                                 else
  579.                                         printf("输入有误系统自动返回!\n");
  580.                                                 
  581.                         }
  582.                 }
  583.                 else
  584.                         printf("输入密码有误请重新登陆!\n");
  585.         }
  586.         else
  587.                 printf("输入账号有误请重新登陆!\n");
  588. }

  589. /*void init()
  590. {
  591.     Bank wensheng;
  592.         strcpy(wensheng.name,"wensheng");
  593.         strcpy(wensheng.account,"030840910");
  594.         strcpy(wensheng.psw,"030840910");
  595.         strcpy(wensheng.id,"420983198805122414");
  596.         wensheng.money=20000000;
  597.         Bank xiaoping;
  598.         strcpy(xiaoping.name,"xiaoping");
  599.         strcpy(xiaoping.account,"030840911");
  600.         strcpy(xiaoping.psw,"030840911");
  601.         strcpy(xiaoping.id,"420983198805122415");
  602.         xiaoping.money=30000000;
  603.         AppendLinkList(&wensheng);
  604.         AppendLinkList(&xiaoping);
  605. }        
  606. */
  607. //主函数
  608. int main(void)
  609. {
  610.         
  611.         int  num;
  612.         Bank *User;
  613.     ReadFile();
  614. //        init();
  615.         for(;;)
  616.         {
  617.                 welcome1();
  618.             scanf("%d",&num);
  619.                 scanf("%*[^\n]");
  620.                 scanf("%*c");
  621.                 if(num==1)
  622.                         reg();
  623.                 else if(num==2)
  624.                         login();
  625.                 else if(num==0)
  626.                         WriteFile();
  627.                 else
  628.                         printf("输入有误系统自动返回!(596)\n");
  629.         }

  630.         WriteFile();
  631.         return 0;
  632. }

复制代码
回复

使用道具 举报

发表于 2013-11-12 23:40:47 | 显示全部楼层
没看懂,是干吗用的?还是自己写的C控制台模拟ATM?

点评

额,自己写c语言控制摩羯ATM,不是说提交一篇原创不就可以了吗  详情 回复 发表于 2013-11-12 23:56
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-12 23:54:43 | 显示全部楼层
额,自几c语言写的,不是说提交原创吗》?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-12 23:56:06 | 显示全部楼层
浩森 发表于 2013-11-12 23:40
没看懂,是干吗用的?还是自己写的C控制台模拟ATM?

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

使用道具 举报

发表于 2013-11-13 17:16:51 | 显示全部楼层
{:soso_e179:}你牛

点评

彩笔一个,你猜牛  详情 回复 发表于 2013-11-13 17:47
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-13 17:47:06 | 显示全部楼层
Hidzom 发表于 2013-11-13 17:16
你牛

彩笔一个,你猜牛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-5-4 06:45 , Processed in 0.073873 second(s), 22 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部