完整代码如下,问题还存在于 小数位数的金额 不能处理!望众高手指点小弟!谢谢!
可以执行下面代码 ~~~~~~~~~~~~
using System;
using System.Collections;namespace ConsoleApplication12
{
class CheckingAccount
{
static private int Account=100000;//系统已有的帐户数的当前值,静态的,公共的
private string name; //帐户姓名
private int account; //帐户号
private double balance;//帐户余额
private int password;
//构造函数,初始化对象时使用(新开帐户时使用)
public CheckingAccount(string na,double ba,int pw)
{
account=Account++;
name=na;
balance=ba;
password=pw;
Console.WriteLine("尊敬{0}先生,您的帐号为{1},现有余额{2}元",name,account,balance);
}
//该方法用于签发支票
public void OrderCheckBook()
{
Console.WriteLine ("你可以签发支票了.");
}
//该方法用于存钱
public void Deposit(double dp)
{
if (dp>0) balance+=dp;
}
//该方法用于取钱
public void Withdraw(double wd)
{
if (balance>=wd)
{
balance-=wd;
Console.WriteLine ("请核对现金!");
}
else
{
Console.WriteLine("余额不足!");
}
}
//该方法返回帐户余额
public double CheckAccount()
{
return(balance);
}
//该方法返回帐户号
public int GetAccount()
{
return account;
}
//该方法返回帐户姓名
public string GetName()
{
return name;
}
//列表用于存放所有帐户
public int GetPassword()
{
return password;
}
}
class Class1
{
static int Password()
{
string pas="";
int pas1;
bool flag=false;
do
{
flag=false;
Console.WriteLine("请输入6位数字密码:");
pas=Console.ReadLine();
foreach(char x in pas)
{
if(!char.IsDigit(x))
{
flag=true;
break;
}
}
}while(pas.Length!=6 || flag==true);
pas1 = Convert.ToInt32(pas);
return pas1;
//该方法用于设定用户密码
}
static double inputN()
{
string input="";
bool flag=false;
do
{
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
foreach(char x in input)
{
if(!char.IsDigit(x))
{
flag=true;
Console.WriteLine("请重新输入");
}
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
return input1;
//该方法用于限制输入金额只能为数字
}
static ArrayList checkingAccountList=new ArrayList();
static ArrayList checkingPasswordList=new ArrayList(); //验证帐号是否存在,存在返回在列表中的索引号,不存在返回-1
static int VerifyAccount(int account,int password)
{
int returnValue=-1;//没有找到相同的帐号,返回值为-1
for(int i=0;i<checkingAccountList.Count;i++)
{
/*取出列表中的每个帐户,把每个帐户的帐户号与传入的参数account(输入的帐号)比较,
相等就是我们的返回值,在列表中的索引号,returnValue的值被改变等于i,并退出循环,
不相等,继续比较,直到比较完整个列表,
所有帐户的帐户号都不相等,返回值为retrunValue的初始值-1;*/
CheckingAccount ca0=(CheckingAccount)checkingAccountList[i];
if(ca0.GetAccount()==account && ca0.GetPassword()==password)
{
returnValue=i;
break;
}
}
return returnValue;
}
static void Main()
{
string con;
do
{
Console.WriteLine("请选择你需要的操作:\n1-新开户 2-老帐户 3-退出");
con=Console.ReadLine();
switch(con)
{
case "1"://新开户
Console.Write("请输入您姓名:");
string uname=Console.ReadLine();
Console.Write("请输入开户初始金额:");
double money0=inputN();
CheckingAccount ca1=new CheckingAccount(uname,money0,Password());
checkingAccountList.Add(ca1);
break;
case "2"://老帐户
Console.WriteLine("请输入您的帐号:");
int account=Convert.ToInt32(inputN());
int password=Password();
if(VerifyAccount(account,password)!=-1)
{ //调用方法VerifyAccount(account)返回值不等于-1帐户存在
CheckingAccount ca=(CheckingAccount)checkingAccountList[VerifyAccount(account,password)];//从列表中取出与输入帐号对应的帐户和密码
Console.WriteLine("欢迎您,{0}光临!",ca.GetName());
string choice;
do
{
Console.WriteLine("请选择你需要的操作:\n1-签发支票 2-存钱 3-取钱 4-查询余额 5-退出");
choice=Console.ReadLine();
switch(choice)
{
case "1":
Password();
ca.OrderCheckBook();
break;
case "2":
Console.WriteLine("请输入您要存入的金额:");
double money1=inputN();
ca.Deposit(money1);
break;
case "3":
Password();
Console.WriteLine("请输入您要取出的金额:");
double money2=inputN();
ca.Withdraw(money2);
break;
case "4":
Console.WriteLine("您的余额是:{0}元",ca.CheckAccount());
break;
case "5":
break;
default:
Console.WriteLine("输入错误,请重新输入!");
break;
}
}while(choice!="5");
}
else
{ //方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("帐户不存在,或密码错误!");
}
break;
case "3"://退出
break;
default://方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("输入错误!");
break;
}
}while(con!="3");
}
可以执行下面代码 ~~~~~~~~~~~~
using System;
using System.Collections;namespace ConsoleApplication12
{
class CheckingAccount
{
static private int Account=100000;//系统已有的帐户数的当前值,静态的,公共的
private string name; //帐户姓名
private int account; //帐户号
private double balance;//帐户余额
private int password;
//构造函数,初始化对象时使用(新开帐户时使用)
public CheckingAccount(string na,double ba,int pw)
{
account=Account++;
name=na;
balance=ba;
password=pw;
Console.WriteLine("尊敬{0}先生,您的帐号为{1},现有余额{2}元",name,account,balance);
}
//该方法用于签发支票
public void OrderCheckBook()
{
Console.WriteLine ("你可以签发支票了.");
}
//该方法用于存钱
public void Deposit(double dp)
{
if (dp>0) balance+=dp;
}
//该方法用于取钱
public void Withdraw(double wd)
{
if (balance>=wd)
{
balance-=wd;
Console.WriteLine ("请核对现金!");
}
else
{
Console.WriteLine("余额不足!");
}
}
//该方法返回帐户余额
public double CheckAccount()
{
return(balance);
}
//该方法返回帐户号
public int GetAccount()
{
return account;
}
//该方法返回帐户姓名
public string GetName()
{
return name;
}
//列表用于存放所有帐户
public int GetPassword()
{
return password;
}
}
class Class1
{
static int Password()
{
string pas="";
int pas1;
bool flag=false;
do
{
flag=false;
Console.WriteLine("请输入6位数字密码:");
pas=Console.ReadLine();
foreach(char x in pas)
{
if(!char.IsDigit(x))
{
flag=true;
break;
}
}
}while(pas.Length!=6 || flag==true);
pas1 = Convert.ToInt32(pas);
return pas1;
//该方法用于设定用户密码
}
static double inputN()
{
string input="";
bool flag=false;
do
{
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
foreach(char x in input)
{
if(!char.IsDigit(x))
{
flag=true;
Console.WriteLine("请重新输入");
}
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
return input1;
//该方法用于限制输入金额只能为数字
}
static ArrayList checkingAccountList=new ArrayList();
static ArrayList checkingPasswordList=new ArrayList(); //验证帐号是否存在,存在返回在列表中的索引号,不存在返回-1
static int VerifyAccount(int account,int password)
{
int returnValue=-1;//没有找到相同的帐号,返回值为-1
for(int i=0;i<checkingAccountList.Count;i++)
{
/*取出列表中的每个帐户,把每个帐户的帐户号与传入的参数account(输入的帐号)比较,
相等就是我们的返回值,在列表中的索引号,returnValue的值被改变等于i,并退出循环,
不相等,继续比较,直到比较完整个列表,
所有帐户的帐户号都不相等,返回值为retrunValue的初始值-1;*/
CheckingAccount ca0=(CheckingAccount)checkingAccountList[i];
if(ca0.GetAccount()==account && ca0.GetPassword()==password)
{
returnValue=i;
break;
}
}
return returnValue;
}
static void Main()
{
string con;
do
{
Console.WriteLine("请选择你需要的操作:\n1-新开户 2-老帐户 3-退出");
con=Console.ReadLine();
switch(con)
{
case "1"://新开户
Console.Write("请输入您姓名:");
string uname=Console.ReadLine();
Console.Write("请输入开户初始金额:");
double money0=inputN();
CheckingAccount ca1=new CheckingAccount(uname,money0,Password());
checkingAccountList.Add(ca1);
break;
case "2"://老帐户
Console.WriteLine("请输入您的帐号:");
int account=Convert.ToInt32(inputN());
int password=Password();
if(VerifyAccount(account,password)!=-1)
{ //调用方法VerifyAccount(account)返回值不等于-1帐户存在
CheckingAccount ca=(CheckingAccount)checkingAccountList[VerifyAccount(account,password)];//从列表中取出与输入帐号对应的帐户和密码
Console.WriteLine("欢迎您,{0}光临!",ca.GetName());
string choice;
do
{
Console.WriteLine("请选择你需要的操作:\n1-签发支票 2-存钱 3-取钱 4-查询余额 5-退出");
choice=Console.ReadLine();
switch(choice)
{
case "1":
Password();
ca.OrderCheckBook();
break;
case "2":
Console.WriteLine("请输入您要存入的金额:");
double money1=inputN();
ca.Deposit(money1);
break;
case "3":
Password();
Console.WriteLine("请输入您要取出的金额:");
double money2=inputN();
ca.Withdraw(money2);
break;
case "4":
Console.WriteLine("您的余额是:{0}元",ca.CheckAccount());
break;
case "5":
break;
default:
Console.WriteLine("输入错误,请重新输入!");
break;
}
}while(choice!="5");
}
else
{ //方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("帐户不存在,或密码错误!");
}
break;
case "3"://退出
break;
default://方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("输入错误!");
break;
}
}while(con!="3");
}
public CheckingAccount(string na,double ba,int pw)
{
account=Account++;
name=na;
balance=ba;
password=pw;
Console.WriteLine
还有这个 限制 输入金额的方法!
static double inputN()
{
string input="";bool flag=false;
do
{
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
foreach(char x in input)
{
if(!char.IsDigit(x))
{
flag=true;
Console.WriteLine("请重新输入");
}
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
return input1; 怎样可以让它balance 能输入并计算 小数位数!case "1"://新开户
Console.Write("请输入您姓名:");
string uname=Console.ReadLine();
Console.Write("请输入开户初始金额:");
double money0=inputN();CheckingAccount ca1=new CheckingAccount(uname,money0,Password());
checkingAccountList.Add(ca1);
break;
using System.Text.RegularExpressions;static double inputN()
{
Regex rx = new Regex(@"^-?\d+(\.\d{2})?$");//定义货币正则表达式
string input="";bool flag=false;
do
{
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
//foreach (char x in input)
//{
// if (!char.IsDigit(x))
// {
// flag = true;
// Console.WriteLine("请重新输入");
// }
//}//改成如下:
if (!rx.IsMatch(input))
{
flag = true;
Console.WriteLine("请重新输入");
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
也就是说你输入的形式应该是比如说:12,12.23,369,867.12等等不能输入比如12.356,12.3,或者14sd.wew等等...
Regex rx = new Regex(@"^-?\d+(\.\d{2})?$");
还允许输入负数,且要么没有小数,要么小数位数是两位,不能够是一位...如果不允许有负数可以改成:
Regex rx = new Regex(@"^\d+(\.\d{2})?$");如果不允许负数,但允许小数位数为1位,可以改成:
Regex rx = new Regex(@"^\d+(\.\d{1,2})?$");
using System;
using System.Collections;
using System.Threading;
using System.Globalization;
namespace ConsoleApplication12
{
class CheckingAccount
{
static private int Account=100000;//系统已有的帐户数的当前值,静态的,公共的
private string name; //帐户姓名
private int account; //帐户号
private double balance;//帐户余额
private int password;
//构造函数,初始化对象时使用(新开帐户时使用)
public CheckingAccount(string na,double ba,int pw)
{
account=Account++;
name=na;
balance=ba;
password=pw;
Console.WriteLine("尊敬{0}先生,您的帐号为{1},现有余额{2:c}元",name,account,balance);
}
//该方法用于签发支票
public void OrderCheckBook()
{
Console.WriteLine ("你可以签发支票了.");
}
//该方法用于存钱
public void Deposit(double dp)
{
if (dp>0) balance+=dp;
}
//该方法用于取钱
public void Withdraw(double wd)
{
if (balance>=wd)
{
balance-=wd;
Console.WriteLine ("请核对现金!");
}
else
{
Console.WriteLine("余额不足!");
}
}
//该方法返回帐户余额
public double CheckAccount()
{
return(balance);
}
//该方法返回帐户号
public int GetAccount()
{
return account;
}
//该方法返回帐户姓名
public string GetName()
{
return name;
}
//列表用于存放所有帐户
public int GetPassword()
{
return password;
}
}
class Class1
{
static int Password()
{
string pas="";
int pas1;
bool flag=false;
do
{
flag=false;
Console.WriteLine("请输入6位数字密码:");
pas=Console.ReadLine();
foreach(char x in pas)
{
if(!char.IsDigit(x))
{
flag=true;
break;
}
}
}while(pas.Length!=6 || flag==true);
pas1 = Convert.ToInt32(pas);
return pas1;
//该方法用于设定用户密码
}
static double inputN()
{
string input="";
bool flag=false;
do
{
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
foreach(char x in input)
{
if(!char.IsDigit(x))
{
flag=true;
Console.WriteLine("请重新输入");
break;
}
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
return input1;
//该方法用于限制输入用户名只能为数字
}
static double inputB()
{
string input="";
int dian=0;
bool flag=false;
do
{
dian=0;
flag=false;
input=Console.ReadLine();
if(input.Length<=0){Console.WriteLine("请重新输入");}
else
{
foreach(char x in input)
{
if('.'==x)
{
dian++; }
else
{
if(!char.IsDigit(x) || dian>1)
{
flag=true;
Console.WriteLine("请重新输入");
break;
}
}
}
}
}while(input.Length<=0 || flag==true);
double input1=Convert.ToDouble(input);
return input1;
//该方法用于限制输入金额只能为数字或者小数
}
static ArrayList checkingAccountList=new ArrayList(); //验证帐号是否存在,存在返回在列表中的索引号,不存在返回-1
static int VerifyAccount(int account,int password)
{
int returnValue=-1;//没有找到相同的帐号,返回值为-1
for(int i=0;i<checkingAccountList.Count;i++)
{
/*取出列表中的每个帐户,把每个帐户的帐户号与传入的参数account(输入的帐号)比较,
相等就是我们的返回值,在列表中的索引号,returnValue的值被改变等于i,并退出循环,
不相等,继续比较,直到比较完整个列表,
所有帐户的帐户号都不相等,返回值为retrunValue的初始值-1;*/
CheckingAccount ca0=(CheckingAccount)checkingAccountList[i];
if(ca0.GetAccount()==account && ca0.GetPassword()==password)
{
returnValue=i;
break;
}
}
return returnValue;
}
static void Main()
{
string con;
do
{
Console.WriteLine("请选择你需要的操作:\n1-新开户 2-老帐户 3-退出");
con=Console.ReadLine();
switch(con)
{
case "1"://新开户
Console.Write("请输入您姓名:");
string uname=Console.ReadLine();
Console.Write("请输入开户初始金额:");
double money0=inputB();
CheckingAccount ca1=new CheckingAccount(uname,money0,Password());
checkingAccountList.Add(ca1);
break;
case "2"://老帐户
Console.WriteLine("请输入您的帐号:");
int account=Convert.ToInt32(inputN());
int password=Password();
if(VerifyAccount(account,password)!=-1)
{ //调用方法VerifyAccount(account)返回值不等于-1帐户存在
CheckingAccount ca=(CheckingAccount)checkingAccountList[VerifyAccount(account,password)];//从列表中取出与输入帐号对应的帐户和密码
Console.WriteLine("欢迎您,{0}光临!",ca.GetName());
string choice;
do
{
Console.WriteLine("请选择你需要的操作:\n1-签发支票 2-存钱 3-取钱 4-查询余额 5-退出");
choice=Console.ReadLine();
switch(choice)
{
case "1":
ca.OrderCheckBook();
break;
case "2":
Console.WriteLine("请输入您要存入的金额:");
double money1=inputB();
ca.Deposit(money1);
break;
case "3":
Console.WriteLine("请输入您要取出的金额:");
double money2=inputB();
ca.Withdraw(money2);
break;
case "4":
double mydouble=ca.CheckAccount();
Console.WriteLine("您的余额是:");
Console.WriteLine(mydouble.ToString("c"));
break;
case "5":
break;
default:
Console.WriteLine("输入错误,请重新输入!");
break;
}
}while(choice!="5");
}
else
{ //方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("帐户不存在,或密码错误!");
}
break;
case "3"://退出
break;
default://方法VerifyAccount(account)的返回值等于-1,帐户不存在
Console.WriteLine("输入错误!");
break;
}
}while(con!="3");
}
}
}