首页 > 作文

C++实现小型图书管理系统

更新时间:2023-04-06 03:19:50 阅读: 评论:0

本文实例为大家分享了c++实现小型图书管理系统的具体代码,供大家参考,具体内容如下

因为课程设计的原因,需要实现一个小型图书管理系统

包含功能:

问题描述:

设计一个系统,对图书信息进行管理,信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。

基本要求:

基本功能:

1、新进图书基本信息的输入。
2、图书基本信息的查询。
3、对撤消图书信息的删除。
4、为借书人办理注册。
5、办理借书手续(非注册会员不能借书)。
6、办理还书手续。
7、统计图书库存、已借出图书数量。

需要创建三个文本文件:record.txt book.txt reader.txt

operating.h的头文件:

#include <iostream>#include <fstream>#include <string>#include <time.h>#include<sstream>#include<vector>#include <iomanip>using namespace std;int all_stock = 0;int out_stock 战国四大谋士= 0;int times=0;void outdata(vector<string> res,int n) // n为txt中 每行数据个数{ for(int i=0;i<res.size();i+=n){  for(int j=0;j<n;j++)   cout<<tw(12)<<res[i+j]<<" ";    cout<<endl;  }}void bookentry(){ double price; string bookname,writer; fstream out; out.open("book.txt",ios::app); if(!out) {  cerr<<"打开文件失败!"<<endl; } time_t tt = time(null);//这句返回的只是一个时间cuo  cout<<"请输入书籍名称"<<endl; cin>>bookname; cout<<"请输入书籍作者"<<endl; cin>>writer; cout<<"请输入书籍价格"<<endl; while(! (cin>>price) || price <= 0 ) {  cin.clear();  cin.ignore(100,'\n');  cout<<"请输入正确的价格"<<endl; }  out<<tt<<" "<<bookname<<" "<<writer<<" "<<price<<" "<<"0"<<"\n";  out.clo(); }void bookmes(){ fstream in; string line; //用于存放分割后的字符串  vector<string> res; string temp; //暂存字符串  in.open("book.txt",ios::in); if(!in) {  cerr<<"打开文件失败!"<<endl; } all_stock = 0; while(getline(in,line)) {  all_stock++;  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  while(input>>temp)  {      res.push_back(temp);  } } // 0 书籍编号 1 书籍名称 2作者 3价格 4书籍状态  //输出res cout<<endl<<tw(12)<<"书籍编号"<<" "<<tw(12)<<"书籍名称"<<" "<<tw(12)<<"作者"<<" "<<tw(12)<<"价格"<<" "<<tw(12)<<"在馆0,不在1"<<"\n";  outdata(res,5); in.clo();}void delbook(){ string del_book; string line; vector<string>res; string temp; bool flag=fal; fstream in; in.open("book.txt",ios::in); if(!in) {  cerr<<"打开错误文件"<<endl; } cout<<"请输入需要删除的图书id"<<endl; cin>>del_book;     while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  times=0;  while(input>>temp)  {   if(del_book == temp && times==0)   {        for(int i=0;i<3;i++) //因为一共五个 第一个temp已经是del_book 所以这里取得是四个    {     input>>temp;    }    input>>temp;    if(temp != "0")    {     cout<<"书籍状态不对";     in.clo();     r公立学校和私立学校哪个好eturn ;    }    flag=true;    cout<<"\n找到了喔,应该删除成功了\n";    continue;   }   res.push_back(temp);   times++;     } }  //outdata(res,5); in.clo();  if(!flag) {  cout<<"\n错误的书籍id\n";  return ; } fstream out; out.open("book.txt",ios::out); if(!out) {  cerr<<"打开文件失败!"<<endl; }  for(int j=0;j<res.size();j+=5) {  line = res[j] + " " + res[j+1] + " " + res[j+2] + " " + res[j+3] + " " + res[j+4] + "\n";  out<<line; } out.clo(); }void readerentry(){  string readername,x_str; int x; fstream out; out.open("reader.txt",ios::app); if(!out) {  cerr<<"打开文件失败!"<<endl; } time_t readerid = time(null);//这句返回的只是一个时间cuo  cout<<"请输入读者姓名"<<endl; cin>>readername;  do {  cout<<"请输入读者性别:0为女,1为男"<<endl;  while(! (cin>>x) )  {   cin.clear();   cin.ignore(100,'\n');   cout<<"请输入正确的0或1"<<endl;  } }while(x != 0 && x!=1); if(x == 1) {  x_str = "男"; }el if (x == 0){  x_str = "女"; }el{  out.clo();  return ; } out<<readerid<<" "<<readername<<" "<<x_str<<"\n";  out.clo(); }/*读者信息*/void readermes(){ fstream in; string line; //用于存放分割后的字符串  vector<string> res; string temp; //暂存字符串 in.open("reader.txt",ios::in); if(!in) {  cerr<<"打开文件失败!"<<endl; }  while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  while(input>>temp)    res.push_back(temp); } // 0读者学号 1读者姓名 2读者性别  //输出res cout<<endl<<tw(12)<<"读者编号"<<" "<<tw(12)<<"读者"<<" "<<tw(12)<<"性别"<<"\n";  outdata(res,3); in.clo();}/* 借阅书籍 */void borrowbook(){ string book[5]; string readerid; string readername; string line; vector<string>res; //取书籍状况,并且更新 string temp; bool flag_book = fal; //用于判断书籍是否存在 读者是否存在 bool flag_reader = fal; /* 取book的图书情况,并判断是否在馆*/ fstream in; in.open("book.txt",ios::in); if(!in) {  cerr<<"打开错误文件"<<endl; } cout<<"请输入需要借的图书id"<<endl; cin>>book[0];  while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  times=0;  while(input>>temp)  {   if(book[0] == temp && times ==0)   {    res.push_back(temp);    for(int i=0;i<3;i++) //从书籍名称开始取,一直取到价钱    {     input>>temp; //读取了书籍编号,要及时写入res,以后要写进文本     book[1+i]=temp;     res.push_back(temp);    }    input>>temp; //取书籍状态,如果0在馆 如果1不在馆    if(temp == "0")    {     book[4]="1";     temp="1";     res.push_back(temp);     flag_book=true;    }el{     cout<<"\n书籍不在馆\n";     in.clo();     return ;    }    continue; //继续取   }   res.push_back(temp);   times++;     } } in.clo(); if(!flag_book) {  cout<<"错误的书籍id"<<endl;  return ; }  in.open("reader.txt",ios::in); if(!in) {  cerr<<"打开错误文件"<<endl; } cout<<"\n请输入读者id\n"; cin>>readerid; while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  times=0;  while(input>>temp)  {   if(readerid == temp && times==0)   {    input>>temp;    readername=temp;    flag_reader=true;    break;   }   times++;     } } if(!flag_reader) {  cout<<"错误的读者id"<<endl;  in.clo();  return ; } in.clo();   fstream out; out.open("record.txt",ios::app); if(!out) {  cerr<<"打开错误文件"<<endl; } line = book[0] + " " + book[1] + " " + readername + '\n'; out<<line; cout<<"\n办理借书成功\n"; out.clo(); out.open("book.txt",ios::out); if(!out) {  cerr<<"打开文件失败!"<<endl; }  for(int j=0;j<res.size();j+=5) {  line = res[j] + " " + res[j+1] + " " + res[j+2] + " " + res[j+3] + " " + res[j+4] + "\n";  out<<line; } out.clo();}void borrowmes(){ fstream in; string line; //用于存放分割后的字符串  vector<string> res; string temp; //暂存字符串  in.open("record.txt",ios::in); if(!in) {  cerr<<"打开文件失败!"<<endl; } out_stock=0; while(getline(in,line)) {  out_stock++;  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  while(input>>temp)    res.push_back(temp); } // 0书籍编号 1书籍名称 2读者姓名  //输出res cout<<endl<<tw(12)<<"书籍编号"<<" "<<tw(12)<<"书籍名称"<<" "<<tw(12)<<"读者"<<"\n";  outdata(res,3);  in.clo();}void rtnbook(){ string rtn_book; string line; 西南交通大学招生简章vector<string>res; string temp; bool flag=fal; fstream in; in.open("record.txt",ios::in); //先打开record 查看是否有借这本书 if(!in) {  cerr<<"打开错误文件"<<endl; } cout<<"请输入需要归还的书籍id"<<endl; cin>> rtn_book;   while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  times=0;  while(input>>temp)  {   if(rtn_book == temp && times==0) //如果有的话   {    flag=true;        for(int i=0;i<2;i++) //因为一共三个 第一个temp已经是del_book 所以这里取得是两个    {     input>>temp;// 将删除的东西不输出到向量中    }    continue;   }   res.push_back(temp);   time护理实习总结s++;     } }  //outdata(res,3); in.clo(); if(!flag) {  cout<<"该图书不存在或者没有被外借"<<endl;  return ; } fstream out; out.open("record.txt",ios::out); //record已经删除成功 if(!out) {  cerr<<"打开文件失败!"<<endl; }  for(int j=0;j<res.size();j+=3) {  line = res[j] + " " + res[j+1] + " " + res[j+2] + "\n";  out<<line; } out.clo(); vector<string>res_book; in.open("book.txt",ios::in); //开始取 被修改的书籍 if(!in) {  cerr<<"打开错误文件"<<endl; }   while(getline(in,line)) {  //cout<<line<<endl;  //将字符串读到input中  stringstream input(line); //将line切割 通过input存入temp,然后存入res中  times=0;  while(input>>temp)  {   if(rtn_book == temp && times==0)   {    res_book.push_back(temp);    for(int i=0;i<3;i++) //因为一共五个 第一个temp已经是rtn_book 所以这里取得是四个    {     input>>temp;     res_book.push_back(temp);    }    input>>temp;//最后一个取得是书籍状态,需要修改书籍状态    temp = "0";    res_book.push_back(temp);    continue;   }   res_book.push_back(temp);   times++;  } }  //outdata(res,5); in.clo();  out.open("book.txt",ios::out); //再存入文本中; if(!out) {  cerr<<"打开文件失败!"<<endl; }  for(int j=0;j<res_book.size();j+=5) {  line = res_book[j] + " " + res_book[j+1] + " " + res_book[j+2] + " " + res_book[j+3] + " " + res_book[j+4] + "\n";  out<<line; } out.clo(); cout<<"\n找到了喔,应该还书成功了\n";}void countbook(){  cout<<"\n图书馆书籍情况"; bookmes(); cout<<"图书馆一共有:"<<all_stock<<" 本书\n\n\n"; cout<<"\n图书馆书籍外借情况"; borrowmes(); cout<<"图书馆目前外借:"<<out_家庭亲子教育stock<<" 本书\n\n"; cout<<"\n\n图书馆当前在馆书籍还有:"<<all_stock - out_stock<<" 本书\n";}

main.cpp的主函数

#include "operating.h"int main(){ int order; do {  order = -1;  cout<<"\n";  cout<<"----------------------------------------------------------\n";  cout<<"| 1. 图书信息录入  2. 图书信息查询  3. 图书信息删除 |\n";  cout<<"| 4. 读者办理注册  5. 读者信息查询  6. 办理借书手续 |\n";  cout<<"| 7. 办理还书手续  8 已借出图书   9.统计图书库存 |\n";  cout<<"|                   按 \"0\"退出  |\n";  cout<<"----------------------------------------------------------\n";  cout<<" 请输入相应序号进行相应操作:";  cin>>order;  cin.clear();//清除缓冲区中后面的字符  cin.ignore(100,'\n');  switch(order)  {  ca 1:   bookentry();   break;  ca 2:   bookmes();   break;  ca 3:   delbook();   break;  ca 4:   readerentry();   break;  ca 5:   readermes();   break;  ca 6:   borrowbook();   break;  ca 7:   rtnbook();   break;  ca 8:   borrowmes();   break;  ca 9:   countbook();   break;  ca 0:   break;  default:   cout<<"错误的命令行"<<endl;   break;  }   }while(order != 0); system("pau"); return 0; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 03:19:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/31c3df3d89f6623ce9c012242e4c15ed.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++实现小型图书管理系统.doc

本文 PDF 下载地址:C++实现小型图书管理系统.pdf

标签:书籍   字符串   请输入   图书
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图