|
貌似水区搞程序的人还不少吧?(昨天讨论那道极限题时就看到有几位用C/C#编程来计算的)
小弟我这学期开始学的C#,这几天导师出了道题,要求模拟银行账户的管理,以下是题目要求:
定义一个银行账户类Bank,该类有No(账户编号)(可以定义成静态类型完成自增变化)、Name(用户名字)、Gender(用户性别)、Address(用户地址)、Banlance(账户金额)等属性,提供方法:完成用户的存钱、取钱、查询账户金额、查询用户信息(以账户编号查询)。假设定义3个账户信息(信息由自己从键盘输入),然后完成账户的存钱操作(存钱金额自己定)、取钱操作(金额自己定)、金额查询操作、用户信息查询操作等。
| 当创建账户对象时,用构造函数实现属性的初始化,尤其是编号为静态的自增型数值,初值为0开始自增和账户金额属性为0。 | 提示:银行账户有多个,编程用数组实现,数组元素的类型为Bank类的对象。
Bank [ ] users=new Bank[10000];
users[0]=new Bank( );
//第一个账户对象,依次类推
|
不过我并没有完全按照题目中的要求来做,比如需要输入的信息我都改成了让用户自己来输入,而存/取款以及查询等功能我也改成了由用户来决定是否执行,而且实现各种操作的方法我几乎都集合到了Bank.serve里。
全部如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Bank
{
static public int No; //除静态成员No外其余成员属性都为私有,外界无法直接访问
string Name;
string Gender;
string Address;
int Banlance;
public Bank(string Name,string Gender,string Address) //Bank类的构造函数,其中Name、Gender、Address在初始化对象时由外界给其赋值
{
No++; //每次初始化对象时No自加1
this.Name = Name;
this.Gender = Gender;
this.Address = Address;
this.Banlance = 0;
}
public int getBanlance() //获取Banlance的值的方法
{
return Banlance;
}
public void printInformation() //将个人信息显示出来的方法
{
Console.WriteLine("个人信息\n账号:{0} 姓名:{1} 性别:{2} 住址:{3}",No,Name,Gender,Address);
}
public void serve() //提供服务的方法
{
int way; //声明一个整型变量用以存储用户选择的服务种类
for (; ; ) //设置一个无限循环使用户可以重复选择服务,最后设置一个跳出点
{
Console.WriteLine("\n请选择您想要的服务\n输入1:存款 输入2:取款 输入3:查询余额 输入4:查询个人信息 输入5:退出");
way = Convert.ToInt32(Console.ReadLine()); //给way赋值(由用户输入)
switch (way) //根据way的值来判断用户选择的是哪一种服务
{
case (1):
Console.WriteLine("请输入存款的数额");
int a = Convert.ToInt32(Console.ReadLine());
if (a <= 0) //对存款的数额进行逻辑判断
Console.WriteLine("存款金额不能为非正数!");
else
Banlance +=a;
break;
case (2):
Console.WriteLine("请输入取款的数额");
int b = Convert.ToInt32(Console.ReadLine());
if (b <= 0) //对取款的数额进行逻辑判断(下同)
Console.WriteLine("取款金额不能为非正数!");
else if (b>Banlance)
Console.WriteLine("当前余额不足!");
else
Banlance -=b;
break;
case (3):
Console.WriteLine("当前余额为\n"+Banlance);
break;
case (4):
printInformation(); //直接调用此方法将个人信息显示出来
break;
}
if (way== 5) //跳出无限循环
break;
}
}
}
class Program
{
static void Main(string[] args)
{
Bank[] users = new Bank[1000];
string name, gender, address; //声明3个字符串变量用以存储用户的姓名、性别、住址
Console.WriteLine("建立第一个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users[0] = new Bank(name, gender, address); //初始化对象同时为Name、Gender、Address赋值(下同)
users[0].serve(); //调用该方法实现用户对各项服务的选择
Console.WriteLine("建立第二个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users[1] = new Bank(name, gender, address);
users[1].serve();
Console.WriteLine("建立第三个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users[2] = new Bank(name, gender, address);
users[2].serve();
}
}
}
我的问题就是每建立一个新对象就要重新写段同样的语句(红字部分)来“给name、gender、address赋值”,当需要建立的对象非常多时就非常麻烦了,能不能改进下? |
|