新鸟路过....................
我把程序改了一下,能用了,出错是因为申请空间时没有指明空间的大小,这样做错误的,
我也是菜鸟,大家多多指教
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
struct adbook
{
char name[7];
char number[12];
};
//////////////////////////////////////////////////////////
int t=0;
class bookss
{
adbook data[10];
public:
void input(char *p,char* a); //增加函数
void output(); // 输出
void find1(char *p,int n); // 查找
void find2(char *p); //查找
};
////////////////////////////////////////////////
void bookss::input (char *p,char* a)
{
strcpy(data[t].name ,p);
strcpy(data[t].number ,a);
t++;
}
void bookss::output ()
{
cout<<" "<<data[t-1].name <<" "<<data[t-1].number <<endl;
}
void bookss::find1 (char *p,int n)
{
for(int i=0;i<10;i++)
{
for(int j=0;j<strlen(data[i].name);j++)
{
for(int k=j;k<n;k++)
{
if(p[k]==data[i].name[j])
{
cout<<" "<<data[i].name <<" "<<data[i].number <<endl;
break;
}
}
}
}
}
////////////////////////////////////////////////////////////
void bookss::find2 (char *p)
{
for(int i=0;i<10;i++)
{
if(strcmp(data[i].name ,p)==0)
cout<<" "<<data[i].name <<" "<<data[i].number <<endl;
}
}
///////////////////////////////////////////////////////////////////////
int main()
{
char* str=new char[10];
char* number=new char[10];
char i;
int k;
bookss bk;
while(1)
{ system("cls");
cout<<"*---------------------------------------------------*"<<endl;
cout<<"* *"<<endl;
cout<<"* 欢迎使用通迅录 *"<<endl;
cout<<"* *"<<endl;
cout<<"* 请选择操作 *"<<endl;
cout<<"* 1 新增 2 输出 3 查找 4 退出 *"<<endl;
cout<<"*---------------------------------------------------*"<<endl;
cin>>i;
if(i=='4')
{cout<<"谢谢使用,88"<<endl;
exit(0);
}
switch(i)
{
case '1':
{
cout<<"请输入 "<<endl
<<" 姓名, 电话号码"<<endl;
cin>>str>>number;
bk.input (str,number);
}break;
///////////////////////////////////////
case '2':
{ cout<<" 姓名 电话号码"<<endl;
int temp=t;
t=1;
while(temp>=t)
{ bk.output();
t++;
}
t--;
getch();
}break;
//////////////////////////////////
case '3':
{
cout<<" 1 按姓名查找 2 按号码查找 "<<endl;
char n;
char *p1=new char[10];
cin>>n;
cout<<"请输入关键字"<<endl;
switch(n)
{
case '1':
{ cin>>p1;
k=strlen(p1);
cout<<" 姓名 电话号码"<<endl;
bk.find1(p1,k);
getch();
}break;
case '2':
{
cin>>p1;
cout<<" 姓名 电话号码"<<endl;
bk.find2(p1);
getch();
}break;
default:
{
cout << "输入错误!!!,请重新输入" << endl;
getch();
}break;
}break;
delete [] p1;
}break;
default:
{
cout << "输入错误!!!,请重新输入" << endl;
getch();
}break;
}
}
delete [] str;
delete [] number;
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
不错!