设计的银行账户管理系统,增加一个VIP账户的管理

程序功能如下:
1.当单击“创建VIP账户”按钮时,显示如图5-11所示的信息,其中卡号为随机生成的一个在500000到999999之间的一个值,余额初始化为10000元。
2.在“取款”文本框中输入取款金额后,单击“取款”按钮,显示如图5-12所示的信息。如果余额不足,VIP用户可以透支1000元,如取款800,而余额是400,则显示如图5-13所示的信息。如透支超过1000元,如取款1600,而余额是400,则显示如图5-14所示的信息。
3.要求:在上机实验4-3的基础上,通过继承和多态实现上述操作。
C#界面如下:
设计的银行账户管理系统,增加一个VIP账户的管理

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp8
{
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Account account;    //定义一个账户类对象
        private void btnCrtSavingAc_Click(object sender, EventArgs e)
        {
            account = new Account();//实例化储蓄卡用户账户
            string message = string.Format("创建账户成功,用户卡号为:{0}", account.CreditNo);
            lblShow.Text = "\n" + message +"\n";
        }

        private void btnWithDraw_Click(object sender, EventArgs e)//取款
        {
            string message;
            if (account == null)
                message = "请先创建账户!";       //帐户不存在
            else if (txtWithDraw.Text == "")
                message = "请输入取款金额";    //未输入取款金额
            else
            {
                decimal money = decimal.Parse(txtWithDraw.Text);
                account.WithDraw(money, out message);       //message存放取款的金额信息
            }
            lblShow.Text = "\n" + message + "\n";
        }

        private void btnDeposit_Click(object sender, EventArgs e)
        {
            string message;
            if (account == null)
                message = "请先创建账户!";    //帐户是否存在
            else if (txtDeposit.Text == "")
                message = "请输入存款金额";     //输入存款金额
            else
            {
                decimal money = decimal.Parse(txtDeposit.Text);
                account.Deposit(money, out message);
            }
            lblShow.Text = "\n" + message + "\n";//输出存款金额
        }

        private void button2_Click(object sender, EventArgs e)//查询余额操作
        {
            string message;
            if (account == null)
                message = "请先创建账户!";
            else
            {
                account.show( out message);
            }
            lblShow.Text = "\n" + message + "\n";    //输出余额
        }

        private void btnCrtVipAc_Click(object sender, EventArgs e)
        {
            account = new VipAccount();        //实例化VIP用户账户
            int accountNo = account.CreditNo;
            string message = string.Format("创建VIP账户成功,用户卡号为:{0}",accountNo);
            lblShow.Text = "\n" + message + "\n";
        }
    }
    public class Account
{
    //成员字段的属性改为protected
        protected int creditNo;
        protected decimal balance;
        public Account()
        {
            Random r = new Random();
            creditNo = r.Next(100000, 500000);  //产生一个100000到500000的随机数
            balance = 100;  //余额初始化为100
        }
        public decimal Balance //只读属性,读取余额
        {
            get { return this.balance; }
        }
        public int CreditNo    //只读属性,读取储蓄卡号

        {
            get { return this.creditNo; }
        }
        //改写Account类的WithDraw为虚方法
        public virtual bool WithDraw(decimal money, out string message)    //取款

        {
            if (money < 0)  //取款金额小于0

            {
                message = "操作失败:\n输入金额不正确!";
                return false;
            }
            else if (balance >= money)   //取款金额大于余额

            {
                balance -= money;
                message = "操作成功!\n取款" + money + "元";
                return true;
            }
            else
            {
                message = "操作失败!\n余额不足!";
                return false;
            }
        }
        public bool Deposit(decimal money, out string message)
        {
            if (money < 0)
            {
                message = "操作失败:\n输入金额不正确!";
                return false;
            }
            else
            {
                balance += money;
                message = "操作成功!\n存款" + money + "元";
                return true;
            }
            
        }
        public bool show(out string message)
        {
            message = "您的余额为:\n" + balance + "元";
            return true;
        }

    }
    public class VipAccount : Account
    {
        public VipAccount()
        {
            Random r = new Random();
            creditNo = r.Next(500000, 1000000);
            balance = 10000;
        }
        public override bool WithDraw(decimal money, out string message)
        {
            if (money < 0)
            {
                message = "操作失败:\n输入金额不正确!";
                return false;
            }
            else if (balance >= money)
            {
                balance -= money;
                message = "操作成功!\n取款" + money + "元";
                return true;
            }
            else if (balance+1000 >= money)  //取款金额大于于可透支余额
            {
                balance -= money;
                message = "操作成功!\n取款" + money + "元,透支"+(-balance)+"元";
                return true;
            }
            else
            {
                message = "操作失败!\n余额不足!";
                return false;
            }
        }
    }
}


设计的银行账户管理系统,增加一个VIP账户的管理
设计的银行账户管理系统,增加一个VIP账户的管理
设计的银行账户管理系统,增加一个VIP账户的管理
设计的银行账户管理系统,增加一个VIP账户的管理

上一篇:Linux 服务配置 管理高可用集群 keepalived 的配置


下一篇:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 《CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放》来自张戈博客