图书管理系统设计论文_毕业论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统

1.问题描述与分析

在拥有上万学生的大学里,图书管理是管理的非常重要的一部分,普通的记录册式的管理方式无疑在各个方面给管理员带来了诸多不便,为了更加高效的管理图书,我搜寻相关信息设计了这个程序。通过此管理系统可以对所记录的数据进行存储。实现数据录入、数据查询、数据删除、数据显示、数据保存、数据追加以及数据调入功能。

2.数据结构设计和基本算法设计方法的选择

(1)所用的数据结构

为完成图书馆管理系统而选择了线性表数据结构。

(2)数据结构的逻辑结构描述

L=(D,R)

D:图书集合;R={

i ,a

i+1

>|a

i

,a

i+1

∈D,i=1,2,…,n-1}

其中,a

i 为a

i+1

的直接前驱,a

i+1

为a

i

的直接后继。

D中的元素为复合数据元素,包含借书、还书、图书维护以及读者维护4个数据项。

(3)数据结构的存储结构描述

图书管理系统选择了链表存储方式,类型描述如下:

const LIST_INIT_SIZE=100;

typedef stuct{

ElemType elem[LIST_INIT_SIZE];

int length;

}SqList1;

typedef struct{

ElemType *elem;

int length;

int listsize;

int incrementsize;

}SqList;

(4)算法描述

void borrowbook(int bookid)//借书操作

int retbook(int bookid)//还书操作

void RDatabase::readerdata()//读者维护

void BDatabase::bookidata()//图书维护

(5)使用的原因以及合理性

从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键宇和给定值K 相比较。若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。因为结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。线性表是一个典型的线性结构。

3.软件结构设计

图书管理系统可以实现借书、还书、图书维护以及读者维护功能。(见图3-1 系统功能结构图)

借书还书

图书维护

图书管理系统

新增更

图3-1 系统功能结构图

4.算法设计

(1)借书的算法

1)算法的流程图(见图4-1借书算法流程图)

图4-1借书算法流程图2)算法实现的源程序

void borrowbook(int bookid)//借书操作

{

for (int i=0;i

{

if (borbook[i]==0)

{

borbook[i]=bookid;

return;

}

}

}

3)算法分析

时间复杂度:T(n)=O(1)

空间复杂度:S(n)=0

(2)还书的算法

1)算法的流程图(见图4-2还书算法流程图)

图4-2还书算法流程图2)算法实现的源程序

int retbook(int bookid)//还书操作

{

for(int i=0;i

{

if (borbook[i]==bookid)

{

borbook[i]=0;

return 1;

}

}

return 0;

}

3)算法分析

时间复杂度:T(n)=O(1)

空间复杂度:S(n)=0

(3)图书维护的算法

1)算法的流程图(见图4-3图书维护算法流程图)

图4-3图书维护算法流程图

2)算法实现的源程序

void BDatabase::bookidata()

{

int choice=1;

char bname[40];

int bookid;

Book *b;

while (choice!=0)

{

cout<<"图书维护 1:新增 2:更改 3:删除 4:查找 5:显示

6:全删 0:退出=>";

cin>>choice;

switch (choice)

{

case 1:

cout<<"输入图书编号:";

cin>>bookid;

cout<<"输入图书书名:";

cin>>bname;

addbook(bookid,bname);

break;

case 2:

cout<<"输入图书编号:";

cin>>bookid;

b=query(bookid);

if (b==NULL)

{

cout<<"该图书不存在"<

break;

}

cout<<"输入新图书名:";

cin>>bname;

b->setname(bname);

break;

case 3:

cout<<"输入图书编号:";

cin>>bookid;

b=query(bookid);

if (b==NULL)

{

cout<<"该图书不存在"<

break;

}

b->delbook();

break;

相关文档
最新文档