c++版-图书管理系统

时间:2025-05-15

#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字,全部文档内容请下载后查看。喜欢就下载吧 ……

c++版-图书管理系统.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219