C语言达人进来帮下忙!

题目要求如下:要求整个系统设计为图书信息输入模块、图书信息浏览模块、图书信息查询模块和图书信息删除与修改模块。下面是我的程序:#include<iostream>#inc... 题目要求如下:
要求整个系统设计为图书信息输入模块、图书信息浏览模块、图书信息查询模块和图书信息删除与修改模块。
下面是我的程序:

#include <iostream>
#include <iomanip>
#include <string>
//输入/输出文件流类
#include <fstream>
using namespace std;
//最多的图书
const int Maxb=100;
//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
class Book
{
private:
//删除标记 1:已删 0:未删
int tag;
//图书编号
int no;
//书名
int onshelf;
public:
Book(){}
//获取图书编号
int getno(){ return no; }
//获取删除标记
int gettag(){ return tag; }
//设置书名
void setname(char na[])
{
strcpy(name,na);
}
//删除图书
void delbook(){ tag=1;}
//增加图书
void addbook(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
//输出图书
void disp()
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};
//图书库类,实现对图书的维护,查找,删除等
class BDatabase
{
private:
//图书记录指针
int top;
//图书记录
Book book[Maxb];
public:
//构造函数,将book.txt读到book[]中
BDatabase()
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
book[top]=b;
}
file.close();
}
//全删
void clear()
{
top=-1;
}
//增加图书
int addbook(int n,char *na)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
//查找图书
Book *query(int bookid)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
//图书库维护
void bookdata();
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
//析构函数,将book[]写到book.txt文件中
~BDatabase()
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t*****图 书 管 理*****
写不下了,
http://a163.com/UploadFiles/8577/C-tushuguanli.rar
放这儿了,。。。
哪位好心的大哥帮忙我修改下啊,,去掉里面的 图书状态(在架或者已借) 更正写入数据时的时的格式问题
展开
 我来答
元宝趣学
推荐于2016-07-26 · TA获得超过1102个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:648万
展开全部
你的程序我简单的修改了一下,请测试下
还有一点想说的就是你的编码规范问题
请现在就养成良好的编码规范,
以后你会知道编码规范的重要的

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream> //输入/输出文件流类

using namespace std;

const int Maxb=100; //最多的图书
//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
class Book
{
private:
//删除标记 1:已删 0:未删
int tag;
//图书编号
int no;
//书名
char name[20];
//是否再架 1:再架 2:已借
public:
Book(){}
//获取姓名
char *getname() { return name; }
//获取图书编号
int getno(){ return no; }
//获取删除标记
int gettag(){ return tag; }
//设置书名
void setname(char na[])
{
strcpy(name,na);
}
//删除图书
void delbook(){ tag=1;}
//增加图书
void addbook(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
}

//输出图书
void disp()
{
cout << setw(6) << no << setw(18) << name <<endl;
}
};
//图书库类,实现对图书的维护,查找,删除等
class BDatabase
{
private:
//图书记录指针
int top;
//图书记录
Book book[Maxb];
public:
//构造函数,将book.txt读到book[]中
BDatabase()
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
book[top]=b;
}
file.close();
}
//全删
void clear()
{
top=-1;
}
//增加图书
int addbook(int n,char *na)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
//查找图书
Book *query(int bookid)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
//图书库维护
void bookdata();
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
//析构函数,将book[]写到book.txt文件中
~BDatabase()
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t*****图 书 管 理***** "<<endl<<endl;
cout<<"\t\t1. 新 增\n \t\t2. 更 改\n\t\t3. 删 除\n\t\t4. 查 找\n\t\t5. 浏览全部\n\t\t6. 删除全部(慎重操作)\n\t\t0. 返回主菜单"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入图书编号:"<<endl;
cin >> bookid;
cout << "输入图书书名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "输入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 该图书不存在 "<<endl;
break;
}
cout << "输入新的书名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"返回主菜单:";
}
}
}

//main() 函数的实现,程序的主界面的引导

int main()
{
char choice;
int bookid;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\n\t\tààààààààààààààààààààààààóóóóóóóóóóóóóóóóóóóóóóóóóó\n\t\t ààààààààààààààààààààààóóóóóóóóóóóóóóóóóóóóóóóó\n\t\t\t☆★☆ 图 书 管 理 系 统 ★☆★\n\n\n";
cout <<"\n\n\t\t\t1. 图 书 管 理 \n\n\t\t\t(查询,录入,修改图书信息)\n\n\t\t\t0. 退 出\n\n\n\t\t让 我 们 爱 护 每 一 本 书,养 成 良 好 的 借 阅 习 惯。"<<endl;
cin >> choice;
switch (choice)
{
case '1':
BookDB.bookdata();
break;
case '2':
cout<<"选择错误,请重新输入";
break;
case '3':
cout<<"选择错误,请重新输入";
break;
case '4':
cout<<"选择错误,请重新输入";
break;
case '5':
cout<<"选择错误,请重新输入";
break;
default:cout<<"程序关闭中.....欢迎下次使用:^_^\n";
}
}
}
小海鬼
2008-09-05 · TA获得超过819个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:237万
展开全部
我不知道你要问什么问题 是需要有人帮你把程序完成吗?还是程序有什么细节不懂的地方?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式