`
bulote
  • 浏览: 1315751 次
文章分类
社区版块
存档分类
最新评论

实训C++语言设计——BookManage图书管理系统

 
阅读更多

平台:VC++ 2005 测试通过!
.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件。
它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 twod.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
这些都是使用应用程序向导生成的 VC++ 文件故不列出
我只列出程序主要部分!

// BookManage_FILE.h

#include <iostream>
#include <fstream>
#include <list>
#include <algorithm>
#include <string>
using namespace std;

const char* szDbName = "output.data";
const char* szFileName = "bookinfo.txt";

typedef struct {
char key[14];//要多分配一个单元用来存放'/0'
string BookName;
string Author;
string Publisher;
string PubDate;
} BookRecord;

typedef list<BookRecord> BookList;

//从文本文件中读取图书信息,文本的格式为
//7-05-012050-5|计算机算法|李劲|高等教育出版社|2002-5-1
bool readDataFromFile(BookList& BL);
void genDB(const BookList& BL);
void PrintBookInfo(const BookList& BL);
bool KeyComp(const BookRecord& br1, const BookRecord& br2);
bool NameComp(const BookRecord& br1, const BookRecord& br2);
bool AuthorComp(const BookRecord& br1, const BookRecord& br2);
bool PubDateComp(const BookRecord& br1, const BookRecord& br2);

bool KeyComp(const BookRecord& br1, const BookRecord& br2){
if (br1.key[0] < br2.key[0]) return true;
else return false;
}

bool NameComp(const BookRecord& br1, const BookRecord& br2){
if (br1.BookName < br2.BookName) return true;
else return false;
}

bool AuthorComp(const BookRecord& br1, const BookRecord& br2){
if (br1.Author < br2.Author) return true;
else return false;
}

bool PubDateComp(const BookRecord& br1, const BookRecord& br2){
if (br1.PubDate < br2.PubDate) return true;
else return false;
}

void PrintBookInfo(const BookList& BL){
if( BL.empty() )
cout<<"没有图书信息!";
else{
/*定义遍历链表的迭代子*/
list<BookRecord>::const_iterator iter = BL.begin();
for(int i = 0; i<BL.size(); i++ ){
cout<<(*iter).key<<" | "
<<(*iter).BookName<<" | "
<<(*iter).Author<<" | "
<<(*iter).Publisher<<" | "
<<(*iter).PubDate<<endl;
iter++;
}
cout << endl;
}
}

bool readDataFromFile(BookList& BL){
//打开图书文本文件
ifstream bkFile(szFileName);
if ( !bkFile ) {
cerr << "不能打开文件 -" <<szFileName;
cout<<endl;
return false;
}
//存放一条图书记录
string strBookRec;
BookRecord abookRec;
while( getline(bkFile,strBookRec) ){
/*将strBookRec按'|'进行分解*/
int pos;
pos = strBookRec.find_first_of('|');
strcpy(abookRec.key, strBookRec.substr(0,pos).c_str());
strBookRec = strBookRec.substr(pos+1,strBookRec.length());// 从中间第n+1字符到未尾的字符串

pos = strBookRec.find_first_of('|');
abookRec.BookName = strBookRec.substr(0,pos);// 前面的n个字符
strBookRec = strBookRec.substr(pos+1,strBookRec.length());// 从中间第n+1字符到未尾的字符串

pos = strBookRec.find_first_of('|');
abookRec.Author = strBookRec.substr(0,pos);// 前面的n个字符
strBookRec = strBookRec.substr(pos+1,strBookRec.length());// 从中间第n+1字符到未尾的字符串

pos = strBookRec.find_first_of('|');
abookRec.Publisher = strBookRec.substr(0,pos);// 前面的n个字符
strBookRec = strBookRec.substr(pos+1,strBookRec.length());// 从中间第n+1字符到未尾的字符串

pos = strBookRec.find_first_of('|');
abookRec.PubDate = strBookRec.substr(0,pos);// 前面的n个字符
strBookRec = strBookRec.substr(pos+1,strBookRec.length());// 从中间第n+1字符到未尾的字符串

BL.push_back(abookRec);
}
return true;
}

void genDB(const BookList& BL){
ofstream outfile(szDbName);
list<BookRecord>::const_iterator iter = BL.begin();

if(!outfile)
cerr << "无法创建图书信息数据库!";
else {
for(int i = 0; i<BL.size(); i++ ){
outfile <<(*iter).key<<" | "
<<(*iter).BookName<<" | "
<<(*iter).Author<<" | "
<<(*iter).Publisher<<" | "
<<(*iter).PubDate<<endl;
iter++;
}//end for
}

}

// BookManage_FILE.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "BookManage_FILE.h"

//下面定义了一个比较函数指针数组
bool (*sort_func_addrs[4])(const BookRecord&, const BookRecord&) = {
KeyComp, NameComp, AuthorComp, PubDateComp
};


int _tmain(int argc, _TCHAR* argv[])
{
BookList aBookList;
if (readDataFromFile(aBookList)){
cout <<"请选择书籍信息的排序标准"<<endl
<<"0. 书号, 1. 书名, 2. 作者, 3. 出版日期 :";
int sortcriterion = 0;
cin >> sortcriterion;
aBookList.sort(sort_func_addrs[sortcriterion]);
PrintBookInfo(aBookList);
genDB(aBookList);
}

return 0;
}

分享到:
评论

相关推荐

    BookManage图书管理系统

    BookManage图书管理系统源码案例、标准三层架构

    基于B-树的GUI图书管理系统c++实现源码.zip

    基于B-树的GUI图书管理系统c++实现源码.zip基于B-树的GUI图书管理系统c++实现源码.zip基于B-树的GUI图书管理系统c++实现源码.zip 图书管理系统(B树) 使用Qt5.7制作的基于B-树的图书管理系统。数据结构课程设计项目。...

    图书管理系统 bookmanage

    本系统将近3000行 基本实现了图书管理的功能 包括图书和用户的管理 增删改查和还书等功能 还能够查看记录 等 还有部分功能没有时间写了 不过比较简单 数据库是sql 2005

    图书管理系统BookManage-master.zip

    图书管理系统

    jsp+access实现的图书管理系统

    1、由jsp+access实现的图书管理系统,页面很简单,但该有的登录及图书的增、删、改、查功能都具有,且本人亲自调试过。 2、内附了javabean的源代码,并做了解释。 3、本资源适合jsp入门的朋友们下来学习参考。 ...

    基于ASP.NET的图书管理系统

    实现了图书管理系统,功能主要分为三部分:书目检索、读者管理、图书管理;书目检索包括普通检索和高级检索;读者管理包括读者登录、读者信息、读者借阅历史、读者当前借阅、读者借阅过期催还、管理员登录等功能;...

    图书管理系统的课程设计 (VC开发,数据库access)

    图书管理系统是基于VC开发,数据库使用access。文件包括:源程序及数据库文件(.mdb)

    图书管理系统源码.rar.rar

    bookmanage.rar.rar 图书管理系统源码.rar.rar

    毕业设计-图书管理系统(源代码+说明)

    数据管理部分首先基于面向对象思想进行抽象,用reader和book类分别存储图书馆会员和书籍的信息。并对其进行封装,生成简洁易用的过程式接口——静态空间bookManage和statistics供给前端界面调用。其中,bookManage中...

    基于SSM的图书管理系统+源代码+文档说明

    图书管理系统,适合初入SSM做为练习项目 MD5+Salt加密 tomcat版本:9.0 数据库:MySQL book.sql是数据库表 Maven项目 -------- &lt;项目介绍&gt; 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源...

    图书管理系统 visual c++ 6.0,access开发

    可以拿去应付课设,简单图书管理系统 数据库access。使用方法,需要添加数据源:控制面板-&gt;管理工具-&gt;数据源(odbc)-&gt;添加-&gt;选mdb 完成 数据源名手工填BookManage 数据库-&gt;选择-&gt;选择刚刚下载包里的BookManage.mdb...

    图书管理系统 精通ASP.NET20+SQL Server2005项目开发

    本章实现了图书管理系统,功能主要分为三部分:书目检索、读者管理、图书管理;书目检索包括普通检索和高级检索;读者管理包括读者登录、读者信息、读者借阅历史、读者当前借阅、读者借阅过期催还、管理员登录等功能...

    bookmanage

    一个Access和代码联系起来的数据库,充分利用的数据库的各项内容,里面好多代码,包括添加图书信息,查询图书信息,删除图书信息等,里面还包括了很多HTML文档哦

    C++学生信息管理系统

    (4)在该对话框中单击“…”按钮选择所要附加数据库的.mdf文件的路径,例:附加图书管理系统的数据库可以选择 “C:\sql\MSSQL\Data\BookManage_Data.MDF”,如图3所示。单击【确定】按钮,即可完成数据库的附加操作...

    BookManage

    图书管理系统,重点在于实现多重条件多表链接的复合查询。

    JAVA课程设计_图书管理系统

    运行于XP时需要打Sql P4 补丁,要有数据库驱动。 用Swing的组件设计界面。

    python搭建一个图书管理系统

    python搭建一个图书管理系统 安装依赖 pip install PyQt5 -i https://pypi.douban.com/simple pip install pymysql -i https://pypi.douban.com/simple 安装数据库 安装任意一种服务器类型数据库即可 创建数据库...

    C# 图书馆管理系统

    完整的C# 图书馆管理系统,包括源代码,数据库,界面完美, 开发环境VS2005+Access 2003,

    bookManage.rar

    java + jsp + mysql的一个简单的图书管理系统实现了一些基本的功能 用户注册(用户 管理员) 图书的管理 图书的购物车 等

Global site tag (gtag.js) - Google Analytics