平台: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图书管理系统》是一款基于C#编程语言开发的,采用了标准三层架构的软件系统,旨在为图书馆或个人书库提供高效、便捷的图书管理解决方案。在这个系统中,C#作为主要的编程语言,体现了其在.NET框架下强大...
【基于MySql数据库的完整项目——图书管理系统【重构版】】是一个典型的软件开发实例,它展示了如何构建一个功能完备的图书管理系统。系统采用文本界面,方便用户操作,并且附带了详细的文档设计说明和项目说明,...
基于B-树的GUI图书管理系统c++实现源码.zip基于B-树的GUI图书管理系统c++实现源码.zip基于B-树的GUI图书管理系统c++实现源码.zip图书管理系统(B树)使用Qt5.7制作的基于B-树的图书管理系统。数据结构课程设计项目。...
《图书管理系统 bookmanage》是一个基于Java编程语言,利用AWT(Abstract Window Toolkit)构建图形用户界面(GUI),并配合SQL Server 2005数据库进行数据管理的应用程序。该系统致力于实现全面的图书管理和用户...
总的来说,这个C++图书信息管理系统是一个涵盖文件操作、数据结构、错误处理、用户交互等多个方面的综合项目,对于学习C++编程和信息管理的学生来说,这是一个很好的锻炼机会,有助于提升实际编程能力和问题解决技巧...
《图书管理系统》是一款基于Visual C++(VC++)开发的应用软件,主要目的是实现对图书馆内图书资源的有效管理和便捷检索。该系统充分利用了Microsoft Access作为后台数据库,存储和处理图书、借阅者以及借阅信息等...
《图书管理系统》是一款基于Python开发的应用程序,旨在帮助图书馆或者个人高效管理图书信息。系统集成了书籍录入、查询、借阅、归还、统计等多种功能,以满足不同用户的需求。在深入探讨这个系统之前,我们先来了解...
系统架构设计上,图书管理系统通常包含以下几个核心模块: 1. 用户管理:管理员可以创建、修改和删除读者账户,每个读者账户有自己的借阅权限和限制。 2. 图书管理:包括书籍的添加、修改、删除以及分类管理。管理...
本文将针对"图书管理系统源码.rar.rar"这一资源,结合其中的"bookmanage.rar"和"123.xlsx"两个文件,深入探讨图书管理系统的核心功能、设计思路以及可能涉及的关键技术。 首先,图书管理系统的源码是系统运行的基础...
**简单的JSP图书管理系统(数据库是ACCESS)** 本项目是一个基于JSP技术的图书管理系统,主要目的是为了让学生理解和掌握JSP在实际应用中的基本操作,以及如何与数据库进行交互。数据库选用的是Microsoft Access,...
“BookManage(1)”这个项目很可能是一个图书管理系统,因此,我们可以预期其中包含的数据库设计将涉及到图书、作者、出版社、分类等多个实体,以及它们之间的关联。例如,图书表可能包含书名、作者、出版社、出版...
此外,HTML文档可能是系统的一部分,它们可能包含用户手册、帮助文档或者教程,指导用户如何使用这个图书管理系统。这些文档可以帮助非技术用户理解系统的功能,以及如何有效地利用它来管理图书。 综上所述,...
"jsp图书管理系统"是一个基于JavaServer Pages (JSP) 技术开发的,用于管理和维护图书信息的应用程序。这个系统通常结合了后端服务器技术,如Tomcat(一个流行的Java应用服务器),以及数据库管理系统,例如MySQL,...
本篇将详细解析一款基于JavaWeb技术的图书管理系统源代码,帮助读者理解其设计原理与实现方法。 首先,这个系统的核心分为两个主要部分:用户登录注册模块和图书信息管理模块。登录注册模块是系统的基础,确保了...
1、由jsp+access实现的图书管理系统,页面很简单,但该有的登录及图书的增、删、改、查功能都具有,且本人亲自调试过。 2、内附了javabean的源代码,并做了解释。 3、本资源适合jsp入门的朋友们下来学习参考。 ...
控制台版图书管理系统是一款基于Java编程语言和MySQL数据库技术开发的简易图书管理软件。这个系统在命令行环境下运行,为用户提供了一系列方便的图书管理功能,包括图书的添加、查询、修改和删除等操作。它展示了...
【小型图书管理系统】是一个典型的IT项目,主要用于教育和实践如何构建一个基于Web的图书管理应用。这个系统采用的是经典的三层架构设计模式,旨在清晰地分离业务逻辑、数据访问和用户界面,以提高代码的可维护性和...
在.NET框架下,开发C#应用,可以利用`.NET图书管理系统`标签所涵盖的技术,包括C#语言特性、ASP.NET MVC或Web Forms进行Web开发,以及利用.NET Framework或.NET Core进行跨平台支持。此外,可能还会用到LINQ...
实现了图书管理系统,功能主要分为三部分:书目检索、读者管理、图书管理;书目检索包括普通检索和高级检索;读者管理包括读者登录、读者信息、读者借阅历史、读者当前借阅、读者借阅过期催还、管理员登录等功能;...