问题的提出:设计一个用于管理朋友信息的程序。将朋友信息(年龄、姓名、电话)存放在MyFrd.dat中,从文件读出这些信息并显示,并能按姓名(要求可简化输入,如只输入姓氏便可查询)进行查询,将查询信息输出屏幕。
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 }
17 void disp()
18 {
19 cout<<setiosflags(ios::left)
20 <<setw(6)<<age<<setw(10)<<name<<setw(7)<<TelNo<<endl;
21 }
22 char *getname()
23 {
24 return name;
25 }
26 };
27 void func1()
28 {
29 ofstream output("MyFrd.dat");
30 MyFriend s;
31
32 cout<<"输入数据"<<endl;
33 cout<<"我的朋友人数:";
34 cin>>n;
35 for(int i=0;i<n;i++)
36 {
37 cout<<"第"<<i+1<<"个我的朋友";
38 s.getdata();
39 output.write((char *)&s,sizeof(s));
40 };
41 output.close();
42 }
43 void func2()
44 {
45 ifstream input("MyFrd.dat");
46 MyFriend s;
47 cout<<"输入数据"<<endl;
48 cout<<setiosflags(ios::left)
49 <<setw(6)<<"年龄"<<setw(10)<<"姓名"<<setw(7)<<"电话"<<endl;
50 input.read((char *)&s,sizeof(s));
51 while(input)
52 {
53 s.disp();
54 input.read((char*)&s,sizeof(s));
55 };
56 input.close();
57 }
58 void func3()
59 {
60 char sname[10];
61 fstream file("MyFrd.dat",ios::in);
62 MyFriend one;
63 file.seekg(0);
64 cout<<"输入要查询的姓名(可只输入姓氏):";
65 cin>>sname;
66 cout<<"输出查询结果:"<<endl;
67 cout<<setw(6)<<"年龄"<<setw(10)<<"姓名"<<setw(6)<<"电话"<<endl;
68 for(int i=0;i<n;i++)
69 {
70 file.read((char *)&one,sizeof(MyFriend));
71 if(comp(one.getname(),sname)==1)
72 one.disp();
73 }
74 file.close();
75 }
76 int comp(char s1[],char s2[])
77 {
78 int i=0;
79 while(s1[i]!='\0' && s2[i]!='\0' && s1[i]==s2[i])
80 i++;
81 if(s1[i]=='\0' || s2[i]=='\0')
82 return 1;
83 else
84 return 0;
85 }
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:func1();break;
97 case 2:func2();break;
98 case 3:func3();break;
99 }
100 }while(sel==1||sel==2||sel==3);
101 }