汇款系统

来源:互联网 发布:前端开发seo 编辑:程序博客网 时间:2024/04/20 06:01

 


#include"stdio.h"
#include"string.h"
void welcome()
{
  printf("/n+------------------------------------+/n");
  printf("|                                    |/n");
  printf("|         (欢迎光临汇款系统)         |/n");
  printf("|                                    |/n");
  printf("+------------------------------------+/n");
}
void mainmenu()
{
    int choice;
    choice = -1;
    /*maxAccount = readData();*/
    do
    {
        printf("/n");
        printf("+--------------------------------------------------+/n");
        printf("| 存款(deposit)    1       开户(openAnAccount)  4  |/n");
        printf("| 取款(withdraw)   2       销户(closeAnAccount)  5 |/n");
        printf("| 查询(queray)     3      退出(exit)  0           |/n");
        printf("+--------------------------------------------------+/n");
        printf("输入要查询的业务!(input yuur choice)");
        scanf("%d", &choice);
        fflush(stdin);
        switch(choice)
        {
            case 0:
                exit(0);
            case 1:
                /*deposit();*/
                break;
            case 2:
               /* withdraw();*/
                break;
            case 3:
               /* query();*/
                break;
            case 4:
               /* openAnAccount();*/
                break;
            case 5:
               /* closeAnAcount();*/
                break;
            case 6:
               /* queryall();*/
                break;
            default:
                printf("/n 没有该项业务!(no choice!)");
                break;
        }
    }while(choice != 0);
}
void openAnAccount()
{
    int accNumber;
    char accName[9];
    char accPWD[7];
    double cash;

    accNumber = 0;
    memset(accName, 0, sizeof(accName));
    memset(accPWD, 0, sizeof(accPWD));
    cash = 0;

    if (maxAccount >= (N_MAXREC_NO - 1))
    {
        printf("max/n");
        return ;
    }
    accNumber = createAccNumber();

    getaccName(accName);
    getaccPWD(accPWD);
    cash = getcash(0);
    maxAccount++;
    rs[maxAccount].accNumber = accNumber;
    strcpy(rs[maxAccount].accName,accName);
    strcpy(rs[maxAccount].accPWD,accPWD);
    rs[maxAccount].balance = cash;
    strcpy(rs[maxAccount].flag,"0");

    if(writeData())
    {
        printf("error");
        return;
    }
    dispAnAccount(maxAccount);

    printf("sucess");
    getch();
    return;
}

void main()
{
  char username[9];
  char userPWD[7];
  int i;
  welcome();
  for (i=0;i<3;i++)
  {
    printf("/n");
    printf("请输入您的用户名:");
    scanf("%s",&username);
    fflush(stdin);
    printf("请输入您的密码:");
    scanf("%s",&userPWD);
    fflush(stdin);
    if((strcmp(username,"he")==0)&&(strcmp(userPWD,"heng"==0)))
     {
      /*用户名和密码正确,显示主菜单*/
      mainmenu();
     }
    else
    {
       if(i<2)
       {
         /*用户名和密码错误,请重新输入!*/
         printf("/n------------------------------/n");
         printf("|用户名和密码错误,请重新输入!|/n");
         printf("------------------------------/n");
       }
       else
 {
         /*连续输入3次错误用户名或密码,退出系统!*/
         printf("/n----------------------------/n");
         printf("|用户名和密码错误,退出系统!|");
         printf("----------------------------/n"); 
 }
    }
  } 
}


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

#define N_MAXREC_NO 100
#define FILE_DATA_PATH "c:"
#define MAXLINE 256

struct record
{
 int accNumber;
 char accName[9];
 char accPWD[7];
 double balance;
 char flag[2];
};


typedef struct record RECORD;


RECORD rs[N_MAXREC_NO];


int maxAccount;


void welcome();


void mainmenu();

void openAnAccount();


void closeAnAcount();


void deposit();


void withdraw();


void query();

int findAnAccount(int accNumber);


void dispAnAccount(int i);


int createAccNumber();


int readData();


int writeData();

int checkInput(int flag, char *checkStr);

char *rightTrim(char *str);


void queryall();


void getaccName(char accName[]);


void getaccPWD(char accPWD[]);


double getcash();


int getaccNumber(int flag);

void main()
{
  char username[9];
  char userPWD[7];
  int i;
  welcome();
  for (i=0;i<3;i++)
  {
    printf("/n");
    printf("请输入您的用户名(please input your username):");
    scanf("%s",&username);
    fflush(stdin);
    printf("请输入您的密码(please input yout password):");
    scanf("%s",&userPWD);
    fflush(stdin);
    if((strcmp(username,"admin")==0)&&(strcmp(userPWD,"hheng"==0)))
     {
      /*用户名和密码正确,显示主菜单*/
      mainmenu();
     }
    else
    {
       if(i<2)
       {
         /*用户名和密码错误,请重新输入!*/
         printf("用户名和密码错误,请重新输入!(error!)");
       }
       else
 {
         /*连续输入3次错误用户名或密码,退出系统!*/
         printf("用户名和密码错误,退出系统!(exit)!"); 
 }
    }
  } 
}

void welcome()
{
  printf("+------------------------------------+/n");
  printf("|                                    |/n");
  printf("|         (欢迎光临汇款系统)         |/n");
  printf("|                                    |/n");
  printf("+------------------------------------+/n");
}


void mainmenu()
{
    int choice;
    choice = -1;
    /*maxAccount = readData();*/
    do
    {
        printf("/n");
        printf("+-------------------------------------------------+/n");
        printf("| 存款(deposit)    1       开户(openAnAccount)   4 |/n");
        printf("| 取款(withdraw)   2       销户(closeAnAccount)  5 |/n");
        printf("| 查询(queray)    3       退出(exit)            0 |/n");
        printf("+--------------------------------------------------+/n");
        printf("input yuur choice");
        scanf("%d", &choice);
        fflush(stdin);
        switch(choice)
        {
            case 0:
                exit(0);
            case 1:
                deposit();
                break;
            case 2:
              withdraw();
                break;
            case 3:
              query();
                break;
            case 4:
                openAnAccount();
                break;
            case 5:
               closeAnAcount();
                break;
            case 6:
               queryall();
                break;
            default:
                printf("/n no choice!");
                break;
        }
    }while(choice != 0);
}


void openAnAccount()
{
    int accNumber;
    char accName[9];
    char accPWD[7];
    double cash;


    accNumber = 0;
    memset(accName, 0, sizeof(accName));
    memset(accPWD, 0, sizeof(accPWD));
    cash = 0;


    if (maxAccount >= (N_MAXREC_NO - 1))
    {
        printf("max/n");
        return ;
    }


    accNumber = createAccNumber();

    getaccName(accName);


    getaccPWD(accPWD);


    cash = getcash(0);

    maxAccount++;

    rs[maxAccount].accNumber = accNumber;
    strcpy(rs[maxAccount].accName,accName);
    strcpy(rs[maxAccount].accPWD,accPWD);
    rs[maxAccount].balance = cash;
    strcpy(rs[maxAccount].flag,"0");


    if(writeData())
    {
        printf("error");
        return;
    }


    dispAnAccount(maxAccount);

    printf("sucess");
    getch();
    return;
}


void closeAnAcount()
{
    int accNumber;
    char accPWD[7];
    char userAnswer;
    int accountPosition;

    accountPosition = -1;
    accNumber = 0;
    memset(accPWD,0,sizeof(accPWD));


    accNumber = getaccNumber(2);

    getaccPWD(accPWD);

    accountPosition = findAnAccount(accNumber);

    if (accountPosition == -1)
    {
        printf("no found ");
        getch();
        return;
    }


    dispAnAccount(accountPosition);

 

    if (strcmp(rs[accountPosition].accPWD ,accPWD) != 0)
    {
        printf("/neeror");
        getch();
        return;
    }


    if (strcmp(rs[accountPosition].flag, "0") != 0)
    {
        printf("no again close ");
        getch();
        return;
    }

 printf("confirm %d] [1:close|other:no close] ", rs[accountPosition].accNumber);
    scanf("%c", &userAnswer);
    fflush(stdin);

 if (userAnswer == '1')
    {
        strcpy(rs[accountPosition].flag, "1");
        rs[accountPosition].balance = 0;


        if(writeData())
        {
            printf("error");
            return;
        }

        dispAnAccount(accountPosition);
        printf("sucess");
        getch();
        return;
    }

    printf("cancel");
    getch();
    return;
}


void deposit()
{
    int accNumber;
    int accountPosition;
    double cash;


    accNumber = 0;
    accountPosition = -1;
    cash = 0;


    accNumber = getaccNumber(0);


    accountPosition = findAnAccount(accNumber);

    if (accountPosition== -1)
    {
        printf("not found ");
        getch();
        return;
    }


    dispAnAccount(accountPosition);


    if (strcmp(rs[accountPosition].flag,"0") != 0)
    {
        printf("error");
        getch();
  return;
    }


    cash = getcash(0);
    rs[accountPosition].balance = rs[accountPosition].balance + cash;

    if(writeData())
    {
        printf("error");
        return;
    }
    dispAnAccount(accountPosition);
    printf("sucess");
    getch();
}


void withdraw()
{
    int accNumber;
    char accPWD[7];
    double cash;
    int accountPosition;


    accNumber = 0;
    memset(accPWD, 0, sizeof(accPWD));
    accountPosition = -1;
    cash = 0;


    accNumber = getaccNumber(1);


    getaccPWD(accPWD);


    accountPosition = findAnAccount(accNumber);

    if (accountPosition== -1)
    {
        printf("no found ");
        getch();
        return;
    }

    dispAnAccount(accountPosition);


    if (strcmp(rs[accountPosition].accPWD ,accPWD) != 0)
    {
        printf("/nerror");
        getch();
        return;
    }

    if (strcmp(rs[accountPosition].flag,"0") != 0)
    {
        printf("error");
        getch();
        return;
    }

    cash = getcash(1);

    if (cash > rs[accountPosition].balance)
    {
        printf("error");
        getch();
        return;
    }

    rs[accountPosition].balance = rs[accountPosition].balance - cash;


    if(writeData())
    {
        printf("error");
        return;
    }
    dispAnAccount(accountPosition);
    printf("success");
    getch();
}


void query()
{

    int accNumber;
    char accPWD[7];
    int accountPosition;


    accountPosition = -1;
    accNumber = 0;
    memset(accPWD,0,sizeof(accPWD));


    accNumber = getaccNumber(3);


    getaccPWD(accPWD);

    accountPosition = findAnAccount(accNumber);

    if (accountPosition== -1)
    {
        printf("not found");
        getch();
    }

 


    if (strcmp(rs[accountPosition].accPWD, accPWD) != 0)
    {
        printf("/nerror");
        getch();
  return;
    }
    if (strcmp(rs[accountPosition].flag, "0") != 0)
    {

        printf("/nerror");
        getch();
  return;
    }


    dispAnAccount(accountPosition);
    printf("/n sucess");
    getch();
 return;
}


int createAccNumber()
{
    if(maxAccount == -1)
    {
        return 10001;
    }
    else
    {

        return rs[maxAccount].accNumber + 1;
    }
}


void queryall()
{
    int i;
    for(i = 0; i <= maxAccount; i++)
    {
        dispAnAccount(i);
    }
 printf("/npress any key");
    getch();
}

int findAnAccount(int accNumber)
{
    int accountPosition;
    int i;


    accountPosition = -1;

    for(i = 0; i <= maxAccount; i++)
    {
        if(rs[i].accNumber == accNumber)
        {
            accountPosition = i;
            break;
        }
    }

    return accountPosition;
}

void dispAnAccount(int i)
{
    printf("+-------------------------------------------------+/n");
    printf("| %-5s | %-8s | %-6s | %-12s| %4s |/n","acoount","user","password","balance","flag");
    printf("+--------+----------+--------+-------------+------+/n");
    printf("| %5d | %-8s | %-6s | %12.2f| %4s |/n",rs[i].accNumber,rs[i].accName,rs[i].accPWD,rs[i].balance,atoi(rs[i].flag)?"cancel":"normal" );
    printf("+-------------------------------------------------+/n");
}


int readData()
{
    int length,i,j,k;
    char cLineStr[255],cData[80],cTmp[2];
    FILE*  fp;
    char SrcFile[60];

    j = 0;
    i = 0;
    memset(cData, 0, sizeof(cData));
    memset(cLineStr, 0, sizeof(cLineStr));
    memset(&rs, 0, sizeof(RECORD));


    strcpy(SrcFile, FILE_DATA_PATH);
    strcat(SrcFile, "
//Bank");
    fp = fopen(SrcFile, "r");
    if (fp == NULL)
    {
        return -1;
    }


    while((!feof(fp)) && ((fgets(cLineStr, MAXLINE, fp)) != NULL))
    {
        length=strlen(cLineStr);
        for(k=0; k<length; k++)
        {
            memset(cTmp, 0, sizeof(cTmp));
            memcpy(cTmp, &cLineStr[k], 1);

            if(cTmp[0] != ',')
            {
                strcat(cData,cTmp);
            }

            else
            {
                if(j==0)
                {
                    rs[i].accNumber = atoi(cData);
                }
                if(j==1)
                {

                    rightTrim(cData);
                    strcpy(rs[i].accName,cData);
                }
                if(j==2)
                {

                    rightTrim(cData);
                    strcpy(rs[i].accPWD,cData);
                }
                if(j==3)
                {
                    rs[i].balance = atof(cData);
                }
                if(j==4)
                {

                    rightTrim(cData);
                    strcpy(rs[i].flag,cData);
                }
                memset(cData, 0, sizeof(cData));
                j++;
                if(j==5)
                {
                    break;
                }
            }
 }
        j = 0;
        i++;
    }
    fclose(fp);

    i--;
    return i;
}

int writeData()
{
    FILE*  fp;
    char SrcFile[60];
    int i;


    strcpy( SrcFile, FILE_DATA_PATH);
    strcat( SrcFile, "
//Bank");
    fp = fopen( SrcFile, "w");
    if ( fp == NULL )
    {
        return 1;
    }


    for(i=0; i <= maxAccount; i++)
    {
        fprintf(fp,"%-5d,%-8s,%-6s,%12.2f,%-1s,/n",
            rs[i].accNumber,rs[i].accName,rs[i].accPWD,rs[i].balance,rs[i].flag);
    }
    fclose(fp);
    return 0;
}

int checkInput(int flag, char *checkStr)
{
    switch(flag)
    {

        case 0:
        {
            if(strlen(checkStr) > 8)
            {
                return 1;
            }
            break;
        }

        case 1:
        {
            if(strlen(checkStr) > 6)
            {
                return 1;
            }
            break;
        }

        case 2:
        {
            if(strlen(checkStr) > 12)
            {
                return 1;
            }
            break;
        }
        default:
            return 0;
    }
    return 0;
}


char *rightTrim(char *str)
{
    char *s = str;

    while (*s)
    {
        ++s;
    }

    --s;
    while (s >= str)
    {
        if ((*s==' ') || (*s=='/t') || (*s=='/r') || (*s=='/n'))
        {
            --s;
        }
        else
        {
            break;
        }
    }

    * (s + 1) = 0;
    return str;
}

void getaccName(char accName[])
{
    char caccName[100];
    int i = 1;

    while(i)
    {
        memset(caccName, 0, sizeof(caccName));
        printf("/n");
        printf("name:");
        scanf("%s", caccName);
        fflush(stdin);
        if(checkInput(0, caccName))
        {
            printf("error/n");
            continue;
        }
        i = 0;
    }
    memcpy(accName, caccName, 9);
}


void getaccPWD(char accPWD[])
{
    char caccPWD[100];
    int i = 1;

    while(i)
    {
        memset(caccPWD, 0, sizeof(caccPWD));
        printf("/n");
        printf("password");
        scanf("%s", caccPWD);
        fflush(stdin);
        if(checkInput(1, caccPWD))
        {
            printf("error/n");
            continue;
        }
        i = 0;
    }
    memcpy(accPWD, caccPWD, 7);
}


double getcash(int flag)
{
    char ccash[100];
    double dcash;
 int i = 1;

 while(i)
 {
  memset(ccash, 0, sizeof(ccash));
  dcash = 0;
  printf("/n");
  switch(flag)
  {
      case 0: printf("jine"); break;
      case 1: printf("jine"); break;
  }
     scanf("%lf",&dcash);
     fflush(stdin);
     sprintf(ccash,"%12.2f",dcash);
     if(checkInput(2, ccash))
     {
         printf("error/n");
         continue;
     }
  i = 0;
 }
 return dcash;
}

 

int getaccNumber(int flag)
{
    int iaccNumber;

    iaccNumber = 0;
    printf("/n");
    switch(flag)
    {
        case 0: printf("acount"); break;
        case 1: printf("acount"); break;
        case 2: printf("acount"); break;
        case 3: printf("acount"); break;
    }
    scanf("%d",&iaccNumber);
    fflush(stdin);

    return iaccNumber;
}




原创粉丝点击