标题:大家帮我看看有什么问题!
只看楼主
Freeness
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-25
 问题点数:0 回复次数:3 
大家帮我看看有什么问题!
也不知道什么原因 一个很简单的代码 但每次结果都会出现乱码问题 请高手指教!
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class book
{
private:
int bookID;
string bookName;
string bookAuthor;
string bookPress;
float bookPrice;
public:
void get()
{
  cout<<endl<<"输入书的编号"<<endl;
  cin>>bookID;
  cout<<endl<<"输入书的名字"<<endl;
  cin.ignore();
  cin>>bookName;
  cout<<endl<<"输入书的作者"<<endl;
  cin.ignore();
  cin>>bookAuthor;
  cout<<endl<<"输入书的出版社"<<endl;
  cin.ignore();
  cin>>bookPress;
  cout<<endl<<"输入书的价钱"<<endl;
        cin>>bookPrice;
}
void check()
{
  cout<<endl<<"书的编号"<<endl;
  cout<<bookID<<endl;
  cout<<endl<<"书的名字"<<endl;
  cout<<bookName<<endl;
  cout<<endl<<"书的作者"<<endl;
  cout<<bookAuthor<<endl;
  cout<<endl<<"书的出版社"<<endl;
  cout<<bookPress<<endl;
  cout<<endl<<"书的价钱"<<endl;
  cout<<bookPrice;
}
/*void flcheck(int)
{
  ifstream ifile("F:\\book.dat");
  int a;
  string b;
  string c;
  string d;
  float e;
  ifile>>a>>b>>c>>d>>e;
  int h;
  cin>>h;
  switch(h)
  {
  case 1:
   cout<<"输入ID"<<endl;
   cin>>a;
   if(a==bookID)
   {
      cout<<bookName<<endl<<bookAuthor<<endl<<bookPress<<endl<<bookPrice<<endl;
    break;
   }
  }
}*/
void idcheck(int q)
{
  ifstream ifile("F:\\fa.dat");
  int a;
  string b;
  string c;
  string d;
  float e;
  ifile>>bookID>>bookName>>bookAuthor>>bookPress>>bookPrice;
  if(q==bookID)
  {
   cout<<endl<<"查询结果:"<<endl<<bookID<<bookName<<bookAuthor<<bookPress<<bookPrice<<endl;
  }
  if(q!=bookID)
  {
   cout<<endl<<"查询结果:"<<endl<<"没有该书记录"<<endl;
  }
}
};
int main()
{
int haha;
book FeinaAen;
while(1)
{
  cout<<endl<<"0.退出"<<endl;
  cout<<endl<<"1.插入书信息"<<endl;
  cout<<endl<<"2.查看书信息"<<endl;
  cout<<endl<<"3.删除书信息"<<endl;
  cout<<endl<<"4.分类查找"<<endl;
  cout<<endl<<"选择(0-4)"<<endl;
  cin>>haha;
  if(haha==1)
  {
   ofstream ofile("F:\\fa.dat",ios::app);
   char reply='Y';
   while(reply=='Y'||reply=='y')
   {
    cout<<endl<<"按以下提示输入"<<endl;
    FeinaAen.get();
    ofile.write((char *)&FeinaAen,sizeof(book));
    cout<<endl<<"是否继续插入书信息[y/n][Y/N],按其他键退出程序"<<endl;
    cin>>reply;
    ofile.close();
   }
   if(reply=='N'||reply=='n')
    continue;
   if(reply!='N'||reply!='n'||reply!='y'||reply!='Y')
    break;
   //ofile.close();
  }
  if(haha==2)
  {
   ifstream ifile("F:\\fa.dat");
   while(ifile)
   {
    FeinaAen.check();
    ifile.read((char *)&FeinaAen,sizeof(book));
   }
   ifile.close();
  }
  if(haha==4)
  {
   int haha1;
   cout<<endl<<"1.按ID查找"<<endl;
   cout<<endl<<"2.按书名查找"<<endl;
   cout<<endl<<"3.按作者查找"<<endl;
   cout<<endl<<"4.按出版社查找"<<endl;
   cin>>haha1;
   if(haha1==1)
   {
    cout<<"输入ID"<<endl;
       int u;
       cin>>u;
                FeinaAen.idcheck(u);
   }
  }
  if(haha==0)
   break;
}
return 0;
}
删除部分还没写 不用去看 查找方面不知道出了什么问题 我用链表形式写了一个同样的程序 就没有乱码情况 现在非常的不解!!

[[italic] 本帖最后由 Freeness 于 2007-11-25 17:52 编辑 [/italic]]
搜索更多相关主题的帖子: private include public 
2007-11-25 17:43
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
自己先调试下把问题缩小再问,这样很少有人有耐心看的!

顺便注意下排版,论坛支持专发代码的。

Fight  to win  or  die...
2007-11-25 17:46
Freeness
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-25
得分:0 
额。。。。。。。。
其实问题就是 第一次插入书的时候选择查看全部书的信息 那个时候是正常显示出书的信息的 但把程序关掉以后再打开查书的时候就会出现乱码问题 因为这个程序把内容全部存到文件里的 按道理应该也能显示出文件中的内容。
还有分类查找的时候第一次插完出以后 如果按ID查找的话 只显示出ID和价钱 也就是说只显示出整形的数据 字符串类型的数据不显示的 第二次查的话 原来的数据都变成乱码了 自然也就不能按ID查了 就是不知道什么原因 我朋友不用read和write形式打开和读取文件倒是没这个情况的 但我想这里应该有人知道用这个2个函数也能不出现乱码的方法!
我刚学C++很多不懂 我朋友介绍我来这里学习的 说这里高手蛮多的 希望大家多多指教!
2007-11-25 17:57
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
得分:0 
我给你一个建议就是把中文改成英文 呵呵
2007-11-28 22:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188296-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181516 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved