C#——Windows银行储蓄管理系统
在银行储蓄管理系统中,普通帐户(Account)和VIP账号(VipAccount)都包含账户(CreditNo),余额(Balance)等基本数据信息,都提供创建帐户,存款(Withdtaw),取款(Deposit)和查询余额功能,但二者的区别是:普通帐户的账号介于100 000~500 000之间,取款时不允许透支(余额不能<0),VIP账户的账号在500 000~1 000 000之间,取款时允许透支1000元(即取款之后余额必须大于-1000).请使用继承性和多态性实现Account类和VipAccount类的定义。
提示:将Account定义为基类,VipAccount定义为派生类,根据要求分别定义构造函数实现账号和余额字段的初始化;在基类中把取款方法定义为虚拟方法,在派生类中重载取款方法;让派生类从基类继承存款方法。
首先设计如下界面:
编写如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 银行储蓄系统
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
Account acc = new Account("","");
//创建账户
private void button1_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(textBox1.Text) >= 100000 & Convert.ToInt32(textBox1.Text) <= 500000)
{
label5.Text = acc.Create(textBox1.Text, textBox2.Text);
}
else if (Convert.ToInt32(textBox1.Text) > 500000 & Convert.ToInt32(textBox1.Text) <= 1000000)
{
label5.Text = acc.Create(textBox1.Text, textBox2.Text);
}
else
{
label5.Text = "不符合输入规则";
}
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
//存款
private void button2_Click(object sender, EventArgs e)
{
label5.Text =acc.Withdtaw(textBox1 .Text ,textBox2.Text ,Convert .ToDouble(textBox3 .Text ));
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
//取款
private void button3_Click(object sender, EventArgs e)
{
label5.Text = acc.Deposit (textBox1.Text, textBox2.Text, Convert.ToDouble(textBox3.Text));
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
//查询
private void button4_Click(object sender, EventArgs e)
{
label5.Text = acc.Select(textBox1.Text, textBox2.Text);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
}
public class Account
{
private string CreditNo;
private string pwd;
private double Balance;
Account []acc=new Account [100];
int number = 0;
public Account()
{
this.Balance = 0;
}
public Account(string CreditNo,string pwd)
{
this.CreditNo = CreditNo;
this.pwd = pwd;
}
//创建账户
public string Create(string CreditNo,string pwd)
{
acc[number] = new Account(CreditNo ,pwd);
number++;
return "成功创建"+number +"账户";
}
//存款
public string Withdtaw(string CreditNo,string pwd,double money)
{
Boolean flag = false;
int i;
for (i = 0; i < acc.Length;i++ )
{
if (acc[i].CreditNo == CreditNo & acc[i].pwd == pwd)
{
flag = true;
break;
}
}
if (flag == true)
{
acc[i].Balance = acc[i].Balance + money;
return "存款成功余额为:"+acc[i].Balance ;
}
else
{
return "信息输入不正确";
}
}
//取款
public string Deposit(string CreditNo,string pwd,double money)
{
Boolean flag = false;
int i;
for (i = 0; i < acc.Length; i++)
{
if (acc[i].CreditNo == CreditNo & acc[i].pwd == pwd)
{
flag = true;
break;
}
}
if (flag == true)
{
if(Convert .ToInt32( CreditNo)>=100000&Convert .ToInt32 (CreditNo )<=500000)
{
if (acc[i].Balance - money > 0)
{
acc[i].Balance = acc[i].Balance - money;
return "取款成功余额为:" + acc[i].Balance;
}
else
{
return "余额不足";
}
}
else
{
if (acc[i].Balance - money > -1000)
{
acc[i].Balance = acc[i].Balance - money;
return "取款成功余额为:" + acc[i].Balance;
}
else
{
return "余额不足";
}
}
}
else
{
return "信息输入不正确;
}
}
//查询余额?
public string Select(string CreditNo,string pwd)
{
Boolean flag = false;
int i;
for (i = 0; i < acc.Length; i++)
{
if (acc[i].CreditNo == CreditNo & acc[i].pwd == pwd)
{
flag = true;
break;
}
}
if (flag == true)
{
return "余额为:" + acc[i].Balance;
}
else
{
return "信息输入不正确";
}
}
}
}
运行结果如下: