图书馆库存信息管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书馆库存信息管理
一、系统描述
图书馆库存信息管理的基础强化训练要求学生自己设计并编制一个小型并具有一定功能的图书管理系统,该系统要求能对图书的库存信息进行一定的统计,不要求采用数据库和图形化界面,只要求在命令提示符的界面下对图书的入库、出库、修改、增加进行操作即可,对数据的存储以文件的形式存储在外存中。
二、需求分析
1、功能需求
(1)图书入库(一本书的各个信息,书名ISBN等)
(2)图书出库
(3)修改一条图书记录
(4)查询图书记录
2、数据物理存储结构以及逻辑存储结构
(1)每本书采用一个结构体来定义其特点
如struct LNode
{ int sequenceNum; //图书序号
string ISBN; //ISBN编号
string BookName; //书名
string press; //出版社
string author; //作者
string date_of_in; //入库时间
string date_of_out; //出库时间
int store_number; //库存数
double price; //单价
LNode * next; //指向下一个图书
};
在进行数据处理的时候,每本书的消息记录存储在一个文本文档中,以便对大量外存中的数据进行操作
(2)逻辑结构
采用一个单链表来对每本书进行索引,单链表的节点为书本信息的结构体,当对一个节点进行操作是,若是打印节点的信息,则从文件中首先取出信息写到内存中,然后再在命令提示符中打印出来;若是进行图书出库或者图书信息的修改,则是先写到节点中,然后在保存到文件中。
三、详细设计
#include
#include
#include
#include
#include
#include
#include
using namespace std;
enum query_form {BookName,press,author,ISBN};
template
{
istringstream iss(s);
return !(iss >> f >> t).fail();
}
/*函数声明*/
void menu(); //主菜单
void sub_menu_Query(); //查询记录菜单
void ADD(); //增加记录
void Modify(); //修改记录
void Delete(); //删除记录
void query(int choice_of_query,string query_keyword); //查询记录
string get_date()//获取当前系统日期并转换成yyyy-mm-dd格式
{
string str;
char s[10];
SYSTEMTIME st;
GetSystemTime(&st);
sprintf(s,"%d",st.wYear); str= s;str+="-";
sprintf(s,"%d",st.wMonth); str+=s; str+="-";
sprintf(s,"%d",st.wDay);str+=s;
return str;
}
/*类型定义*/
struct LNode
{
int sequenceNum; //图书序号
string ISBN; //ISBN编号
string BookName; //书名
string press; //出版社
string author; //作者
string date_of_in; //入库时间
string date_of_out; //出库时间
int store_number; //库存数
double price; //单价
LNode * next; //指向下一个图书
};
/*链表基本操作*/
LNode * CreateDefaultLink( )//创建以默认数据建立的链表
{
ifstream book("Bookmanagement.txt");
if(!book)
{
cerr<<"打开文件失败!"< char * s="Bookmanagement.txt"; cout<<"请重新输入完整文件路径及文件名(盘符:\\路径\\文件名.txt):"< cin>>s; book.open(s); } LNode *p1,*p2,*head=NULL; p1=p2=new LNode; p1->next =NULL; int i=0,j=1; string read,r[11]; //read用来读取每一行关键字,r[1]-r[9]依次用来保存每个结点的关键字 getline(book,read); read.append(1,'\n');