#include<iostream>
#include<cstring>
#include <fstream>
using namespace std;//创建一个命名空间std
class book//定义一个类book
{
public: string num;//图书编号 string name;//书名 string writer;//作者 float price;//价格 string press;//出版社 string sort;//类别 book *next;//创建一个next指针
};
book*head=NULL;//定义一个头指针,为空
bool check(string str)//创建一个booi型函数
{
for(int i=0;i<str.length();i++)//对str中的各个字符进行遍历 { } if((str[i]>'9'&&str[i]<'0')||(str[i]!='.'))//如果str[i]大于9或者小于0,则返回假,否则{ } 返回真 return false; return true;
}
book*creat()//创建一个book类对象指向的函数creat()
{
book*p1,*p2; p1=new book; p2=p1; head=p1; string str; cout<<"请输入图书书名,按0返回主菜单:"<<endl;//endl为换行符 cin>>str;//输入书名 p1->name=str;//将书名赋给p1结点对应的name if(p1->name[0]!='0')//如果输入书名不等于0,则继续进行,如果输入0,则结束输入 { cout<<"请输入该图书的编号,图书编号为九位:"<<endl;
cin>>str;
while((!check(str))&&(str.length()!=9))//对输入的编号进行验证,如果输入不正确,则将无法跳出while循环
cout<<"您输入的图书编号有误,请重新输入:"<<endl; cin>>str; } p1->num=str;//继续赋值 cout<<"请输入该图书的作者:"<<endl; cin>>str; p1->writer=str;//同上 cout<<"请输入该图书的类别:"<<endl; cin>>str; p1->sort=str;//同上 cout<<"请输入该图书的价格:"<<endl; cin>>str; //while(!check(str)) //{ // cout<<"您输入的图书价格有误,请重新输入:"<<endl; // cin>>str; //} p1->price=atof(str.c_str());//输入的price是字符,用atof()函数将它们转换为浮点型 cout<<"请输入图书的出版社:"<<endl; cin>>str; p1->press=str;//同上,原理和书名那个一样 } else //否则 { delete p1;//删除p1结点 p2=NULL;//p2结点为空 head=NULL;//头结点为空 return head;//返回头结点
}
while(p1->name[0]!='0')//如果上面if语句执行完并且上面的str[0]!='0',则继续,跳入while循环
{ p2=p1;//将p1结点赋给p2 p1=new book;//创建新的额结点p1 cout<<"请输入图书书名,按0返回主菜单:"<<endl;//endl为换行符 ,继续进行图书信息的录入 ,原理同上 cin>>str; p1->name=str; if(p1->name[0]!='0') { cout<<"请输入该图书的编号,图书编号为九位:"<<endl; cin>>str; while((!check(str))&&(str.length()!=9))
cout<<"您输入的图书编号有误,请重新输入:"<<endl; cin>>str; } p1->num=str; cout<<"请输入该图书的作者:"<<endl; cin>>str; p1->writer=str; cout<<"请输入该图书的类别:"<<endl; cin>>str; p1->sort=str; cout<<"请输入该图书的价格:"<<endl; cin>>str; //while(!check(str)) //{ // cout<<"您输入的图书价格有误,请重新输入:"<<endl; // cin>>str; //} p1->price=atof(str.c_str()); cout<<"请输入图书的出版社:"<<endl; cin>>str; p1->press=str; } p2->next=p1;//当上面输入完成时,将p1结点赋给p2的下一个结点,循环继续 } delete p1;//如果输入0,则循环结束,p2的下一个结点为空,返回头结点 p2->next=NULL;
return head;
}
void store(book*head)
{
ofstream fts1("d:/book.txt");//存储位置 while(head) { fts1<<"书名:"<<head->name<<"\t"<<"编号:"<<head->num<<"\t"; fts1<<"类别:"<<head->sort<<"\t"<<"作者:"<<head->writer<<"\t"<<endl; } fts1<<"价格:"<<head->price<<"\t"<<"出版社:"<<head->press<<endl<<endl; head=head->next;//不停的遍历
}
void find(book*head,string num)//具有查找功能的函数
{
while(head)//如果头结点存在,则跳入while循环 {
} { 所有信息 cout<<"书名:"<<head->name<<"\t"<<"编号:"<<head->num<<"\t"; cout<<"类别:"<<head->sort<<"\t"<<"作者:"<<head->writer<<"\t"; cout<<"价格:"<<head->price<<"\t"<<"出版社:"<<head->press<<endl; break;//当查找查找成功时,停止while循环 } head=head->next;//不断的对所有结点进行遍历,知道满足if语句为止
}
void revise(book*head,string num,string name,string writer,float price,string sort,string press)//具有修改功能的函数
{
while(head)//当头结点存在时跳入while循环
{ } if(head->num==num)//当找到所要查询的图书编号时,用参数替换它原来的信息 { head->name=name; head->writer=writer; head->price=price; head->sort=sort; head->press=press; break;//终止while循环 } head=head->next;//同上
}
void Insert(book*head,string num,string name,string writer,float price,string s …… 此处隐藏:5567字,全部文档内容请下载后查看。喜欢就下载吧 ……