银行账户管理系统

银行账户管理系统

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#define M 1000               //最大人数

int N=2;                     //记录用户量

int admin_menushow();        //管理员菜单

int menushow1();             //德州银行总页面

void open_a_bank_acount();   //开户

void user_information();     //开户信息填写

void login();                //登录         

void menushow();             //个人银行账户管理页面

void menuselection();        //个人银行账户管理功能选择

void modify();               //修改的银行账号信息

void display_information();  //显示所有用户信息

void query_information();    //管理员查询用户信息

void query_information2();   //用户查询银行账户信息

void delete_information();   //删除用户信息

void delete_information1();  //用户注销

void sort_acount();          //按银行账户排序

void quitsystem();           //退出系统

void admin();                //管理员登陆

void admin_menuselection();  //管理员管理功能选择

void save_money();           //存钱

void withdraw();             //取钱

void show_balance();         //管理员查询余额

void show_balance1();        //用户查询余额

void acount_information();   //打印所有银行用户

struct Login_interface      

{

    int acount_number; //账号

    char password[10];  //密码

    char name[10];   //用户名

    float balance;  //账户余额

    char gender[10];//性别

    char phone[11];//电话

}user[M]={{10015,"123","zd",1234,"男","1234567890"},{1002,"124","zs",1234,"男","1234567891"},{1003,"125","zf",1234,"男","1234567892"}};

struct admin

{

    int acount_number1; //管理员账号

    char password1[10]; //管理员密码

}Admin={666,"123"};

void main()

{

    menushow1();

}

int admin_menushow()         //管理员菜单

{

        int i;

        printf("|     欢迎管理员到来      |\n");

        printf("|   1 查询用户的余额      |\n");

        printf("|   2 查看所有账户        |\n");

        printf("|   3 查询账户信息        |\n");

        printf("|   4 删除银行账户信息    |\n");

        printf("|   5 按银行账户排序      |\n");

        printf("|   6 德州银行总页面      |\n");

        printf("|   0 退出系统            |\n");

        printf("请输入您的选择: ");

        scanf("%d",&i);

        if(i>=0 &&i<=6)

            return i;

        else

            printf("输入有误,请重新选择!\n\n");

}

void admin_menuselection()   //命令的选择

{

    int i;

    i=admin_menushow();

    switch(i)

    {

        case 1:show_balance();break;

        case 2:acount_information();break;

        case 3:query_information();break;

        case 4:delete_information();break;

        case 5:sort_acount();break;

        case 6:menushow1();break;

        case 0:quitsystem();break;

    }

}

void admin()                  //管理员登陆

{

    int i,j,t;

    int acount_number;

    char password1[10];

         printf("请输入管理员账号:\n");

         scanf("%d",&acount_number);

         printf("请输入管理员密码:\n");

         scanf("%s",password1);

    for(i=3;i>=0;i--)

    {

        while(i)

        {

         if(Admin.acount_number1==acount_number&&strcmp(Admin.password1,password1)==0)

         admin_menuselection();

             else

             {

             printf("账号或密码输入错误,还剩%d次机会\n",i--);

              printf("请输入管理员账号:\n");

             scanf("%d",&acount_number);

             printf("请输入管理员密码:\n");

             scanf("%s",password1);

            }

        }

    }

    printf("请按键继续\n");

    getch();

    menushow1();

}

void show_balance()         //管理员查询余额

{

    int i,j;

    int acount;

    printf("请输入查询的账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

     if(user[i].acount_number==acount)

       {

             break;

       }

    }

    if(i<N+1)

    {

       

        printf("%f\n",user[i].balance);

    }

    else

       printf("没有找到%d用户\n",acount);

    printf("请按键继续\n");

    getch();

    admin_menuselection();

}

void query_information()      //管理员查询用户信息

{

    int i,j;

    int acount;

        printf("账号    用户名      性别     账户余额           电话    :\n");

        for(j=0;j<N+1;j++)

        {

             printf("%-5d      %-5s%-7s%18f%18s\n",user[j].acount_number,user[j].name,user[j].gender,user[j].balance,user[j].phone);

       

        }

    printf("请按键继续\n");

    getch();

    admin_menuselection();

}

void save_money()  //存钱

{

    int i,j;

    float balance1;

    int acount;

    j=0;

    printf("请确认存款银行账号:");

    scanf("%d",&acount);

    printf("请输入存款的数目:");

    scanf("%f",&balance1);

    for(i=0;i<N+1;i++)

    {

     if(user[i].acount_number==acount)

       {

             break;

       }

    }

    if(i<N+1)

    {

        printf("余额:%f\n",user[i].balance=user[i].balance+balance1);

        printf("存款成功\n");

    }

    else

    {

      printf("没有找到%d用户\n",acount);

    }

      printf("请按键继续\n");

      getch();

      menushow();

}

void withdraw()  //取款

{

    int i;

    float balance1;

    int acount;

    printf("请确认取款银行账号:");

    scanf("%d",&acount);

    printf("请输入取款的数目:");

    scanf("%f",&balance1);

    for(i=0;i<N+1;i++)

    {

     if(user[i].acount_number==acount)

       {

             break;

       }

    }

    if(i<N+1)

    {

        user[i].balance=user[i].balance-balance1;

        printf("取款成功\n");

    }

    else

     printf("没有找到%d用户\n",acount);

     printf("请按键继续\n");

     getch();

     menushow();

}

void acount_information()  //打印所有银行用户

{

    int i;

    for(i=0;i<N+1;i++)

    {

        printf("%d\n",user[i].acount_number);

    }

     printf("请按键继续\n");

     getch();

     admin_menuselection();

}

void display_information()    //显示所有用户信息

{

    int i;

    for(i=0;i<N+1;i++)

    {

        printf("%-10d%-10s%-14s%-14s%-10f\n",user[i].acount_number,user[i].name,user[i].gender,user[i].phone,user[i].balance);

    }

     printf("请按键继续\n");

     getch();

     admin_menuselection();

}

int menushow1()     //德州银行总页面

{

    int s;

    printf("****欢迎来到德州银行总页面****\n");

    printf("*******有以下几个服务*********\n");

    printf("*******1 开通银行账户*********\n");

    printf("*******2 登陆银行账户*********\n");

    printf("*******3 银行管理员登陆*******\n");

    printf("*******4 退出银行系统*********\n");

    printf("请选择服务\n");

    scanf("%d",&s);

    switch(s)

    {

    case 1:open_a_bank_acount();break;

    case 2:login();break;

    case 3:admin();break;

    case 4:quitsystem();break;

    }

}

void menushow()        //个人银行账户管理页面

{

    printf("\n");

        printf("\t************************************\n");

        printf("\t*     欢迎用户使用                 *\n");

        printf("\t*     个人银行账户管理系统         *\n");

        printf("\n");

        printf("\t*    1:显示银行账户信息            *\n");

        printf("\t*    2:修改银行账户信息            *\n");

        printf("\t*    3:存钱                        *\n");

        printf("\t*    4:取钱                        *\n");

        printf("\t*    5:余额                        *\n");

        printf("\t*    6:注销银行账户                *\n");

        printf("\t*    7:德州银行总页面              *\n");

        printf("\t*    8:退出系统                    *\n");

        printf("\t********************************\n");

        menuselection();

}

void menuselection()     //个人银行账户管理功能选择

{

    int userselect;

    printf("请输入你的选择:");

    scanf("%d",&userselect);

    switch(userselect)

    {

        case 1:query_information2();break;

        case 2:modify();break;

        case 3:save_money();break;

        case 4:withdraw();break;

        case 5:show_balance1();break;

        case 6:delete_information1();break;

        case 7:menushow1();break;

        case 8:quitsystem();break;

        default:printf("%d,请你输入1-8之间的数字:\n",userselect);

    }

}

void user_information()   //开户信息填写

{

    int i;

    printf("完善信息\n");

    printf("姓名:");

    scanf("%s",user[N].name);

    printf("性别:");

    scanf("%s",user[N].gender);

    printf("电话:");

    scanf("%s",user[N].phone);

    printf("存入余额:");

    scanf("%f",&user[N].balance);

    printf("开户成功\n");

}

void open_a_bank_acount()     //开户

{

    int i,j;

    char password1[10];

    N++;

    printf("银行账号:");

    user[N].acount_number=1001+N;

    printf("%d\n",user[N].acount_number);

    printf("请输入新银行密码:\n");

    scanf("%s",user[N].password);

    printf("请重新确认新银行密码:\n");

    scanf("%s",password1);

    if(strcmp(user[N].password,password1)==0)

        {

             user_information();

             menushow1();

        }

    else

             printf("密码不一致\n");

            N--;

            printf("请按键继续\n");

            getch();

            open_a_bank_acount();

}

void login()    //登录

{

    int i=3,j,t;

    int acount_number;

    char password1[10];

         printf("请输入银行账号:\n");

         scanf("%d",&acount_number);

         printf("请输入银行密码:\n");

         scanf("%s",password1);

    for(i=3;i>=0;i--)

    {

        while(i)

        {

             for(j=0;j<N+1;j++)

         {

        if(user[j].acount_number==acount_number&&strcmp(user[j].password,password1)==0)

             {

                 break;

             }

         }

             if(j<N+1)

              menushow();

             else

             {

             printf("账号或密码输入错误,还剩%d次机会\n",i--);

              printf("请输入银行账号:\n");

             scanf("%d",&acount_number);

             printf("请输入银行密码:\n");

             scanf("%s",password1);

            }

        

        }

    }

    printf("请按键继续\n");

    getch();

    menushow1();

}

void sort_acount()    //按银行账户排序

{

    int i,j,t;

    struct Login_interface temp;

    for(i=0;i<N;i++)

    {

        for(j=i+1;j<N+1;j++)

        {

        if(user[i].acount_number>user[j].acount_number)

          {

             temp=user[i];

             user[i]=user[j];

             user[j]=temp;

           }

        }

   

    }

    printf("排序完成,请继续\n");

    printf("请按键继续\n");

    getch();

    admin_menushow();

}

void quitsystem()    //退出系统

{

    exit(0);

}

void query_information2()

{

    int i;

    int acount;

    printf("请确认查询账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

     if(user[i].acount_number==acount)

       {

             break;

       }

    }

    if(i<N+1)

    {

            printf("姓名:%s\n",user[i].name);

            printf("性别:%s\n",user[i].gender);

            printf("电话:%s\n",user[i].phone);

            printf("余额:%f\n",user[i].balance);

    }

    else

    {

    printf("没有找到%d用户\n",acount);

    }

    printf("请按键继续\n");

    getch();

    menushow();

}

void modify()         //修改的银行账号信息

{

    int i,j;

    int acount;

    float r;

    char t[10];

    printf("请确认修改银行账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

    if(user[i].acount_number==acount)

        {

            break;

        }

    }

    if(i<N+1)

       {

            printf("请选择修改  1.姓名  2.性别   3.电话    4.余额\n");

            scanf("%d",&j);

            switch(j)

             {

             case 1:printf("修改为:");scanf("%s",user[i].name);break;

             case 2:printf("修改为:");scanf("%s",user[i].gender);break;

             case 3:printf("修改为:");scanf("%s",user[i].phone);break;

             case 4:printf("修改为:");scanf("%f",&user[i].balance);break;

             }

    }

    else

        printf("未找到银行用户");

    printf("请按键继续\n");

    getch();

    menushow();

}

void show_balance1()    //用户查询余额

{

    int i;

    int acount;

    printf("请确认查询的银行账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

     if(user[i].acount_number==acount)

       {

             break;

       }

    }

    if(i<N+1)

    {

        printf("余额:");

        printf("%f\n",user[i].balance);

    }

    else

    {

    printf("没有找到%d用户\n",acount);

    }

    printf("请按键继续\n");

    getch();

    menushow();

}

void delete_information()   //删除用户信息

{

    int i,j;

    int acount;

    printf("请输入删除用户信息的银行账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

    if(user[i].acount_number==acount)

        {

            break;

        }

    }

    if(i<N+1)

       {

           for(j=i;j<N+1;j++)

           {

                user[j]=user[j+1];

               printf("删除成功\n");

           }

           N--;

       }

    else

        printf("未找到银行用户");

    printf("请按键继续\n");

    getch();

    admin_menuselection();

}

void delete_information1()    //用户注销

{

    int i,j;

    int acount;

    printf("请确认注销用户银行账号:");

    scanf("%d",&acount);

    for(i=0;i<N+1;i++)

    {

    if(user[i].acount_number==acount)

        {

            break;

        }

    }

    if(i<N+1)

       {

           for(j=i;j<N+1;j++)

           {

                user[j]=user[j+1];

           }

           N--;

       }

    else

        printf("未找到银行用户");

    printf("注销成功\n");

    printf("请按键继续\n");

    getch();

    menushow();

}








  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
项目名称:Bank Account Management System 银行账户管理系统 简称BAM 项目描述:这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户. 项目实施方式:这是一个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每一个进阶的项目要求. 项目一 练习1:(面向对象基础语法) 写一个账户类(Account),属性: id:账户号码 长整数 password:账户密码 name:真实姓名 personId:身份证号码 字符串类型 email:客户的电子邮箱 balance:账户余额 方法: deposit: 存款方法,参数是double型的金额 withdraw:取款方法,参数是double型的金额 构造方法: 有参和无参,有参构造方法用于设置必要的属性 练习2:(封装) 将Account类作成完全封装,注意:要辨别每个属性的set/get方法是否需要公开 练习3:(继承,多态) 银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支,而信用账户可以透支,并允许用户设置自己的透支额度. 注意:CreditAccount需要多一个属性 ceiling 透支额度 为这两种用户编写相关的类 同时要求编写Bank类,属性: 1.当前所有的账户对象的集合,存放在数组中 2.当前账户数量 方法: 1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型(int),返回新创建的Account对象 2.用户登录,参数:id,密码 返回Account对象,提示 用s1.equals(s2)判断s1和s2两个字符串内容是否相等 3.用户存款,参数:id,存款数额,返回修改过的Account对象 4.用户取款,参数:id,取款数额,返回修改过的Account对象 5.设置透支额度 参数:id,新的额度 ,返回修改过的Account对象.这个方法需要验证账户是否是信用账户 用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数 另外,请为Bank类添加几个统计方法 1.统计银行所有账户余额总数 2.统计所有信用账户透支额度总数 写个主方法测试你写的类 项目二 练习4:(语言高级特性,三个修饰符) 1.修改Account类,银行用户的账号(id)是自动生成的,初始值为100000,第一个开户的用户id为100001,第二个为100002,依此类推. 提示:构造对象的时候采用static属性为id赋值 2.对于Account类,有两个方法,存款方法和取款方法,请修改这两个方法. 存款方法改为不允许子类修改 取款方法根据不同的子类而不同,因此,改为抽象方法,在两个子类中分别实现 3.将Bank类作成单例 项目三 练习5:(接口) 为SavingAccount和CreditAccount各自添加一个子类 LoanSavingAccount类:用户可以贷款,不可以透支 LoanCreditAccount类:用户可以贷款,可以透支 说明:贷款和透支是不一样的,透支指的是账户余额小于0,而贷款用户需要一个贷款额的属性. 在ATM机上,用户可以选择贷款,也可以选择还贷款,而还贷款就是要把账户余额上的资金转到贷款额上 例如:用户余额10000元,贷款额100000元,用户可以选择还款5000元,则用户余额变为5000,贷款额变为95000元. 利用接口来抽象出LoanSavingAccount类和LoanCreditAccount类的共性 接口中的方法: requestLoan:贷款 payLoan:还贷 getLoan:获取用户贷款总额 为Bank类添加三个方法, 贷款:参数 id,贷款额,返回修改过的Account对象 还贷款:参数 id,还款额,返回修改过的Account对象 统计所有账户贷款的总数 练习6:(Object) 为Account类及其子类添加toString方法和equals方法 项目四 练习7:(Exception) 为BAM添加几个异常类 BalanceNotEnoughException :用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况) RegisterException:用于开户异常的情况,例如密码两次输入不一致等情况 LoginException:用户登录异常的情况,例如id错误,密码错误 LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常 以上四个异常类有一个共同的父类 BusinessException 并妥善的处理这些异常 项目五 练习8:(集合) 改写Bank类,采用集合的方式来管理多个Account对象 为Bank类添加一个方法 打印所有用户的总资产排名 说明:一个用户可能会有多个账号,以身份证号为准.总资产指多个账户余额的总和,不需要考虑贷款账户的贷款额 项目六 练习9:(GUI) 为BAM添加用户界面 需要以下几个类: BAMClient 其中会包含一个Frame,这是用户主界面 MainPanel:主界面,用户可以选择开户或者登录 RegisterPanel:用户开户具体用到的界面 LoginPanel:用户登录需要的界面 BusinessPanel:界面上会显示账户的功能 至少包括存款和取款,对于可透支的用户,还允许用户修改透支额度,对于贷款用户,还允许用户贷款和还贷款 注:本练习的界面布局不做要求,请阅读现有代码,添加事件处理代码 提示:在开户或者登录之后都会跳到BusinessPanel,而用户点击了交易之后,界面停留在BusinessPanel 要随时注意在BusinessPanel上根据数据的变化更新显示信息 项目七 在该加资源保护的地方加上,没有标准 项目八 练习10:(I/O) 修改Bank类,账户信息会采用对象序列化的方式存放在文件中.当Bank对象生成的时候会读取文件,设置账户集合.当账户信息改变的时候,会随时更新文件 设计一个FileDAO类(文件数据访问对象),负责对文件的访问,包括存放账户,提取账户等方法,在Bank类中,会通过FileDAO对象来访问文件 注意:如果已有的账户对象会存在文件中,那么为新的账户对象分配id的做法也应相应的改变,过去的用static属性的做法不再合适,应该改为,把下一个可用的id存放在一个文件中,每创建一个新对象的时候都会读取这个文件,获得新对象的id,并且修改文件中的id,使其加1.这个工作可以放在Account类的构造方法中 项目九 练习11:(网络) 在现有的BAM中,用户是通过界面直接访问Bank对象的,将其改为C/S结构,由界面充当客户端,通过TCP协议访问服务器端的Bank对象. 提示:客户端和服务器端需要通过对象来传递信息,这里会使用对象序列化技术.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浪仙545

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

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

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

打赏作者

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

抵扣说明:

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

余额充值