北邮大二下数据结构大作业模拟图书馆管理系统_第1页
北邮大二下数据结构大作业模拟图书馆管理系统_第2页
北邮大二下数据结构大作业模拟图书馆管理系统_第3页
北邮大二下数据结构大作业模拟图书馆管理系统_第4页
北邮大二下数据结构大作业模拟图书馆管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京邮电大学课程设计报告课 程 设计 名 称数 据 结 构学 院计 算 机指导教师杨俊班 级班内序号学 号学生姓名成 绩-陈陈-孙孙-毛毛课程设计内容内容:模拟设计图书馆管理系统学 生课程设计报 告(附 页)详见附页课程设计成绩评定遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、是否认真、独立完成属于自己的课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规范评语: 成绩:指导教师签名: 20 年 月 日注:评语要体现每个学生的工作情况,可以

2、加页。目录设计任务的描述2功能需求说明及分析2总体方案设计说明4数据结构说明和数据字典5各模块设计说明10读者模块10借还模块11日志文件模块:11图书信息模块12主模块 用来模拟时间和调用函数12预约模块13测试报告14各项功能测试:14设计任务的描述学校图书馆有很多图书,每个教师、学生有多种不同的借书权限和借书数量,建立图书馆管理系统,包括图书的购入、编码、借出、还回、统计、查询等功能。功能需求说明及分析1.编写目的:模拟实现图书馆的一些基本功能和整个运行过程,建成图书馆模型2.任务目标:建立图书馆管理系统,实现包括图书的购入、编码、借出、返还、统计、查询等功能。其中主要有读者、图书两类对

3、象,对它们进行处理以实现上述功能。3.需求规定:3.1 功能要求:图书馆日常事务管理员图书的购入图书的编码图书信息的存储及管理读者信息的存储及管理读者查询(图书信息或读者信息)借书还书预约记录日志文件每种图书包括图书编号、书名、作者、出版社、简介、购入时间、数量等信息 图书馆在购书时可根据图书的信息自动生成编码 教师、学生包括姓名、工作证(学生证)号、所在学院、借书权限、借书数量等信息 借书时填写借书单,还书时填写借书单还书项,并记录入日志文件,借书超期要罚款 基本功能有:建立图书基本信息文件、读者基本信息文件、图书入库(编码)、借书(预约)、还书、查询等 查询、统计功能有:1、读者可根据图书

4、的名称、编码、作者、出版社等信息查询图书的其他信息;也可根据图书的分类等信息查询图书的具体信息等,包括某图书库中尚存多少本2、查询教师、学生已借出的图书情况,读者的借书诚信情况(是否有过超期的情况)等 3、图书的借阅率等 对于库中已借完的图书,读者可预约,待库中有还回时能提示通知该读者 模拟系统以时间为轴向前推移,每10秒左右向前推进 一天(有键盘或鼠标操作时不计时) 建立日志文件,对图书借阅情况进行记录 不得使用数据库3.2 模块划分:主模块: 接收键盘(鼠标)键入命令,分析该命令并调用相应的模块,并以时间为轴向前推进。把图书信息和读者信息建立成链表作为全局可用的结构,以供其他模块调用。 图

5、书信息管理模块: 读者信息管理模块:包括读者信息注册、删除、查询等功能,提供读取文件中信息建立读者信息链表的函数。在操作之后记录入文件。 图书购入模块:对新买入的图书信息进行记录并编码,加入其他图书信息当中。 图书借还模块:根据借书情况对图书和读者进行修改,包括修改书的剩余数量,读者的借书情况等,并对读者超期情况进行判断。可进行图书预约。 查询统计模块:包括统计图书信息和读者信息。 日志文件处理模块:对每天的度数借还情况进行记录。 3.3 对输入的要求:要有良好的健壮性,容许错误输入。总体方案设计说明模块之间的关系数据结构说明和数据字典Ø 数据结构说明和数据字典Ø 数据字典

6、(用到的全局变量):BookInfoPtr BList存储书本信息的链表的头结点BookedBookPtr BBList; 存储预约书架的链表的头结点int books_num;图书馆馆藏书量int bbooks_num;预约书架上的总书量head Readers;读者链表的头结点typedef int infor29;读者的最大编号int today;图书馆的当前日期Ø 数据结构:图书信息typedef struct BookInfochar nameLEN; char writerLEN; char pressLEN; char dateLEN; char serialLEN;

7、char Borrowed_ReaderLEN; char Booked_ReaderLEN; char bdateLEN; char rdateLEN; int rate; int state; struct BookInfo * next; BookInfo,* BookInfoPtr;/图书信息/书名/书的作者/书的出版社/书的出版日期/书的编号/借走人读者号/预约人读者号/借书日期/还书日期 /借阅率 /书的状态:1-在架可借;2-借出未还 3-被预约 读者信息typedef struct ClientData char nameLEN; int number7; int power;

8、 int overtime; int fine; int bowBookNum; BookInfo book10; struct ClientData* next; ClientData, *Client;/读者信息/读者姓名/读者编号(学号或工作者号)/读者权限/是否过期/读者罚款/读者借书数量/读者的借书列表读者链表typedef struct DataHead struct DataHead *next; struct ClientData *student; struct ClientData *teacher; DataHead, *head;/用来存读者信息的结构/指向学生的链表指

9、针/指向教师的链表指针预约书架typedef struct BookedBook char book_nameLEN; char book_serial9; int IsRet; int remain_days; char readerNum7; struct BookedBook * next;BookedBook, *BookedBookPtr;/预约书架中所存的书本信息/书本名称/书本编号/书本是否归还/预约保留天数/预约者的编号/预约书架的指针Ø 函数说明图书信息模块BookInfoPtr InitBList(); 给图书信息的结点分配空间并初始化void AddBBList

10、(BookedBookPtr);将一个结点加入图书链表void PrintBookInfo( BookInfoPtr p );打印图书信息Bool (); 读取图书信息的文件bool WriteBFile();写文件“books.txt”void PurchaseBook(); 购入图书读者信息模块head init();读取文件并初始化读者链表Client ClientID(char*); 查找读者,调用Query()void OutputData();打印读者的(借书)信息bool OutputYuyue(char );打印读者的预约信息void ClientRegisterAndDele

11、te(int type);读者注册void WriteRFile();写读者信息文件”clientdata.txt”借还模块void FuncBorrowBook(); 借书void FuncRenewBook(); 续借void FuncReturnBook(); 还书int GetDate(int,int); 计算日期,借书时用到int DateDur(int,int); 计算两个日期间隔天数这个模块要调用到上述两个模块的函数,大致流程是:查找读者->查找书本->修改图书信息->修改读者信息->记录日志文件预约模块void createBBList();创建预约书架

12、void AddBBList(BookedBookPtr);加入预约书架void FuncBookBook(); 直接预约Void FuncBookBook(BookInfoPtr,char*);通过编号预约图书void FuncCheckBBlist();每天检查一次预约书架bool ();读取预约书架文件bool WriteBBFile();写文件”yuyue.txt”查询统计模块void FuncCheck(); 综合查询(读者或图书)Bool FuncCheckBook(); 根据书名或读者查找图书BookInfoPtr FuncCheckBook(char*); 根据图书编号查找图书

13、Client Query(int number7, int mode);按编号查找读者int Query2( ); 按读者姓名查找读者void statistic();统计各学院读者数日志void WriteDiary(char*,char*, int);写日志文件(借还,预约) void WriteDiary(char *name, int num);写日志文件 (购书)主bool login(); /管理员或者读者登录调用其他函数main();模拟时间,判断键盘输入其他功能int NumOrNot(string);判断是否为数字char* NumToChars(int a,int n);将

14、整型数组转换为字符串void CharsToNum(int a, int n, char s);将字符串转换成整型数组void IntToChars(int num, char *s)把一个整数转为字符串void CharsToInt(char *s, int num)把字符串转换为一个整数各模块设计说明读者模块Ø 总体介绍:读者管理模块有初始化、注册、删除、查询、输出读者信息、统计这些功能。用到的结构是在定义模块中定义好的ClientData,这个类中又包含了书本信息。本模块主要是供其他模块调用,也有用一些其他模块函数完成特定的输出或写文件等。对读者的操作是基于链表的,结构如下:(

15、最上方代表学院,下面接上的两路链表为学生和老师)Ø 建立过程:首先建立起学院链表。用流从文件中按一定格式读出信息,首先读出读者基本信息,用当前读者借书数bowBookNum控制循环读出所借的书本的信息,这些信息存在新申请的空间中。然后根据读者号码number信息找到所在学院和身份,用逆向建立链表的方法插入到相应的链表。将所有信息建立成链表后就可以让其他函数调用。Ø 打印读者信息:从第一个学院开始,分别依次输出学生和老师的信息,然后再转到下一学院。Ø 查询分为编号查询和名字查询,其中名字查询专门供客户输入信息来查询使用,编号查询则根据模式不同可输入查询也可由其他模块

16、提供信息来查找指针。 编号查询时先用NumOrNot(string num)(首先判断是否为7位,然后看每一位是否再0和9之间)判断号码正确性,根据编号中的学院号找到相应的学院,然后根据身份进入相应链表,当找到号码一致的人员时返回当前指针。 名字查询则类似输出依次查找,用NameEqual(char name20,char name120)(一位位比较是否相等)找到名字一样的人员则输出信息。Ø 注册时让读者输入名字、身份、所在学院这些信息,然后从一个文件中读取保存当期各类人员的最大号码的数组,给人员分配新的号码,并把最大相应号码加1存回文件。最后把信息插入到相应链表中,完成操作。&#

17、216; 删除的过程与查询类似,只是最后一步把相应节点从链表中删除。Ø 统计根据选择不同,对不同路链表的节点数计数。借还模块Ø 借还模块与其他模块的关系比较密切,其流程如下:Ø 关于罚款当读者进行还书的时候,要判断当天日期(还书日期)是否小于图书的应还日期。倘若逾期归还,则要根据逾期天数进行相应的罚款。为了方便,在图书信息中加入一个int rdate7;记录图书的应还日期。当图书被借阅的时候,根据借阅日期来写入一个应还日期,方便还书时进行判断。日志文件模块:当发生借书,购书等事件的时候,读者和图书的信息都会发生改变。此时在更改代表各项信息的链表的时候要及时更新所对

18、应的文件。每当发生借书、还书、预约和购书事件的时候,调用函数void WriteDiary(char*,char*,int)或void WriteDiary(char*,int)做好相应的记录。格式如:年-月-日 读者(编号) 借阅(归还/预约) 书籍 (编号)年-月-日 购入书籍 书名 N本图书信息模块图书信息用一个结构储存,每一个结点代表一本书。程序开始的时候,从main函数中调用bool ( ),从存储图书信息的文件中读取每本书的内容,加到存储图书信息的链表中。其中存储图书信息的文件”books.txt”的格式如下: 主模块 用来模拟时间和调用函数 图书馆的日期可以用一个文件来记录,每次程序打开的时候先从文件中读取正确的日期。然后采用<time.h>中的函数time(NULL)来模拟时间轴,计算机每过10秒,图书馆系统的时间向前推进一天。同时重写文件,记录正确的日期。要注意的是:当有键盘输入时(即图书馆有功能请求时),要“停住”时间的计算,直到键盘输入完毕。其中判断键盘的输入可以用<co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论