图书馆管理系统

上传人:m**** 文档编号:561829491 上传时间:2022-10-13 格式:DOC 页数:56 大小:799.51KB
返回 下载 相关 举报
图书馆管理系统_第1页
第1页 / 共56页
图书馆管理系统_第2页
第2页 / 共56页
图书馆管理系统_第3页
第3页 / 共56页
图书馆管理系统_第4页
第4页 / 共56页
图书馆管理系统_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《图书馆管理系统》由会员分享,可在线阅读,更多相关《图书馆管理系统(56页珍藏版)》请在金锄头文库上搜索。

1、 需求说明大功能模块及其小功能模块说明 1.图书查找模块。依据书名,作者,出版社,类别,编号中的一个,查询这本书的其它信息。每一种查询方式为一个小模块;2.图书借阅。实现图书借还,预约功能。包括两个小模块:借书(预约功能包括在了借书模块中),还书。3.信息查询管理。包括以下几三个小模块:查询管理自身或其他用户的信息(不同的帐号类型能查询人群不同,查询所得的信息有用户基本信息,用户历史借阅记录,用户是否被封号。管理用户信息仅管理员有该权限,管理员可手动封号),更改个人账户密码,查看图书借阅率;4.图书购入。仅有一个模块。 还有部分功能的实现未划分在这四大模块中,单独用函数实现。如:用户登录,新用

2、户注册,系统根据用户是否有借书逾期未还封号(有则封号,若用户还了逾期未还的书则系统会解封)详细请见各模块设计说明。开发环境:DevC+,windows 7(32位)若一直在登录界面未登录,时间向前推进选择是否登录录界面总体结构:若选择登录,输入帐号,密码 登录失败(密码错误),重新登录(登录成功),选择要进行的操作退出登录信息查询管理图书购入借书还书图书查询数据文件说明: “information.txt”:存储图书基本信息,程序运行时将文件中的信息导入到链表head中,以便使用。每一行的格式相同,否则在将文件中信息导入到链表时会出错。每一行保存一本书的信息,按照顺序分别为:图书编号,书名,作

3、者,出版社,类别,时间,价格。在执行了添加图书这一操作后,更新这个文件。 “users.txt”:存储用户基本信息,登录信息.程序运行时将文件中的信息导入到链表“head2”中,以便使用。每一行保存一个用户的信息,分别为帐号,密码。若用户更改了密码,则该文件会相应的更新。 “Completereord.txt”:存储已完成的借阅记录,程序运行时将文件中的信息导入到“headcomplete”这个链表中,以便使用。每一行为一本书的记录,依次表示书的编号,借书的人的帐号,借书时间,还书时间。在还书时,会生成一条新纪录,并更新到文件中。“Uncompletereord.txt”:存储未完的借书记录。

4、程序运行时将文件中的信息导入到“headUncomplete”这个链表中,以便使用。每一行为一条未完成的借阅记录,一次表示借出去的书的编号,借书人帐号,借书时间,是否有人预约,预约者帐号(即预约者编号)。每借出一本书,会生成包括借书人帐号,书的编号,日期的借书记录,并更新到文件中。每还一本书,会依据书的编号找到对应的“未完成记录”,删除。对应的文件作处理(将文件中第一行全赋值为0),避免要删除的记录恰好在头节点上. “Userstate.txt”:存储用户状态。程序运行时将文件中的信息导入到“headuserstate”这个链表中,以便使用。每一行为一个用户的状态,依次为这个帐号是否被封,帐号

5、,现在借了几本书,是否预约书,预约书的编号。若用户借的书逾期不还,则会被封号,封号后不能再借书。若预约的书被还,则用户在登录时会收到提醒,但这本被预约的书可以被其他人借走“rate.txt”:存储每本书的历史借阅次数。程序运行时将文件中的信息导入到“headrate”这个链表中,以便使用。每一行为一本书的借阅次数,依次表示书的编号,这本书的借阅次数。每借出一本书,变会让这本书的借阅次数加一。在查看借阅率时会将借阅次数最多的前五本书输出。若是新购入的图书,在第一次借出时会添加到链表中。 各模块设计说明 先说明用户登录功能的实现,登录的实现是图书查找模块,图书添加模块,图书购入,图书借阅模块实现的

6、前提。分为三类用户:管理员,教师,学生。帐号(即学生学号,教师管理员的工号)的长度为10位,第一位用以区分用户类别,1:管理员,2:教师,3:学生。第二到五位为入学年份(或参加工作年份),第六到七位为所属学院,最后三位为院内编号。 登陆过程:在main函数中定义两个变量int accounts,char passwords10,要登陆时先提示用户输入帐号及密码,经登录函数int login处理,若返回1,则登陆成功,再进行下一步动作;若返回0,说明登陆失败,此时会提示登陆失败的原因:密码错误,并提示用户重新输入帐号密码。 参考学校图书馆系统新用户注册机制,本系统注册机制为:输入学生学号(或工号

7、),若是第一次登陆,则密码默认为学号(或工号的后六位),登录成功后会提示用户是第一次登录并建议用户更改帐号密码。第一次登陆后该用户信息会添加到对应的文件中,下次登录时身份为已注册用户。 1. 图书查找模块将图书的基本信息保存在一个名为information的文本文件中,程序运行时,先将文件中图书的信息导入到链表head中。查询图书信息时,用户先选择按哪种方式查询,每种查询的完成通过遍历链表head完成,并输出其他信息。下面说明具体查找算法。判断搜索的类型,然后转到相应的条件处。若是按书名搜索,先将要搜索的内容存放到数组里面;然后从存放书本信息的文件里读取书名,采用BF算法,即朴素模式匹配算法,

8、在书名里查找输入的子串。若是按作者、出版社、类别、图书编号来查找的话,则用全匹配的方法,只有输入的信息与文件内容的完全相同,才会输出所要搜索的图书信息,否则显示为无所要查找的图书信息。图书编码说明:图书的编码为六位,前两位代表图书类别,01:educate,02:novels,03:history,04:musics(当前就只有这么几种图书类别,之后会添加),最多可以有99中类型的书。中间两位为同一类型中的不同书,同一类别下的图书最多可以有99本不同的书。最后两位表示同一本书的不同编号,图书馆中同样的一本书有许多本,编上不同的编号,同一本书最大数量为99本。2.图书购入购入添加新的图书时,编码

9、方式:前两位代表图书类别,01:educate,02:novels,03:history,04:musics,中间两位按照这类图书中已有多少本编码,若已有20本,则中间两位为21.最后两位依据图书的数量编码,若有10本,则最后两位从01到10.添加时提示用户先选择添加的图书是库中已有的还是库中没有的。若是库中已有的书,则输入库中这本书最大的编号max,添加的数量。添加的第一本书的ID为max+1,第二本为max+2,以此类推,书的其它信息不用输入,直接赋值就行。若添加的书库中没有,则需输入书名,类别,作者出版社等基本信息。书的编号的生成方式为:前两位为书的类别;中间两位,若这类书已有3本,则中

10、间两位为04,若这类书有5本,则为06;最后两位从01开始,有多少本书就编码到几。添加完后书的信息保存在链表中,并更新到文件中。每添加一本书,会在链表head中添加一个节点(若是已有的书,在链表中部添加这这节点,且上一个节点保存的书的ID比这本书恰好小1;若是库中没有的书,则在链表尾部添加节点)以保存它的信息。在添加完毕后会将链表中的信息重新写进Information.Txt。3. 信息查询管理。执行此功能之前已登录,按照用户帐号的编码方式可自动区分用户是学生还是教师或者是管理员。对于学生,只能查询自己的信息,如:学院,年级,借阅了几本书,;对于老师,则可查询自身和学生的信息;管理员则可以查询

11、所有老师学生的信息。查询其它用户信息时先输入要查询的人的帐号,遍历链表head2及headUserstate以找到对应的用户,找到后输出相关信息。特别的,管理员具有封号的权限,若一个帐号被封,则该账户无法再借书,直至被解封。封号的实现,通过修改headUserstate中节点的信息实现。链表headUserstate中的信息会更新到文件Userstate.txt中。改密码,改密码需两次输入新密码,若两次的输入有不同,会提示用户两次输入的密码不一样,要求用户重新输入新密码。改密码会改变链表head2中对应的节点中的password10。链表head2中的信息会及时更新到文件Users中。三种类型

12、用户都可以查看借阅率。通过遍历链表headrate实现。4.图书借阅借书预约:进入系统时已登录,借书时用户需输入借几本书。若借完这些书后未超过借书上限,则进入下一步,否则会让用户超过个人借书上限,需重新输入要借书的数量。若未超过上限,则输入每本书的ID。对每一本书进行判断,判断是否能借。判断一本书是否能借的方法为遍历未完成的借书记录(即链表headUncomplete),若在记录中没有这本书说明这本书可以借(没被借出,或借出但已经归还)。每借一本书会生成一条未完成的借阅记录,依据书的编号创建,包括借书人编号,借阅时间,是否有人预约,(若预约)预约者编号。若记录中有这本书则说明这边书已经借出,用

13、户可选择是否预约。选择预约,会修改未完成记录中这本书对应的记录。将是否有人预约该成有(当一条未完成记录生成时默认没有人预约),并修改预约者编号(默认状态下为00000000).当预约的书被还,预约者登录时,用户会收到提示。还书:还书时输入还书的数量及每本书的编号。每还一本书,会删除未完成记录中这本书对应的记录(若这本书被预约,删除之前会修改用户状态中表示已预约的书的状态的变量,从而在用户登录时能收到提醒)。在已完成记录(即链表headComplete)中添加一条,包括书的编号,借阅者编号,借阅日期,还书日期。链表中的信息会及时更新到对应的文件中。系统自动封号功能说明:遍历未完成的借书记录,若有

14、逾期未还的书,则系统会自动封了这本书的借书人的帐号,这本书被还时会解封对应的帐号 Main函数中变量及数据结构体说明:int choice,choice2,exist;/作用:功能选择int account;/存储用户帐号int i=0,ss=0,de=0;/计数变量int Time;/系统时间char password10;/存储用户登录时输入的密码FILE *timefile;/保存系统时间的文件指针下面的指针都是指向对应链表的头节点。struct Information *head=NULL;/保存图书信息struct Users *head2=NULL;/保存用户帐号,密码struct

15、 UncompleteRecords *headUncomplete=NULL;/保存未完成的借阅记录struct Userstate *headUserstate=NULL;/保存用户帐号信息struct CompleteRecords *headComplete=NULL;/保存已完成借阅记录struct rate *headrate=NULL;/保存每本书的借阅次数。1.struct Information/图书基本信息 int number;/图书编号 char name30;/书名 char writer30;/作者 char press30;/出版社 char kinds20;/类别 int time;/出版时间 float price;/图书价格 int amount;/备注:这个变量没用 struct Information *next; ; 2.struct Users用户基本信息

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号