【水区万能】求助改进一个C#小程序
貌似水区搞程序的人还不少吧?(昨天讨论那道极限题时就看到有几位用C/C#编程来计算的)小弟我这学期开始学的C#,这几天导师出了道题,要求模拟银行账户的管理,以下是题目要求:
定义一个银行账户类Bank,该类有No(账户编号)(可以定义成静态类型完成自增变化)、Name(用户名字)、Gender(用户性别)、Address(用户地址)、Banlance(账户金额)等属性,提供方法:完成用户的存钱、取钱、查询账户金额、查询用户信息(以账户编号查询)。假设定义3个账户信息(信息由自己从键盘输入),然后完成账户的存钱操作(存钱金额自己定)、取钱操作(金额自己定)、金额查询操作、用户信息查询操作等。
当创建账户对象时,用构造函数实现属性的初始化,尤其是编号为静态的自增型数值,初值为0开始自增和账户金额属性为0。提示:银行账户有多个,编程用数组实现,数组元素的类型为Bank类的对象。例:
Classs Bank{
……}……
Bank [ ] users=new Bank;
users=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;
string name, gender, address; //声明3个字符串变量用以存储用户的姓名、性别、住址
Console.WriteLine("建立第一个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users = new Bank(name, gender, address); //初始化对象同时为Name、Gender、Address赋值(下同)
users.serve(); //调用该方法实现用户对各项服务的选择
Console.WriteLine("建立第二个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users = new Bank(name, gender, address);
users.serve();
Console.WriteLine("建立第三个帐户:\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users = new Bank(name, gender, address);
users.serve();
}
}
}
我的问题就是每建立一个新对象就要重新写段同样的语句(红字部分)来“给name、gender、address赋值”,当需要建立的对象非常多时就非常麻烦了,能不能改进下? 问UZ去.....我不是搞这范.......我搞审核的........ 水区的学习氛围真的越来越好了= = C#不会 C#不懂
不过编程原理来说,重复的部分你不能编成一个函数接口么
顺便,学习氛围不能这么重啊啊啊啊啊啊~学习上不会的问题去问同学啊啊啊啊啊啊啊~不要浪费搭讪的机会啊啊啊啊啊啊啊啊~虽然学计算机的估计没啥女同学 用数组结合类应该可以啊,你将相同的东西放在父类,将不同的地方放在子类,然后让数组自增,理论上是这样,实际代码怎么写,忘了 嘛,女同学的确很少,一个班也就3、4个。(反正各各都不漂亮,无所谓啦)
顺便唯一一个C成绩高过我的同学刚好是我室友,目前正在苦思冥想怎样才能消除他编的程序的1X个错误...
其他同学近一大半都还没动工,我去问谁 好吧,刚刚又改了下,发现可以正常运行
class Program
{
static void Main(string[] args)
{
Bank[] users = new Bank;
string name, gender, address; //声明3个字符串变量用以存储用户的姓名、性别、住址
for (int N= 0; N<= 999; N++)
{
Console.WriteLine("建立第" + (N+1) + "个新账户\n请输入您的姓名");
name = Console.ReadLine();
Console.WriteLine("请输入您的性别");
gender = Console.ReadLine();
Console.WriteLine("请输入您的住址");
address = Console.ReadLine();
users= new Bank(name, gender, address); //初始化对象同时为Name、Gender、Address赋值(下同)
users.serve(); //调用该方法实现用户对各项服务的选择
}
}
}
这样算是省去了很多麻烦了,不知还能不能精简?
[ 本帖最后由 Yu~Gi~Oh! 于 2009-4-15 09:55 编辑 ] 满眼都是乱码...我打酱油去... 我是不是最近跑错区了 C# 如果是C++ VB JAVA我还没啥问题 C++我都是自学的,所以很朔,不过那个除了用循环确实也不知道有什么更好的办法。
其实我一直有一个问题,用TC定义数组的时候,能不能不定义常量,我有时候还是蛮想让数组的大小由一只自变量决定的 选择时,用户输入一个非数字的字符,这程序就挂了……
另:LS参考STL去。 好难啊-0-
计算机刚入门的路过 什么跟什么
完全看不懂啊啊啊啊
回复 15# 的帖子
正太,一般说来这是你上大学才会触及的领域 写的还可以了,足够交差了.当然可以完善的地方还很多...比如为啥不用Property, balance字段应该是decimal, exception处理. 不要都用for来循环,特别是那个for(,,)太恶心了, bank class里不应该有调用console的地方.
不过总的来说,功能上已经实现了,让偶是老师的话,偶给个75分-0- 原帖由 苍月草 于 2009-4-15 16:48 发表 http://bbs.newwise.com/images/common/back.gif
写的还可以了,足够交差了.
当然可以完善的地方还很多...比如为啥不用Property, balance字段应该是decimal, exception处理. 不要都用for来循环,特别是那个for(,,)太恶心了, bank class里不应该有调用console的地方.
...
不太理解,我初学的说。明天就要交了。 console.writeline= =这个和谐|| 原帖由 林原幽助 于 2009-4-15 20:43 发表 http://bbs.newwise.com/images/common/back.gif
console.writeline= =这个和谐||
-。-有校内么...加来玩玩...
页:
[1]
2