图书馆算法
A. 图书馆图书索引过程中用到的的算法
图书索书号一般包括两个部分(多数情况下占2行),一是分类号,二是区分号。分类号表示这本书属于哪一学科类别,区分号表示本图书馆该类图书的不同品种区分。比如一图书馆买了很多种“c语言编程”的图书,有张三编的,有李四编的。
B. 求助:实现图书馆借书系统
#include <iostream>
#include <string>
using namespace std;
class Book //设置图书馆藏书类,用以封存图书信息
{
public:
Book (string n, int N, string p) //图书类构造函数
{
name = n; //设置图书书名
NO = N; //设置图书库存量
publisher = p; //设置图书出版社
}
void display() //display函数,以显示图书信息
{
cout << "书名:" << name << endl;
cout << "目前库存:" << NO << endl;
cout << "图书出版社:" << publisher << endl;
cout << endl;
}
//为方便调用,以下数据全部定义为公用
string name; //图书书名
int NO; //图书库存量
string publisher; //图书出版社
};
//创建图书馆藏书小数据库,图书序号等于该对象数组的下标
Book book[6] =
{
Book ("C++ primer", 3, "人民邮电出版社") ,
Book ("Python核心编程", 3, "人民邮电出版社") ,
Book ("Writing clean code", 3, "电子工业出版社") ,
Book ("简体中文Solaris 10用户指南", 3, "Sun Microsystems, Inc") ,
Book ("《The C Programming Language》第二版", 3, "机械工业出版社") ,
Book ("计算机程序设计艺术第三版第一卷:基本算法", 3, "国防工业出版社")
};
void display_all() //显示图书馆所有图书,方便读者借阅
{
int i;
cout << "这是图书馆的所有图书" << endl;
for (i = 0; i<6; i++)
{
cout << "图书序号:" << i << endl;
cout << "书名:" << book[i].name << endl;
cout << "目前库存:" << book[i].NO << endl;
cout << "图书出版社:" << book[i].publisher << endl;
cout << endl;
}
}
class people
{
public:
people(string nam, int num) //student构造函数
{
name = nam;
number = num;
}
void borrow(int); //定义借书成员函数
void back(int); //定义还书成员函数
private:
string name; //性名
int number; //在图书馆已借图书数量
};
// student类,用以定义学生信息
class student : public people
{
public:
student(string nam, int num, int gra) : people (nam, num) //student构造函数
{
grade = gra;
}
private:
int grade; //学生年级
};
//teacher类,teacher是student的派生类
class teacher : public people
{
public:
teacher(string nam, int num, string t) : people(nam , num) //派生类构造函数
{
title = t; //教师职称
}
private:
string title; //教师职称
};
void people :: borrow (int a) //借书成员函数
{
int i, j; //定义两个整型变量,以便需要shirt使用
char k; //定义字符型变量以便进行Y/N的判断
void service() ; //声明service函数
if (number >= a) //首先进行权限判断,如果读者已借书数量不小于他的权限,则提示进行其他操作
{
cout << "根据您的权限,你最多能借" << a << "本书!您现在不能借书欢迎下次再来" << endl;
cout << "您是否想进行其他操作? (是请输入y, 退出请输入n) " << endl;
cin >> k;
if (k == 121)
service ();
if (k == 121)
return;
else if (k = 110)
return;
cout << endl;
}
else
{
display_all() ; //调用display_all函数,输出所有图书显示,方便读者借阅
cout << "您想借哪本书? 请输入图书序号0-5" << endl;
cin >> i;
while (book[i].NO == 0 || i>5 || i<0) //判断所要借图书的库存及输入的合法性
{
cout << "您输入的图书序号错误或者所借书库存不足,请重新输入.图书序号是0-5" << endl;
cin >> i;
//提示读者是否进行其他操作
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin >> k;
if (k == 121)
service (); //如果读者要进行其他操作,则引用service函数,对读者进行重新引导
if (k == 121)
return; //进行其他操作完毕,直接跳出borrow函数
else
continue; //若读者选择继续借书,则跳出本次循环,进行下一次循环
}
cout << endl; //此处还行是为了人机界面的美观
cout << "以下是您要借的书籍的信息" << endl;
book[i].display();
cout << "您想借几本书?" << endl;
cin>>j;
//判断读者的权限、图书馆库存及输入的合法性
while ((a-number)<j || book[i].NO<j || j<0 || j>3)
{
cout << "因为你的权限不够、数量输入有误或者图书馆库存不足,";
cout << "你目前不能借这么多书!请输入一个合适的数目." << endl;
cin>>j;
//提示读者是否进行其他操作
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin>>k;
if (k == 121)
service();
if (k == 121)
return;
else
continue;
cout << endl;
}
book[i].NO = book[i].NO - j; //借书完毕,对图书馆的小数据库从新调整一下
number = number + j; //借书完毕,读者已借书籍数量要加上现在借的书数量
cout << endl;
cout << "您在图书馆还可以借 " << a - number << " 本书" << endl;
cout << "《" << book[i].name << "》" << "目前剩余" << book[i].NO << "本" << endl;
}
} //borrow函数结束
void people::back (int a) //还书成员函数
{
int n, m;
char k;
void service() ;
cout << "您要还哪本书" << endl;
cin >> n;
while (book[n].NO = 3) //判断图书馆库存,库存是满的,那就没人从这借过这种书而且没还
{
cout << "您借过这本书吗?请重新输入图书序号. " << endl;
cin>>n;
cout << "您是否想进行其他操作? (是请输入y, 继续还书请输入n) " << endl;
cin>>k;
if (k == 121)
service();
if (k == 121)
return;
else
continue;
cout << endl;
}
while (n>5 || n<0) //判断读者所要借的书是否存在
{
cout << "您输入的图书序号错误,请重新输入.图书序号是0-5. " << endl;
cin>>n;
cout << "您是否想进行其他操作? (是请输入y, 继续还书请输入n) " << endl;
cin >> k;
if (k == 121)
service () ;
if (k == 121)
return;
else
continue;
cout << endl;
}
cout << endl; //此处换行是为了人机界面的美观
cout << "以下是您要借的书籍的信息" << endl;
book[n].display () ;
cout << "你要还几本书" << endl;
cin >> m;
//判断图书馆这种书的库存是否小于读者要还的书的数量,及读者输入的合法性
while ((3-book[n].NO) <m || m>3)
{
cout << "您有借过这么多书吗?请重新输入." << endl;
cin >> m;
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin >> k;
if (k == 121)
service ();
if (k == 121)
return;
else if (k = 110)
continue;
cout << endl;
}
book[n].NO += m; //还书完毕,及时对图书馆的数据库进行整理
number -= m; //读者已借书籍数减轻现在所还书籍数量
//以下是一些给读者的提示信息
cout << "恭喜!您还书成功!" << endl;
cout << "你还可以借 " << a-number << " 本书!" << endl;
} //back函数结束
void service () //service函数,完成对读者的服务、询问功能
{
int a;
int b;
student stud("ming", 0, 2007); //定义student类的对象stu,并初始化
teacher tea("li", 0, "assistant"); //定义teacher类的对象tea,并初始化
//询问读者身份,给出选项
cout << "欢迎来到图书馆,请问您的身份是: (请输入首数字) " << endl;
cout << "1.教师" << endl;
cout << "2.学生" << endl;
cin >> a;
while (a != 1 && a != 2) //对读者的错误输入进行提醒
{
cout << "请输入正确的选项:" << endl;
cin >> a;
}
cout << endl;
cout << "请问您想要: (请输入首数字) " << endl; //询问读者所希望进行的工作,给出选项
cout << "1.借书" << endl;
cout << "2.还书" << endl;
cout << "3.离开借书台" << endl;
cin >> b;
while (b != 1 && b != 2 && b != 3) //对读者的错误输入进行提醒
{
cout << "请输入正确的选项" << endl;
cin >> b;
}
cout << endl;
if (a == 1) //如果读者是老师,则进行以下操作
{
if (b == 1)
{
tea.borrow(6); //调用借书函数
}
else if (b == 2)
{
tea.back(6); //调用还书函数
}
else
{
cout << " = ^_^ = 谢谢您的光临!\n" << endl; //退出
}
}
else if (a == 2) //如果读者是学生,则进行以下操作
{
if (b == 1)
{
stud.borrow(4);
}
else if (b == 2)
{
stud.back(4);
}
else
{
cout << " = ^_^ = 谢谢您的光临!\n" << endl;
return;
}
}
cout << endl;
} //service函数结束
//主函数
int main()
{
char k;
service() ;
while (1) //操作完毕,提示读者是否进行其他操作。
{
cout << "是否继续进行其他操作?";
cout << " (进行其他操作请输入y, 退出请输入n) " << endl;
cin >> k;
cout << endl;
if (k == 121)
service ();
else
cout << " = ^_^ = 谢谢您的光临!\n" << endl;
break;
}
return 0;
}
C. 经常听到“数据结构和算法”,但我在图书馆没找到《算法》只找到《数据结构》。 是不是《数据结构》包含
算法:
可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题
所以算法是一个非固定的东西,它可以有千千万万,比如,一个取随机数的算法,每个人写的算法也都不一定相同
数据结构:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率
D. 上海图书馆算法租界吗
不算法租界。
上海法租界是法国在旧中国四个租界(广州湾不是租界,归属法属印度支那管辖)中面积最大、发展最好的一个租界。法租界在上世纪三十年代达到发展的顶峰,此后随着日军全面侵华,法租界短暂地成为日占上海中的孤岛,并在1943年由当时的傀儡维希法国政权移交给傀儡汪精卫政权,正式退出了历史舞台。
上海图书馆位于上海市徐汇区淮海中路,是上海市综合性研究型公共图书馆和行业情报中心,也是全国文化信息资源共享工程上海市分中心、文化部公共文化研究基地,是首批国家重点古籍保护单位。
E. 基于大数据的图书馆个性化服务读者行为分析方法和策略
1. 基于大数据的图书馆个性化服务读者行为分析方法与步骤
基于大数据的图书馆个性化服务读者行为分析,是指图书馆基于事件存储大数据库数据的支持,通过对用户海量数据进行采集、过滤、分析和定义,从中发现读者行为数据中蕴含的行为关系、用户需求和知识,是对读者的行为进行分析、判定、定义和匹配的过程,也是图书馆掌握读者阅读习惯和发现服务需求,提高个性化服务精确性和用户满意度的关键,读者行为分析与判定流程见图2-2。
读者行为分析过程可分为用户行为事件采集、用户行为事件的存储、用户行为事件初步过滤、用户行为定义、用户行为分析与判定、用户行为匹配、用户行为存储大数据库的更新、行为分析与判定过程的完善8部分内容。在用户行为事件分析、判定前,图书馆应全面、规范地采集读者行为数据,并对数据进行科学分类、综合分析、行为定义和人工匹配,构建具备海量存储、高效管理和查询功能的用户行为事件存储大数据库。
当图书馆完成对用户行为数据的采集后,首先,应依据对用户行为的分类和管理员经验,对用户行为数据进行价值过滤和人工筛选,以提高行为数据的价值密度和可用性。其次,对用户行为发生的时间、地点、方式、作用对象和结果进行定义,采用高效算法对存储于用户行为事件大数据库中的资源进行分析、判定,并对用户行为的类型进行详细定义。再次,应将已定义的用户行为和用户行为存储大数据库中的数据进行比对,进一步完善、规范用户行为存储大数据库的资源。同时,利用用户行为存储大数据库资源,对用户行为分析与判定的规则实施反馈,完成对用户行为分析、判定规则的动态修改与完善。最后,图书馆可依据读者行为分析与判定的结果,明确读者阅读需求及其变化趋势,为读者提供个性化的阅读推送式服务。
图2-2 图书馆读者行为分析与判定流程图
个性化服务是一个不断完善的过程,多次经过行为模拟和分析反复校准才能让个性化服务尽可能贴近每一个用户。如通过记录用户访问某些专业内容来判断为用户推荐的相关内容或深度内容是否精准,就需要不断地积累用户在某专业内容上的行为记录,记录次数越多,记录越精细,在下一次为用户做个性化推荐时的精准度就越高。所以个性化服务所需的数据分析系统包括采集与感知都是循环起效的,这是一个闭环上升的垂直优化体系。
2.基于大数据的图书馆个性化服务读者行为分析策略
(1)发现读者需求及变化趋势。大数据背景下,图书馆可通过监控设备、传感器网络和其他读者行为采集设备,获取读者阅读活动的服务内容与方式、阅读终端与服务模式、阅读社会关系组成、成员信息交流、论坛、博客、微博、微信朋友圈等社交网络上的思想表达、移动阅读中读者个体的行为路径、传感器网络对读者活动的记录、服务系统的运行参数信息等数据,这些数据蕴含着巨大的社会和商业价值。因此,图书馆力图采集读者行为大数据,将读者行为进行解析、描述和量化,最终实现对读者服务需求、服务模式变化趋势预测与控制。同时,图书馆应注重读者行为数据分析的时效性,及时获取读者阅读情绪和服务需求的变化数据,并将数据变化结果可视化表现出来,确保服务策略和内容随着读者个性化需求变化而动态调整。
(2)最大范围的采集读者行为数据。科学采集高价值读者行为数据,是准确分析和预测读者需求,提高读者忠诚度和服务满意度的关键。首先,图书馆应从读者服务全局出发,收集读者的行为数据,采集来自服务器运行监控设备、传感器网络、用户阅读终端设备、系统运行日志、读者论坛与博客、读者服务反馈系统、网页cookies、搜索引擎、读者阅读行为监控设备的数据,尽量减少用户行为数据采集的盲点,提高数据的完整性、精确性、及时性和有效性。其次,所采集的数据应具有海量和实时性特点,依据读者阅读需求对读者行为分析的内容,选取数据和应用对象进行调整,避免读者行为分析过程中可能会对读者服务产生的消极影响,最终实现从理解读者阅读行为到掌握读者阅读需求的转变。再次,图书馆应与第三方服务商合作,以服务协作和大数据资源共享的方式,努力拓展读者行为数据采集的广度和深度,在实现以读者为中心的读者行为数据选择、过滤、共享和互补前提下,提高数据应用分析和增强数据的可用性。
(3)保证读者行为数据的安全性和可用性。读者行为数据具有海量、全面、高价值和实时性的特点,图书馆应加强对读者行为数据的安全性和可用性管理,保证用户保密信息和隐私数据的安全。但是,移动终端工作模式和使用环境的不确定性,严重影响了图书馆大数据阅读服务的安全性,因此,必须加强阅读终端的安全性管理。首先,图书馆应依据阅读终端的安全设计标准及其移动性、开放性,以及阅读终端与读者阅读行为的关联性,为不同类型的阅读终端划分相应安全度,并通过严格限制阅读终端的使用对象、安全模式、应用环境和通信方式来保证设备安全。其次,应将读者行为数据划分为用户隐私数据、读者特征数据、行为日志数据和公开数据四个安全等级,执行相应的安全存储、管理和使用策略,并依据用户行为数据生命周期发展规律,加强数据收集、存储、使用、转移和删除五个环节的安全管理。再次,应坚持读者需求精确感知、行为关系全面挖掘、服务模式发展准确预测和读者行为科学分析的原则,实现读者行为数据的良性监控和采集,避免采集与读者阅读服务保障无关的个人隐私行为数据。
(4)重点突出读者阅读行为数据挖掘的知识关联分析。知识关联分析就是从海量数据中发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式,通过读者阅读行为数据的知识关联分析,发现读者不同行为之间的联系,以及读者的阅读习惯和服务需求,是图书馆以读者需求为中心制定服务策略的前提。图书馆应在三维空间开展读者阅读行为数据的交叉关联分析,所涉及的主要内容包括读者阅读活动频率、阅读的时间与地点、阅读内容分布规律、阅读习惯和爱好、阅读关键词关联度、阅读社会关系交集、热点内容的关注度等。同时,行为数据的选择要坚持以服务保障为中心和高价值的原则,特别加强对读者阅读活动的热点内容、主要阅读模式和个性化服务需求反馈行为数据之间的关联分析。此外,基于读者阅读行为数据挖掘的知识关联分析,应加强对读者阅读行为的跟踪和监控,在加强对读者显性行为特征数据监控的同时,还应突出利用显性行为数据挖掘,而获得隐性行为信息。对读者阅读需求、阅读热点、阅读行为关联性等进行关联分析,增强读者行为知识关联分析的广度、深度和有效性。
F. 帮忙写个c语言图书管理系统的算法描述啊万分感激!!!
这个很简单,,C语言的初级知识就可以写了。。好好看下c。。
G. 基于哈夫曼算法建立图书馆管理系统
试为这样的信息收发站写一个哈夫曼编码的编/译码系统。 [基本要求] ; ;以前做过的,我有源程序,编码,译码都有.只要改一下字母频率就可以了我
H. 某图书室共有100本图书,均被借过。其中甲借阅过
正常的算法,求至少有一人借过的书的数量:
甲+乙+丙-(甲乙)-(乙丙)-(甲丙)+(甲乙丙)
现在,甲,乙,丙,甲乙,乙丙,甲丙都已知,
至少有一人借过的书的数量为:
33+44+55-29-36-25+(甲乙丙)
=42+(甲乙丙)
甲乙29
甲丙25
乙丙36
那么甲乙丙都借过的书最多为25
所以至少一人借过的书,最多有:
42+25=67本
那么没有被借过的书,至少有:
100-67=33本