using System;
using System.IO;
struct Record{
public string name;
public UInt16 age;
public string phone;
public string address;
}; //通讯录的记录格式
class PhoneBook
{
FileStream f_srm;
string s_filename;
Record m_record;
public PhoneBook(string filename)
{
s_filename = filename;
}
public int Open()
{ //显示初始化界面
Console.WriteLine("1: List Record");
Console.WriteLine("2: Add New Record");
Console.WriteLine("3: Erase Record");
Console.WriteLine("0: Exit");
int i = Console.Read() - '0';
return i;
}
public void AddNew()
{ //向通讯录中添加记录
try{
f_srm = new FileStream(s_filename,FileMode.OpenOrCreate);
}
catch
{
Console.WriteLine("PhoneBookError!");
return;
}
BinaryWriter pw = new BinaryWriter(f_srm);
pw.Seek(0,SeekOrigin.End);
string s_temp;
Console.Write("Name:");
Console.ReadLine();
m_record.name = Console.ReadLine();
pw.WriteString(m_record.name);
reenter:
Console.Write("Age: ");
s_temp = Console.ReadLine();
try{
m_record.age = s_temp.ToUInt16();
}
catch
{
Console.WriteLine("The formatof age is error,please ReEnter");
goto reenter;
}
pw.Write(m_record.age);
Console.Write("PhoneNumber: ");
m_record.phone = Console.ReadLine();
pw.WriteString(m_record.phone);
Console.Write("Address:");
m_record.address = Console.ReadLine();
pw.WriteString(m_record.address);
f_srm.Close();
}
public void List()
{ //浏览所有记录
try{
f_srm = new FileStream(s_filename,FileMode.Open);
}
catch
{
Console.WriteLine("PhoneBookError!");
return;
}
BinaryReader pr = new BinaryReader(f_srm);
Console.WriteLine("Name AgePhone Number Address");
Console.WriteLine("***************************************");
while(true)
{
try{
m_record.name = pr.ReadString();
m_record.age = pr.ReadUInt16();
m_record.phone = pr.ReadString();
m_record.address = pr.ReadString();
}
catch{return;}
Console.WriteLine("{0,-9}{1,-6}{2,-18}{3}",m_record.name,
m_record.age,m_record.phone,m_record.address);
}
f_srm.Close();
}
public void Erase()
{ //清空所有记录
try{
f_srm = new FileStream(s_filename,FileMode.Create);
}
catch
{
Console.WriteLine("PhoneBook Error!");
return;
}
f_srm.Close();
Console.WriteLine("Now the book is empty!");
}
}
class Test
{
public static void Main()
{
PhoneBook pbook = new PhoneBook("c:\\c#\\file\\Phone.book");
int i = pbook.Open();
switch(i)
{
case 1:
pbook.List();
break;
case 2:
pbook.AddNew();
break;
case 3:
pbook.Erase();
}
}
}
}
其中有这么一条语句 Console.WriteLine("{0,-9}{1,-6}{2,-18}{3}",m_record.name, m_record.age,m_record.phone,m_record.address); 它表示对输出进行格式化{} 中使用的第二个数表示输出占据的屏幕位数正 数表示从右边起计而负数表示从左边起计。