11_98.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:2k
源码类别:

文章/文档

开发平台:

C/C++

  1. #include<iostream.h>
  2. #include<fstream.h>
  3. #include<iomanip.h>
  4. static int n=0;
  5. int comp(char*,char*);
  6. class MyFriend
  7. {
  8. unsigned int age;
  9. char name[12];
  10. char TelNo[12];
  11. public:
  12. void getdata()
  13. {
  14. cout<<"(年龄 姓名 电话):";
  15. cin>>age>>name>>TelNo;
  16. if(age>300||age<=0)
  17. throw name;
  18. }
  19. void disp()
  20. {
  21. cout<<setiosflags(ios::left)
  22.  <<setw(6)<<age<<setw(10)<<name<<setw(7)<<TelNo<<endl;
  23. }
  24. char *getname()
  25. {
  26. return name;
  27. }
  28. };
  29. void func1()
  30. {
  31. ofstream output("MyFrd.dat");
  32. MyFriend s;
  33. cout<<"输入数据"<<endl;
  34. cout<<"我的朋友人数:";
  35. cin>>n;
  36. for(int i=0;i<n;i++)
  37. {
  38. cout<<"第"<<i+1<<"个我的朋友";
  39. s.getdata();
  40. output.write((char *)&s,sizeof(s));
  41. };
  42. output.close();
  43. }
  44. void func2()
  45. {
  46. ifstream input("MyFrd.dat");
  47. MyFriend s;
  48. cout<<"输入数据"<<endl;
  49. cout<<setiosflags(ios::left)
  50. <<setw(6)<<"年龄"<<setw(10)<<"姓名"<<setw(7)<<"电话"<<endl;
  51. input.read((char *)&s,sizeof(s));
  52. while(input)
  53. {
  54. s.disp();
  55. input.read((char*)&s,sizeof(s));
  56. };
  57. input.close();
  58. }
  59. void func3()
  60. {
  61. char sname[10];
  62. fstream file("MyFrd.dat",ios::in);
  63. MyFriend one;
  64. file.seekg(0);
  65. cout<<"输入要查询的姓名(可只输入姓氏):";
  66. cin>>sname;
  67. cout<<"输出查询结果:"<<endl;
  68. cout<<setw(6)<<"年龄"<<setw(10)<<"姓名"<<setw(6)<<"电话"<<endl;
  69.     for(int i=0;i<n;i++)
  70. {
  71. file.read((char *)&one,sizeof(MyFriend));
  72. if(comp(one.getname(),sname)==1)
  73. one.disp();
  74. }
  75. file.close();
  76. }
  77. int comp(char s1[],char s2[])
  78. {
  79. int i=0;
  80. while(s1[i]!='' && s2[i]!='' && s1[i]==s2[i])
  81. i++;
  82. if(s1[i]=='' || s2[i]=='')
  83. return 1;
  84.     else
  85. return 0;
  86. }
  87. void main()
  88. {
  89. int sel;
  90. do
  91. {
  92. cout<<"选择(1:输入数据 2:输出数据 3:按姓名查询 其它退出):";
  93. cin>>sel;
  94. switch(sel)
  95. {
  96.  case 1:try{func1();}
  97.                 catch(char*s)
  98. {
  99.              cout<<s<<"年龄输入不正确!"<<endl;
  100. }
  101.     break;
  102.          case 2:func2();break;
  103.  case 3:func3();break;
  104. }
  105. }while(sel==1||sel==2||sel==3);
  106. }