using System;
/// <summary>
/// Test8 的摘要说明。P112
/// 继续上一章网络用户的例子,为网络用户类添加注册功能,注册时对用户输入的ID进行合法性检查:
/// 小写字母开头,只能由字母、数字和下划线组成,并验证用户两次输入密码是否相同。
/// </summary>
class T9Testx8
{
static void Main(string[] args)
{
Webuse use1=new Webuse();
string id,pwd1,pwd2;
try
{
Console.Write("注册开始:\nID由字母、数字和下划线组成且,首字母为小写字母;2次输入密码必须相同。\nPlease intput your Id:");
id=Console.ReadLine();
Console.Write("Please intput your Password:");
pwd1=Console.ReadLine();
Console.Write("Please validate your Password :");
pwd2=Console.ReadLine();
if(id=="")
{
throw new Excepbb();
}
else if(use1.logging_on(id,pwd1,pwd2)==true)
{
use1=new Webuse(id,pwd1);
use1.Show(use1);
}
else
Console.WriteLine("Logging on is defeated");
}
catch(Excepbb)
{
Console.WriteLine("您未输入ID!");
}
catch(FormatException e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.WriteLine("-*-*-*-*-*-*-*-*-");
Console.WriteLine("  Program over  ");
Console.WriteLine("-*-*-*-*-*-*-*-*-");
Console.ReadLine();
}
}
internal class Webuse
{
string id,pwd;
string email;
internal Webuse()
{
id="boaby_tdk";
pwd="19491001";
email=Convert.ToString(pwd)+"@heav.com";
}
internal Webuse(string youId,string youPassword)
{
id=youId;
pwd=youPassword;
email=Convert.ToString(youId)+"@heav.com";
}
internal bool logging_on(string useid,string password1,string password2)
{
string id,pwd1,pwd2;
bool flag=true;
try

id=useid;
pwd1=password1;
pwd2=password2;
if(id[0]<'a' || id[0]>'z')
{
flag=false;
throw new ErrIdStr();
      
}
else if(pwd2!=pwd1)
{
flag=false;
throw new ErrPwd();
}
for(int i=0;i<id.Length;i++)
{
if(id[i]>='a' && id[i]<='z' || id[i]>='A' && id[i]<='Z' || id[i]>='0' && id[i]<='9' || id[i]=='_')
{
flag=true;
}
else
{
flag=false;
throw new ErrId();
}
}
}
catch(ErrIdStr)
{
Console.WriteLine("ID首字母错误,只能是小写字母!");
}
catch(ErrId)
{
Console.WriteLine("ID字母只能是字母、数字和下划线!");
}
catch(ErrPwd)
{
Console.WriteLine("2次输入的密码不一样!");
}
return flag;
}
internal void Show(Webuse use)
{
Console.WriteLine("----------------------------------");
Console.WriteLine("You ID is:{0}\nYou password is:{1}\nYou E-mail is:{2}",use.id,use.pwd,use.email);
}
}
}
public class ErrIdStr:Exception
{
}
public class ErrId:Exception
{
}
public class ErrPwd:Exception
{
}
public class Excepbb:Exception
{
}
use1=new Webuse(id,pwd1);//这里的问题,看不明白......
是个构造函数吗?也是重载函数吗?这个类不是已经实例过了啊,为什么还要在这里使用一个new的方法呢?不明白这里的意思??高手帮帮忙!