C#哈希表用户信息存储读取问题求解
YangJ.rar
(45.57 KB)
我的一个ATM取款机程序,之前只有一个用户类,这样的程序有严重不足:如果注册了一个用户之后,再注册一个用户,那么第一个用户的信息将会被覆盖。后来改进用哈希表对多个用户信息进行临时储存,发现进入登陆界面的时候,用刚注册的帐号和密码居然登陆不进去(验证未成功),程序显示我输入的帐号没有注册。 特来向大虾们求解!!!class Program//主函数
{
static void Main(string[] args)
{
ZhuJieMianLei zjm = new ZhuJieMianLei();
zjm.ZhuJieMian();//直接调用主界面菜单
}
}
class ZhuJieMianLei//银行主界面的菜单类
{
public static Hashtable Sky = new Hashtable();
public void ZhuJieMian()//主界面的方法
{
Console.WriteLine("1.登陆操作\n2.注册帐户\n3.退出\n请做出选择");
int n = Convert.ToInt32(Console.ReadLine());
switch (n)
{
case 1:
Console.ReadKey();
Console.Clear();
DengLuLei d = new DengLuLei();//进行登录操作
d.DengLu();
break;
case 2:
ZhuCeLei z = new ZhuCeLei();//进行用户注册操作
z.ZhuCe();
Sky.Add(z.Id, z);//设定哈希表的K值为Id,用Id对哈希表成员进行查找
break;
case 3:
Console.Clear();
Console.WriteLine("\n\n\t\t非常感谢您对Bank的大力支持,谢谢您的使用");
Console.ReadKey();
break;
}
}
}
class ZhuCeLei//注册类(相当于用户类)
{
public string Name;//用户姓名
public string Id;//帐号
public string Pass;//密码
public string Pass1;
public long Money = 0;//金额
public string ShenFenZheng;
public void ZhuCe()//用户方法
{
Console.Clear();
DengLuLei b = new DengLuLei();
ChongShePass:
{
Console.Write("\t\t 请填写您的帐号:");
Id = Console.ReadLine();
Console.Write("\t\t 请填写您的密码:");
Pass = Console.ReadLine();
Console.Write("\t\t 请再次确认您的密码:");
Pass1 = Console.ReadLine();
if (Pass != Pass1)
{
Console.WriteLine("\n\t\t\t前后两次输入的密码不相符!请认真填写");
goto ChongShePass;
}
}
Console.Write("\t\t 请填写您的真实姓名:");
Name = Console.ReadLine();
Console.Write("\t\t 请填写您的身份证:");
ShenFenZheng = Console.ReadLine();
Console.WriteLine("\t\t 帐户注册成功!");
Console.ReadKey();
Console.Clear();
b.DengLu();
}
}
class DengLuLei//银行类
{
public static string Id0;
public void DengLu()//银行帐户登陆的方法
{
FanHui:
{
for (int i = 3; i > 0; i--)//提供三次机会输入帐号密码
{
Console.Write("\n\n\t\t请输入帐号:");
string Id0 = Console.ReadLine();
Console.Write("\n\t\t请输入密码:");
string Pass0 = Console.ReadLine();
if (ZhuJieMianLei.Sky.Count == 0)
{
Console.Write("\n\t系统监测到您尚未注册Bank银行通行证,请注册后进行登陆");
Console.ReadKey();
Console.Clear();
goto FanHui;
}
[/u] else if (((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Id == Id0 && ((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Pass == Pass0)//对帐号密码进行判断
{
Console.WriteLine("\n\n\t\t帐号密码确认成功!");
Console.ReadKey();
CaoZuoLei y = new CaoZuoLei();
y.CaoZuo(Id0);
break;
}
else
{
Console.WriteLine("帐号或密码错误,请重新输入!");
if (i == 1)
{
Console.WriteLine("您的输入次数已超限,系统已自动添加您为黑名单");
Console.ReadKey();
}
}
}
}
}
}
class CaoZuoLei//用户操作类
{
long M_Money = 0;//供用户输入的金额,用于赋值
public void CaoZuo(string Id0)//用户操作的方法
{
Console.Clear();
CaoZuoLei y = new CaoZuoLei();
Console.WriteLine("\n\t\t\t1.存款操作\n\t\t\t2.取款操作\n\t\t\t3.查询余额\n\t\t\t4.返回登陆界面\n\t\t\t5.返回主界面菜单");
Console.WriteLine("请做出选择:");
int n = Convert.ToInt32(Console.ReadLine());
if (n == 1)
{
Console.Clear();//存款操作
y.CunKuan(Id0);
Console.ReadKey();
}
else if (n == 2)
{
Console.Clear();//取款操作
y.QvKuan(Id0);
Console.ReadKey();
}
else if (n == 3)
{
Console.Clear();//查询余额
y.ChaXunYuE(Id0);
Console.ReadKey();
}
else if (n == 4)
{
Console.Clear();//返回登录界面
y.FanHuiDengLu();
Console.ReadLine();
}
else if (n == 5)
{
Console.Clear();
y.FanHuiZhuJieMian();//返回主界面
Console.ReadKey();
}
else
{
Console.WriteLine("不合法操作,在Bank中您的不合法操作将造成严重后果!");
Console.ReadKey();
}
}
public void CunKuan(string Id0)//存款方法
{
Console.WriteLine("请输入存款金额:");
M_Money = Convert.ToInt32(Console.ReadLine());
((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Money += M_Money;
Console.WriteLine("存款成功!\n您的帐户余额为:{0}", ((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Money);
Console.ReadKey();
CaoZuoLei y = new CaoZuoLei();
y.CaoZuo(DengLuLei.Id0);
}
public void QvKuan(string Id0)//取款方法
{
Console.WriteLine("请输入取款金额:");
M_Money = Convert.ToInt32(Console.ReadLine());
((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Money -= M_Money;
Console.WriteLine("取款成功!\n您的帐户余额为:{0}", ((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Money);
Console.ReadKey();
CaoZuoLei y = new CaoZuoLei();
y.CaoZuo(DengLuLei.Id0);
}
public void ChaXunYuE(string Id0)//显示余额的方法
{
Console.WriteLine("您帐户的余额为:{0}", ((ZhuCeLei)ZhuJieMianLei.Sky[Id0]).Money);
Console.ReadKey();
CaoZuoLei y = new CaoZuoLei();
y.CaoZuo(Id0);
}
public void FanHuiDengLu()//返回登陆界面的方法
{
Console.WriteLine("\n\t\t按任意键进入登陆界面菜单");
Console.ReadKey();
Console.Clear();
DengLuLei b = new DengLuLei();
b.DengLu();
}
public void FanHuiZhuJieMian()//返回主界面的方法
{
Console.WriteLine("\n\t\t按任意键进入主界面菜单");
Console.ReadKey();
Console.Clear();
ZhuJieMianLei z = new ZhuJieMianLei();
z.ZhuJieMian();
}
}
}