首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

求大神帮改错,调试解决思路

2013-11-01 
求大神帮改错,调试#ifndef ADDRESS_H//如果程序中未定义标识符ADDRESS_H,则编译ADDRESS_H段#define ADDRES

求大神帮改错,调试
#ifndef ADDRESS_H                           //如果程序中未定义标识符ADDRESS_H,则编译ADDRESS_H段
#define ADDRESS_H
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;

class Address
{
   bool status;                             //通信录状态
   char Name[31];                           //姓名
   char Phone[21];                          //电话
   public:
   Address()              
   {status=true;}                           //构造时通信录清空 
   string GetName()const;                   //取姓名
   string GetPhone()const;                  //取电话
   bool isEmpty();                          //取通信录状态
   void Enter(string& name,string& phone);  //输入通信录
   void Set();                              //置通信录状态0,非空
   void Clear();                            //置通信录状态1,空

};
#endif 
//Address.h文件结束
//Addressbook.h文件的内容,通信薄定义
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#include "Address.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const int ItemNum=100;
class AddreesBook                   //通信录
{

   Address Item[ItemNum];           //ItemNum为通信录最大数量,定义为常量100
   int Num;                         //通信录数量
   int FindFree();                  //查找空的通信录
   public:
   AddressBook()  {Num=0;}      
       void Enter();                //输入
       void Erase();                //删除
       void Load();                 //读盘
       void Save();                 //存盘
       void List();                 //显示

};
#endif
//Addressbook.h文件结束
//Address.cpp文件的内容
#include "Address.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;

string Address::GetName()const
{
    string s=Name;
return s;

}
string Address::GetPhone()const
{
    string s=Phone;
return s;

}
bool Address::isEmpty(){return Status}
void Address::Enter(string& name,string& phone)
{
   int len=name.length();
   if (len>30) len=30;              //输入超长时截断
   name.copy(Name,len,0);
   Name[len]=0;                     //字符串结束符,把string转换成char*
   len=phone.length();
   if (len>20) len=20;
      phone.copy(Phone,len,0);
   Phone[len]=0;
}
void Address::Set()  {Status=false;}
void Address::Clear()  {Status=true;}
//Address.cpp文件结束
//Address.cpp文件的内容



#include "Address.h"
#include "AddressBook.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

ostream &operator<<( ostream &output,const Address& addr )
{
   //重载<<,直接用cout输出通信录
output<<setiosflags(ios::left)<<setw(31)
          <<addr.GetName()<<setw(21)<<addr.GetPhone();
return output;

}
int AddressBook::FindFree()
{
    int t;
for(t=0;t<ItemNum;t++)
if (Item[t].isEmpty())  return t;
return -1;         //电话薄已记满

}
void AddressBook::Enter()  //添加通信录
{
    string name,phone;
    int pointer;
pointer=FindFree();
if (pointer==-1)
        cout<<"电话薄已记满";
 else{
               cout<<"电话薄中有"<<Num<<"条通信录"<<endl;
   cout<<"输入姓名:";
   cin>>name;
   cout<<"输入电话号码:";
               cin>>phone;
   Item[pointer].Enter(name,phone);
   Item[pointer].Set();
   Num++;


}
void AddressBook::Erase()          //删除通信录
{
    int t;
string s;
cout<<"电话薄中有"<<Num<<"条通信录"<<endl;
if (!Num)  cout<<"电话薄已空!\n";
else
{  
cout<<"输入姓名:";
cin>>s;
for(t=0;t<ItemNum;t++)  {
         if (!Item[t].isEmpty()&&Item[t].GetName()==s)
 {  
 Item[t].Clear();
 Num--;
 cout<<"已经删除"<<s<<"的通信录。\n";
 break;
 }
}
 if (t==ItemNum)
 {
 cout<<"该名字不存在\n";
 cin.get();
 }

}
void AddressBook::List()        //按字典顺序先是多有通信录
{
    int t,i,j;
Address list[ItemNum],temp;
if (!Num)  cout<<"电话薄已空!"<<endl;
else 
{
        cout<<"电话薄中有"<<Num<<"条通信录"<<endl;
for(t=0;t<ItemNum;t++)  list[t]=Item[t];
for(i=0;i<ItemNum;i++)
{                                //排序
    for(j=ItemNUm-1;j>i;j--)
if(list[j-1].GetName()>list[j].GerName())
if {
                  temp=list[j-1];
  list[j-1]=list[j];
  list[j]=temp;
}

}
cout<<setiosflags(ios::left) <<setw(31)
<<"姓名"<<setw(21)<<"电话"<<endl;
   for (t=0;t<ItemNum;++t)
   {
      if (!list[t].isEmpty())
  cout<<list[t]<<endl;
   }
}
}
void AddressBook::Save()          //电话薄存盘
{
    ofstream file;
int i;
char fname[41];
cout<<"输入保存的文件名:";
cin>>fname;
file.open(fname,ios::out);
if(!file)
{
   cout<<"打开文件夹失败1\n";
   cin.get();
}
    else{
      for(i=0;i<ItemNum;i++)
  {
     if(file&&!file.eof())
 file.write(reinterpret_cast char*>(&Item[i]),sizeof(Address));
  }
file.close();
}
}
void AddressBook::Load()         //读出电话薄
{
    ifstream file;
int i;
char fname[41];
cout<<"输入读取的文件名:";
cin>>fname;
file.open(fname,ios::in);
if (!file)
{
   cout<<"打开文件失败!\n";
   cin.get();
}
    else
{
   Num=0;
   for(i=0;i<ItemNUm;i++)
   {
     if(file&&!file.eof())
 file.read(reinterpret_cast<char*>(&Item[i]),sizeof(Address));
 if(!Item[i].isEmpty())   Num++;
   }
   file.close();
}
}
//AddressBook.cpp文件结束
//Fmain.cpp文件的内容,含有主函数/#include "Address.h"
#include "AddressBook.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;



int menu_select()
int main()
{
    char chocie;
AddressBook maillist;
for(;;)
{                              //循环,直到键盘输入结束代码
       choice=menu_select();
       switch(choice){             //根据键盘输入,调用相应的功能
   case 1:maillist.Enter();break;
   case 2:maillist.Erase();break;
   case 3:maillist.List();break;
   case 4:maillist.Save();break;
   case 5:maillist,Load();break;
   case 6:exit(0);
  
   }

}
rentur o;

}
int menu_select()
{                          //显示主菜单
    char c;
cout<<"*********************************\n";
cout<<"*    模拟电话簿        *\n";
cout<<"*   1.添加通信录       *\n";
cout<<"*   2.删除通信录       *\n";
cout<<"*   3.显示通信录       *\n";
cout<<"*   4.电话薄存盘       *\n";
cout<<"*   5.读出电话薄       *\n";
cout<<"*   6.退出             *\n";
cout<<"*********************************\n";
cout<<"\n请输入(1~6):";
do {                  //键盘输入循环
    cin.get(c);
}
while(c<'1'||c>'6');
return  c-48;
}
//Fmain.cpp文件结束


[解决办法]
还想把代码给你直接赋值到IDE中调试看看,又发现没有提供address.h,算了,撸过一顶
[解决办法]
回楼上:address.h文件有提供。

看在100分的份上,帮楼主纠正了N个书写错误,毫无技术含量。修正后的代码去这里下载:
http://www.ccrun.com/temp/csdn.topic.390627501.7z
[解决办法]
能看到出来,楼主是个新手。希望楼主会结帖。
[解决办法]


这有啥技术含量?
[解决办法]
1. 你用的什么编译工具?
2. “运行不出来”具体提示什么?
3. 楼主今年多大了?
[解决办法]
楼主什么问题?多步调试debug一步步看变量的值。这么直接网上帖,不能说明什么问题。
[解决办法]
少到头文件了吧
[解决办法]
还没弄好?真是服了你了。

你需要把cpp文件添加到工程中。

热点排行