图书馆管理系统程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计实践》报告
学号;题目来源及序号难度等级
一、题目
说明:由教师给出
题目13、图书管理系统(查找应用)
[问题描述]
图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
[实现提示]
1、每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
2、由于图书管理的基本业务活动都是通过书号(即关键字)进行的,所以要用对书号索引,以获得高效率。
3、系统应实现的基本功能有:
4 采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。如果这两种书在帐中已有,则只将总库存量增加。
5 清除库存:某种书已无保留价值,将它从图书帐目中注销。
6 借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
7 归还:注销对借阅者的登记,改变该书的现存量。
8 显示:以凹入表的形式显示B树。这个操作是为了调试和维护的目的而设置的。
二、问题分析及求解基本思路
说明:给出题目的分析及初步的解题思路。要求简洁、易懂
一、概要设计
主要实现系统的功能:
a.图书初始化: 输入图书的一些信息,编号、作者、书名、数量,有一定的库存。
b.新书入库: 新书采编入库,输入编号后有次数只需输入数量,没有则继续输入
c.添加读者信息: 读者信息初始化,输入读书证号和姓名后才能进行借书还书
d.借书模块: 读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。
e.还书模块: 归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。
f.查询图书信息
g.查询读者信息: 可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。
h.退出: 退出读书管理系统并保存读者和图书信息。
设计的的初步思路:
主要采取定义结构体,定义两个结构体分别为图书结构体和阅读者的结构体,将其数据存储到字符串中,然后逐个构建单链表,将其数据存储到单链表结点的数据域中,然后进行图书文件的读取或者可以选择图书的初始化,输入图书的编号,作者,书名,数量和一定的库存和现存量。新书入库创造新结点,定义指针,此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量,通过字符串的比较来判定,同理阅读者的添加是增加阅读者的单链表的结点,同时一个读者规定只能借阅5本书存储到数据域的字符串中。分别定义还书和借书的函数,用字符串的比较功能判断读者借书不能同一种书借两次,同时采编新书要求如果书号相同只需要直接输入采编的本数和如果没有书时会返回等待新书到来,包括索书号以及读者的学号输入出现不存在会返回错误,还书函数也是通过字符串中存储的库存量和现存量增加,同时读者借书数量right减少。最后将图书的单链表和阅读者的单链表读写到文件中。
三、问题求解的整体框架结构
说明:围绕求解目标给出具体的模块。要求简洁、易懂
3增添图书录入流程图:
打印读者图书信息:
四、主要算法
说明:要求用自然语言描述算法。要求简洁、易懂
(1)首先首先定义图书,阅读者,借书结构体;typedef struct book;typedef struct borrow;typedef struct reader;定义好各种说需要的数据:
typedef struct book
{ char book_num[10];//图书编号
char book_name[20];//图书名称
char book_writer[10];//图书的作者
int book_xy;//现有量
int book_kc;//库存
struct book *next;
}BK;
typedef struct borrow
{
char borrow_book_num[10];//借书的总数
char limit_date[8];//还书日期
}BO;
typedef struct reader
{
char reader_num[10];
char reader_name[10];
int right;//读者所借的书的本数
BO borrow[Max];
struct reader *next;
}RD;
(1)定义实现功能所需要的函数,包括图书的登记,读者的登记,图书
的录用,以及读者的借阅,图书,读者信息的保存和读音等功能。
int Menu();
void Init();
void Login();
void Init_book();
void Insert_New_Book();
void Menu_select();
void Find_Book();
void add_reader();
void Print_reader();
void Print_book();
void Borrow_Book();
void Return_Book();
void Save();
void Save_Book();
void Save_Reader();
void Load();
void Load_Reader();
void Load_Book();
void Login()
(3)通过字符串存储读者和图书的信息,然后进行图书文件的读取或者可以选择图书的初始化,输入图书的编号,作者,书名,数量和一定的库存和现存量。新书入库创造新结点,定义指针,此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量,通过字符串的比较来判定,同理阅读者的添加是增加阅读者的单链表的结点,同时一个读者规定只能借阅5本书存储到数据域的字符串中。分别定义还书和借书的函数,用字符串的比较功能判断读者借书不能同一种书借两次,同时采编新书要求如果书号相同只需要直接输入采编的本数和如果没有书时会返回等待新书到来,包括索书号以及读者的学号输入出现不存在会返回错误,还书函数也是通过字符串中存储的库存量和现存量增加,同时读者借书数量right减少。最后将图书的单链表和阅读者的单链表读写到文件中。